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/tool.c | |
| 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/tool.c')
| -rw-r--r-- | src/tool/tool.c | 30 |
1 files changed, 30 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 |