diff options
| author | Sebastian Köhler <sebkoehler@whoami.org.uk> | 2012-08-02 13:53:46 +0200 |
|---|---|---|
| committer | Sebastian Köhler <sebkoehler@whoami.org.uk> | 2012-08-03 04:09:37 +0200 |
| commit | 49385a98b2878ae6f19dd0925e0dc90fcc3d6372 (patch) | |
| tree | af8b4728b28d40bbdd306dde186dddc1dc354c49 /src/tool | |
| parent | b9e6cb3e556730f74464026a33d6904ffd340874 (diff) | |
| download | ngircd-49385a98b2878ae6f19dd0925e0dc90fcc3d6372.tar.gz ngircd-49385a98b2878ae6f19dd0925e0dc90fcc3d6372.zip | |
Implemented hashed cloaked hostnames for +x
CloakHostModeX can now contain '%x'. It will be replace by the hash of the original client hostname. The new config option CloakHostModeXSalt defines the salt for the hash function. When CloakHostModeXSalt is not set a random salt will be generated after each server restart. Spelling fix in defines.h
Diffstat (limited to 'src/tool')
| -rw-r--r-- | src/tool/tool.c | 30 | ||||
| -rw-r--r-- | src/tool/tool.h | 2 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/tool/tool.c b/src/tool/tool.c index ef3fb5d7..31c6fb41 100644 --- a/src/tool/tool.c +++ b/src/tool/tool.c @@ -20,7 +20,9 @@ #include <assert.h> #include <ctype.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> +#include <sys/time.h> #include <netinet/in.h> @@ -129,6 +131,34 @@ ngt_TrimLastChr( char *String, const char Chr) } /* ngt_TrimLastChr */ +/** + * Fill a String with random chars + */ +GLOBAL char * +ngt_RandomStr( char *String, const size_t len) +{ + assert(String != NULL); + + static const char chars[] = + "0123456789ABCDEFGHIJKLMNO" + "PQRSTUVWXYZabcdefghijklmn" + "opqrstuvwxyz!\"#$&'()*+,-" + "./:;<=>?@[\\]^_`"; + + struct timeval t; + gettimeofday(&t, NULL); + srand(t.tv_usec * t.tv_sec); + + for (size_t i = 0; i < len; ++i) { + String[i] = chars[rand() % (sizeof(chars) - 1)]; + } + + String[len] = '\0'; + + return String; +} /* ngt_RandomStr */ + + #ifdef SYSLOG diff --git a/src/tool/tool.h b/src/tool/tool.h index 60a65379..9fa19e55 100644 --- a/src/tool/tool.h +++ b/src/tool/tool.h @@ -32,6 +32,8 @@ GLOBAL void ngt_TrimStr PARAMS((char *String )); GLOBAL char *ngt_UpperStr PARAMS((char *String )); GLOBAL char *ngt_LowerStr PARAMS((char *String )); +GLOBAL char *ngt_RandomStr PARAMS((char *String, const size_t len)); + #ifdef SYSLOG GLOBAL const char *ngt_SyslogFacilityName PARAMS((int Facility)); GLOBAL int ngt_SyslogFacilityID PARAMS((char *Name, int DefaultFacility)); |