x2serv-cvs Mailing List for X2 IRC Channel and Oper Services (Page 7)
Brought to you by:
sirvulcan
You can subscribe to this list here.
2001 |
Jan
(33) |
Feb
(14) |
Mar
(26) |
Apr
(19) |
May
(28) |
Jun
(5) |
Jul
(6) |
Aug
(5) |
Sep
(6) |
Oct
(1) |
Nov
(21) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(3) |
Feb
(14) |
Mar
|
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2003 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
|
May
(4) |
Jun
(6) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
(7) |
Apr
|
May
|
Jun
(19) |
Jul
(5) |
Aug
(16) |
Sep
(4) |
Oct
(10) |
Nov
(7) |
Dec
(6) |
2005 |
Jan
(4) |
Feb
(5) |
Mar
(24) |
Apr
(6) |
May
(17) |
Jun
(11) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Reed L. <r3...@us...> - 2003-06-14 20:49:07
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2003-06-14 20:49:06 UTC Modified files: source/route.c Log message: Remove 'numnick' from test reroute output. ---------------------- diff included ---------------------- Index: x2/source/route.c diff -u x2/source/route.c:1.12 x2/source/route.c:1.13 --- x2/source/route.c:1.12 Tue May 29 13:51:06 2001 +++ x2/source/route.c Sat Jun 14 13:48:56 2003 @@ -399,7 +399,7 @@ if(directive != 'T') /* if not tetsing */ send_connect(rptr->server, rptr->port, suptr); else - send_to_user(uptr, "->connect %s %d numnick(%s)", + send_to_user(uptr, "->connect %s %d %s", rptr->server, rptr->port, suptr->Name); } } @@ -458,10 +458,3 @@ * complain in wallops */ } - - - - - - - ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2003-06-14 20:24:29
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2003-06-14 20:24:28 UTC Modified files: INSTALL README configure configure.in HELP/ACCESS doc/config.txt source/commands.c source/config.h source/misc.c source/parse.c source/user.c Log message: Update documentation, remove +h mode and make it a virtual GODMODE, add new cmodes and umodes, and clean-up code. We're calling this X2 v5.2 now. ---------------------- diff included ---------------------- Index: x2/HELP/ACCESS diff -u x2/HELP/ACCESS:1.4 x2/HELP/ACCESS:1.5 --- x2/HELP/ACCESS:1.4 Fri Mar 2 04:22:25 2001 +++ x2/HELP/ACCESS Sat Jun 14 13:24:18 2003 @@ -10,9 +10,9 @@ * This tells you the TOGOP status for the given users host. Rubin is an AfterNet IRC Operator. * This line will show up if `nickname' is an IRCOP. -Rubin has security overrride (+h) enabled. +Rubin has security overrride (GOD) enabled. * This line will show up if `nickname' is an IRCOP who is using the override - mode (+h). + mode (GOD). The ACCESS command can by done by all users. Index: x2/INSTALL diff -u x2/INSTALL:1.6 x2/INSTALL:1.7 --- x2/INSTALL:1.6 Thu Nov 8 00:21:08 2001 +++ x2/INSTALL Sat Jun 14 13:24:17 2003 @@ -1,7 +1,4 @@ Ok, quick and dirty: -X2 WORKS ONLY WITH UNIVERSAL IRCD http://www.sourceforge.net/projects/ircu -it will NOT connect to Undernet ircu2.10.08 or higher without -serious modifications!!! (Undernet has changed the P10 protocol they use) Basic Install procedure: ------------------------- @@ -15,7 +12,7 @@ You can then execute the bot by changing to the directory you installed to and running: ./x2 -You will of course have to add C,N,H lines to the server you will be +You will of course have to add C and H lines to the server you will be connecting too, as well as U: lines on EVERY CONNECTED SERVER for X2 to work properly. Please submit bug reports and suggestions to the bug tracking system on Index: x2/README diff -u x2/README:1.7 x2/README:1.8 --- x2/README:1.7 Thu Nov 8 00:21:08 2001 +++ x2/README Sat Jun 14 13:24:18 2003 @@ -1,11 +1,9 @@ --------- X2 5.1 Channel and Oper Services ------- +-------- X2 5.2 Channel and Oper Services ------- Alright folks here it is. Complete channel and oper services -for universal ircd based IRC network. This version of x2 is compatable -with universal ircd ircu2.10.08.37 or above. The 2.10.09 release is -reccomended. -***X2 DOES NOT WORK WITH UNDERNET IRC DAEMON!*** -Undernet has made changes to the P10 protocol which X2 is NOT COMPATABLE with. +for undernet ircd (IRCu) based IRC network. This version of x2 is +compatable with undernet IRCu u2.10.11 or above. The u2.10.11.05 +release is recommended. I am hereby releasing the source to the channel services we at AfterNet have been using for several years to the general public, under the terms @@ -47,6 +45,20 @@ Add your net? Email me. ru...@af... -- Changes -- +------- Changes for 5.2 ------------------------ +AfterNET swapped to a new and better IRCd (UnderNet IRCu + +modifications) and is now not compatible with older IRCd's such as +universal. + +Some of the things changed: +* Fully support P10 tokens. +* Use extended numerics. +* Recognize the account (AC) token, but do nothing with it currently. + JinX will (maybe) be the new service to use accounts. +* Added new umodes and cmodes. +* Removed +h GODMODE and just left the /msg X2 GOD on/off thing. + + ------- Changes for 5.1 ------------------------ Note: This is a major upgrade. If you're upgrading from a 5.0.3 or earlier release, you should know that we've totally Index: x2/configure diff -u x2/configure:1.3 x2/configure:1.4 --- x2/configure:1.3 Sun Nov 11 03:37:11 2001 +++ x2/configure Sat Jun 14 13:24:18 2003 @@ -524,7 +524,7 @@ PACKAGE=x2serv -VERSION=5.1 +VERSION=5.2 Index: x2/configure.in diff -u x2/configure.in:1.3 x2/configure.in:1.4 --- x2/configure.in:1.3 Thu Nov 8 04:53:07 2001 +++ x2/configure.in Sat Jun 14 13:24:18 2003 @@ -2,7 +2,7 @@ AC_INIT(source/main.c) AC_CONFIG_HEADER(source/setup.h) PACKAGE=x2serv -VERSION=5.1 +VERSION=5.2 AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_PREFIX_DEFAULT(.) Index: x2/doc/config.txt diff -u x2/doc/config.txt:1.1 x2/doc/config.txt:1.2 --- x2/doc/config.txt:1.1 Wed Mar 21 01:17:29 2001 +++ x2/doc/config.txt Sat Jun 14 13:24:18 2003 @@ -17,7 +17,7 @@ NUMERIC - X2 is P10, and this is the server numeric the service x2 connects as should use. This would be the same as the number at the end of the M: line in an ircd.conf. Every server on the network - must have a different numeric (1-63). + must have a different numeric (1-4095). IRCNICK - This is the nickname of the user that is created to interface with your users. Index: x2/source/commands.c diff -u x2/source/commands.c:1.174 x2/source/commands.c:1.175 --- x2/source/commands.c:1.174 Sat Jun 14 06:23:39 2003 +++ x2/source/commands.c Sat Jun 14 13:24:18 2003 @@ -224,9 +224,7 @@ { "DUMP", c_raw, NONE, 0, 0, 0, T, T }, { "RAW", c_raw, NONE, 0, 0, 0, T, T }, #endif -#ifndef AFTERNET /* we have a mode in our ircd for this */ { "GOD", c_god, NONE, 0, 0, 0, T, T }, -#endif { "BACKUP", c_backup, NONE, 0, 0, 0, T, T }, /* ... */ { NULL, null(int(*)()), 0, 0, 0, 0, 0, 0 } @@ -818,7 +816,6 @@ return(TRUE); } -#ifndef AFTERNET int c_god(C_PARAM) { if(uptr != NULL) @@ -846,7 +843,6 @@ return(FALSE); } } -#endif int c_whoami(C_PARAM) { @@ -894,8 +890,14 @@ strcat(modetmp, "k"); if (target->Modes & UMODEg) strcat(modetmp, "g"); + if (target->Modes & UMODEh) + strcat(modetmp, "h"); if (target->Modes & UMODEx) strcat(modetmp, "x"); + if (target->Modes & UMODEB) + strcat(modetmp, "B"); + if (target->Modes & UMODER) + strcat(modetmp, "R"); if (target->Modes & UMODEgod) strcat(modetmp, "(GOD)"); send_to_user(uptr, "\002 Modes : +%s\002", modetmp); @@ -1884,7 +1886,7 @@ if (target && IsOper(target)) send_to_user(uptr, "%s is an \002IRC Operator\002.", target->Nick); if (target && IsGodOper(target)) - send_to_user(uptr, "%s has \002security override (+h)\002 enabled.", target->Nick); + send_to_user(uptr, "%s has \002security override (GOD)\002 enabled.", target->Nick); if (target && IsModeK(target)) send_to_user(uptr, "%s is a \002no-kick service (+k)\002.", target->Nick); return(TRUE); Index: x2/source/config.h diff -u x2/source/config.h:1.73 x2/source/config.h:1.74 --- x2/source/config.h:1.73 Sat Jun 14 06:16:05 2003 +++ x2/source/config.h Sat Jun 14 13:24:18 2003 @@ -35,16 +35,16 @@ /* * Please do not remove the name 'X2' and the version from this reply. If you - * make modifications please use the format: 5.1+<yournet>.<yourversion> + * make modifications please use the format: 5.2+<yournet>.<yourversion> * Or, use one of the replies provided. Obviously theres no way for me * to enforce this, but I have put many hundreds of hours into this program * and I'd like to be able to tell whos using it and what version it is based * on. * [alternate replies] - * #define VERSION "X2 v5.1 - Channel and Oper services" - * #define VERSION "<YourNet> Channel services powered by Rubin's X2 version 5.1" + * #define VERSION "X2 v5.2 - Channel and Oper services" + * #define VERSION "<YourNet> Channel services powered by Rubin's X2 version 5.2" */ -#define VERSION "X2 v5.1 - AfterNET Channel Services" +#define VERSION "X2 v5.2 - AfterNET Channel Services" /* This is used to refer to your network in various places. It should be one word, eg "AfterNET" */ #define NETWORK "AfterNET" @@ -71,20 +71,6 @@ * #define debugon */ -/* Older afternet ircu had a mode (+g) added that made - * IRC Ops able to override X2 security (God mode) - * Current afternet ircu (runs universal ircu) uses - * +h for this (we call it helper). - * If your ircu does not support this, be sure to #undef - * AFTERNET below and choose an unused mode for this: - */ -#define OVERRIDEMODE "h" - -/* If your ircd does not have an override mode for use with X2 - * please undefine this so you can /msg X2 GOD on/off - */ -#define AFTERNET - /* If you dont want the word warez in channel names, define this. * TODO : This is a hack, and would do better in a config file. Do it! */ @@ -104,12 +90,6 @@ #define GLINEFILENAME "gline.dat" #define SUPERGLINEFILENAME "supergline.dat" -/* This is part of the on-connect probes; x2 sends a - * command to crash "fizzer" worms, this text is included - * to explain the probe to the users - */ -#define FIZZER_TEXT "Please pardon this check, it is a probe for 'fizzer' worm drones. Thanks ( )" - /* These are for the Wingate check. */ #define MAXGATESOCKS 20 #define GATECHECKTIMEOUT 60 @@ -220,6 +200,10 @@ /* These are for channel mode parsing */ #define NOMODES 0 +#define CMODEu 8192 +#define CMODEC 4096 +#define CMODEc 2048 +#define CMODEr 1024 #define CMODEe 512 #define CMODER 256 #define CMODEn 128 @@ -232,6 +216,8 @@ #define CMODEm 1 /* These are for User mode parsing.. */ +#define UMODEh 8192 +#define UMODEB 4096 #define UMODEaway 2048 #define UMODEgod 1024 #define UMODER 512 Index: x2/source/misc.c diff -u x2/source/misc.c:1.49 x2/source/misc.c:1.50 --- x2/source/misc.c:1.49 Sat Jun 14 06:16:05 2003 +++ x2/source/misc.c Sat Jun 14 13:24:18 2003 @@ -347,7 +347,7 @@ char buff[MAXLEN*4]; int hidepass = 0; /* global nick!user@host command rest [time] */ -/* #channel nick!user@host +h command rest [time] */ +/* #channel nick!user@host GOD command rest [time] */ if( ! (strcasecmp(command, "LOGIN") && strcasecmp(command, "RESETPASS") && strcasecmp(command, "MLOGIN") ) ) @@ -1157,7 +1157,7 @@ if(IsGodOper(uptr)) { level = 600; - send_to_user(uptr, "\002WARNING:\002 You are using HELP mode (+h) to over-ride channel security!"); + send_to_user(uptr, "\002WARNING:\002 You are using GOD mode to override channel security!"); } } return (level); @@ -1457,6 +1457,18 @@ break; case 'm': ModeNum = ModeNum | CMODEm; + break; + case 'r': + ModeNum = ModeNum | CMODEr; + break; + case 'u': + ModeNum = ModeNum | CMODEu; + break; + case 'c': + ModeNum = ModeNum | CMODEc; + break; + case 'C': + ModeNum = ModeNum | CMODEC; break; default: return (-1); Index: x2/source/parse.c diff -u x2/source/parse.c:1.79 x2/source/parse.c:1.80 --- x2/source/parse.c:1.79 Sat Jun 14 06:16:06 2003 +++ x2/source/parse.c Sat Jun 14 13:24:18 2003 @@ -56,6 +56,7 @@ { "Z", m_pong, TRUE, TRUE }, { "P", m_privmsg, FALSE, TRUE }, { "WC", m_noop, TRUE, TRUE }, + { "WV", m_noop, TRUE, TRUE }, { "S", m_server, TRUE, FALSE }, { "B", m_burst, TRUE, FALSE }, // wtf?? @@ -88,7 +89,12 @@ { "WA", m_noop, TRUE, TRUE }, { "R", m_noop, TRUE, TRUE }, { "SE", m_settime, TRUE, FALSE }, - { "AC", m_noop, TRUE, FALSE }, /* this won't be used in this service */ + { "AC", m_noop, TRUE, FALSE }, /* not used in X2 */ + { "WU", m_noop, TRUE, TRUE }, + { "LL", m_noop, TRUE, FALSE }, + { "SH", m_noop, FALSE, TRUE }, + { "OM", m_noop, TRUE, TRUE }, + { "CM", m_noop, TRUE, TRUE }, { NULL, NULL, FALSE, FALSE } }; /* *INDENT-ON* */ @@ -448,7 +454,6 @@ if(SUB7SCAN != 0) { send_ctcp(UserPtr, "CLIENTINFO"); send_ctcp(UserPtr, "VERSION"); - send_ctcp(UserPtr, "001PING %s", FIZZER_TEXT); } } } @@ -1398,7 +1403,7 @@ static char RemotePass[MAXPASS]; /* should be this or just '10'? */ Arg[0] = (char *) strtok(LineBuff, " "); /* sender numeric */ - Arg[1] = (char *) strtok(NULL, " "); + Arg[1] = (char *) strtok(NULL, " "); if(!strcmp(Arg[0], "PING")) { /* Respond with a ping reply */ @@ -1441,12 +1446,11 @@ return; } Debug(DBGINFO, "PROTOCOL: %s", Arg[5]); - if(strcmp(Arg[5], "J10")) /* If Arg5] is not "J10" then.. */ + if(strcmp(Arg[5], "J10")) /* If Arg[5] is not "J10" then.. */ { Debug(DBGWARNING, "UNKNOWN protocol. This is NOT a compatable irc daemon."); - Debug(DBGWARNING, "Currently X2 works with the following irc servers:"); - Debug(DBGWARNING, " Universal ircd - http://ircu.sourceforge.net"); - Debug(DBGWARNING, "OLD Undernet ircd - 2.10.07 and lower P10 versions."); + Debug(DBGWARNING, "Currently X2 works with the following IRC daemon(s):"); + Debug(DBGWARNING, "UnderNet IRCu - u2.10.11 and above - http://coder-com.undernet.org"); Debug(DBGWARNING, ""); Debug(DBGWARNING, "Making x2 work with other versions requires serious rewriting."); sleep(4); Index: x2/source/user.c diff -u x2/source/user.c:1.34 x2/source/user.c:1.35 --- x2/source/user.c:1.34 Thu Nov 8 00:21:08 2001 +++ x2/source/user.c Sat Jun 14 13:24:18 2003 @@ -1,4 +1,3 @@ - /* * X2 IRC Operator and Channel services * by Rubin (ru...@af...) @@ -549,11 +548,9 @@ case 'i': UserMode = UMODEi; break; -/* New afternet "GOD" mode +h (helper) */ case 'h': - UserMode = UMODEgod; + UserMode = UMODEh; break; -/* ircu hack2 notices +g */ case 'g': UserMode = UMODEg; break; @@ -565,6 +562,9 @@ break; case 'r': UserMode = UMODEr; + break; + case 'B': + UserMode = UMODEB; break; case 'R': UserMode = UMODER; ----------------------- End of diff ----------------------- |
From: Matthias C. <ul...@us...> - 2003-06-14 13:23:50
|
Committer : Matthias Crauwels <ul...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2003-06-14 13:23:50 UTC Modified files: source/commands.c source/server.c Log message: Author: Matthias Crauwels <ult...@wo...> Log message: * forgot 2 updates which cored the bot ---------------------- diff included ---------------------- Index: x2/source/commands.c diff -u x2/source/commands.c:1.173 x2/source/commands.c:1.174 --- x2/source/commands.c:1.173 Mon Feb 17 00:58:48 2003 +++ x2/source/commands.c Sat Jun 14 06:23:39 2003 @@ -3277,7 +3277,8 @@ while (ServPtr) { if(!strstr(ServPtr->Name, ".Services") || (strstr(rest, "DEBUG") )) /* filter out Services */ - send_to_user(uptr, "\002 %s\002(%d) has %d user(s) <-> \002%s\002", ServPtr->Name, convert2n[(int)ServPtr->numnick], ServPtr->NumOfUsers, ServPtr->LinkName); + send_to_user(uptr, "\002 %s\002(%d) has %d user(s) <-> \002%s\002", ServPtr->Name, + base64toint(ServPtr->numnick), ServPtr->NumOfUsers, ServPtr->LinkName); ServPtr = ServPtr->NextA; } } Index: x2/source/server.c diff -u x2/source/server.c:1.20 x2/source/server.c:1.21 --- x2/source/server.c:1.20 Sat Jun 14 06:16:06 2003 +++ x2/source/server.c Sat Jun 14 06:23:40 2003 @@ -508,7 +508,7 @@ Servers->Table[Pos] = CurrPtr->NextA; else TailPtr->NextA = CurrPtr->NextA; - Servers->TableU[convert2n[(int)CurrPtr->numnick]] = NULL; + Servers->TableU[base64toint(CurrPtr->numnick)] = NULL; free(CurrPtr->Name); CurrPtr->Name = NULL; ----------------------- End of diff ----------------------- |
From: Matthias C. <ul...@us...> - 2003-06-14 13:16:19
|
Committer : Matthias Crauwels <ul...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2003-06-14 13:16:18 UTC Modified files: source/config.h source/main.c source/misc.c source/parse.c source/send.c source/server.c source/server.h Log message: Author: Matthias Crauwels <ult...@wo...> Log message: * Added Extended-numerics support ( this service will now only link to ircu2.10.08 or above!! ) * Added 'Account' handler ---------------------- diff included ---------------------- Index: x2/source/config.h diff -u x2/source/config.h:1.72 x2/source/config.h:1.73 --- x2/source/config.h:1.72 Sat May 17 21:04:09 2003 +++ x2/source/config.h Sat Jun 14 06:16:05 2003 @@ -21,9 +21,11 @@ /* If there are problems and you want all X2 output to go to x2.debug, define * this. Note that it gets very big, very fast... + * * #define LOGALLDEBUG */ + /* This is the CTCP character. (^A) */ #define CTCP '\001' @@ -65,8 +67,9 @@ #define GATEURL "http://www.afternet.org/support/proxy.html" /* Uncomment the following for debugging. - #define debugon -*/ + * + * #define debugon + */ /* Older afternet ircu had a mode (+g) added that made * IRC Ops able to override X2 security (God mode) @@ -145,7 +148,7 @@ #define OPERSEGSIZE 401 #define SERVNAMESEGSIZE 21 #define NETCHANMAXSIZE 21 -#define MAXNUMNICKNUM 65 +#define MAXNUMNICKNUM 4096 #define MAXLOGINLEN 10 /* This is the max # of lines of accounting.log @@ -167,7 +170,9 @@ * The default is 9. AfterNET runs 30. */ #define MAXNICKLEN 31 #define MAXCIDLEN 10 /* TS4 Connection ID (no idea whats reasonable). */ -#define NUMNICKLEN 4 /* 1 char (server number) + 2 char (user number) + '\0' */ +#define SERVNUMLEN 3 /* 2 char (server number) + '\0' */ +#define NUMNICKLEN 6 /* 2 char (server number) + 3 char (user number) + '\0' */ +#define NUMNICKMASK 63 /* (NUMNICKBASE-1) */ #define PASSWORDLEN 16 /* we're now using md5 for encryption, so MUCH longer passwords can be used. */ /* I do believe that 16 should be long enough for everyone, though (: */ #define MAXPASS 200 /* No longer used for ban reason. Shrinking... */ @@ -552,7 +557,7 @@ char *Name; char *LinkName; char *Description; - char numnick; + char numnick[SERVNUMLEN]; int NumOfUsers; int Deleted; struct ServStruct *NextA; /* jump by nAme */ @@ -649,6 +654,7 @@ extern int ServiceNumeric; extern char NumNick[NUMNICKLEN]; +extern char ServNum[SERVNUMLEN]; extern u_short Port, SERVERPORT; extern int Sock, NewSock; Index: x2/source/main.c diff -u x2/source/main.c:1.59 x2/source/main.c:1.60 --- x2/source/main.c:1.59 Sat May 17 20:43:45 2003 +++ x2/source/main.c Sat Jun 14 06:16:05 2003 @@ -44,7 +44,8 @@ IrcNick[MAXNICKLEN] = "X2", CommandMark = '.', HomeDir[2048]="", AccessLog[2048]=""; int ServiceNumeric = 53; -char NumNick[NUMNICKLEN] = "1X2"; +char ServNum[SERVNUMLEN] = "A1"; +char NumNick[NUMNICKLEN] = "A1AAA"; u_short Port, SERVERPORT; int Sock, NewSock; @@ -189,13 +190,15 @@ fscanf(ConfFile, "%s", StrBuffr); - /* Numeric must be 0-63 */ - if ( (i = atol(StrBuffr)) & ~(64-1) ) { + /* Numeric must be 0-4095 */ + if ( (i = atol(StrBuffr)) & ~(4096-1) ) { printf("Invalid numeric (%d) in NUMERIC line. \n", i); exit(1); } - NumNick[0] = convert2y[i]; + inttobase64(ServNum, i, 2); + strcpy(NumNick, ServNum); + strcat(NumNick, "AAA"); ServiceNumeric = i; } else if (!strcmp(StrBuffr, "PASSWORD")) Index: x2/source/misc.c diff -u x2/source/misc.c:1.48 x2/source/misc.c:1.49 --- x2/source/misc.c:1.48 Sat May 17 20:43:45 2003 +++ x2/source/misc.c Sat Jun 14 06:16:05 2003 @@ -131,6 +131,17 @@ return i; } +/* taken from ircu2.10.05 */ +const char* inttobase64(char* buf, unsigned int v, unsigned int count) +{ + buf[count] = '\0'; + while (count > 0) { + buf[--count] = convert2y[(v & NUMNICKMASK)]; + v >>= NUMNICKLOG; + } + return buf; +} + char *NickToNum(char *nick) { Index: x2/source/parse.c diff -u x2/source/parse.c:1.78 x2/source/parse.c:1.79 --- x2/source/parse.c:1.78 Thu Jun 12 20:03:50 2003 +++ x2/source/parse.c Sat Jun 14 06:16:06 2003 @@ -88,6 +88,7 @@ { "WA", m_noop, TRUE, TRUE }, { "R", m_noop, TRUE, TRUE }, { "SE", m_settime, TRUE, FALSE }, + { "AC", m_noop, TRUE, FALSE }, /* this won't be used in this service */ { NULL, NULL, FALSE, FALSE } }; /* *INDENT-ON* */ @@ -124,7 +125,7 @@ { return(0); /* Msg to channel */ } - else if(to[0] == convert2y[ServiceNumeric]) + else if(strcmp(to, NumNick) == 0) { Debug(DBGINFO, "m_privmsg() %s(%s) sent privmsg to %s [%s]", uptr->Nick, uptr->Numnick, to, rest); /* Check for CTCP */ @@ -186,10 +187,7 @@ sprintf(CSHOST, "%s@%s", IrcNick, ServiceName); if(!strcasecmp(to, CSHOST)) - { - strcpy(to, "?X2"); - to[0] = convert2y[ServiceNumeric]; - } + strcpy(to, NumNick); if(to[0] == '#') { if(rest[0] == CommandMark) @@ -197,7 +195,7 @@ ProcessCommand(uptr, to, rest); } } - else if(to[0] == convert2y[ServiceNumeric]) + else if(strcmp(to, NumNick) == 0) { Debug(DBGINFO, "m_privmsg() %s(%s) sent privmsg to %s [%s]", uptr->Nick, uptr->Numnick, to, rest); /* Check for CTCP */ @@ -224,6 +222,9 @@ int m_server(M_PARAMS) { char* Arg[8]; + char numnick[SERVNUMLEN]; + int i; + Arg[0] = (char *) strtok(rest, " "); /* Name */ Arg[1] = (char *) strtok(NULL, " "); /* hopes */ Arg[2] = (char *) strtok(NULL, " "); /* ts 1 */ @@ -238,7 +239,11 @@ Debug(DBGWARNING, "Incorrect syntax in SERVER line"); return(0); } - AddServer(Arg[0], sptr->Name, Arg[5][0]); + + for(i = 0; i < SERVNUMLEN - 1; i++) + numnick[i] = Arg[5][i]; + + AddServer(Arg[0], sptr->Name, numnick); return (0); } /* E.G.: @@ -370,7 +375,7 @@ int m_nick(M_PARAMS) { char* Arg[9]; - char* modes; + char* modes, *account; UserListType UserPtr; unsigned int IP; Arg[0] = (char *) strtok(rest, " "); /* nick */ @@ -393,8 +398,17 @@ modes = (char *) strtok(NULL, " "); /* modes */ if(modes[0] == '+') { - Arg[5] = modes; - Arg[6] = (char *) strtok(NULL, " "); /* Compressed IP */ + if(strchr(modes, 'r')) + { + Arg[5] = modes; + account = (char *) strtok(NULL, " "); /* This user has an account set from another service */ + Arg[6] = (char *) strtok(NULL, " "); /* Compressed IP */ + } + else + { + Arg[5] = modes; + Arg[6] = (char *) strtok(NULL, " "); /* Compressed IP */ + } } else { @@ -1383,8 +1397,8 @@ char *Arg[MAXLEN]; static char RemotePass[MAXPASS]; /* should be this or just '10'? */ - Arg[0] = (char *) strtok(LineBuff, " "); - Arg[1] = (char *) strtok(NULL, " "); + Arg[0] = (char *) strtok(LineBuff, " "); /* sender numeric */ + Arg[1] = (char *) strtok(NULL, " "); if(!strcmp(Arg[0], "PING")) { /* Respond with a ping reply */ @@ -1410,8 +1424,9 @@ { /* Beginning of burst. validate password and name, authenticate and send our burst * if we were listning for the link */ UpLinkList *UpLinkPtr; - char Numnick[NUMNICKLEN]; - + char numnick[SERVNUMLEN]; + int i; + Debug(DBGNOTICE, "Got SERVER line from uplink. Processing."); Arg[2] = (char *) strtok(NULL, " "); /* Hops */ Arg[3] = (char *) strtok(NULL, " "); /* TS #1 */ @@ -1426,7 +1441,7 @@ return; } Debug(DBGINFO, "PROTOCOL: %s", Arg[5]); - if(strcmp(Arg[5], "J10")) /* If Arg[5] is not "J10" then.. */ + if(strcmp(Arg[5], "J10")) /* If Arg5] is not "J10" then.. */ { Debug(DBGWARNING, "UNKNOWN protocol. This is NOT a compatable irc daemon."); Debug(DBGWARNING, "Currently X2 works with the following irc servers:"); @@ -1452,8 +1467,11 @@ #endif return; } - Debug(DBGINFO, "Adding server %s %s %c", Arg[1], ServiceName, Arg[6][0]); - AddServer(Arg[1], ServiceName, Arg[6][0]); + + for(i = 0; i < SERVNUMLEN - 1; i++) + numnick[i] = Arg[6][i]; + Debug(DBGINFO, "Adding server %s %s %s", Arg[1], ServiceName, numnick); + AddServer(Arg[1], ServiceName, numnick); NETBURSTING = TRUE; /* Ignore incomming users for a while*/ REMOTE_AUTHENTICATED = TRUE; /* Stop parsing PASS/SERVER etc */ bantimer = time(NULL); /* Start ban timer over */ @@ -1470,9 +1488,7 @@ } } - strcpy(Numnick, "?X2"); - Numnick[0] = convert2y[ServiceNumeric]; /* Server numnick is first letter of user numnick */ - AddUser(Numnick, IrcNick, IrcNick, "X2", ServiceName, + AddUser(NumNick, IrcNick, IrcNick, "X2", ServiceName, LOCALIP, ServiceName, (UMODEk & UMODEo)); ProcessUserMode(FindNick(IrcNick, UsersN), "+kows"); @@ -1508,58 +1524,22 @@ UserListType UserPtr = NULL; ServerListType ServerPtr = NULL; int i; - /* prefix hack is because when sending numerics you have to parse the - * target differently, depending if its sent as <numnick> or :server. - * if prefix_hack is 1, it was sent as :server, and numeric target - * must be nick. Otherwise, prefix_hack is 0, and prefix was a proper - * prefix and target is a numnick. (ircu2.10.08 sends :server) - */ - int prefix_hack = 0; Sender = (char *) strtok(LineBuff, " "); - if(Sender[0] == ':') - { - prefix_hack++; /* See above comment */ - Sender++; - if(!(ServerPtr = GetServer(Sender))) - { - if(!(UserPtr = FindNick(Sender, UsersN))) - Debug(DBGINFO, "Sender %s not found", Sender); - } - } - else - { /* Find by numnicks */ - if(!((!Sender[1]) && (ServerPtr = GetServerByNumnick(Sender[0])))) - { - if(!(UserPtr = FindNumnick(Sender, UsersU))) - Debug(DBGINFO, "Sender %s not found", Sender); - } - } Command = (char *) strtok(NULL, " "); rest = (char *) strtok(NULL, "\r\n\0"); -/*** Check if maybe its a numeric ***/ - if(isdigit(Command[0]) && ServerPtr) /* If first letter is a number and a server sent it.. */ - { - int num = 0; - if((num = atoi(Command))) /* if num is non zero.. */ - { - char* target; - UserListType TmpUserPtr; - target = (char *) strtok(rest, " "); - rest = (char *) strtok(NULL, "\r\n"); - if(prefix_hack) - TmpUserPtr = FindNick(target, UsersN); - else - TmpUserPtr = FindNumnick(target, UsersU); - ProcessNumeric(ServerPtr, num, TmpUserPtr, rest); - return(0); - } - } + + if((strlen(Sender) < 5) && !(ServerPtr = GetServerByNumnick(Sender))) + Debug(DBGINFO, "Sender %s not found", Sender); + + if((strlen(Sender) > 2) && !(UserPtr = FindNumnick(Sender, UsersU))) + Debug(DBGINFO, "Sender %s not found", Sender); + for(i=0;server_commands[i].name;i++) { if(!strcasecmp(server_commands[i].name, Command)) { - if(UserPtr) + if(UserPtr) { if(server_commands[i].usercmd == FALSE) { @@ -1567,7 +1547,7 @@ return(0); } } - else if(ServerPtr) + else if(ServerPtr) { if(server_commands[i].servercmd == FALSE) { Index: x2/source/send.c diff -u x2/source/send.c:1.35 x2/source/send.c:1.36 --- x2/source/send.c:1.35 Thu Jun 12 20:03:51 2003 +++ x2/source/send.c Sat Jun 14 06:16:06 2003 @@ -30,14 +30,11 @@ { va_list args; char buff[LINEBUFFSIZE]; - char numnick[NUMNICKLEN]; va_start(args, format); vsprintf(buff, format, args); va_end(args); - strcpy(numnick, " "); - numnick[0] = convert2y[ServiceNumeric]; - send_command(numnick, "%s", buff); + send_command(ServNum, "%s", buff); } void send_command_from_nick(char *format, ...) @@ -437,7 +434,6 @@ void Authenticate(UpLinkList *UpLinkPtr) { - /* This is now done in parse.c * * AddServer(Uplink,ServiceName); * */ @@ -447,17 +443,16 @@ ConnectTime = ServerTimeStamp = time(NULL); sendtosock(Sock, "PASS :%s", UpLinkPtr->ServPass); LinkTimeStamp = NetTime()- 10000; - sendtosock(Sock, "SERVER %s 1 %lu %lu J10 %cD] 0 :%s", ServiceName, LinkTimeStamp, ServerTimeStamp, - convert2y[ServiceNumeric], - "X2 Channel Service"); + sendtosock(Sock, "SERVER %s 1 %lu %lu J10 %s]]] 0 :%s", ServiceName, LinkTimeStamp, ServerTimeStamp, + ServNum, "X2 Channel Service"); /* <server> NICK <nick> <hops> <timestamp> <user> <host> <compressed ip> <3 letter numeric> :<username> */ - sendtosock(Sock, "%c N %s 1 %lu %s %s +%s %s %c%s :\002%c\002) /MSG %s Help (\002%c\002", - convert2y[ServiceNumeric], IrcNick, LinkTimeStamp, + sendtosock(Sock, "%s N %s 1 %lu %s %s +%s %s %s%s :\002%c\002) /MSG %s Help (\002%c\002", + ServNum, IrcNick, LinkTimeStamp, IrcNick, /* user */ ServiceName, /* host */ "ko", /* Modes */ "B]AAAB", /* compressed ip (127.0.0.1) */ - convert2y[ServiceNumeric], "X2", /* ?X2 is our numnick where ? is server num */ + ServNum, "AAA", /* lets use the first available numeric :) */ CommandMark, IrcNick, CommandMark); #ifdef pinging PingStamp = time(NULL); Index: x2/source/server.c diff -u x2/source/server.c:1.19 x2/source/server.c:1.20 --- x2/source/server.c:1.19 Mon Feb 24 01:19:55 2003 +++ x2/source/server.c Sat Jun 14 06:16:06 2003 @@ -325,14 +325,14 @@ } } -ServerListType GetServerByNumnick(char numnick) +ServerListType GetServerByNumnick(char *numnick) { ServerListType TempPtr; - TempPtr = Servers->TableU[convert2n[(int)numnick]]; + TempPtr = Servers->TableU[base64toint(numnick)]; while (TempPtr) { - if (numnick == TempPtr->numnick) + if (strcmp(numnick, TempPtr->numnick) == 0) { return (TempPtr); } @@ -363,7 +363,7 @@ return (NULL); } -int AddServer(char *ServName, char *ServLink, char numnick) +int AddServer(char *ServName, char *ServLink, char *numnick) { static int ServerSegWarning = 1; ServerListType NewServ; @@ -395,7 +395,8 @@ strcpy(NewServ->Name, ServName); strcpy(NewServ->LinkName, ServLink); - NewServ->numnick = numnick; + numnick[2] = '\0'; /* make sure we only have 2 chars as servernum */ + strcpy(NewServ->numnick, numnick); NewServ->NumOfUsers = 0; NewServ->Deleted = FALSE; @@ -404,7 +405,7 @@ NewServ->NextA = Servers->Table[Pos]; Servers->Table[Pos] = NewServ; - Servers->TableU[convert2n[(int)numnick]] = NewServ; + Servers->TableU[base64toint(numnick)] = NewServ; ServerCount++; return (1); } Index: x2/source/server.h diff -u x2/source/server.h:1.8 x2/source/server.h:1.9 --- x2/source/server.h:1.8 Wed Feb 28 02:11:29 2001 +++ x2/source/server.h Sat Jun 14 06:16:06 2003 @@ -11,9 +11,9 @@ void ProcessRemoveGline(char *Address); void ProcessAddSGline(char *Address, time_t gtime, char *Reason); void ProcessRemoveSGline(char *Address); -int AddServer(char *ServName, char *ServLink, char numnick); +int AddServer(char *ServName, char *ServLink, char *numnick); ServerListType GetServer(char *Name); -ServerListType GetServerByNumnick(char numnick); +ServerListType GetServerByNumnick(char *numnick); void RemoveServer(char *Name); void RemoveDownLinks(char *Name); void KillServerList(); ----------------------- End of diff ----------------------- |
From: Reed L. <r3...@us...> - 2003-06-13 03:04:06
|
Committer : Reed Loden <r3...@us...> CVSROOT : /cvsroot/x2serv Module : x2 Commit time: 2003-06-13 03:04:02 UTC Modified files: source/chan.c source/parse.c source/parse.h source/send.c Log message: Started to work on getting X2 to work with u2.10.11+ on the new AfterNET IRCd. ---------------------- diff included ---------------------- Index: x2/source/chan.c diff -u x2/source/chan.c:1.85 x2/source/chan.c:1.86 --- x2/source/chan.c:1.85 Sat May 17 20:43:45 2003 +++ x2/source/chan.c Thu Jun 12 20:03:49 2003 @@ -976,7 +976,7 @@ if(hptr && !strcmp(crypt("*",hptr->Pass), hptr->Pass)) { send_to_user(UserNode, "This version of X2 requires that all users have passwords set."); - send_to_user(UserNode, "Please set your password. T ype: /msg %s %s PASS * yournewpass", IrcNick, ChanNode->Name); + send_to_user(UserNode, "Please set your password. Type: /msg %s %s PASS * yournewpass", IrcNick, ChanNode->Name); } /* If they are (co)owner, mark that one has joined. */ Index: x2/source/parse.c diff -u x2/source/parse.c:1.77 x2/source/parse.c:1.78 --- x2/source/parse.c:1.77 Sat May 17 20:43:45 2003 +++ x2/source/parse.c Thu Jun 12 20:03:50 2003 @@ -48,47 +48,47 @@ int usercmd; } server_commands[] = { -/* Command function servers users .. */ - { "END_OF_BURST", m_eob, TRUE, FALSE }, - { "EOB_ACK", m_noop, TRUE, FALSE }, - { "DESYNCH", m_desynch, TRUE, FALSE }, - { "PING", m_ping, TRUE, FALSE }, - { "PONG", m_pong, TRUE, TRUE }, - { "PRIVMSG", m_privmsg, FALSE, TRUE }, - { "WC", m_noop, TRUE, TRUE }, - { "SERVER", m_server, TRUE, FALSE }, - { "BURST", m_burst, TRUE, FALSE }, +/* Command function servers users .. */ + { "EB", m_eob, TRUE, FALSE }, + { "EA", m_noop, TRUE, FALSE }, + { "DS", m_desynch, TRUE, FALSE }, + { "G", m_ping, TRUE, FALSE }, + { "Z", m_pong, TRUE, TRUE }, + { "P", m_privmsg, FALSE, TRUE }, + { "WC", m_noop, TRUE, TRUE }, + { "S", m_server, TRUE, FALSE }, + { "B", m_burst, TRUE, FALSE }, // wtf?? -// { "NOTICE", m_ping, TRUE, TRUE }, - { "NICK", m_nick, TRUE, TRUE }, - { "CREATE", m_create, FALSE, TRUE }, - { "JOIN", m_join, FALSE, TRUE }, - { "PART", m_part, FALSE, TRUE }, - { "MODE", m_mode, TRUE, TRUE }, - { "INVITE", m_noop, TRUE, TRUE }, - { "AWAY", m_away, FALSE, TRUE }, - { "WHOIS", m_whois, FALSE, TRUE }, - { "GLINE", m_gline, TRUE, TRUE }, - { "KICK", m_kick, TRUE, TRUE }, - { "QUIT", m_quit, FALSE, TRUE }, - { "KILL", m_kill, TRUE, TRUE }, - { "SQUIT", m_squit, TRUE, TRUE }, - { "TOPIC", m_noop , TRUE, TRUE }, - { "NOTICE", m_notice, TRUE, TRUE }, - { "INFO", m_noop, TRUE, TRUE }, - { "ADMIN", m_noop, TRUE, TRUE }, - { "CONNECT", m_noop, TRUE, TRUE }, - { "TIME", m_noop, TRUE, TRUE }, - { "TRACE", m_noop, TRUE, TRUE }, - { "MOTD", m_noop, TRUE, TRUE }, - { "RPING", m_noop, TRUE, TRUE }, - { "SILENCE", m_noop, TRUE, TRUE }, - { "UPING", m_noop, TRUE, TRUE }, - { "VERSION", m_noop, TRUE, TRUE }, - { "WALLOPS", m_noop, TRUE, TRUE }, - { "STATS", m_noop, TRUE, TRUE }, - { "SETTIME", m_settime, TRUE, FALSE }, - { NULL, NULL, FALSE, FALSE } +// { "O", m_ping, TRUE, TRUE }, + { "N", m_nick, TRUE, TRUE }, + { "C", m_create, FALSE, TRUE }, + { "J", m_join, FALSE, TRUE }, + { "L", m_part, FALSE, TRUE }, + { "M", m_mode, TRUE, TRUE }, + { "I", m_noop, TRUE, TRUE }, + { "A", m_away, FALSE, TRUE }, + { "W", m_whois, FALSE, TRUE }, + { "GL", m_gline, TRUE, TRUE }, + { "K", m_kick, TRUE, TRUE }, + { "Q", m_quit, FALSE, TRUE }, + { "D", m_kill, TRUE, TRUE }, + { "SQ", m_squit, TRUE, TRUE }, + { "T", m_noop, TRUE, TRUE }, + { "O", m_notice, TRUE, TRUE }, + { "F", m_noop, TRUE, TRUE }, + { "AD", m_noop, TRUE, TRUE }, + { "CO", m_noop, TRUE, TRUE }, + { "TI", m_noop, TRUE, TRUE }, + { "TR", m_noop, TRUE, TRUE }, + { "MO", m_noop, TRUE, TRUE }, + { "RI", m_noop, TRUE, TRUE }, + { "U", m_noop, TRUE, TRUE }, + { "UP", m_noop, TRUE, TRUE }, + { "V", m_noop, TRUE, TRUE }, + { "WA", m_noop, TRUE, TRUE }, + { "R", m_noop, TRUE, TRUE }, + { "SE", m_settime, TRUE, FALSE }, + { NULL, NULL, FALSE, FALSE } }; /* *INDENT-ON* */ Index: x2/source/parse.h diff -u x2/source/parse.h:1.10 x2/source/parse.h:1.11 --- x2/source/parse.h:1.10 Tue Apr 24 23:05:40 2001 +++ x2/source/parse.h Thu Jun 12 20:03:51 2003 @@ -1,7 +1,7 @@ int ProcessCommand(UserListType from, char *to, char *rest); int ProcessCTCP(UserListType from, char *to, char *rest); int ReadSocket(int TheSocket, char *Buffer); -/* m_fuctions */ +/* m_functions */ #define M_PARAMS ServerListType sptr, UserListType uptr, char* rest #define M_PARAMS_CALL sptr, uptr, rest Index: x2/source/send.c diff -u x2/source/send.c:1.34 x2/source/send.c:1.35 --- x2/source/send.c:1.34 Wed Feb 27 03:54:46 2002 +++ x2/source/send.c Thu Jun 12 20:03:51 2003 @@ -59,7 +59,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("PRIVMSG %s :%s", to, buff); + send_command_from_nick("P %s :%s", to, buff); } void send_notice(char *to, char *rest, ...) @@ -70,7 +70,7 @@ va_start(args, rest); vsprintf(buff, rest, args); va_end(args); - send_command_from_nick("NOTICE %s :%s", to, buff); + send_command_from_nick("O %s :%s", to, buff); } void send_to_channel(ChannelListType cptr, char *sendtext,...) @@ -119,7 +119,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("WALLOPS :%s", buff); + send_command_from_nick("WA :%s", buff); } void send_kick(ChannelListType cptr, UserListType uptr, char *format, ...) @@ -131,7 +131,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("KICK %s %s :%s", cptr->Name, uptr->Numnick, buff); + send_command_from_nick("K %s %s :%s", cptr->Name, uptr->Numnick, buff); ProcessPart(cptr, uptr); } @@ -141,7 +141,7 @@ * returns the status, not our uplink. This is important * for getting good away status. */ - send_command_from_nick("WHOIS %c :%s", uptr->Numnick[0], uptr->Nick); + send_command_from_nick("W %c :%s", uptr->Numnick[0], uptr->Nick); } void send_chanmode(ChannelListType cptr, char *format, ...) @@ -153,28 +153,28 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("MODE %s %s", cptr->Name, buff); + send_command_from_nick("M %s %s", cptr->Name, buff); } /* A simpler mode for all the stuff in chan.c */ void send_op(ChannelListType cptr, UserListType uptr) { - send_command_from_nick("MODE %s +o %s", cptr->Name, uptr->Numnick); + send_command_from_nick("M %s +o %s", cptr->Name, uptr->Numnick); } void send_deop(ChannelListType cptr, UserListType uptr) { - send_command_from_nick("MODE %s -o %s", cptr->Name, uptr->Numnick); + send_command_from_nick("M %s -o %s", cptr->Name, uptr->Numnick); } void send_voice(ChannelListType cptr, UserListType uptr) { - send_command_from_nick("MODE %s +v %s", cptr->Name, uptr->Numnick); + send_command_from_nick("M %s +v %s", cptr->Name, uptr->Numnick); } void send_devoice(ChannelListType cptr, UserListType uptr) { - send_command_from_nick("MODE %s -v %s", cptr->Name, uptr->Numnick); + send_command_from_nick("M %s -v %s", cptr->Name, uptr->Numnick); } void send_usermode(char *format, ...) @@ -186,7 +186,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("MODE %s %s", NumNick, buff); + send_command_from_nick("M %s %s", NumNick, buff); } void send_wallchops(ChannelListType cptr, char *format, ...) @@ -198,7 +198,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("WALLCHOPS %s :%s", cptr->Name, buff); + send_command_from_nick("WC %s :%s", cptr->Name, buff); } void send_kill(UserListType uptr, char *format, ...) @@ -210,7 +210,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("KILL %s :%s", uptr->Numnick, buff); + send_command_from_nick("D %s :%s", uptr->Numnick, buff); } void send_gline(char *mask, time_t duration, char *format, ...) @@ -222,7 +222,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("GLINE * +%s %lu :%s", mask, duration, buff); + send_command_from_server("GL * +%s %lu :%s", mask, duration, buff); } void send_gline_to_server(char num, char *mask, time_t duration, char *format, ...) @@ -234,22 +234,22 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("GLINE %c +%s %lu :%s", num, mask, duration, buff); + send_command_from_server("GL %c +%s %lu :%s", num, mask, duration, buff); } void send_ungline(char *mask) { - send_command_from_server("GLINE * -%s", mask); + send_command_from_server("GL * -%s", mask); } void send_settime(time_t thetime) { - send_command_from_server("SETTIME %lu :%s", thetime, ServiceName); + send_command_from_server("SE %lu :%s", thetime, ServiceName); } void send_opchan(ChannelListType cptr) { - send_command_from_server("MODE %s +o %s 0", cptr->Name, NumNick); + send_command_from_server("M %s +o %s 0", cptr->Name, NumNick); } void send_hackmode(ChannelListType cptr, char *format, ...) @@ -261,7 +261,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("MODE %s %s %lu", cptr->Name, buff, 0); + send_command_from_server("M %s %s %lu", cptr->Name, buff, 0); } void send_join(ChannelListType cptr) @@ -271,7 +271,7 @@ else { /* Services CAN join +kibl channels without worry */ cptr->NumOfNicks++; - send_command_from_nick("JOIN %s", cptr->Name); + send_command_from_nick("J %s", cptr->Name); } } @@ -281,7 +281,7 @@ if (cptr->NumOfNicks == 0) cptr->CreationDate = Timestamp; cptr->NumOfNicks++; - send_command_from_nick("CREATE %s %lu", cptr->Name, Timestamp); + send_command_from_nick("C %s %lu", cptr->Name, Timestamp); } void send_part(ChannelListType cptr, char *format, ...) @@ -294,18 +294,18 @@ va_end(args); cptr->NumOfNicks--; - send_command_from_nick("PART %s :%s", cptr->Name, buff); + send_command_from_nick("L %s :%s", cptr->Name, buff); } void send_topic(ChannelListType cptr, char *topic) { /* Never really need %s formatting in topic */ - send_command_from_nick("TOPIC %s :%s", cptr->Name, topic); + send_command_from_nick("T %s :%s", cptr->Name, topic); } void send_invite(ChannelListType cptr, UserListType uptr) { - send_command_from_nick("INVITE %s :%s", uptr->Nick, cptr->Name); + send_command_from_nick("I %s :%s", uptr->Nick, cptr->Name); } void send_quit(char *format, ...) @@ -317,7 +317,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_nick("QUIT :%s", buff); + send_command_from_nick("Q :%s", buff); } void send_squit(char* who, char *format, ...) @@ -329,12 +329,12 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("SQUIT %s %s :%s", who, ServiceName, buff); + send_command_from_server("SQ %s %s :%s", who, ServiceName, buff); } void send_connect(char *servertoconnect, int port, ServerListType target) { - send_command_from_nick("CONNECT %s %d :%c", servertoconnect, port, target->numnick); + send_command_from_nick("CO %s %d :%c", servertoconnect, port, target->numnick); } void send_spoofserv(char *servname, int Numeric, char *format, ...) @@ -347,7 +347,7 @@ vsprintf(buff, format, args); va_end(args); - send_command_from_server("SERVER %s 1 9999999999 9999999999 P10 %cD] 0 :%s", + send_command_from_server("S %s 1 9999999999 9999999999 P10 %cD] 0 :%s", servname, NumChar, buff); } @@ -365,12 +365,12 @@ void send_serverping(char *who) { - send_command_from_server("PING %s :%s", ServiceName, who); + send_command_from_server("G %s :%s", ServiceName, who); } void send_serverpong(char *who) { - send_command_from_server("PONG %s :%s", ServiceName, who); + send_command_from_server("Z %s :%s", ServiceName, who); } /* CTCPs */ @@ -427,12 +427,12 @@ void send_eob() { - send_command_from_server("END_OF_BURST"); + send_command_from_server("EB"); } void send_eob_ack() { - send_command_from_server("EOB_ACK"); + send_command_from_server("EA"); } void Authenticate(UpLinkList *UpLinkPtr) @@ -451,7 +451,7 @@ convert2y[ServiceNumeric], "X2 Channel Service"); /* <server> NICK <nick> <hops> <timestamp> <user> <host> <compressed ip> <3 letter numeric> :<username> */ - sendtosock(Sock, "%c NICK %s 1 %lu %s %s +%s %s %c%s :\002%c\002) /MSG %s Help (\002%c\002", + sendtosock(Sock, "%c N %s 1 %lu %s %s +%s %s %c%s :\002%c\002) /MSG %s Help (\002%c\002", convert2y[ServiceNumeric], IrcNick, LinkTimeStamp, IrcNick, /* user */ ServiceName, /* host */ @@ -471,7 +471,7 @@ */ void send_preauth_pong(char *arg) { - sendtosock(Sock, "PONG :%s", arg); /* Needs the : */ + sendtosock(Sock, "Z :%s", arg); /* Needs the : */ } void ModeChans() @@ -487,7 +487,7 @@ { if(TempChanPtr->settings[INCHAN]) { - sendtosock(Sock, ":%s MODE %s %s", IrcNick, TempChanPtr->Name, + sendtosock(Sock, ":%s M %s %s", IrcNick, TempChanPtr->Name, GetModeString(ModeString, TempChanPtr->PlusModes, TempChanPtr->MinModes, TempChanPtr->Key, TempChanPtr->Limit)); @@ -495,7 +495,7 @@ if(TempChanPtr->settings[INCHAN]) { if (strcmp(TempChanPtr->Topic, "*") && (TempChanPtr->settings[TOPICFREQ] > 0)) - sendtosock(Sock, ":%s TOPIC %s :%s", IrcNick, + sendtosock(Sock, ":%s T %s :%s", IrcNick, TempChanPtr->Name, TempChanPtr->Topic); } TempChanPtr = TempChanPtr->Next; @@ -519,7 +519,7 @@ if(TempChanPtr->settings[INCHAN]) { send_opchan(TempChanPtr); - sendtosock(Sock, ":%s MODE %s +o %s %lu", + sendtosock(Sock, ":%s M %s +o %s %lu", ServiceName, TempChanPtr->Name, IrcNick, BURSTCHANNELDATE); } @@ -541,7 +541,7 @@ if(TempChanPtr->settings[INCHAN]) { TempChanPtr->NumOfNicks++; /* Note that we joined the channel */ - sendtosock(Sock, "%c BURST %s %lu %s:o", + sendtosock(Sock, "%c B %s %lu %s:o", convert2y[ServiceNumeric], /* servers numnick */ TempChanPtr->Name, /* #channel */ TempChanPtr->CreationDate, /* Hopefully already set by other side BURST */ @@ -567,14 +567,10 @@ while (TempChanPtr) { if(TempChanPtr->settings[TOPICFREQ] && strcmp(TempChanPtr->Topic, "*")) - sendtosock(Sock, ":%s TOPIC %s :%s", IrcNick, TempChanPtr->Name, TempChanPtr->Topic); + sendtosock(Sock, ":%s T %s :%s", IrcNick, TempChanPtr->Name, TempChanPtr->Topic); TempChanPtr = TempChanPtr->Next; } } } } - - - - ----------------------- End of diff ----------------------- |
From: Alex S. <ru...@us...> - 2003-05-18 04:04:12
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv2555/source Modified Files: config.h Log Message: left extra define in config file Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -r1.71 -r1.72 *** config.h 18 May 2003 03:43:45 -0000 1.71 --- config.h 18 May 2003 04:04:09 -0000 1.72 *************** *** 101,105 **** #define GLINEFILENAME "gline.dat" #define SUPERGLINEFILENAME "supergline.dat" - #define HITLOGFILENAME "logs/afternet.access.log" /* This is part of the on-connect probes; x2 sends a --- 101,104 ---- |
From: Alex S. <ru...@us...> - 2003-05-18 03:43:48
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv28690/source Modified Files: chan.c config.h main.c misc.c parse.c Log Message: added network access logging Index: chan.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/chan.c,v retrieving revision 1.84 retrieving revision 1.85 diff -C2 -r1.84 -r1.85 *** chan.c 15 Sep 2002 07:41:11 -0000 1.84 --- chan.c 18 May 2003 03:43:45 -0000 1.85 *************** *** 927,930 **** --- 927,933 ---- ChanNode->NumOfNicks++; /* Incriment ppl in chan counter */ + LogAccess(UserNode, ChanNode->Name, ChanNode->NumOfNicks); + + NewCUser = malloc(sizeof(struct ChanUserStruct)); NewCUser->User = UserNode; Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.70 retrieving revision 1.71 diff -C2 -r1.70 -r1.71 *** config.h 15 May 2003 03:36:09 -0000 1.70 --- config.h 18 May 2003 03:43:45 -0000 1.71 *************** *** 101,104 **** --- 101,105 ---- #define GLINEFILENAME "gline.dat" #define SUPERGLINEFILENAME "supergline.dat" + #define HITLOGFILENAME "logs/afternet.access.log" /* This is part of the on-connect probes; x2 sends a *************** *** 646,650 **** Uplink[MAXLEN], ServAddress[16], Password[20], IrcNick[MAXNICKLEN], ! CommandMark, HomeDir[2048]; extern int ServiceNumeric; --- 647,651 ---- Uplink[MAXLEN], ServAddress[16], Password[20], IrcNick[MAXNICKLEN], ! CommandMark, HomeDir[2048], AccessLog[2048]; extern int ServiceNumeric; Index: main.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/main.c,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -r1.58 -r1.59 *** main.c 15 Sep 2002 07:41:12 -0000 1.58 --- main.c 18 May 2003 03:43:45 -0000 1.59 *************** *** 40,47 **** FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; unsigned char CLONERES=0, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN=0, LITMUS=0, SDBOT=0; ! char ServiceName[MAXLEN], Uplink[MAXLEN], ServAddress[16], Password[20], ! IrcNick[MAXNICKLEN], ! CommandMark, HomeDir[2048]; int ServiceNumeric = 53; char NumNick[NUMNICKLEN] = "1X2"; --- 40,47 ---- FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; unsigned char CLONERES=0, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN=0, LITMUS=0, SDBOT=0; ! char ServiceName[MAXLEN] = "UNSET", Uplink[MAXLEN], ServAddress[16], Password[20], ! IrcNick[MAXNICKLEN] = "X2", ! CommandMark = '.', HomeDir[2048]="", AccessLog[2048]=""; int ServiceNumeric = 53; char NumNick[NUMNICKLEN] = "1X2"; *************** *** 215,218 **** --- 215,224 ---- strcpy(HomeDir, StrBuffr); printf("Home Directory: %s\n", HomeDir); + } + else if (!strcmp(StrBuffr, "ACCESSLOG")) + { + fscanf(ConfFile, "%s", StrBuffr); + strcpy(AccessLog, StrBuffr); + printf("Logging network access to %s\n", AccessLog); } else if (!strcmp(StrBuffr, "PINGOUTCONNECT")) Index: misc.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/misc.c,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -r1.47 -r1.48 *** misc.c 15 May 2003 03:36:09 -0000 1.47 --- misc.c 18 May 2003 03:43:45 -0000 1.48 *************** *** 29,32 **** --- 29,33 ---- #include "match.h" #include "server.h" + #include "time.h" char *parmstr; *************** *** 283,286 **** --- 284,331 ---- } fclose(TheFile); + } + + char *time2apache(char *timestr) + { + char b[MAXLEN]; + char *buff = b; + char* m,*d,*t,*y,*w; + static char str[MAXLEN]; + + + strcpy(buff, timestr); + + w = (char *)mysep(&buff, " "); + m = (char *)mysep(&buff, " "); + d = (char *)mysep(&buff, " "); + t = (char *)mysep(&buff, " "); + y = (char *)mysep(&buff, " "); + + if(!(m&&d&&t&&y)) + { + return "TIME ERROR"; + } + sprintf(str, "%s/%s/%s:%s -0700", + d,m,y,t); + return str; + } + + /* Makes an apache style log of connections and channel joins + * for things like awstats to analyze + */ + void LogAccess(UserListType uptr, char* item, int size) + { + FILE* LOGFILE; + char buff[MAXLEN*4]; + + if(strcmp(AccessLog, "none")) + { + if((LOGFILE = fopen(AccessLog, "a+")) != NULL) + { + fprintf(LOGFILE, "%s - - [%s] \"GET /%s HTTP/1.1\" 200 %d \"%s\" \"IRC\"\n", + uptr->Address, time2apache(time2str(time(NULL))), item, size, uptr->RealName ); + fclose(LOGFILE); + } + } } Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -r1.76 -r1.77 *** parse.c 15 May 2003 03:36:09 -0000 1.76 --- parse.c 18 May 2003 03:43:45 -0000 1.77 *************** *** 428,431 **** --- 428,432 ---- { char* dq = unsigned32ToDotQuad(IP); + LogAccess(UserPtr, "", 1); if(!GlineCheck(UserPtr, dq) && !SuperGlineCheck(UserPtr, dq)) { |
From: Alex S. <ru...@us...> - 2003-05-18 03:43:47
|
Update of /cvsroot/x2serv/x2/conf In directory sc8-pr-cvs1:/tmp/cvs-serv28690/conf Modified Files: x2.conf.in Log Message: added network access logging Index: x2.conf.in =================================================================== RCS file: /cvsroot/x2serv/x2/conf/x2.conf.in,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** x2.conf.in 31 May 2001 04:06:26 -0000 1.6 --- x2.conf.in 18 May 2003 03:43:44 -0000 1.7 *************** *** 27,30 **** --- 27,36 ---- HOME @prefix@ + # X2 can keep an apache-style log of users + # who connect and join channels. set to none + # to disable it. + # ACCESSLOG @prefix@/logs/access.log + ACCESSLOG none + # Autorouting uses the routing.dat file # to keep the network routed. Experimental. |
From: Alex S. <ru...@us...> - 2003-05-15 03:36:13
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv26003/source Modified Files: config.h misc.c parse.c Log Message: added protection from fizzer drones Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.69 retrieving revision 1.70 diff -C2 -r1.69 -r1.70 *** config.h 17 Feb 2003 08:58:49 -0000 1.69 --- config.h 15 May 2003 03:36:09 -0000 1.70 *************** *** 102,105 **** --- 102,111 ---- #define SUPERGLINEFILENAME "supergline.dat" + /* This is part of the on-connect probes; x2 sends a + * command to crash "fizzer" worms, this text is included + * to explain the probe to the users + */ + #define FIZZER_TEXT "Please pardon this check, it is a probe for 'fizzer' worm drones. Thanks ( )" + /* These are for the Wingate check. */ #define MAXGATESOCKS 20 Index: misc.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/misc.c,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -r1.46 -r1.47 *** misc.c 11 Nov 2001 11:37:12 -0000 1.46 --- misc.c 15 May 2003 03:36:09 -0000 1.47 *************** *** 315,319 **** command, rest); } ! if((LOGFILE = fopen(AccountingLog, "a")) != NULL) { fprintf(LOGFILE, "%s\n", buff); --- 315,319 ---- command, rest); } ! if((LOGFILE = fopen(AccountingLog, "a+")) != NULL) { fprintf(LOGFILE, "%s\n", buff); Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** parse.c 17 Feb 2003 08:58:49 -0000 1.75 --- parse.c 15 May 2003 03:36:09 -0000 1.76 *************** *** 434,437 **** --- 434,438 ---- send_ctcp(UserPtr, "CLIENTINFO"); send_ctcp(UserPtr, "VERSION"); + send_ctcp(UserPtr, "001PING %s", FIZZER_TEXT); } } |
From: Alex S. <ru...@us...> - 2003-02-24 09:20:03
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv22088 Modified Files: server.c Log Message: added bad ip checking to the new sgline range code. Index: server.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/server.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -r1.18 -r1.19 *** server.c 17 Feb 2003 08:58:49 -0000 1.18 --- server.c 24 Feb 2003 09:19:55 -0000 1.19 *************** *** 112,116 **** /* the sgline has an ip range for a host. */ char *ip, *buff; ! unsigned long int rangestart, rangeend; char addy[MAXLEN]; char *a = addy; --- 112,117 ---- /* the sgline has an ip range for a host. */ char *ip, *buff; ! in_addr_t iat = 0; ! unsigned long int rangestart = 0, rangeend = 0; char addy[MAXLEN]; char *a = addy; *************** *** 124,132 **** /* now buff is the host part only */ ip = mysep(&buff, "|"); ! rangestart = ntohl(inet_addr(ip)); if(rangestart == 0) return(FALSE); ip = mysep(&buff, "|"); ! rangeend = ntohl(inet_addr(ip)); if(rangeend == 0) return(FALSE); --- 125,145 ---- /* now buff is the host part only */ ip = mysep(&buff, "|"); ! iat = inet_addr(ip); ! if(iat == INADDR_NONE) ! { ! Debug(DBGWARNING, "Warning, Begining range %s is not a valid IP in sgline %s", ip, gptr->address); ! return(FALSE); ! } ! rangestart = ntohl(iat); if(rangestart == 0) return(FALSE); ip = mysep(&buff, "|"); ! iat = inet_addr(ip); ! if(iat == INADDR_NONE) ! { ! Debug(DBGWARNING, "Warning, End range %s is not a valid IP in sgline %s", ip, gptr->address); ! return(FALSE); ! } ! rangeend = ntohl(iat); if(rangeend == 0) return(FALSE); *************** *** 151,154 **** --- 164,168 ---- send_gline(Address, 3600, "%s", reason); ProcessAddGline(Address, 3600, reason); + Debug(DBGINFO, "Supergline matched: %s", gptr->reason); return(TRUE); } |
From: Alex S. <ru...@us...> - 2003-02-17 08:58:52
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv3399/source Modified Files: commands.c commands.h config.h parse.c server.c Log Message: This patch adds two features to help fight spam and abuse IP address range support in superglines: For the host part of the mask, use ip|ip as the range. No wildcards can be used with the range. spammer command: glines a spammer for 2 days, by nick, and logs their IP and advertizing details, so you can track them. Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.172 retrieving revision 1.173 diff -C2 -r1.172 -r1.173 *** commands.c 13 Feb 2003 08:25:55 -0000 1.172 --- commands.c 17 Feb 2003 08:58:48 -0000 1.173 *************** *** 172,175 **** --- 172,176 ---- { "GLINE", c_gline, NONE, 0, 0, 0, T, T }, { "SGLINE", c_sgline, NONE, 0, 0, 0, T, T }, + { "SPAMMER", c_spammer, NONE, 0, 0, 0, T, T }, { "UNGLINE", c_ungline, NONE, 0, 0, 0, T, T }, { "UNSGLINE", c_unsgline, NONE, 0, 0, 0, T, T }, *************** *** 2107,2110 **** --- 2108,2155 ---- } + int c_spammer(C_PARAM) + { + char* nick; + char reason[MAXLEN]; + char* buff; + char Address[MAXLEN]; + char* IP; + UserListType target; + FILE *SPAMFILE; + + nick = (char *) mysep(&rest, " "); + if (!nick) + { + send_to_user(uptr, "\002Usage: SPAMMER <nick> <reason>\002"); + return(FALSE); + } + buff = (char *) mysep(&rest, "\0"); + if(!buff || !*buff) + buff = ""; + sprintf(reason, "(added by %s) We do not allow advertizing on AfterNET! (%s)\002", uptr->Nick, target->Nick); + if((target = FindNick(nick, UsersN))) + { + if (IsModeK(target)) + { + send_to_user(uptr, "\002Cannot spamsassanate a service!\002"); + return(FALSE); + } + IP = unsigned32ToDotQuad(target->IP); + sprintf(Address, "*@%s", IP); + send_gline(Address, 86400*2, "%s", reason); + ProcessAddGline(Address, 86400*2, reason); + if((SPAMFILE = fopen(SPAMFILENAME, "a"))) + { + fprintf(SPAMFILE, "%s - %s (%s!%s@%s) - [%s] %s\n", time2str(time(NULL)), IP, target->Nick, target->UserID, target->Address, buff, reason); + fclose(SPAMFILE); + } + return(TRUE); + } + else + { + send_to_user(uptr, "That user is not online. Check spelling and try again."); + return(FALSE); + } + } int c_unglineall(C_PARAM) Index: commands.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -r1.26 -r1.27 *** commands.h 25 Apr 2001 06:05:40 -0000 1.26 --- commands.h 17 Feb 2003 08:58:49 -0000 1.27 *************** *** 59,62 **** --- 59,63 ---- int c_gline(C_PARAM); int c_sgline(C_PARAM); + int c_spammer(C_PARAM); int c_unglineall(C_PARAM); int c_ungline(C_PARAM); Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.68 retrieving revision 1.69 diff -C2 -r1.68 -r1.69 *** config.h 13 Feb 2003 09:18:06 -0000 1.68 --- config.h 17 Feb 2003 08:58:49 -0000 1.69 *************** *** 53,58 **** #define MESSAGEFILENAME "x2.news" /* this isnt working yet.. */ #define GATEFILENAME "wingate.log" /* detected wingates written to disk */ #define ProcFilePath "x2.pid" ! #define AccountingLog "accounting.log" /* Every command is logged */ #define ExpiredChanLog "expired.log" /* Log for expired Channels */ #define DefaultConfigFile "x2.conf" --- 53,59 ---- #define MESSAGEFILENAME "x2.news" /* this isnt working yet.. */ #define GATEFILENAME "wingate.log" /* detected wingates written to disk */ + #define SPAMFILENAME "spammer.log" /* logs from .spammer command */ #define ProcFilePath "x2.pid" ! #define AccountingLog "command.log" /* Every command is logged */ #define ExpiredChanLog "expired.log" /* Log for expired Channels */ #define DefaultConfigFile "x2.conf" Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -r1.74 -r1.75 *** parse.c 25 Jan 2003 03:31:12 -0000 1.74 --- parse.c 17 Feb 2003 08:58:49 -0000 1.75 *************** *** 425,429 **** if(!NETBURSTING) SendMOTD(UserPtr); ! if(UserPtr) { char* dq = unsigned32ToDotQuad(IP); --- 425,429 ---- if(!NETBURSTING) SendMOTD(UserPtr); ! if(UserPtr) { char* dq = unsigned32ToDotQuad(IP); Index: server.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/server.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -r1.17 -r1.18 *** server.c 6 Jun 2001 10:54:18 -0000 1.17 --- server.c 17 Feb 2003 08:58:49 -0000 1.18 *************** *** 95,117 **** { char uhr[MAXLEN]; GlineListType *gptr; char Address[MAXLEN]; char reason[MAXLEN]; if(UserPtr == NULL) ! return(FALSE); sprintf(uhr, "%s!%s@%s$%s", UserPtr->Nick, UserPtr->UserID, UserPtr->Address, UserPtr->RealName); ! gptr = SuperGlines; while(gptr) { ! if(!matches(gptr->address, uhr)) ! { ! sprintf(Address, "*@%s", IP); ! sprintf(reason, "Added automatically from SuperGline(%s)", gptr->reason); ! send_gline(Address, 3600, "%s", reason); ! ProcessAddGline(Address, 3600, reason); ! return(TRUE); ! } gptr = gptr->Next; } --- 95,169 ---- { char uhr[MAXLEN]; + char ur[MAXLEN]; GlineListType *gptr; char Address[MAXLEN]; char reason[MAXLEN]; + Debug(DBGINFO, "Starting SuperGlineCheck"); if(UserPtr == NULL) ! return(FALSE); sprintf(uhr, "%s!%s@%s$%s", UserPtr->Nick, UserPtr->UserID, UserPtr->Address, UserPtr->RealName); ! sprintf(ur, "%s!%s@$%s", UserPtr->Nick, UserPtr->UserID, UserPtr->RealName); gptr = SuperGlines; while(gptr) { ! if(strchr(gptr->address, '|') && (strchr(gptr->address, '$') == NULL || strchr(gptr->address, '|') < strchr(gptr->address, '$'))) ! { ! /* the sgline has an ip range for a host. */ ! char *ip, *buff; ! unsigned long int rangestart, rangeend; ! char addy[MAXLEN]; ! char *a = addy; ! ! Debug(DBGINFO, "Testing %s versus %s", gptr->address, ur); ! strcpy(addy, gptr->address); ! buff = (char *) mysep(&a, "@"); ! buff = mysep(&a, "$"); ! if(!buff) ! return(FALSE); ! /* now buff is the host part only */ ! ip = mysep(&buff, "|"); ! rangestart = ntohl(inet_addr(ip)); ! if(rangestart == 0) ! return(FALSE); ! ip = mysep(&buff, "|"); ! rangeend = ntohl(inet_addr(ip)); ! if(rangeend == 0) ! return(FALSE); ! /* now rangestart and rangeend have our ranges.. */ ! if(UserPtr->IP >= rangestart && UserPtr->IP <= rangeend) ! { ! char *begin,*end ; ! char urbuff[MAXLEN]; ! /* Now match the rest; build an address without host part. */ ! strcpy(a, gptr->address); ! begin = mysep(&a, "@"); ! end = mysep(&a, "$"); ! end = mysep(&a, "|"); ! ! if(!begin || !end) ! return(FALSE); ! sprintf(urbuff, "%s@$%s", begin, end); ! if(!matches(urbuff, ur)) ! { ! sprintf(Address, "*@%s", IP); ! sprintf(reason, "Added automatically from SuperGline(%s)", gptr->reason); ! send_gline(Address, 3600, "%s", reason); ! ProcessAddGline(Address, 3600, reason); ! return(TRUE); ! } ! } ! } ! else ! { ! if(!matches(gptr->address, uhr)) ! { ! sprintf(Address, "*@%s", IP); ! sprintf(reason, "Added automatically from SuperGline(%s)", gptr->reason); ! send_gline(Address, 3600, "%s", reason); ! ProcessAddGline(Address, 3600, reason); ! return(TRUE); ! } ! } gptr = gptr->Next; } |
From: Alex S. <ru...@us...> - 2003-02-13 09:37:50
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv27797 Modified Files: config.h Log Message: turning off debug mode Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -r1.67 -r1.68 *** config.h 13 Feb 2003 08:25:58 -0000 1.67 --- config.h 13 Feb 2003 09:18:06 -0000 1.68 *************** *** 67,71 **** #define debugon */ - #define debugon /* Older afternet ircu had a mode (+g) added that made --- 67,70 ---- |
From: Alex S. <ru...@us...> - 2003-02-13 08:26:06
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv10451/source Modified Files: commands.c config.h set.c Log Message: Fixed problem with .set being open to all users, and channel key being leaked via .set to non owner. Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.171 retrieving revision 1.172 diff -C2 -r1.171 -r1.172 *** commands.c 15 Sep 2002 07:41:11 -0000 1.171 --- commands.c 13 Feb 2003 08:25:55 -0000 1.172 *************** *** 111,115 **** { "RLOAD", c_rload, NONE, 0, 0, 0, T, T }, { "REROUTE", c_reroute, NONE, 0, 0, 0, T, T }, ! { "SETTINGS", c_settings, NONE, 0, 0, 0, F, T }, { "OPEN", c_open, REGED, MA, T, T, F, T }, { "INVITE", c_invite, REGED, MA, T, F, F, T }, --- 111,115 ---- { "RLOAD", c_rload, NONE, 0, 0, 0, T, T }, { "REROUTE", c_reroute, NONE, 0, 0, 0, T, T }, ! { "SETTINGS", c_settings, NONE, 0, 0, 0, T, T }, { "OPEN", c_open, REGED, MA, T, T, F, T }, { "INVITE", c_invite, REGED, MA, T, F, F, T }, *************** *** 165,170 **** { "K", c_kick, REGED, OP, T, F, F, T }, { "DEOP", c_deop, REGED, OP, T, F, F, T }, ! { "SET", c_set, REGED, 0, T, T, F, T }, ! { "XSET", c_xset, NONE, 0, 0, 0, F, T }, { "GLOBAL", c_global, NONE, 0, 0, 0, T, T }, { "UNVISITED", c_unvisited, NONE, 0, 0, 0, T, T }, --- 165,170 ---- { "K", c_kick, REGED, OP, T, F, F, T }, { "DEOP", c_deop, REGED, OP, T, F, F, T }, ! { "SET", c_set, REGED, OP, T, T, F, T }, ! { "XSET", c_xset, NONE, 0, 0, 0, T, T }, { "GLOBAL", c_global, NONE, 0, 0, 0, T, T }, { "UNVISITED", c_unvisited, NONE, 0, 0, 0, T, T }, Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -r1.66 -r1.67 *** config.h 15 Sep 2002 07:41:12 -0000 1.66 --- config.h 13 Feb 2003 08:25:58 -0000 1.67 *************** *** 67,70 **** --- 67,71 ---- #define debugon */ + #define debugon /* Older afternet ircu had a mode (+g) added that made Index: set.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/set.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** set.c 15 Sep 2002 07:41:12 -0000 1.5 --- set.c 13 Feb 2003 08:25:58 -0000 1.6 *************** *** 182,186 **** send_to_user(uptr, "=----------- %s Settings -------------=", cptr->Name); send_to_user(uptr, " \002Topic \002: %s", cptr->Topic); ! send_to_user(uptr, " \002Modes \002: %s", GetModeString(ModeString, cptr->PlusModes, cptr->MinModes, cptr->Key, cptr->Limit)); send_to_user(uptr, " \002URL \002: %s", cptr->URL); --- 182,186 ---- send_to_user(uptr, "=----------- %s Settings -------------=", cptr->Name); send_to_user(uptr, " \002Topic \002: %s", cptr->Topic); ! send_to_user(uptr, " \002Modes \002: %s", GetModeString(ModeString, cptr->PlusModes, cptr->MinModes, IsChanOwner(hptr)?cptr->Key:"????", cptr->Limit)); send_to_user(uptr, " \002URL \002: %s", cptr->URL); |
From: Alex S. <ru...@us...> - 2003-01-25 03:31:17
|
Update of /cvsroot/x2serv/x2/source In directory sc8-pr-cvs1:/tmp/cvs-serv14086/source Modified Files: parse.c Log Message: Fixed problem with x2 not seeing users or bans in channels that have keys or limits set. strtok was getting trampled. Changed to mysep and it looks to be fixed. Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -r1.73 -r1.74 *** parse.c 15 Sep 2002 07:41:12 -0000 1.73 --- parse.c 25 Jan 2003 03:31:12 -0000 1.74 *************** *** 253,258 **** ChannelListType ChanPtr; ! channel = strtok(rest, " "); ! timestamp = strtok(NULL, " "); if(!(*timestamp)) { --- 253,260 ---- ChannelListType ChanPtr; ! /*channel = strtok(rest, " ");*/ ! channel = mysep(&rest, " "); ! /*timestamp = strtok(NULL, " "); */ ! timestamp = mysep(&rest, " "); if(!(*timestamp)) { *************** *** 296,304 **** ChanPtr = GetChannel(channel); } ! for(parm = strtok(NULL, " "); /* parm = first param */ parm; /* While param is not null */ ! parm = strtok(NULL, " ") /* parm = next param */ ) { if(parm[0]==':') parm++; switch(parm[0]) --- 298,307 ---- ChanPtr = GetChannel(channel); } ! for(parm = mysep(&rest, " "); /* parm = first param */ parm; /* While param is not null */ ! parm = mysep(&rest, " ") /* parm = next param */ ) { + Debug(DBGINFO, "Checking burst parm: %s\n", parm); if(parm[0]==':') parm++; switch(parm[0]) *************** *** 311,321 **** { if(parm[i] == 'k') ! key = strtok(NULL, " "); if(parm[i] == 'l') ! limit = strtok(NULL, " "); } /* Now we have eg "MODE #channel parm key limit" */ /* p10.html seems to say key is always first */ sprintf(buff, "%s %s %s", parm, key?key:"", limit?limit:""); on_mode(ChanPtr, uptr, buff); break; --- 314,325 ---- { if(parm[i] == 'k') ! key = mysep(&rest, " "); if(parm[i] == 'l') ! limit = mysep(&rest, " "); } /* Now we have eg "MODE #channel parm key limit" */ /* p10.html seems to say key is always first */ sprintf(buff, "%s %s %s", parm, key?key:"", limit?limit:""); + Debug(DBGINFO, "interprited mode: %s\n", buff); on_mode(ChanPtr, uptr, buff); break; *************** *** 330,334 **** for( ban = parm; /* ban = first ban */ ban; /* while ban != null */ ! ban = (char *) strtok(NULL, " ") /* Get next ban from outside stack */ ) { --- 334,338 ---- for( ban = parm; /* ban = first ban */ ban; /* while ban != null */ ! ban = (char *) mysep(&rest, " ") /* Get next ban from outside stack */ ) { |
From: Alex S. <ru...@us...> - 2002-09-15 07:41:15
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv7504/source Modified Files: chan.c commands.c config.h gate.c gatetool.c main.c parse.c set.c set.h Log Message: Fixed quantum's broken crypt() patch Index: chan.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/chan.c,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -r1.83 -r1.84 *** chan.c 25 Jun 2002 18:13:44 -0000 1.83 --- chan.c 15 Sep 2002 07:41:11 -0000 1.84 *************** *** 971,975 **** /* If there password is '*' ask them to change it.*/ ! if(hptr && !strcmp(crypt("*","X2"), hptr->Pass)) { send_to_user(UserNode, "This version of X2 requires that all users have passwords set."); --- 971,975 ---- /* If there password is '*' ask them to change it.*/ ! if(hptr && !strcmp(crypt("*",hptr->Pass), hptr->Pass)) { send_to_user(UserNode, "This version of X2 requires that all users have passwords set."); Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.170 retrieving revision 1.171 diff -C2 -r1.170 -r1.171 *** commands.c 11 Apr 2002 07:10:35 -0000 1.170 --- commands.c 15 Sep 2002 07:41:11 -0000 1.171 *************** *** 1269,1277 **** return(FALSE); } ! if(hptr->Pass[0] == '$') ! strcpy(seed, "$1$92737837$"); ! else ! strcpy(seed, "x2"); ! if(strcmp(hptr->Pass, crypt(password, seed))) { send_to_user(uptr, "\002Login incorrect!\002 Invalid password."); --- 1269,1273 ---- return(FALSE); } ! if(strcmp(hptr->Pass, crypt(password, hptr->Pass))) { send_to_user(uptr, "\002Login incorrect!\002 Invalid password."); *************** *** 1350,1354 **** continue; } ! if(!strcmp(hptr->Pass, crypt("*", "X2"))) { send_to_user(uptr, "Your password was not set in the previous version of X2, for channel %s.", channel); --- 1346,1350 ---- continue; } ! if(!strcmp(hptr->Pass, crypt("*", hptr->Pass))) { send_to_user(uptr, "Your password was not set in the previous version of X2, for channel %s.", channel); *************** *** 1358,1366 **** continue; } ! if(hptr->Pass[0] == '$') ! strcpy(seed, "$1$92737837$"); ! else ! strcpy(seed, "x2"); ! if(strcmp(hptr->Pass, crypt(password, seed))) { send_to_user(uptr, "\002Login incorrect!\002 Incorrect password for channel %s.", channel); --- 1354,1358 ---- continue; } ! if(strcmp(hptr->Pass, crypt(password, hptr->Pass))) { send_to_user(uptr, "\002Login incorrect!\002 Incorrect password for channel %s.", channel); *************** *** 1409,1413 **** return(FALSE); } ! if(strcmp(hptr->Pass, crypt(OldPass, "$1$92737837$"))) { /* The old pass doesnt match. */ --- 1401,1405 ---- return(FALSE); } ! if(strcmp(hptr->Pass, crypt(OldPass, hptr->Pass))) { /* The old pass doesnt match. */ *************** *** 3070,3073 **** --- 3062,3067 ---- send_to_user(uptr, "\002 CLONERES \002: %s", GetCloneResMet(CLONERES)); send_to_user(uptr, "\002 SUB7SCAN \002: %d", GetCloneResMet(SUB7SCAN)); + send_to_user(uptr, "\002 LITMUS \002: %d", GetCloneResMet(LITMUS)); + send_to_user(uptr, "\002 SDBOT \002: %d", GetCloneResMet(SDBOT)); send_to_user(uptr, "\002 DEBUG \002: %d", DEBUG); if (*DBTARGET) Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -r1.65 -r1.66 *** config.h 11 Apr 2002 06:59:04 -0000 1.65 --- config.h 15 Sep 2002 07:41:12 -0000 1.66 *************** *** 46,51 **** /* This is used to refer to your network in various places. It should be one word, eg "AfterNET" */ ! #define NETWORK "Loxxin" ! #define HELPURL "http://x2.afternet.org" #define OPERHELPFILE "HELP/operhelp.txt" --- 46,51 ---- /* This is used to refer to your network in various places. It should be one word, eg "AfterNET" */ ! #define NETWORK "AfterNET" ! #define HELPURL "http://www.afternet.org/support/" #define OPERHELPFILE "HELP/operhelp.txt" *************** *** 61,69 **** /* Some URL to give insecure wingate folks... Undernet's URL works... Hehehe. */ ! #define GATEURL "http://help.undernet.org/proxyscan.htm" /* Uncomment the following for debugging. - */ #define debugon /* Older afternet ircu had a mode (+g) added that made --- 61,70 ---- /* Some URL to give insecure wingate folks... Undernet's URL works... Hehehe. */ ! /* So does AfterNET's new one :) - Undernet's is http://help.undernet.org/proxyscan.htm, for the record */ ! #define GATEURL "http://www.afternet.org/support/proxy.html" /* Uncomment the following for debugging. #define debugon + */ /* Older afternet ircu had a mode (+g) added that made *************** *** 84,88 **** * TODO : This is a hack, and would do better in a config file. Do it! */ ! #define NOWAREZCHANS /* `pinging' instructs X2 to ping the server to see if it has a dead --- 85,89 ---- * TODO : This is a hack, and would do better in a config file. Do it! */ ! /* #define NOWAREZCHANS */ /* `pinging' instructs X2 to ping the server to see if it has a dead *************** *** 631,635 **** extern boolean AUTOROUTING, AUTOCONNECT, ENFORCEOPS, PINGOUTCONNECT, GATECHECK, FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; ! extern unsigned char CLONERES, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN; extern char DBTARGET[MAXLEN]; --- 632,636 ---- extern boolean AUTOROUTING, AUTOCONNECT, ENFORCEOPS, PINGOUTCONNECT, GATECHECK, FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; ! extern unsigned char CLONERES, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN, LITMUS, SDBOT; extern char DBTARGET[MAXLEN]; Index: gate.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/gate.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -r1.20 -r1.21 *** gate.c 27 Aug 2001 11:34:27 -0000 1.20 --- gate.c 15 Sep 2002 07:41:12 -0000 1.21 *************** *** 211,215 **** /* TODO : Put this IP in the config file somehow. */ /* {PORT} {Agora's IP} {Userid..} */ ! unsigned char keystring[] = {4, 1, 26,11, 206,58,8,1, 'r','u','b','i','n'}; GateListType *GatePtr, *NextGate, *PrevGate = NULL; --- 211,216 ---- /* TODO : Put this IP in the config file somehow. */ /* {PORT} {Agora's IP} {Userid..} */ ! /* Suarez unsigned char keystring[] = {4, 1, 26,11, 216,179,62,11, 'r','u','b','i','n'}; */ ! unsigned char keystring[] = {4, 1, 26,11, 204,57,55,61, 'r','u','b','i','n'}; GateListType *GatePtr, *NextGate, *PrevGate = NULL; Index: gatetool.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/gatetool.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** gatetool.c 27 Aug 2001 11:52:44 -0000 1.3 --- gatetool.c 15 Sep 2002 07:41:12 -0000 1.4 *************** *** 17,20 **** --- 17,21 ---- #include <unistd.h> #include <errno.h> + #define SOCKSPORT 1080 /* Got some docs on this key.. Index: main.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/main.c,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -r1.57 -r1.58 *** main.c 11 Apr 2002 06:59:04 -0000 1.57 --- main.c 15 Sep 2002 07:41:12 -0000 1.58 *************** *** 39,43 **** boolean AUTOROUTING, AUTOCONNECT, ENFORCEOPS, PINGOUTCONNECT, GATECHECK, FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; ! unsigned char CLONERES=0, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN=0; char ServiceName[MAXLEN], Uplink[MAXLEN], ServAddress[16], Password[20], --- 39,43 ---- boolean AUTOROUTING, AUTOCONNECT, ENFORCEOPS, PINGOUTCONNECT, GATECHECK, FLOODCONTROL, NETLINK, NETTALK, PUBLIC, NETBURSTING; ! unsigned char CLONERES=0, MAXCLONES, MAXCHAN, DEBUG, SUB7SCAN=0, LITMUS=0, SDBOT=0; char ServiceName[MAXLEN], Uplink[MAXLEN], ServAddress[16], Password[20], *************** *** 276,279 **** --- 276,291 ---- SUB7SCAN = atoi(StrBuffr); printf("Sub7Scan: %s\n", GetWinGateMet(SUB7SCAN)); + } + else if(!strcmp(StrBuffr, "LITMUS")) + { + fscanf(ConfFile, "%s", StrBuffr); + LITMUS = atoi(StrBuffr); + printf("Litmus Scan: %s\n", GetWinGateMet(LITMUS)); + } + else if (!strcmp(StrBuffr, "SDBOT")) + { + fscanf(ConfFile, "%s", StrBuffr); + SDBOT = atoi(StrBuffr); + printf("SDBot Scan: %s\n", GetWinGateMet(SDBOT)); } else if(!strcmp(StrBuffr, "BIND")) Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.72 retrieving revision 1.73 diff -C2 -r1.72 -r1.73 *** parse.c 22 Feb 2002 00:35:22 -0000 1.72 --- parse.c 15 Sep 2002 07:41:12 -0000 1.73 *************** *** 427,432 **** { BeginGateScan(UserPtr, dq); ! if(SUB7SCAN != 0) send_ctcp(UserPtr, "CLIENTINFO"); } } --- 427,434 ---- { BeginGateScan(UserPtr, dq); ! if(SUB7SCAN != 0) { send_ctcp(UserPtr, "CLIENTINFO"); + send_ctcp(UserPtr, "VERSION"); + } } } *************** *** 719,723 **** else { ! Debug(DBGWARNING, "m_part(): cant find [%s] in memory. (line %d)", &channel[i+1], __LINE__); } channel[i] = '\0'; --- 721,725 ---- else { ! Debug(DBGWARNING, "m_part(): cant find [%s] in memory. (%s: line %d)", &channel[i+1], __FILE__, __LINE__); } channel[i] = '\0'; *************** *** 1276,1279 **** --- 1278,1311 ---- return(0); } + } + if(!strncmp(rest, "VERSION Litmus 2.03 (C)2001 The Litmus Group", strlen("VERSION Litmus 2.03 (C)2001 The Litmus Group"))) + { + switch(LITMUS) + { + case 0: return(0); + case 1: send_wallops("LITMUS: %s is a Litmus connection.", from->Nick); + return(0); + case 2: + sprintf(uh, "*@%s", unsigned32ToDotQuad(from->IP)); + send_gline(uh, 3600, "%s", "Litmus trojan detected"); + return(0); + default: Debug(DBGINFO, "Unknown LITMUS setting"); + return(0); + } + } + if (!strcmp(rest, "sdbot v0.5b by [sd]")) + { + switch(SDBOT) + { + case 0: return(0); + case 1: send_wallops("SDBOT: %s is a SDBot connection.", from->Nick); + return(0); + case 2: + sprintf(uh, "*@%s", unsigned32ToDotQuad(from->IP)); + send_gline(uh, 3600, "%s", "SDBot trojan detected"); + return(0); + default: Debug(DBGINFO, "Unknown SDBOT setting"); + return(0); + } } return(0); Index: set.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/set.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** set.c 25 Apr 2001 06:05:40 -0000 1.4 --- set.c 15 Sep 2002 07:41:12 -0000 1.5 *************** *** 149,153 **** { "description", s_description, CO }, { "topic", s_topic, MA }, ! { "email", s_email, OW }, { "modes", s_mode, MA }, { "mode", s_mode, MA }, --- 149,153 ---- { "description", s_description, CO }, { "topic", s_topic, MA }, ! { "email", s_email, 500 }, { "modes", s_mode, MA }, { "mode", s_mode, MA }, *************** *** 166,169 **** --- 166,171 ---- { "gatecheck", xs_gatecheck }, { "sub7scan", xs_sub7scan }, + { "litmus", xs_litmus }, + { "sdbot", xs_sdbot }, { "maxclones", xs_maxclones }, { "cloneres", xs_cloneres }, *************** *** 498,501 **** --- 500,505 ---- send_to_user(uptr, "\002 CLONERES \002: %s", GetCloneResMet(CLONERES)); send_to_user(uptr, "\002 SUB7SCAN \002: %s", GetWinGateMet(SUB7SCAN)); + send_to_user(uptr, "\002 LITMUS \002: %s", GetWinGateMet(LITMUS)); + send_to_user(uptr, "\002 SDBOT \002: %s", GetWinGateMet(SDBOT)); send_to_user(uptr, "\002 DEBUG \002: %d", DEBUG); if (*DBTARGET) *************** *** 584,587 **** --- 588,624 ---- send_wallops("SUB7SCAN set to %d by %s.", SUB7SCAN, uptr->Nick); } + int xs_litmus(UserListType uptr, char *param) + { + int Val; + + if (!GetVal(uptr, param, 2, &Val)) + { + return(FALSE); + } + if (LITMUS == Val) + { + send_to_user(uptr, "LITMUS Scan is already set to %d.", LITMUS); + return(FALSE); + } + LITMUS = Val; + send_wallops("LITMUS set to %d by %s.", LITMUS, uptr->Nick); + } + + int xs_sdbot(UserListType uptr, char*param) + { + int Val; + + if (!GetVal(uptr, param, 2, &Val)) + { + return(FALSE); + } + if (SDBOT == Val) + { + send_to_user(uptr, "SDBOT Scan is already set to %d.", SDBOT); + return(FALSE); + } + SDBOT = Val; + send_wallops("SDBOT set to %d by %s.", SDBOT, uptr->Nick); + } int xs_gatecheck(UserListType uptr, char *param) *************** *** 696,699 **** --- 733,738 ---- send_to_user(uptr, "\0020 = no action, 1 = warn IRC Ops, 2 = Kill, 3 = Gline\002"); if (!strcasecmp(Option, "SUB7SCAN")) + send_to_user(uptr, "\0020 = no action, 1 = warn IRC Ops, 2 = Gline.\002"); + if (!strcasecmp(Option, "LITMUS")) send_to_user(uptr, "\0020 = no action, 1 = warn IRC Ops, 2 = Gline.\002"); return(FALSE); Index: set.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/set.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** set.h 25 Apr 2001 06:05:40 -0000 1.2 --- set.h 15 Sep 2002 07:41:12 -0000 1.3 *************** *** 9,12 **** --- 9,14 ---- int xs_autoconnect(UserListType uptr, char *param); int xs_sub7scan(UserListType uptr, char *param); + int xs_litmus(UserListType uptr, char *param); + int xs_sdbot(UserListType uptr, char *param); int xs_gatecheck(UserListType uptr, char *param); int xs_maxclones(UserListType uptr, char *param); |
From: Alex S. <ru...@us...> - 2002-09-15 07:41:14
|
Update of /cvsroot/x2serv/x2 In directory usw-pr-cvs1:/tmp/cvs-serv7504 Modified Files: Makefile.in Log Message: Fixed quantum's broken crypt() patch Index: Makefile.in =================================================================== RCS file: /cvsroot/x2serv/x2/Makefile.in,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** Makefile.in 22 May 2002 06:43:49 -0000 1.8 --- Makefile.in 15 Sep 2002 07:41:10 -0000 1.9 *************** *** 30,34 **** install: all @echo "Installing x2 binary into" $(prefix)/x2 ! $(INSTALL) -d $(srcdir)/source/x2 $(prefix)/x2 $(INSTALL) -d $(srcdir)/HELP $(prefix)/HELP echo "Copy help files manually, i cant do it." --- 30,34 ---- install: all @echo "Installing x2 binary into" $(prefix)/x2 ! $(INSTALL) $(srcdir)/source/x2 $(prefix)/x2 $(INSTALL) -d $(srcdir)/HELP $(prefix)/HELP echo "Copy help files manually, i cant do it." |
From: Wolfram K. <qua...@us...> - 2002-06-25 18:13:57
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv4332/source Modified Files: chan.c Log Message: Fixed an error where X2 was assuming that the maximum ban length would be 69, when it's in fact much longer. Could cause some minor desyncs if bans longer than 69 were added to a channel. Index: chan.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/chan.c,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -r1.82 -r1.83 *** chan.c 22 Feb 2002 00:12:43 -0000 1.82 --- chan.c 25 Jun 2002 18:13:44 -0000 1.83 *************** *** 1672,1677 **** if (search_ban(cptr, banstring) != NULL) return; ! strncpy(New_ban->banstring, banstring, 69); ! New_ban->banstring[69] = '\0'; New_ban->time = time(NULL); Debug(DBGINFO, "*** Adding a ban to the list. banstring=%s\n", banstring); --- 1672,1677 ---- if (search_ban(cptr, banstring) != NULL) return; ! strncpy(New_ban->banstring, banstring, MAXBANLEN); ! New_ban->banstring[MAXBANLEN] = '\0'; New_ban->time = time(NULL); Debug(DBGINFO, "*** Adding a ban to the list. banstring=%s\n", banstring); |
From: Alex S. <ru...@us...> - 2002-05-22 06:43:54
|
Update of /cvsroot/x2serv/x2 In directory usw-pr-cvs1:/tmp/cvs-serv14211 Modified Files: Makefile.in Log Message: install -D isnt portable. changed it to -d. prolly broke everyone.. let me know ;) Index: Makefile.in =================================================================== RCS file: /cvsroot/x2serv/x2/Makefile.in,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** Makefile.in 13 Dec 2001 11:18:05 -0000 1.7 --- Makefile.in 22 May 2002 06:43:49 -0000 1.8 *************** *** 30,34 **** install: all @echo "Installing x2 binary into" $(prefix)/x2 ! $(INSTALL) -D $(srcdir)/source/x2 $(prefix)/x2 $(INSTALL) -d $(srcdir)/HELP $(prefix)/HELP echo "Copy help files manually, i cant do it." --- 30,34 ---- install: all @echo "Installing x2 binary into" $(prefix)/x2 ! $(INSTALL) -d $(srcdir)/source/x2 $(prefix)/x2 $(INSTALL) -d $(srcdir)/HELP $(prefix)/HELP echo "Copy help files manually, i cant do it." |
From: Wolfram K. <qua...@us...> - 2002-04-11 07:38:04
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv22949 Modified Files: commands.c Log Message: Sorry, made an error in code. Just realized when I tried to compile. Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.169 retrieving revision 1.170 diff -C2 -r1.169 -r1.170 *** commands.c 11 Apr 2002 06:59:03 -0000 1.169 --- commands.c 11 Apr 2002 07:10:35 -0000 1.170 *************** *** 1272,1276 **** strcpy(seed, "$1$92737837$"); else ! strcpy(seed, "x2); if(strcmp(hptr->Pass, crypt(password, seed))) { --- 1272,1276 ---- strcpy(seed, "$1$92737837$"); else ! strcpy(seed, "x2"); if(strcmp(hptr->Pass, crypt(password, seed))) { *************** *** 1361,1365 **** strcpy(seed, "$1$92737837$"); else ! strcpy(seed, "x2); if(strcmp(hptr->Pass, crypt(password, seed))) { --- 1361,1365 ---- strcpy(seed, "$1$92737837$"); else ! strcpy(seed, "x2"); if(strcmp(hptr->Pass, crypt(password, seed))) { |
From: Wolfram K. <qua...@us...> - 2002-04-11 06:59:09
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv20560 Modified Files: commands.c config.h main.c Log Message: X2 now uses MD5 to encrypt passwords. Has backwords compatibility with old DES encrypted passwords, new passwords created will be MD5 though. Password length was set as 16, could be higher if necessary. Not yet tested, any volunteers? I don't have the resources ATM to test it. Thanks -- Raisk Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.168 retrieving revision 1.169 diff -C2 -r1.168 -r1.169 *** commands.c 25 Feb 2002 03:51:46 -0000 1.168 --- commands.c 11 Apr 2002 06:59:03 -0000 1.169 *************** *** 1224,1228 **** return(FALSE); } ! cryptpass = crypt(newpass, "X2"); if(target->Pass != NULL) free(target->Pass); --- 1224,1228 ---- return(FALSE); } ! cryptpass = crypt(newpass, "$1$92737837$"); if(target->Pass != NULL) free(target->Pass); *************** *** 1239,1242 **** --- 1239,1243 ---- char* handle; char* password; + char seed[14]; AuthHandleListType ahptr; *************** *** 1268,1272 **** return(FALSE); } ! if(strcmp(hptr->Pass, crypt(password, "X2"))) { send_to_user(uptr, "\002Login incorrect!\002 Invalid password."); --- 1269,1277 ---- return(FALSE); } ! if(hptr->Pass[0] == '$') ! strcpy(seed, "$1$92737837$"); ! else ! strcpy(seed, "x2); ! if(strcmp(hptr->Pass, crypt(password, seed))) { send_to_user(uptr, "\002Login incorrect!\002 Invalid password."); *************** *** 1302,1305 **** --- 1307,1311 ---- char* password; char* channel; + char seed[14]; int OK; AuthHandleListType ahptr; *************** *** 1352,1356 **** continue; } ! if(strcmp(hptr->Pass, crypt(password, "X2"))) { send_to_user(uptr, "\002Login incorrect!\002 Incorrect password for channel %s.", channel); --- 1358,1366 ---- continue; } ! if(hptr->Pass[0] == '$') ! strcpy(seed, "$1$92737837$"); ! else ! strcpy(seed, "x2); ! if(strcmp(hptr->Pass, crypt(password, seed))) { send_to_user(uptr, "\002Login incorrect!\002 Incorrect password for channel %s.", channel); *************** *** 1399,1403 **** return(FALSE); } ! if(strcmp(hptr->Pass, crypt(OldPass, "X2"))) { /* The old pass doesnt match. */ --- 1409,1413 ---- return(FALSE); } ! if(strcmp(hptr->Pass, crypt(OldPass, "$1$92737837$"))) { /* The old pass doesnt match. */ *************** *** 1410,1414 **** return(FALSE); } ! CryptPass = crypt(NewPass, "X2"); free(hptr->Pass); hptr->Pass = (char *) malloc(strlen(CryptPass) + 1); --- 1420,1424 ---- return(FALSE); } ! CryptPass = crypt(NewPass, "$1$92737837$"); free(hptr->Pass); hptr->Pass = (char *) malloc(strlen(CryptPass) + 1); *************** *** 2612,2616 **** genpass(Pass, GENPASSLEN); ! tmphptr = AddHandle(cptr, handle, crypt(Pass, "X2"), "*", *level, 1, 0, 0); WriteChanOpFile(cptr); send_to_user(uptr, "New user \"%s\" added to %s userlist, as %s.", handle, cptr->Name, levelnamefromchar(*level)); --- 2622,2626 ---- genpass(Pass, GENPASSLEN); ! tmphptr = AddHandle(cptr, handle, crypt(Pass, "$1$92737837$"), "*", *level, 1, 0, 0); WriteChanOpFile(cptr); send_to_user(uptr, "New user \"%s\" added to %s userlist, as %s.", handle, cptr->Name, levelnamefromchar(*level)); *************** *** 2694,2698 **** else safecopy(Pass, pass, GENPASSLEN); ! tmphptr = AddHandle(cptr, handle, crypt(Pass, "X2"), "*", levelch, 1, 0, 0); send_to_user(uptr, "New user \"%s\" added to the %s userlist as %s.", handle, cptr->Name, level); send_to_user(uptr, "Their password has been set to %s.", Pass); --- 2704,2708 ---- else safecopy(Pass, pass, GENPASSLEN); ! tmphptr = AddHandle(cptr, handle, crypt(Pass, "$1$92737837$"), "*", levelch, 1, 0, 0); send_to_user(uptr, "New user \"%s\" added to the %s userlist as %s.", handle, cptr->Name, level); send_to_user(uptr, "Their password has been set to %s.", Pass); *************** *** 3497,3501 **** { /* Convert to crypted. */ ! Pass = crypt(Pass, "X2"); /* I duno what is proper to use for seed. */ } if(FindHandle(ChanPtr, Handle)) --- 3507,3511 ---- { /* Convert to crypted. */ ! Pass = crypt(Pass, "$1$92737837$"); } if(FindHandle(ChanPtr, Handle)) *************** *** 3564,3568 **** continue; } ! Pass = crypt(Pass, "X2"); if(strlen(Handle) > 20) { --- 3574,3578 ---- continue; } ! Pass = crypt(Pass, "$1$92737837$"); if(strlen(Handle) > 20) { *************** *** 3650,3654 **** /* Add owner */ ! if(AddHandle(cptr, OwnerHandle, crypt(OwnerPassword, "X2"), "*", 'W', 1, 0, 0)) { strcpy(Str, "Owner: \002SUCCESS\002"); --- 3660,3664 ---- /* Add owner */ ! if(AddHandle(cptr, OwnerHandle, crypt(OwnerPassword, "$1$92737837$"), "*", 'W', 1, 0, 0)) { strcpy(Str, "Owner: \002SUCCESS\002"); Index: config.h =================================================================== RCS file: /cvsroot/x2serv/x2/source/config.h,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -r1.64 -r1.65 *** config.h 13 Dec 2001 11:18:05 -0000 1.64 --- config.h 11 Apr 2002 06:59:04 -0000 1.65 *************** *** 161,166 **** #define MAXCIDLEN 10 /* TS4 Connection ID (no idea whats reasonable). */ #define NUMNICKLEN 4 /* 1 char (server number) + 2 char (user number) + '\0' */ ! #define PASSWORDLEN 10 /* Some bugs with long passwords have been reported. ! * This should solve it. */ #define MAXPASS 200 /* No longer used for ban reason. Shrinking... */ #define GENPASSLEN 6 /* Passwords of this length are auto-generated by X2. */ --- 161,166 ---- #define MAXCIDLEN 10 /* TS4 Connection ID (no idea whats reasonable). */ #define NUMNICKLEN 4 /* 1 char (server number) + 2 char (user number) + '\0' */ ! #define PASSWORDLEN 16 /* we're now using md5 for encryption, so MUCH longer passwords can be used. */ ! /* I do believe that 16 should be long enough for everyone, though (: */ #define MAXPASS 200 /* No longer used for ban reason. Shrinking... */ #define GENPASSLEN 6 /* Passwords of this length are auto-generated by X2. */ Index: main.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/main.c,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -r1.56 -r1.57 *** main.c 13 Dec 2001 11:18:05 -0000 1.56 --- main.c 11 Apr 2002 06:59:04 -0000 1.57 *************** *** 548,552 **** { /* Convert to crypted. */ ! Pass = crypt(Pass, "X2"); /* I duno what is proper to use for seed. */ } LastHandle = AddHandle(cptr, Handle, Pass, Info, Level, AutoOp, LastSeen, 0); --- 548,552 ---- { /* Convert to crypted. */ ! Pass = crypt(Pass, "$1$92737837$"); /* now using md5 for passwords to allow MUCH longer length */ } LastHandle = AddHandle(cptr, Handle, Pass, Info, Level, AutoOp, LastSeen, 0); *************** *** 611,615 **** return(0); } ! Pass = crypt(Pass, "X2"); if(strlen(Handle) > 20) { --- 611,615 ---- return(0); } ! Pass = crypt(Pass, "$1$92737837$"); if(strlen(Handle) > 20) { |
From: Wolfram K. <qu...@sq...> - 2002-02-27 12:06:27
|
Was lazy when entering the 'reason', anyway. Before the patch, X2 would load server jupes with TS "999999999", this was ok, UNTIL the UNIX clock hit ten digits, because once that happened, the timestamp sent when juping a server was younger. Fixed by adding an additional "9" at the end. This has been tested, confirmed fixed. - Wolfram 'Daedalus' Knipp -----Original Message----- From: x2s...@li... [mailto:x2s...@li...]On Behalf Of Wolfram Knipp Sent: Wednesday, February 27, 2002 7:55 PM To: x2s...@li... Subject: [X2serv-cvs] CVS: x2/source send.c,1.33,1.34 Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv15995/source Modified Files: send.c Log Message: Fixed a bug where SPOOFSERV was rendered useless. This bug became active ever since the UNIX clock hit ten digits. Juped servers would kick the jupe out with the reason; GHOST. Index: send.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/send.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -r1.33 -r1.34 *** send.c 4 Feb 2002 14:05:10 -0000 1.33 --- send.c 27 Feb 2002 11:54:46 -0000 1.34 *************** *** 348,352 **** va_end(args); ! send_command_from_server("SERVER %s 1 999999999 999999999 P10 %cD] 0 :%s", servname, NumChar, buff); } --- 348,352 ---- va_end(args); ! send_command_from_server("SERVER %s 1 9999999999 9999999999 P10 %cD] 0 :%s", servname, NumChar, buff); } _______________________________________________ X2serv-cvs mailing list X2s...@li... https://lists.sourceforge.net/lists/listinfo/x2serv-cvs |
From: Wolfram K. <qua...@us...> - 2002-02-27 11:54:51
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv15995/source Modified Files: send.c Log Message: Fixed a bug where SPOOFSERV was rendered useless. This bug became active ever since the UNIX clock hit ten digits. Juped servers would kick the jupe out with the reason; GHOST. Index: send.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/send.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -r1.33 -r1.34 *** send.c 4 Feb 2002 14:05:10 -0000 1.33 --- send.c 27 Feb 2002 11:54:46 -0000 1.34 *************** *** 348,352 **** va_end(args); ! send_command_from_server("SERVER %s 1 999999999 999999999 P10 %cD] 0 :%s", servname, NumChar, buff); } --- 348,352 ---- va_end(args); ! send_command_from_server("SERVER %s 1 9999999999 9999999999 P10 %cD] 0 :%s", servname, NumChar, buff); } |
From: Alex S. <ru...@us...> - 2002-02-25 03:51:50
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv18302 Modified Files: commands.c Log Message: add* doesnt require them to join the channel when called by an IRCOP. Index: commands.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/commands.c,v retrieving revision 1.167 retrieving revision 1.168 diff -C2 -r1.167 -r1.168 *** commands.c 13 Dec 2001 11:18:05 -0000 1.167 --- commands.c 25 Feb 2002 03:51:46 -0000 1.168 *************** *** 2592,2596 **** return(FALSE); } ! if(!isjoined(cptr, target)) { send_to_user(uptr, "%s is not in %s. They must join first.", nick, cptr->Name); --- 2592,2596 ---- return(FALSE); } ! if(!isjoined(cptr, target) && !IsOper(uptr)) { send_to_user(uptr, "%s is not in %s. They must join first.", nick, cptr->Name); |
From: Alex <ru...@bl...> - 2002-02-22 00:45:15
|
its tested now.. On Thu, 21 Feb 2002, Alex Schumann wrote: > Update of /cvsroot/x2serv/x2/source > In directory usw-pr-cvs1:/tmp/cvs-serv7791/source > > Modified Files: > parse.c > Log Message: > Replaced m_join() with one john wrote, which solves a bug when doing > /join 0,#achannelyouwerein. Since mine parsed backwards it caused problems. > This is not yet tested (: > > > Index: parse.c > =================================================================== > RCS file: /cvsroot/x2serv/x2/source/parse.c,v > retrieving revision 1.71 > retrieving revision 1.72 > diff -C2 -r1.71 -r1.72 > *** parse.c 7 Feb 2002 11:28:33 -0000 1.71 > --- parse.c 22 Feb 2002 00:35:22 -0000 1.72 > *************** > *** 470,513 **** > } > /* JOIN */ > int m_join(M_PARAMS) > { > ! int i; > ! char *channel; > > ! channel = (char *) strtok(rest, " "); > ! if(!channel) > ! { > ! Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); > ! return(0); > ! } > ! /* Need to check for comma seperated channels */ > ! for(i=strlen(channel)-2;i>=0;i--) > ! {/* move right to left.. call ProcessJoin when we hit a comma or beginning */ > ! if(channel[i] == ',') > ! { > ! ChannelListType cptr; > ! cptr = GetChannel(&channel[i+1]); > ! if(!strcmp(&channel[i+1], "0")) > ! { > ! RemoveNickFromAllChannels(uptr); > ! } > ! else > ! { > ! ProcessJoin(cptr, uptr, &channel[i+1], 'J', NetTime()); > ! } > ! channel[i] = '\0'; > ! } > ! } > ! if(!strcmp(channel, "0")) > { > ! /* JOIN 0 means part all join'd channels. */ > ! RemoveNickFromAllChannels(uptr); > } > ! else > { > ! ProcessJoin(GetChannel(channel), uptr, channel, 'J', NetTime()); > } > - return(0); > } > > /* Copied this from ircu. Since they were so nice to provide this > --- 470,554 ---- > } > /* JOIN */ > + /* Replacing with john_z's version > + *int m_join(M_PARAMS) > + *{ > + * int i; > + * char *channel; > + * > + * channel = (char *) strtok(rest, " "); > + * if(!channel) > + * { > + * Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); > + * return(0); > + * } > + * * Need to check for comma seperated channels * > + * for(i=strlen(channel)-2;i>=0;i--) > + * {* move right to left.. call ProcessJoin when we hit a comma or beginning * > + * if(channel[i] == ',') > + * { > + * ChannelListType cptr; > + * cptr = GetChannel(&channel[i+1]); > + * if(!strcmp(&channel[i+1], "0")) > + * { > + * RemoveNickFromAllChannels(uptr); > + * } > + * else > + * { > + * ProcessJoin(cptr, uptr, &channel[i+1], 'J', NetTime()); > + * } > + * channel[i] = '\0'; > + * } > + * } > + * if(!strcmp(channel, "0")) > + * { > + * * JOIN 0 means part all join'd channels. * > + * RemoveNickFromAllChannels(uptr); > + * } > + * else > + * { > + * ProcessJoin(GetChannel(channel), uptr, channel, 'J', NetTime()); > + * } > + * return(0); > + *} > + */ > + > + /* John_z's (of asylumnet) improved join handling function */ > int m_join(M_PARAMS) > { > ! char chan[100], *channels; > ! int i = 0, j = 0; > > ! channels = strtok(rest, " "); > ! if(!channels) > { > ! Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); > ! return(0); > } > ! > ! while(1) > { > ! if(channels[j] == '0') > ! { > ! if(j == 0 || channels[j-1] == ',') > ! { > ! RemoveNickFromAllChannels(uptr); > ! } > ! } > ! if(channels[j] == ',' || channels[j] == '\0') > ! { > ! chan[i] = '\0'; > ! ProcessJoin(GetChannel(chan), uptr, chan, 'J', NetTime()); > ! i = 0; > ! if(channels[j] == '\0') return(1); > ! } > ! else > ! { > ! chan[i] = channels[j]; > ! i++; > ! } > ! j++; > } > } > + > > /* Copied this from ircu. Since they were so nice to provide this > > > _______________________________________________ > X2serv-cvs mailing list > X2s...@li... > https://lists.sourceforge.net/lists/listinfo/x2serv-cvs > |
From: Alex S. <ru...@us...> - 2002-02-22 00:35:26
|
Update of /cvsroot/x2serv/x2/source In directory usw-pr-cvs1:/tmp/cvs-serv7791/source Modified Files: parse.c Log Message: Replaced m_join() with one john wrote, which solves a bug when doing /join 0,#achannelyouwerein. Since mine parsed backwards it caused problems. This is not yet tested (: Index: parse.c =================================================================== RCS file: /cvsroot/x2serv/x2/source/parse.c,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -r1.71 -r1.72 *** parse.c 7 Feb 2002 11:28:33 -0000 1.71 --- parse.c 22 Feb 2002 00:35:22 -0000 1.72 *************** *** 470,513 **** } /* JOIN */ int m_join(M_PARAMS) { ! int i; ! char *channel; ! channel = (char *) strtok(rest, " "); ! if(!channel) ! { ! Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); ! return(0); ! } ! /* Need to check for comma seperated channels */ ! for(i=strlen(channel)-2;i>=0;i--) ! {/* move right to left.. call ProcessJoin when we hit a comma or beginning */ ! if(channel[i] == ',') ! { ! ChannelListType cptr; ! cptr = GetChannel(&channel[i+1]); ! if(!strcmp(&channel[i+1], "0")) ! { ! RemoveNickFromAllChannels(uptr); ! } ! else ! { ! ProcessJoin(cptr, uptr, &channel[i+1], 'J', NetTime()); ! } ! channel[i] = '\0'; ! } ! } ! if(!strcmp(channel, "0")) { ! /* JOIN 0 means part all join'd channels. */ ! RemoveNickFromAllChannels(uptr); } ! else { ! ProcessJoin(GetChannel(channel), uptr, channel, 'J', NetTime()); } - return(0); } /* Copied this from ircu. Since they were so nice to provide this --- 470,554 ---- } /* JOIN */ + /* Replacing with john_z's version + *int m_join(M_PARAMS) + *{ + * int i; + * char *channel; + * + * channel = (char *) strtok(rest, " "); + * if(!channel) + * { + * Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); + * return(0); + * } + * * Need to check for comma seperated channels * + * for(i=strlen(channel)-2;i>=0;i--) + * {* move right to left.. call ProcessJoin when we hit a comma or beginning * + * if(channel[i] == ',') + * { + * ChannelListType cptr; + * cptr = GetChannel(&channel[i+1]); + * if(!strcmp(&channel[i+1], "0")) + * { + * RemoveNickFromAllChannels(uptr); + * } + * else + * { + * ProcessJoin(cptr, uptr, &channel[i+1], 'J', NetTime()); + * } + * channel[i] = '\0'; + * } + * } + * if(!strcmp(channel, "0")) + * { + * * JOIN 0 means part all join'd channels. * + * RemoveNickFromAllChannels(uptr); + * } + * else + * { + * ProcessJoin(GetChannel(channel), uptr, channel, 'J', NetTime()); + * } + * return(0); + *} + */ + + /* John_z's (of asylumnet) improved join handling function */ int m_join(M_PARAMS) { ! char chan[100], *channels; ! int i = 0, j = 0; ! channels = strtok(rest, " "); ! if(!channels) { ! Debug(DBGWARNING, "Invalid JOIN syntax (null channel)."); ! return(0); } ! ! while(1) { ! if(channels[j] == '0') ! { ! if(j == 0 || channels[j-1] == ',') ! { ! RemoveNickFromAllChannels(uptr); ! } ! } ! if(channels[j] == ',' || channels[j] == '\0') ! { ! chan[i] = '\0'; ! ProcessJoin(GetChannel(chan), uptr, chan, 'J', NetTime()); ! i = 0; ! if(channels[j] == '\0') return(1); ! } ! else ! { ! chan[i] = channels[j]; ! i++; ! } ! j++; } } + /* Copied this from ircu. Since they were so nice to provide this |