diff --git a/src/ircd.c b/src/ircd.c index 11acfd83e..8edd9c2f0 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -358,58 +358,6 @@ void fix_timers(void) } -#ifndef _WIN32 -/* Generate 3 cloak keys and print to console */ -static void generate_cloakkeys() -{ - #define GENERATE_CLOAKKEY_LEN 80 /* Length of cloak keys to generate. */ - char keyBuf[GENERATE_CLOAKKEY_LEN + 1]; - int keyNum; - int charIndex; - - short has_upper; - short has_lower; - short has_num; - - fprintf(stderr, "Here are 3 random cloak keys that you can copy-paste to your configuration file:\n\n"); - - fprintf(stderr, "set {\n\tcloak-keys {\n"); - for (keyNum = 0; keyNum < 3; ++keyNum) - { - has_upper = 0; - has_lower = 0; - has_num = 0; - - for (charIndex = 0; charIndex < sizeof(keyBuf)-1; ++charIndex) - { - switch (getrandom8() % 3) - { - case 0: /* Uppercase. */ - keyBuf[charIndex] = (char)('A' + (getrandom8() % ('Z' - 'A'))); - has_upper = 1; - break; - case 1: /* Lowercase. */ - keyBuf[charIndex] = (char)('a' + (getrandom8() % ('z' - 'a'))); - has_lower = 1; - break; - case 2: /* Digit. */ - keyBuf[charIndex] = (char)('0' + (getrandom8() % ('9' - '0'))); - has_num = 1; - break; - } - } - keyBuf[sizeof(keyBuf)-1] = '\0'; - - if (has_upper && has_lower && has_num) - fprintf(stderr, "\t\t\"%s\";\n", keyBuf); - else - /* Try again. For this reason, keyNum must be signed. */ - keyNum--; - } - fprintf(stderr, "\t}\n}\n\n"); -} -#endif - /* MY tdiff... because 'double' sucks. * This should work until 2038, and very likely after that as well * because 'long' should be 64 bit on all systems by then... -- Syzop @@ -670,11 +618,6 @@ int InitUnrealIRCd(int argc, char *argv[]) } # endif exit(0); -#endif -#ifndef _WIN32 - case 'k': - generate_cloakkeys(); - exit(0); #endif case 'K': { diff --git a/src/unrealircdctl.c b/src/unrealircdctl.c index f2b029a00..9b0e30798 100644 --- a/src/unrealircdctl.c +++ b/src/unrealircdctl.c @@ -109,9 +109,60 @@ void unrealircdctl_mkpasswd(int argc, char *argv[]) exit(0); } +void unrealircdctl_gencloak(int argc, char *argv[]) +{ + #define GENERATE_CLOAKKEY_LEN 80 /* Length of cloak keys to generate. */ + char keyBuf[GENERATE_CLOAKKEY_LEN + 1]; + int keyNum; + int charIndex; + + short has_upper; + short has_lower; + short has_num; + + fprintf(stderr, "Here are 3 random cloak keys that you can copy-paste to your configuration file:\n\n"); + + fprintf(stderr, "set {\n\tcloak-keys {\n"); + for (keyNum = 0; keyNum < 3; ++keyNum) + { + has_upper = 0; + has_lower = 0; + has_num = 0; + + for (charIndex = 0; charIndex < sizeof(keyBuf)-1; ++charIndex) + { + switch (getrandom8() % 3) + { + case 0: /* Uppercase. */ + keyBuf[charIndex] = (char)('A' + (getrandom8() % ('Z' - 'A'))); + has_upper = 1; + break; + case 1: /* Lowercase. */ + keyBuf[charIndex] = (char)('a' + (getrandom8() % ('z' - 'a'))); + has_lower = 1; + break; + case 2: /* Digit. */ + keyBuf[charIndex] = (char)('0' + (getrandom8() % ('9' - '0'))); + has_num = 1; + break; + } + } + keyBuf[sizeof(keyBuf)-1] = '\0'; + + if (has_upper && has_lower && has_num) + fprintf(stderr, "\t\t\"%s\";\n", keyBuf); + else + /* Try again. For this reason, keyNum must be signed. */ + keyNum--; + } + fprintf(stderr, "\t}\n}\n\n"); + exit(0); +} + int main(int argc, char *argv[]) { dbuf_init(); + init_random(); #ifdef _WIN32 init_winsock(); #endif @@ -127,6 +178,8 @@ int main(int argc, char *argv[]) unrealircdctl_status(); else if (!strcmp(argv[1], "mkpasswd")) unrealircdctl_mkpasswd(argc, argv); + else if (!strcmp(argv[1], "gencloak")) + unrealircdctl_gencloak(argc, argv); else unrealircdctl_usage(argv[0]); exit(0); diff --git a/unrealircd.in b/unrealircd.in index 6e562621e..674abf8de 100644 --- a/unrealircd.in +++ b/unrealircd.in @@ -118,7 +118,7 @@ elif [ "$1" = "mkpasswd" ] ; then elif [ "$1" = "version" ] ; then @BINDIR@/unrealircd -v elif [ "$1" = "gencloak" ] ; then - @BINDIR@/unrealircd -k + $UNREALIRCDCTL gencloak elif [ "$1" = "backtrace" ] ; then cd @TMPDIR@