diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | docs/DEFCON | 2 | ||||
-rw-r--r-- | docs/EVENTS | 6 | ||||
-rw-r--r-- | docs/FAQ | 11 | ||||
-rw-r--r-- | docs/IRCD | 45 | ||||
-rw-r--r-- | docs/MODULES | 2 | ||||
-rw-r--r-- | docs/NEWS | 12 | ||||
-rw-r--r-- | docs/README | 2 | ||||
-rw-r--r-- | docs/WIN32.txt | 4 | ||||
-rw-r--r-- | include/events.h | 5 | ||||
-rw-r--r-- | include/services.h | 3 | ||||
-rw-r--r-- | src/bahamut.c | 63 | ||||
-rw-r--r-- | src/dreamforge.c | 3 | ||||
-rw-r--r-- | src/hybrid.c | 3 | ||||
-rw-r--r-- | src/misc.c | 8 | ||||
-rw-r--r-- | src/nickserv.c | 3 | ||||
-rw-r--r-- | src/plexus.c | 3 | ||||
-rw-r--r-- | src/ptlink.c | 3 | ||||
-rw-r--r-- | src/rageircd.c | 3 | ||||
-rw-r--r-- | src/ratbox.c | 13 | ||||
-rw-r--r-- | src/servers.c | 8 | ||||
-rw-r--r-- | src/solidircd.c | 3 | ||||
-rw-r--r-- | src/ultimate2.c | 4 | ||||
-rw-r--r-- | src/ultimate3.c | 3 | ||||
-rw-r--r-- | src/unreal31.c | 4 | ||||
-rw-r--r-- | src/unreal32.c | 63 | ||||
-rw-r--r-- | src/viagra.c | 3 | ||||
-rw-r--r-- | version.log | 7 |
28 files changed, 194 insertions, 96 deletions
@@ -6,6 +6,7 @@ Provided by Anope Dev. <dev@anope.org> - 2005 02/13 A Internal Event support, see EVENTS in the doc folder for help [ #00] 02/05 A Support for Unreal 3.2 +I channel mode. [ #00] 02/03 A Merged anope-win32 branch into the main, now Win32 ready. [ #00] +02/28 F nickIsServices() no longer alters the buffer [#304] 02/22 F Uninitialized variable in NickServ DROP. [ #00] 02/22 F Remote whois sending incorrect numeric back. [#301] 02/22 F Several OperServ commands not respecting NickServ SET MSG. [#302] diff --git a/docs/DEFCON b/docs/DEFCON index ba46744e8..1f5218d19 100644 --- a/docs/DEFCON +++ b/docs/DEFCON @@ -52,7 +52,7 @@ Anope DefCon Services will ignore everyone but opers 64 Services will silently ignore everyone but opers 128 AKILL all new clients trying to connect 256 - No new memos sent to block memoserv attacks 512 + No new memos sent to block MemoServ attacks 512 These are the values used to determine each defcon setting, are set via: diff --git a/docs/EVENTS b/docs/EVENTS index 869257d31..d0695fd22 100644 --- a/docs/EVENTS +++ b/docs/EVENTS @@ -14,7 +14,7 @@ Anope Internal Events events such as the databases being saved. A list of triggered events can be found below. Additional there is a module included with the core which can provide some clue as to how to use the code in your modules. - The rest of this document assumes that you are used to writting modules. + The rest of this document assumes that you are used to writing modules. 2) Complex Events @@ -160,4 +160,8 @@ Anope Internal Events | EVENT_NICK_EXPIRE | Nick of the account involved | | EVENT_CHANGE_NICK | Nick of the user involved | | EVENT_USER_LOGOFF | Nick of the user involved | + | EVENT_GROUP | Nick of the user involved | + | EVENT_NICK_IDENTIFY | Nick of the user involved | + | EVENT_SERVER_SQUIT | Name of the server involved | + | EVENT_SERVER_CONNECT | Name of the server involved | |------------------------|-------------------------------------------| @@ -86,7 +86,7 @@ Index: 30. When I used the OperServ RAW command, Anope and/or my network crashed, or did weird things! Please fix this bug! -31. I would like to have the list of the differents RAW on operserv +31. I would like to have the list of the different RAW on OperServ 32. I can't get /OS UMODES and /OS SVSNICK do not work! @@ -116,9 +116,8 @@ Index: 3. Does Anope run under Windows? - Well... not officially. Bu there is a port branch of services that will - work on Windows. Visit http://windows.anope.org for more information on - this port. + For more information visit http://windows.anope.org on how to obtain + the windows version of Anope. 4. Can I send you questions without reading the FAQ, INSTALL or README files? @@ -391,7 +390,7 @@ Index: be ignored, even if the problem happens not immediately. -31. I would like to have the list of the different RAW on operserv +31. I would like to have the list of the different RAW on OperServ If you have to ask, you should not be messing with RAW :) @@ -409,7 +408,7 @@ Index: all channels. It must be activated on a per user basis and is only available to Services Admins and Services Roots. It is set using OperServ and is not persistent. - It only works if SuperAdmin is uncommented in the services + It only works if SuperAdmin is not commented in the services configuration file. This is commented by default. Read /msg OperServ HELP SET SUPERADMIN for further help. @@ -19,12 +19,12 @@ How To Add IRCd Support C) Make a backup copy of Config and configure.in First step in this process is to rename the .c and .h file after the IRCd - that you are going to be adding support for. Its recommened that you come + that you are going to be adding support for. Its recommended that you come up with a name that is clear and easy to understand. Now that you have the files that you will need to create your own ircd support, starting with Config. This file is a shell script file; scroll - down untill you find the list of ircs for the user to select. Indicate + down until you find the list of ircs for the user to select. Indicate the based ircd version which is supported such as a series 1.x or 2.2.x, placing in the comment side an exact version that the support is for or "experimental" if you are not the ircd developer. The next step is to @@ -32,7 +32,7 @@ How To Add IRCd Support 'IRCTYPE_DEF="IRC_RATBOX"' to be the descriptive define for your ircd. With the Config file ready to go, edit configure.in and find in there the - reference to --with-ircd. You should see see the various other ircds, and + reference to --with-ircd. You should see the various other ircds, and you will want to add yours in there using the same IRC_ name you came up with above. Important in this step is to make sure that you set the IRCDFILE to the name of the .c file you set in step 1. Once you have the @@ -56,7 +56,7 @@ How To Add IRCd Support You are now ready to start getting into the code. -2) Modifing the Header File +2) Modifying the Header File Now that you have gotten past the first part of the creation process, you are into the code. This part is the harder and more complex part. You @@ -101,7 +101,7 @@ How To Add IRCd Support Finally we come to DEFAULT_MLOCK; this is the mode that services will set by default on channels when they are registered. In general you want this - to be whats acceptable by the ircd; in most cases this is "+nt" + to be what is acceptable by the ircd; in most cases this is "+nt" 3) The Code @@ -246,10 +246,10 @@ How To Add IRCd Support opped (+o), and protected (+a) on IRCd's that support it. - 24) SVSNICK: Can the ircd use SVSNICK to change someones nick? Otherwise, + 24) SVSNICK: Can the ircd use SVSNICK to change some ones nick? Otherwise, KILL is used. Use 1 for yes, 0 for no. - 25) VHOST: Can a user's host be changd on the fly? Enabling this allow + 25) VHOST: Can a user's host be changed on the fly? Enabling this allow HostServ online. Use 1 for yes, 0 for no. 26) OWNER: Has a channel umode for being the channel owner. For example, @@ -283,7 +283,7 @@ How To Add IRCd Support 34) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no. - 35) HALFOP: Is channelmode +h for halfop supported by the IRCd? Use 1 for + 35) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for yes, 0 for no. 36) Number of Server Args: When an IRCd connects, this is the number of @@ -336,7 +336,7 @@ How To Add IRCd Support 51) vIdent: Support for including a user's ident in their vHost. Use 1 for yes, 0 for no. - 52) SVSHOLD: Support for temporarely 'holding' a nick, instead of using + 52) SVSHOLD: Support for temporarily 'holding' a nick, instead of using a nick enforcer client. Use 1 for yes, 0 for no. 53) TS on MODE: We need to send a timestamp when modes are being changed. @@ -395,7 +395,7 @@ How To Add IRCd Support 71) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes, 0 for no. - 72) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case senstive? + 72) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive? Use 1 for yes, 0 for no. 73) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use @@ -411,7 +411,7 @@ How To Add IRCd Support 77) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use 1 for yes, 0 for no. - 78) SGline Enforce: Does the IRCd enfore SGLINES for us or do we need to + 78) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to do so? Use 1 for yes, 0 for no. 79) Vhost Character: The character used to represent the vHost mode, if @@ -424,6 +424,9 @@ How To Add IRCd Support 82) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no. + 83) Character Set: Unreal passes the character set during PROTOCTL, + the value is stored here. Set this NULL to start. + So we've had this long list. Now there's a second struct to fill. This struct isn't as long as the previous one though, so we'll handle it quite quick compared to the previous one. @@ -465,6 +468,10 @@ How To Add IRCd Support CAPAB_UMODE2 | 0x02000000 | UMODE2 | Supports UMODE2 command CAPAB_VL | 0x04000000 | VL | VLine information in info field CAPAB_TLKEXT | 0x08000000 | TLKEXT | Not 8, but 10 params in TKL's + CAPAB_CHANMODE | 0x10000000 | CHANMODE | Channel modes are passed here + CAPAB_SJB64 | 0x20000000 | SJB64 | SJOIN timestamps are base64 encoded + CAPAB_NICKCHARS | 0x40000000 | NICKCHARS | Character set used by the IRCD for nicks + 4) Modes @@ -479,6 +486,22 @@ How To Add IRCd Support place the UMODE_i into this slot. Your base .c file should contain a good start for this, as well as a little help locating the characters. + The following mode set is for the channel symbols. During a SJOIN event + the modes are sent usually before the nick. These normally are @, +, % + etc.. depending on the ircd. Starting at ASCII 0 and running to 127. + Replace the 0 with the character (o = @, h = %) for the given mode. In the + case of halfop which is usually sent as % replace the 37th character with + 'h', do this until all modes that are possible be received in this manor + have been inserted into the array. + + Now that you have that complete, the following array is ready to be dealt + with. This is the cmmodes array, like the others it is a ASCII array + starting at 0 and going to 127. However at the given letter you will want + to enter the add, and delete function for the given mode. In the case of + bans (+b) there is add_ban, and del_ban. Anope provides functions for + bans, exceptions and invites, should your ircd have more then these please + contact Anope to discuss what can be done to add this mode. + 5) Functions and Events A brief word about functions and events. All events are captured using: diff --git a/docs/MODULES b/docs/MODULES index 85fb283d5..98e0026af 100644 --- a/docs/MODULES +++ b/docs/MODULES @@ -79,7 +79,7 @@ Anope Modules 5) More Modules - Anope ships with two sample modules that only illustrates some of the + Anope ships with three sample modules that only illustrates some of the implemented module capabilities. They don't really do much or anything useful. @@ -1,6 +1,6 @@ Highlighted News in Anope 1.6 ============================= - * Fixed various exploits and vulverabilities. + * Fixed various exploits and vulnerabilities. * Fixed various language typos and inconsistencies. * Improved ignore system. * Improved ./configure script. @@ -41,7 +41,7 @@ After the change from Epona to Anope * Services realtime logging to a channel * SuperAdmin directive for access to "super" commands. * Ban system is now exception aware. - * HostServ for hostname masquarading. + * HostServ for hostname masquerading. * Smarter XOP System. * Email verification/handshake upon registration. * Services can now /ignore users. @@ -86,7 +86,7 @@ while networks using UnrealIRCd must upgrade to Unreal 3.1.1. For the full changes, see the Changes file. -For announcements and discussions about Anope, subscribe to the mailing -list by sending an e-mail to epona-request@epona.org with "subscribe" -in the body (quotes excluded). You can then post to the mailing list -by sending an e-mail to epona@epona.org. +For announcements and discussions about Anope, please visit our +web site http://www.anope.org + + diff --git a/docs/README b/docs/README index ab9968a6f..ff4b47fa0 100644 --- a/docs/README +++ b/docs/README @@ -3,7 +3,7 @@ Anope -- a set of IRC services for IRC networks Anope is 2003-2005 Anope Team <info@anope.org>. Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>. -Based on Services 1996-1999 Andrew Church <achurch@dragonfire.net>. +Based on Services 1996-1999 Andrew Church <achurch@achurch.org>. This program is free but copyrighted software; see the file COPYING for details. diff --git a/docs/WIN32.txt b/docs/WIN32.txt index 5afc7553c..d743be716 100644 --- a/docs/WIN32.txt +++ b/docs/WIN32.txt @@ -83,7 +83,7 @@ Anope for Windows 4) You are now ready to compile. bring up the Visual C++ toolkit command prompt; This will launch a dos command prompt like windows, which will - set the enviroment properties need to make Anope. Change directories + set the environment properties need to make Anope. Change directories to where you unpacked the source code in step 2. At the prompt type: nmake -f Makefile.win32 @@ -102,7 +102,7 @@ Anope for Windows 2) Installation Since Anope for Windows does not use a visual interface, you must do the - configuration with a texteditor before proceeding with running anope + configuration with a text editor before proceeding with running anope itself. Open services.conf, and read through it carefully and adjust the settings diff --git a/include/events.h b/include/events.h index 4016ac918..0330e3a51 100644 --- a/include/events.h +++ b/include/events.h @@ -41,4 +41,9 @@ #define EVENT_NICK_EXPIRE "nick_expire" #define EVENT_CHANGE_NICK "change_nick" #define EVENT_USER_LOGOFF "user_logoff" +#define EVENT_GROUP "nick_group" +#define EVENT_NICK_IDENTIFY "nick_id" +#define EVENT_SERVER_SQUIT "server_squit" +#define EVENT_SERVER_CONNECT "server_connect" + diff --git a/include/services.h b/include/services.h index b6a141a6f..d84230642 100644 --- a/include/services.h +++ b/include/services.h @@ -333,6 +333,7 @@ struct ircdvars_ { int ts6; /* ircd is TS6 */ int supporthelper; /* +h helper umodes */ int p10; /* ircd is P10 */ + char *nickchars; /* character set */ }; struct ircdcapab_ { @@ -366,6 +367,7 @@ struct ircdcapab_ { uint32 dozip; uint32 chanmodes; uint32 sjb64; + uint32 nickchars; }; /* tiny struct needed for P10 and other UID servers so we can track @@ -1180,6 +1182,7 @@ struct hostcache_ { #define CAPAB_TLKEXT 0x08000000 #define CAPAB_CHANMODE 0x10000000 #define CAPAB_SJB64 0x20000000 +#define CAPAB_NICKCHARS 0x40000000 /*************************************************************************/ diff --git a/src/bahamut.c b/src/bahamut.c index 36bd28f6d..c28170d11 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -109,6 +109,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -144,7 +145,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0, 0} + 0, 0, 0} }; @@ -290,32 +291,52 @@ char csmodes[128] = { CMMode cmmodes[128] = { - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, - {NULL}, - {add_ban, del_ban}, - {NULL}, - {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, /* BCD */ + {NULL}, {NULL}, {NULL}, /* EFG */ + {NULL}, /* H */ + {add_invite, del_invite}, /* I */ + {NULL}, /* J */ + {NULL}, {NULL}, {NULL}, /* KLM */ + {NULL}, {NULL}, {NULL}, /* NOP */ + {NULL}, {NULL}, {NULL}, /* QRS */ + {NULL}, {NULL}, {NULL}, /* TUV */ + {NULL}, {NULL}, {NULL}, /* WXY */ + {NULL}, /* Z */ + {NULL}, {NULL}, /* (char 91 - 92) */ + {NULL}, {NULL}, {NULL}, /* (char 93 - 95) */ + {NULL}, /* ` (char 96) */ + {NULL}, /* a (char 97) */ + {add_ban, del_ban}, /* b */ + {NULL}, {NULL}, /* cd */ {add_exception, del_exception}, - {NULL}, - {NULL}, + {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL} }; - CBMode cbmodes[128] = { {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, diff --git a/src/dreamforge.c b/src/dreamforge.c index 8d90704ec..bceb88156 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -107,6 +107,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -142,7 +143,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; void anope_set_umode(User * user, int ac, char **av) diff --git a/src/hybrid.c b/src/hybrid.c index 8ab40ce4a..6a9e89921 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -107,6 +107,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 0, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -142,7 +143,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/src/misc.c b/src/misc.c index 97b1af506..5e5038252 100644 --- a/src/misc.c +++ b/src/misc.c @@ -811,15 +811,17 @@ void EnforceQlinedNick(char *nick, char *killer) * @param int Check if botserv bots * @return int */ -int nickIsServices(char *nick, int bot) +int nickIsServices(char *tempnick, int bot) { int found = 0; - char *s; + char *s, *nick; - if (!nick) { + if (!tempnick) { return found; } + nick = sstrdup(tempnick); + s = strchr(nick, '@'); if (s) { *s++ = 0; diff --git a/src/nickserv.c b/src/nickserv.c index f43ed30bf..7ee63469e 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -2472,6 +2472,7 @@ static int do_group(User * u) rdb_close(); } #endif + send_event(EVENT_GROUP, u->nick); alog("%s: %s!%s@%s makes %s join group of %s (%s) (e-mail: %s)", s_NickServ, u->nick, u->username, common_get_vhost(u), u->nick, target->nick, target->nc->display, (target->nc->email ? target->nc->email : "none")); notice_lang(s_NickServ, u, NICK_GROUP_JOINED, target->nick); @@ -2576,7 +2577,7 @@ static int do_identify(User * u) common_svsmode(u, ircd->modeonreg, ""); } } - + send_event(EVENT_NICK_IDENTIFY, u->nick); alog("%s: %s!%s@%s identified for nick %s", s_NickServ, u->nick, u->username, common_get_vhost(u), u->nick); notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED); diff --git a/src/plexus.c b/src/plexus.c index 21e89b502..e3217316c 100644 --- a/src/plexus.c +++ b/src/plexus.c @@ -107,6 +107,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 0, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -142,7 +143,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/src/ptlink.c b/src/ptlink.c index 56704ffd7..228f48c0d 100644 --- a/src/ptlink.c +++ b/src/ptlink.c @@ -107,6 +107,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -142,7 +143,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/src/rageircd.c b/src/rageircd.c index 6521e5934..050ff4e76 100644 --- a/src/rageircd.c +++ b/src/rageircd.c @@ -108,6 +108,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ }, {NULL} }; @@ -142,7 +143,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/src/ratbox.c b/src/ratbox.c index 45046d654..bb1ce1e60 100644 --- a/src/ratbox.c +++ b/src/ratbox.c @@ -109,6 +109,7 @@ IRCDVar ircd[] = { 1, /* ts6 */ 0, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -144,12 +145,9 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0, 0} + 0, 0, 0} }; -static User *current; -static int next_index; - void anope_set_umode(User * user, int ac, char **av) { int add = 1; /* 1 if adding modes, 0 if deleting */ @@ -628,8 +626,8 @@ int anope_event_nick(char *source, int ac, char **av) do_nick(source, av[0], NULL, NULL, NULL, NULL, strtoul(av[1], NULL, 10), 0, 0, NULL, NULL); } - return MOD_CONT; } + return MOD_CONT; } int anope_event_topic(char *source, int ac, char **av) @@ -1046,7 +1044,7 @@ int anope_event_ping(char *source, int ac, char **av) int anope_event_away(char *source, int ac, char **av) { - User *u; + User *u = NULL; if (ac) { return MOD_CONT; @@ -1056,7 +1054,7 @@ int anope_event_away(char *source, int ac, char **av) u = find_byuid(source); } - m_away((UseTS6 ? u->nick : source), av[0]); + m_away((UseTS6 ? (u ? u->nick : source) : source), av[0]); return MOD_CONT; } @@ -1444,7 +1442,6 @@ void anope_cmd_tmode(char *source, char *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE]; - Uid *ud; *buf = '\0'; if (fmt) { diff --git a/src/servers.c b/src/servers.c index 49e230fc3..bc2836d5b 100644 --- a/src/servers.c +++ b/src/servers.c @@ -330,6 +330,7 @@ void do_server(const char *source, char *servername, char *hops, s = findserver(servlist, source); new_server(s, servername, descript, 0, numeric); + send_event(EVENT_SERVER_CONNECT, servername); } /*************************************************************************/ @@ -358,6 +359,7 @@ void do_squit(const char *source, int ac, char **av) alog("SQUIT for nonexistent server (%s)!!", av[0]); return; } + send_event(EVENT_SERVER_SQUIT, s->name); snprintf(buf, sizeof(buf), "%s %s", s->name, (s->uplink ? s->uplink->name : "")); @@ -483,6 +485,12 @@ void capab_parse(int ac, char **av) ircd->chanmodes = sstrdup(tmp); } } + if (!stricmp(s, "NICKCHARS")) { + uplink_capab |= CAPAB_NICKCHARS; + if (tmp) { + ircd->nickchars = sstrdup(tmp); + } + } if (s) { free(s); } diff --git a/src/solidircd.c b/src/solidircd.c index ea577a0fa..e8489abe4 100644 --- a/src/solidircd.c +++ b/src/solidircd.c @@ -109,6 +109,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -144,7 +145,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/src/ultimate2.c b/src/ultimate2.c index d52ead4ef..03b81eeed 100644 --- a/src/ultimate2.c +++ b/src/ultimate2.c @@ -107,6 +107,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -144,8 +145,7 @@ IRCDCAPAB ircdcap[] = { 0, /* DODKEY */ 0, /* DOZIP */ CAPAB_CHANMODE, /* CHANMODE */ - 0, - } + 0, 0} }; void anope_set_umode(User * user, int ac, char **av) diff --git a/src/ultimate3.c b/src/ultimate3.c index 34d9861c2..ad965bbd8 100644 --- a/src/ultimate3.c +++ b/src/ultimate3.c @@ -109,6 +109,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ }, {NULL} }; @@ -143,7 +144,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ CAPAB_DODKEY, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0, 0} + 0, 0, 0} }; void anope_set_umode(User * user, int ac, char **av) diff --git a/src/unreal31.c b/src/unreal31.c index 4be075fd2..6326b274b 100644 --- a/src/unreal31.c +++ b/src/unreal31.c @@ -110,6 +110,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ }, {NULL} }; @@ -146,8 +147,7 @@ IRCDCAPAB ircdcap[] = { 0, /* DODKEY */ 0, /* DOZIP */ 0, - 0, - } + 0, 0} }; unsigned long umodes[128] = { diff --git a/src/unreal32.c b/src/unreal32.c index 2e8123f9a..c612673e3 100644 --- a/src/unreal32.c +++ b/src/unreal32.c @@ -109,6 +109,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ }, {NULL} }; @@ -145,6 +146,7 @@ IRCDCAPAB ircdcap[] = { 0, /* DOZIP */ CAPAB_CHANMODE, /* CHANMODE */ CAPAB_SJB64, + CAPAB_NICKCHARS, } }; @@ -223,33 +225,52 @@ char csmodes[128] = { }; CMMode cmmodes[128] = { - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, - {NULL}, - {NULL}, - {add_ban, del_ban}, - {NULL}, - {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, + {NULL}, {NULL}, {NULL}, /* BCD */ + {NULL}, {NULL}, {NULL}, /* EFG */ + {NULL}, /* H */ + {add_invite, del_invite}, /* I */ + {NULL}, /* J */ + {NULL}, {NULL}, {NULL}, /* KLM */ + {NULL}, {NULL}, {NULL}, /* NOP */ + {NULL}, {NULL}, {NULL}, /* QRS */ + {NULL}, {NULL}, {NULL}, /* TUV */ + {NULL}, {NULL}, {NULL}, /* WXY */ + {NULL}, /* Z */ + {NULL}, {NULL}, /* (char 91 - 92) */ + {NULL}, {NULL}, {NULL}, /* (char 93 - 95) */ + {NULL}, /* ` (char 96) */ + {NULL}, /* a (char 97) */ + {add_ban, del_ban}, /* b */ + {NULL}, {NULL}, /* cd */ {add_exception, del_exception}, - {NULL}, - {NULL}, + {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL} }; - - CBMode cbmodes[128] = { {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, diff --git a/src/viagra.c b/src/viagra.c index 1cb883789..b94ad6aee 100644 --- a/src/viagra.c +++ b/src/viagra.c @@ -108,6 +108,7 @@ IRCDVar ircd[] = { 0, /* ts6 */ 1, /* support helper umode */ 0, /* p10 */ + NULL, /* character set */ } , {NULL} @@ -144,7 +145,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ CAPAB_DODKEY, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0, 0} + 0, 0, 0} }; diff --git a/version.log b/version.log index cc73622ba..951da7f89 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,15 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="8" -VERSION_BUILD="587" +VERSION_BUILD="588" # $Log$ # +# BUILD : 1.7.8 (588) +# BUGS : 304 +# NOTES : 1. nickIsServices() no longer alters the buffer 2. Fixes +I on Unreal and Bahamut 3. Anope Feature Request 285 +# 4. Updates documentation 5. Ratbox compiles clean with make strict 6. Trap and storing of NICKCHARS +# # BUILD : 1.7.8 (587) # BUGS : N/A # NOTES : Fixed a typo in the win32 makefile.inc |