From kalt@ensta.ensta.fr Thu Mar 7 23:00:47 1996 Received: from ensta.ensta.fr (ensta.ensta.fr [147.250.1.1]) by eterna.com.au (8.7.4/8.7.3) with ESMTP id XAA28542 for ; Thu, 7 Mar 1996 23:00:30 +1100 (EST) Received: from syrk.ensta.fr (syrk.ensta.fr [147.250.7.219]) by ensta.ensta.fr (8.7.4/8.7.3) with ESMTP id MAA05555; Thu, 7 Mar 1996 12:55:52 +0100 (MET) Received: (kalt@localhost) by syrk.ensta.fr (8.6.11/8.6.4) id MAA10396; Thu, 7 Mar 1996 12:55:51 +0100 Message-Id: <199603071155.MAA10396@syrk.ensta.fr> Date: Thu, 7 Mar 1996 12:55:51 +0100 From: kalt@ensta.fr Reply-To: kalt@hugo.int-evry.fr To: ircii-bugs@eterna.com.au Cc: kalt@hugo.int-evry.fr Subject: updated diff for random nickname feature X-Send-Pr-Version: 3.96 >Number: 78 >Category: change-request >Synopsis: adds random nickname feature, highly user configurable >Confidential: no >Severity: non-critical >Priority: low >Responsible: mrg-pr (matthew green) >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 7 23:17:05 1996 >Last-Modified: >Originator: Christophe KALT >Organization: >Release: 2.8.15 >Environment: System: NetBSD syrk.ensta.fr 1.0A NetBSD 1.0A (ensta) #0: Sat Jun 3 20:42:24 MET DST 1995 bouyer@bsdtest.ensta.fr:/usr/travail/src08.03.95/sys/arch/i386/compile/ensta i386 >Description: see PR # 30 Thanks you for considering this diff again. I have helps files somewhere out there, so when you include it, let me know. after applying, run 'make headers' >How-To-Repeat: >Fix: diff -crBb ircii-2.8.15.Mar07/include/numbers.h ircii-2.8.15.Mar07+krys/include/numbers.h *** ircii-2.8.15.Mar07/include/numbers.h Thu Aug 31 05:51:49 1995 --- ircii-2.8.15.Mar07+krys/include/numbers.h Thu Mar 7 11:58:18 1996 *************** *** 16,20 **** --- 16,21 ---- char *numeric_banner _((void)); void display_msg _((char *, char **)); void numbered_command _((char *, int, char **)); + char *random_nick_gen _((void)); #endif /* __numbers_h_ */ diff -crBb ircii-2.8.15.Mar07/include/vars.h.proto ircii-2.8.15.Mar07+krys/include/vars.h.proto *** ircii-2.8.15.Mar07/include/vars.h.proto Thu Dec 14 00:53:22 1995 --- ircii-2.8.15.Mar07+krys/include/vars.h.proto Thu Mar 7 11:58:18 1996 *************** *** 94,99 **** --- 94,101 ---- #define NOTIFY_LEVEL_VAR $ #define NOTIFY_ON_TERMINATION_VAR $ #define NOVICE_VAR $ + #define RANDOM_BASE_VAR $ + #define RANDOM_NICK_VAR $ #define REALNAME_VAR $ #define SAME_WINDOW_ONLY_VAR $ #define SCREEN_OPTIONS_VAR $ diff -crBb ircii-2.8.15.Mar07/source/edit.c ircii-2.8.15.Mar07+krys/source/edit.c *** ircii-2.8.15.Mar07/source/edit.c Fri Mar 1 14:00:39 1996 --- ircii-2.8.15.Mar07+krys/source/edit.c Thu Mar 7 11:58:20 1996 *************** *** 137,142 **** --- 137,143 ---- static void userhost _((char *, char *, char *)); static void info _((char *, char *, char *)); static void e_nick _((char *, char *, char *)); + static void e_rnick _((char *, char *, char *)); static void comment _((char *, char *, char *)); static void sleepcmd _((char *, char *, char *)); static void version _((char *, char *, char *)); *************** *** 275,280 **** --- 276,282 ---- { "REHASH", "REHASH", send_comm, 0 }, { "REQUEST", NULL, ctcp, 0 }, { "RESTART", "RESTART", send_comm, 0 }, + { "RNICK", "NICK", e_rnick, 0 }, { "SAVE", NULL, save_settings, 0 }, { "SAY", empty_string, do_send_text, 0 }, { "SEND", NULL, do_send_text, 0 }, *************** *** 1051,1056 **** --- 1053,1076 ---- say("Bad nickname"); } + /* + * e_rnick: does the /NICK command. Records the users current nickname and + * sends the command on to the server + */ + /*ARGSUSED*/ + static void + e_rnick(command, args, subargs) + char *command, + *args, + *subargs; + { + char *nick; + + send_to_server("NICK %s", nick = random_nick_gen()); + if (attempting_to_connect) + set_server_nickname(get_window_server(0), nick); + } + /* version: does the /VERSION command with some IRCII version stuff */ static void version(command, args, subargs) diff -crBb ircii-2.8.15.Mar07/source/irc.c ircii-2.8.15.Mar07+krys/source/irc.c *** ircii-2.8.15.Mar07/source/irc.c Fri Mar 1 14:00:42 1996 --- ircii-2.8.15.Mar07+krys/source/irc.c Thu Mar 7 12:37:39 1996 *************** *** 576,581 **** --- 576,587 ---- { fprintf(stderr, "Illegal nickname %s\n", nickname); exit(1); + } + if ((char *) 0 != (ptr = getenv("IRCRANDOM"))) + { + set_int_var(RANDOM_NICK_VAR, atoi(ptr)); + if (atoi(ptr) & 0x30) + set_string_var (RANDOM_BASE_VAR, nickname); } if ((char *) 0 == ircrc_file) { diff -crBb ircii-2.8.15.Mar07/source/numbers.c ircii-2.8.15.Mar07+krys/source/numbers.c *** ircii-2.8.15.Mar07/source/numbers.c Tue Jan 30 14:00:27 1996 --- ircii-2.8.15.Mar07+krys/source/numbers.c Thu Mar 7 11:58:21 1996 *************** *** 32,37 **** --- 32,95 ---- #include "whois.h" #include "funny.h" #include "parse.h" + #include + #include + #include + + #define RN nickchar[rand()%strlen(nickchar)] + + char * + random_nick_gen () + { + static char nickchar[]= + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + static char translatechar[]= + "4q[p3f9h1]k1nm0bdr5lu^mx954P[Q3F9H1]K1NM0BDR5TU^mX95"; + static char kn[10] = ""; + static int count = 0; + + if (kn[0] == '\000') + srand(time(NULL)); + sprintf (kn,"%c%c%c%c%c%c%c%c%c",RN,RN,RN,RN,RN,RN,RN,RN,RN); + if (get_int_var(RANDOM_NICK_VAR) & (0x30)) + { + if (get_string_var(RANDOM_BASE_VAR)) + strmcpy (kn, get_string_var(RANDOM_BASE_VAR), 9); + else + { + yell ("*** No value for RANDOM_BASE has been set !"); + return kn; + } + if (get_int_var(RANDOM_NICK_VAR) & 0x10) + { + kn[8] = '\0'; + sprintf (kn, "%s%c", kn, '0'+count++); + if (count == 10) + count = 0; + } + else if (get_int_var(RANDOM_NICK_VAR) & 0x20) + { + int i = rand()%strlen(get_string_var(RANDOM_BASE_VAR)); + int n = 10; + + while (n && (translatechar[!strchr(nickchar,kn[i]) + ||strchr(nickchar,kn[i])-nickchar]==kn[i])) + { + i = rand() + % strlen(get_string_var(RANDOM_BASE_VAR)); + n--; + } + if (n) + if (!i || !strchr(nickchar,kn[i])) + strcat (kn, "_"); + else + kn[i] = translatechar[strchr(nickchar,kn[i])-nickchar]; + } + } + if (get_int_var(RANDOM_NICK_VAR) & 0x80) + say ("Trying random nick : %s", kn); + return kn; + } static void reset_nickname _((void)); static void nickname_in_use _((char *, char **)); *************** *** 173,179 **** else { say("illegal nickname, try again"); ! if (!dumb) add_wait_prompt("Nickname: ", nickname_sendline, data, WAIT_PROMPT_LINE); } --- 231,237 ---- else { say("illegal nickname, try again"); ! if (!dumb && !(get_int_var(RANDOM_NICK_VAR) & 0x40)) add_wait_prompt("Nickname: ", nickname_sendline, data, WAIT_PROMPT_LINE); } *************** *** 187,203 **** reset_nickname() { char server_num[10]; if (already_doing_reset_nickname) return; ! say("You have specified an illegal nickname"); if (!dumb) { already_doing_reset_nickname = 1; ! say("Please enter your nickname"); ! sprintf(server_num, "%d", parsing_server_index); ! add_wait_prompt("Nickname: ", nickname_sendline, server_num, WAIT_PROMPT_LINE); } update_all_status(); } --- 245,277 ---- reset_nickname() { char server_num[10]; + char *new_nick; if (already_doing_reset_nickname) return; ! if (get_int_var(RANDOM_NICK_VAR) & 0x1 ! && !is_server_connected(parsing_server_index)) ! { ! say("You had specified an illegal nickname, let me help you"); ! new_nick = random_nick_gen (); ! send_to_server("NICK %s", new_nick); ! set_server_nickname(parsing_server_index, new_nick); ! } ! else ! { if (!dumb) { + if (!is_server_connected(parsing_server_index)) + say("You have specified an illegal nickname, please enter your nickname"); + if (!(get_int_var(RANDOM_NICK_VAR) & 0x40)) + { already_doing_reset_nickname = 1; ! sprintf(server_num, "%d",parsing_server_index); ! add_wait_prompt("Nickname: ", ! nickname_sendline, server_num, WAIT_PROMPT_LINE); + } + } } update_all_status(); } diff -crBb ircii-2.8.15.Mar07/source/server.c ircii-2.8.15.Mar07+krys/source/server.c *** ircii-2.8.15.Mar07/source/server.c Fri Mar 1 14:00:44 1996 --- ircii-2.8.15.Mar07+krys/source/server.c Thu Mar 7 11:58:23 1996 *************** *** 895,902 **** new_free(&connect_next_password); } if (server_list[from_server].nickname == (char *) 0) malloc_strcpy(&(server_list[from_server].nickname), ! nickname); server_list[from_server].flags &= ~LOGGED_IN; /* * this used to be an ifndef NON_BLOCKING_CONNECTS .. we want to do this --- 907,927 ---- new_free(&connect_next_password); } if (server_list[from_server].nickname == (char *) 0) + if (get_int_var(RANDOM_NICK_VAR) & 2) + malloc_strcpy(&(server_list[from_server].nickname), random_nick_gen ()); + else + malloc_strcpy(&(server_list[from_server].nickname), nickname); + + else if (((get_int_var(RANDOM_NICK_VAR) & 4) + && ((c_server == from_server) + || (c_server == -1))) + || ((get_int_var(RANDOM_NICK_VAR) & 8) + && (c_server != from_server))) + { + new_free(&(server_list[from_server].nickname)); malloc_strcpy(&(server_list[from_server].nickname), ! random_nick_gen ()); ! } server_list[from_server].flags &= ~LOGGED_IN; /* * this used to be an ifndef NON_BLOCKING_CONNECTS .. we want to do this diff -crBb ircii-2.8.15.Mar07/source/vars.c ircii-2.8.15.Mar07+krys/source/vars.c *** ircii-2.8.15.Mar07/source/vars.c Fri Mar 1 14:00:45 1996 --- ircii-2.8.15.Mar07+krys/source/vars.c Thu Mar 7 11:58:24 1996 *************** *** 29,34 **** --- 29,35 ---- #include "translat.h" #include "ircterm.h" #include "output.h" + #include "screen.h" /* IrcVariable: structure for each variable in the variable table */ typedef struct *************** *** 142,147 **** --- 143,150 ---- { "NOTIFY_LEVEL", STR_TYPE_VAR, 0, NULL, set_notify_level, 0, 0 }, { "NOTIFY_ON_TERMINATION", BOOL_TYPE_VAR, DEFAULT_NOTIFY_ON_TERMINATION, NULL, NULL, 0, VF_NODAEMON }, { "NOVICE", BOOL_TYPE_VAR, 1, NULL, NULL, 0, 0 }, + { "RANDOM_BASE", STR_TYPE_VAR, 0, NULL, NULL, 0, 0}, + { "RANDOM_NICK", INT_TYPE_VAR, 0, NULL, NULL, 0, 0}, { "REALNAME", STR_TYPE_VAR, 0, 0, set_realname, 0, VF_NODAEMON }, { "SAME_WINDOW_ONLY", BOOL_TYPE_VAR, DEFAULT_SAME_WINDOW_ONLY, NULL, NULL, 0, 0 }, { "SCREEN_OPTIONS", STR_TYPE_VAR, 0, NULL, NULL, 0, VF_NODAEMON }, >Audit-Trail: >Unformatted: