From 0426f86966fee9e443eea4e9fd01eee06ba3f7bd Mon Sep 17 00:00:00 2001 From: "geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b" Date: Mon, 26 Dec 2005 15:59:05 +0000 Subject: [PATCH] BUILD : 1.7.12 (947) BUGS : NOTES : Updated inspircd support module and fixed error with generating language.h on certain setups git-svn-id: svn://svn.anope.org/anope/trunk@947 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@675 5417fbe8-f217-4b02-8779-1006273d7864 --- Changes | 4 + lang/Makefile | 10 +- src/core/os_raw.c | 1 + src/protocol/inspircd.c | 1007 ++++++++++++++++++++++----------------- src/protocol/inspircd.h | 13 +- version.log | 6 +- 6 files changed, 590 insertions(+), 451 deletions(-) diff --git a/Changes b/Changes index 4ffa69b37..42a5245ff 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Anope Version S V N -------------------- Provided by Anope Dev. - 2005 +12/26 F Generating language.h failed on certain setups. [ #00] 12/11 F First user on HelpChannel always got +h, even without access. [#405] 12/02 F Missing quitmessage when catching unknown signals. [ #00] 11/14 F Added a check for nickchars before trying to use them in /os stats[ #00] @@ -16,6 +17,9 @@ Provided by Trystan - 2005 Provided by Vladimir K. - 2005 12/11 F Enforcers had incorrect user when only user specified. [#410] +Provided by Brain - 2005 +12/26 A InspIRCd 1.0 Beta 6+ support module to replace old (b3) support. [ #00] + Anope Version 1.7.12 -------------------- Provided by Anope Dev. - 2005 diff --git a/lang/Makefile b/lang/Makefile index a302e6d9a..8d3c55dcd 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -75,15 +75,7 @@ langcomp: langcomp.c language.h: index Makefile - @perl -e $@ '\ - print STDERR "Generating language.h... "; \ - $$i=0; \ - while (<>) { \ - chop; \ - printf "#define %-32s %d\n", $$_, $$i++; \ - } \ - print "\n#define NUM_STRINGS $$i\n"; \ - print STDERR "$$i strings\n";' + @perl -e $@ 'print STDERR "Generating language.h... "; $$i=0; while (<>) { chop; printf "#define %-32s %d\n", $$_, $$i++; } print "\n#define NUM_STRINGS $$i\n"; print STDERR "$$i strings\n";' index: en_us.l grep '^[A-Z]' en_us.l >index diff --git a/src/core/os_raw.c b/src/core/os_raw.c index 64e85dadd..c91df3dde 100644 --- a/src/core/os_raw.c +++ b/src/core/os_raw.c @@ -36,6 +36,7 @@ int AnopeInit(int argc, char **argv) moduleAddCommand(OPERSERV, c, MOD_UNIQUE); if (DisableRaw) { + alog("[os_raw] Unloading because DisableRaw is enabled"); return MOD_STOP; } return MOD_CONT; diff --git a/src/protocol/inspircd.c b/src/protocol/inspircd.c index cd7913d07..aae093365 100644 --- a/src/protocol/inspircd.c +++ b/src/protocol/inspircd.c @@ -1,5 +1,6 @@ -/* InspIRCd beta 3 functions +/* inspircd beta 6+ functions * + * (C) 2005 Craig Edwards * (C) 2003-2005 Anope Team * Contact us at info@anope.org * @@ -19,37 +20,37 @@ #ifdef _WIN32 #include "winsock.h" -int inet_aton(const char *name, struct in_addr *addr) +int inet_aton (const char *name, struct in_addr *addr) { - uint32 a = inet_addr(name); - addr->s_addr = a; - return a != (uint32) - 1; + uint32 a = inet_addr (name); + addr->s_addr = a; + return a != (uint32)-1; } #endif IRCDVar myIrcd[] = { - {"InspIRCd 1.0 Beta", /* ircd name */ - "+o", /* nickserv mode */ - "+o", /* chanserv mode */ - "+o", /* memoserv mode */ - "+o", /* hostserv mode */ - "+io", /* operserv mode */ - "+o", /* botserv mode */ - "+o", /* helpserv mode */ - "+i", /* Dev/Null mode */ - "+io", /* Global mode */ - "+o", /* nickserv alias mode */ - "+o", /* chanserv alias mode */ - "+o", /* memoserv alias mode */ - "+io", /* hostserv alias mode */ - "+io", /* operserv alias mode */ - "+o", /* botserv alias mode */ - "+o", /* helpserv alias mode */ - "+i", /* Dev/Null alias mode */ - "+io", /* Global alias mode */ - "+i", /* Used by BotServ Bots */ + {"InspIRCd Beta 6", /* ircd name */ + "+o", /* nickserv mode */ + "+o", /* chanserv mode */ + "+o", /* memoserv mode */ + "+o", /* hostserv mode */ + "+io", /* operserv mode */ + "+o", /* botserv mode */ + "+o", /* helpserv mode */ + "+i", /* Dev/Null mode */ + "+io", /* Global mode */ + "+o", /* nickserv alias mode */ + "+o", /* chanserv alias mode */ + "+o", /* memoserv alias mode */ + "+io", /* hostserv alias mode */ + "+io", /* operserv alias mode */ + "+o", /* botserv alias mode */ + "+o", /* helpserv alias mode */ + "+i", /* Dev/Null alias mode */ + "+io", /* Global alias mode */ + "+s", /* Used by BotServ Bots */ 5, /* Chan Max Symbols */ - "-cilmnpstuzCGKNOQRSV", /* Modes to Remove */ + "-cilmnpstuzACGHKNOQRSV", /* Modes to Remove */ "+ao", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ @@ -61,13 +62,13 @@ IRCDVar myIrcd[] = { "+r", /* Mode On Reg */ "-r", /* Mode on UnReg */ "-r", /* Mode on Nick Change */ - 0, /* Supports SGlines */ + 1, /* Supports SGlines */ 1, /* Supports SQlines */ 1, /* Supports SZlines */ 1, /* Supports Halfop +h */ - 3, /* Number of server args */ + 4, /* Number of server args */ 0, /* Join 2 Set */ - 0, /* Join 2 Message */ + 1, /* Join 2 Message */ 0, /* Has exceptions +e */ 1, /* TS Topic Forward */ 0, /* TS Topci Backward */ @@ -84,23 +85,23 @@ IRCDVar myIrcd[] = { 0, /* svshold */ 0, /* time stamp on mode */ 0, /* NICKIP */ - 0, /* O:LINE */ - 1, /* UMODE */ + 1, /* O:LINE */ + 0, /* UMODE */ 1, /* VHOST ON NICK */ - 1, /* Change RealName */ + 0, /* Change RealName */ CMODE_K, /* No Knock */ 0, /* Admin Only */ DEFAULT_MLOCK, /* Default MLOCK */ UMODE_x, /* Vhost Mode */ 0, /* +f */ 1, /* +L */ - 0, + CMODE_f, CMODE_L, 0, - 0, /* No Knock requires +i */ + 1, /* No Knock requires +i */ NULL, /* CAPAB Chan Modes */ - 1, /* We support inspircd TOKENS */ - 0, /* TOKENS are CASE Sensitive */ + 0, /* We support inspircd TOKENS */ + 1, /* TOKENS are CASE inSensitive */ 0, /* TIME STAMPS are BASE64 */ 0, /* +I support */ 0, /* SJOIN ban char */ @@ -110,10 +111,10 @@ IRCDVar myIrcd[] = { 0, /* Sglines are not enforced until user reconnects */ "x", /* vhost char */ 0, /* ts6 */ - 0, /* support helper umode */ + 1, /* support helper umode */ 0, /* p10 */ NULL, /* character set */ - 1, /* reports sync state */ + 0, /* reports sync state */ } , {NULL} @@ -141,13 +142,13 @@ IRCDCAPAB myIrcdcap[] = { 0, /* IPV6 */ 0, /* SSJ5 */ 0, /* SN2 */ - CAPAB_TOKEN, /* TOKEN */ + 0, /* TOKEN */ 0, /* VHOST */ - 0, /* SSJ3 */ - 0, /* NICK2 */ + CAPAB_SSJ3, /* SSJ3 */ + CAPAB_NICK2, /* NICK2 */ 0, /* UMODE2 */ - 0, /* VL */ - 0, /* TLKEXT */ + CAPAB_VL, /* VL */ + CAPAB_TLKEXT, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ 0, @@ -159,14 +160,14 @@ unsigned long umodes[128] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, UMODE_A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, + 0, UMODE_a, 0, 0, 0, 0, 0, UMODE_g, UMODE_h, UMODE_i, 0, 0, 0, 0, 0, UMODE_o, 0, @@ -218,7 +219,7 @@ CMMode myCmmodes[128] = { {add_ban, del_ban}, {NULL}, {NULL}, - {add_exception, del_exception}, + {NULL, NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, @@ -398,6 +399,15 @@ void inspircd_set_umode(User * user, int ac, char **av) case '-': add = 0; break; + case 'd': + if (ac == 0) { + break; + } + + ac--; + av++; + user->svid = strtoul(*av, NULL, 0); + break; case 'o': if (add) { opcnt++; @@ -424,87 +434,66 @@ void inspircd_set_umode(User * user, int ac, char **av) } } -/* Set mod_current_buffer from here */ -void inspircd_set_mod_current_buffer(int ac, char **av) -{ - if (ac >= 3) - mod_current_buffer = sstrdup(av[2]); - else - mod_current_buffer = NULL; -} - -int anope_event_nickchange(char *source, int ac, char **av); -int anope_event_servertopic(char *source, int ac, char **av); -int anope_event_servermode(char *source, int ac, char **av); /* *INDENT-OFF* */ void moduleAddIRCDMsgs(void) { Message *m; - /* user has no choice but to use tokens with InspIRCd :) */ - UseTokens = 1; + updateProtectDetails("PROTECT","PROTECTME","!protect","!deprotect","AUTOPROTECT","+a","-a"); - updateProtectDetails("PROTECT","PROTECTME","protect","deprotect","AUTOPROTECT","+a","-a"); - - m = createMessage("$", anope_event_null); addCoreMessage(IRCD,m); /* send routing table */ - m = createMessage("X", anope_event_null); addCoreMessage(IRCD,m); /* begin netburst NOW */ - m = createMessage("Y", anope_event_eob); addCoreMessage(IRCD,m); /* end of UPLINK netburst */ - m = createMessage("H", anope_event_null); addCoreMessage(IRCD,m); /* local sync start */ - m = createMessage("F", anope_event_null); addCoreMessage(IRCD,m); /* local sync end */ - m = createMessage("f", anope_event_null); addCoreMessage(IRCD,m); /* local U-lined sync end */ - m = createMessage("*", anope_event_null); addCoreMessage(IRCD,m); /* no operation */ - m = createMessage("|", anope_event_null); addCoreMessage(IRCD,m); /* oper type */ - m = createMessage("-", anope_event_null); addCoreMessage(IRCD,m); /* start mesh operation */ - m = createMessage("s", anope_event_server); addCoreMessage(IRCD,m); /* passive server response */ - m = createMessage("U", anope_event_null); addCoreMessage(IRCD,m); /* active service connect */ - m = createMessage("J", anope_event_join); addCoreMessage(IRCD,m); /* join */ - m = createMessage("k", anope_event_kick); addCoreMessage(IRCD,m); /* kick */ - m = createMessage("K", anope_event_kill); addCoreMessage(IRCD,m); /* kill */ - m = createMessage("M", anope_event_servermode); addCoreMessage(IRCD,m); /* servermode */ - m = createMessage("m", anope_event_mode); addCoreMessage(IRCD,m); /* mode */ - m = createMessage("N", anope_event_nick); addCoreMessage(IRCD,m); /* nick (introduce) */ - m = createMessage("n", anope_event_nickchange); addCoreMessage(IRCD,m); /* nick (change) */ - m = createMessage("V", anope_event_null); addCoreMessage(IRCD,m); /* notice */ - m = createMessage("L", anope_event_part); addCoreMessage(IRCD,m); /* part */ - m = createMessage("?", anope_event_ping); addCoreMessage(IRCD,m); /* ping */ - m = createMessage("P", anope_event_privmsg); addCoreMessage(IRCD,m); /* privmsg */ - m = createMessage("Q", anope_event_quit); addCoreMessage(IRCD,m); /* quit */ - m = createMessage("&", anope_event_squit); addCoreMessage(IRCD,m); /* squit */ - m = createMessage("t", anope_event_topic); addCoreMessage(IRCD,m); /* topic (user) */ - m = createMessage("T", anope_event_servertopic); addCoreMessage(IRCD,m); /* topic (server) */ - m = createMessage("@", anope_event_null); addCoreMessage(IRCD,m); /* wallops */ - m = createMessage("b", anope_event_chghost); addCoreMessage(IRCD,m); /* change displayed host */ - m = createMessage("a", anope_event_chgname); addCoreMessage(IRCD,m); /* change gecos */ + m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m); + m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m); + m = createMessage("INVITE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m); + m = createMessage("KICK", anope_event_kick); addCoreMessage(IRCD,m); + m = createMessage("KILL", anope_event_kill); addCoreMessage(IRCD,m); + m = createMessage("MODE", anope_event_mode); addCoreMessage(IRCD,m); + m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m); + m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m); + m = createMessage("NOTICE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m); + m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m); + m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m); + m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m); + m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m); + m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m); + m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m); + m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m); + m = createMessage("GLOBOPS", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("SILENCE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("SAMODE", anope_event_samode); addCoreMessage(IRCD,m); + m = createMessage("SANICK", anope_event_sanick); addCoreMessage(IRCD,m); + m = createMessage("SAJOIN", anope_event_sajoin); addCoreMessage(IRCD,m); + m = createMessage("SAPART", anope_event_sapart);addCoreMessage(IRCD,m); + m = createMessage("QLINE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("GLINE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("ELINE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("ZLINE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("ADDLINE", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("FHOST", anope_event_chghost); addCoreMessage(IRCD,m); + m = createMessage("CHGIDENT", anope_event_chgident); addCoreMessage(IRCD,m); + m = createMessage("FNAME", anope_event_chgname); addCoreMessage(IRCD,m); + m = createMessage("METADATA", anope_event_null); addCoreMessage(IRCD,m); + m = createMessage("SETHOST", anope_event_sethost); addCoreMessage(IRCD,m); + m = createMessage("SETIDENT", anope_event_setident); addCoreMessage(IRCD,m); + m = createMessage("SETNAME", anope_event_setname); addCoreMessage(IRCD,m); + m = createMessage("REHASH", anope_event_rehash); addCoreMessage(IRCD,m); + m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m); + m = createMessage("CREDITS", anope_event_credits); addCoreMessage(IRCD,m); + m = createMessage("FJOIN", anope_event_fjoin); addCoreMessage(IRCD,m); + m = createMessage("FMODE", anope_event_fmode); addCoreMessage(IRCD,m); + m = createMessage("FTOPIC", anope_event_ftopic); addCoreMessage(IRCD,m); + m = createMessage("VERSION", anope_event_version); addCoreMessage(IRCD,m); + m = createMessage("OPERTYPE", anope_event_opertype); addCoreMessage(IRCD,m); + m = createMessage("IDLE", anope_event_idle); addCoreMessage(IRCD,m); } -char* xsumtable = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -char* CreateSum() -{ - int q = 0; - static char sum[8]; - sum[7] = '\0'; - for(q = 0; q < 7; q++) - sum[q] = xsumtable[rand()%52]; - return sum; -} - -/* Event: PROTOCTL */ -int anope_event_capab(char *source, int ac, char **av) -{ - capab_parse(ac, av); - return MOD_CONT; -} - -int anope_event_nickchange(char *source, int ac, char **av) -{ - do_nick(av[0], av[1], NULL, NULL, NULL, NULL, 0, 0, 0, NULL, NULL); - return MOD_CONT; -} +/* *INDENT-ON* */ void inspircd_cmd_svsnoop(char *server, int set) { - send_cmd(CreateSum(), "*"); + send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-")); } void inspircd_cmd_svsadmin(char *server, int set) @@ -514,68 +503,78 @@ void inspircd_cmd_svsadmin(char *server, int set) void inspircd_cmd_remove_akill(char *user, char *host) { - send_cmd(CreateSum(), ". %s@%s %s", user, host, s_OperServ); + send_cmd(s_OperServ, "GLINE %s@%s", user, host); } void inspircd_cmd_topic(char *whosets, char *chan, char *whosetit, - char *topic, time_t when) + char *topic, time_t when) { - send_cmd(CreateSum(), "t %s %s :%s", whosets, chan, topic); + send_cmd(ServerName, "FTOPIC %s %lu %s :%s", chan, (unsigned long int) when, whosetit, topic); } void inspircd_cmd_vhost_off(User * u) { - send_cmd(CreateSum(), "m %s %s -x", s_HostServ, u->nick); + send_cmd(s_HostServ, "MODE %s -x", u->nick); } void inspircd_cmd_akill(char *user, char *host, char *who, time_t when, - time_t expires, char *reason) + time_t expires, char *reason) { - send_cmd(CreateSum(), "# %s@%s %s %lu %lu :%s", user, host, who, (unsigned long)when, (unsigned long)86400 * 2, reason); + send_cmd(ServerName, "ADDLINE G %s@%s %s %ld %ld :%s", user, host, who, (long int) when, (long int) 86400 * 2, reason); } void inspircd_cmd_svskill(char *source, char *user, char *buf) { - if (!buf || !source || !user) { + if (!buf) { return; } - send_cmd(CreateSum(),"K %s %s :%s", s_OperServ, user, buf); + + if (!source || !user) { + return; + } + + send_cmd(source, "KILL %s :%s", user, buf); } void inspircd_cmd_svsmode(User * u, int ac, char **av) { - send_cmd(CreateSum(), "M %s %s", u->nick, av[0]); + send_cmd(s_NickServ, "MODE %s %s%s%s", u->nick, av[0], (ac == 2 ? " " : ""), (ac == 2 ? av[1] : "")); } void inspircd_cmd_372(char *source, char *msg) { + send_cmd(ServerName, "372 %s :- %s", source, msg); } void inspircd_cmd_372_error(char *source) { + send_cmd(ServerName, "422 %s :- MOTD file not found! Please " + "contact your IRC administrator.", source); } void inspircd_cmd_375(char *source) { + send_cmd(ServerName, "375 %s :- %s Message of the Day", + source, ServerName); } void inspircd_cmd_376(char *source) { + send_cmd(ServerName, "376 %s :End of /MOTD command.", source); } void inspircd_cmd_nick(char *nick, char *name, char *modes) { - /* N