diff --git a/ChangeLog b/ChangeLog index 65876a19..35e6ffc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,10 @@ Anything we add/remove/fix/change is in here (even our rants) Fish (F), Mark (M) =============================================================================== * NeoStats * Version 3.0.genesis + - New debug levels of DEBUGRX and DEBUGTX to identify incoming and outgoing + messages. (M) + - Mode descriptions now handled core side so modules can share the information + rather than define local variants. (M) - ConnectServ: mode reports now run from a table. (M) - More core side UMODE support. (M) - Add support for online bot realname, host and ident changes. (M) diff --git a/include/neostats.h b/include/neostats.h index 7495c257..7346e519 100755 --- a/include/neostats.h +++ b/include/neostats.h @@ -235,8 +235,10 @@ EXPORTVAR extern unsigned int ircd_supported_smodes; EXPORTFUNC int IsOperMode(const char mode); EXPORTFUNC int IsOperSMode(const char mode); EXPORTFUNC int IsBotMode(const char mode); -EXPORTFUNC int GetModeMask(const char mode); -EXPORTFUNC int GetSModeMask(const char mode); +EXPORTFUNC int GetUmodeMask(const char mode); +EXPORTFUNC const char * GetUmodeDesc (const unsigned int mask); +EXPORTFUNC int GetSmodeMask(const char mode); +EXPORTFUNC const char * GetSmodeDesc (const unsigned int mask); #ifndef NEOSTATS_PACKAGE_VERSION #define NEOSTATS_PACKAGE_VERSION PACKAGE @@ -1103,7 +1105,9 @@ typedef enum LOG_LEVEL { /* define debug levels */ typedef enum DEBUG_LEVEL { - DEBUG1=1, /* debug notices about important functions that are going on */ + DEBUGRX=1, + DEBUGTX, + DEBUG1, /* debug notices about important functions that are going on */ DEBUG2, /* more debug notices that are usefull */ DEBUG3, /* even more stuff, that would be useless to most normal people */ DEBUG4, /* are you insane? */ diff --git a/modules/connectserv/cs.c b/modules/connectserv/cs.c index 820c4fba..bb18d52a 100644 --- a/modules/connectserv/cs.c +++ b/modules/connectserv/cs.c @@ -31,19 +31,6 @@ */ /* #define ENABLE_COLOUR_SUPPORT */ -static const char mode_netadmin[]="network administrator"; -static const char mode_conetadmin[]="co network administrator"; -static const char mode_techadmin[]="network technical administrator"; -static const char mode_cotechadmin[]="network co technical administrator"; -static const char mode_serveradmin[]="server administrator"; -static const char mode_coserveradmin[]="co server administrator"; -static const char mode_guestadmin[]="guest administrator"; -static const char mode_servicesadmin[]="services administrator"; -static const char mode_globop[]="global operator"; -static const char mode_locop[]="local operator"; -static const char mode_netservice[]="network service"; -static const char mode_bot[]="bot"; - #ifndef ENABLE_COLOUR_SUPPORT static char msg_nickchange[]="\2NICK\2 %s (%s@%s) changed their nick to %s"; static char msg_signon[]="\2SIGNON\2 %s (%s@%s - %s) has signed on at %s"; @@ -144,35 +131,34 @@ ModuleEvent module_events[] = { {EVENT_NULL, NULL} }; -typedef struct ModeDesc { +typedef struct ModeDef { unsigned int mask; unsigned int serverflag; - const char* desc; -}ModeDesc; +}ModeDef; -ModeDesc OperUmodes[]= +ModeDef OperUmodes[]= { - {UMODE_NETADMIN, 0, mode_netadmin}, - {UMODE_TECHADMIN, 0, mode_techadmin}, - {UMODE_ADMIN, 1, mode_serveradmin}, - {UMODE_COADMIN, 1, mode_coserveradmin}, - {UMODE_SADMIN, 0, mode_servicesadmin}, - {UMODE_OPER, 1, mode_globop}, - {UMODE_LOCOP, 1, mode_locop}, - {UMODE_SERVICES, 0, mode_netservice}, - {0, 0, 0}, + {UMODE_NETADMIN, 0}, + {UMODE_TECHADMIN, 0}, + {UMODE_ADMIN, 1}, + {UMODE_COADMIN, 1}, + {UMODE_SADMIN, 0}, + {UMODE_OPER, 1}, + {UMODE_LOCOP, 1}, + {UMODE_SERVICES, 0}, + {0, 0}, }; -ModeDesc OperSmodes[]= +ModeDef OperSmodes[]= { - {SMODE_NETADMIN, 0, mode_netadmin}, - {SMODE_CONETADMIN, 0, mode_conetadmin}, - {SMODE_TECHADMIN, 0, mode_techadmin}, - {SMODE_COTECHADMIN, 0, mode_cotechadmin}, - {SMODE_ADMIN, 1, mode_serveradmin}, - {SMODE_COADMIN, 1, mode_coserveradmin}, - {SMODE_GUESTADMIN, 1, mode_guestadmin}, - {0, 0, 0}, + {SMODE_NETADMIN, 0}, + {SMODE_CONETADMIN, 0}, + {SMODE_TECHADMIN, 0}, + {SMODE_COTECHADMIN, 0}, + {SMODE_ADMIN, 1}, + {SMODE_COADMIN, 1}, + {SMODE_GUESTADMIN, 1}, + {0, 0}, }; int ModInit(Module* mod_ptr) @@ -278,30 +264,18 @@ static int cs_event_quit(CmdParams* cmdparams) * report mode change */ -static int cs_report_mode (ModeDesc* desclist, Client * u, int mask, int add, char mode) +static int cs_report_mode (const char* modedesc, int serverflag, Client * u, int mask, int add, char mode) { - ModeDesc* desc; - - desc = desclist; - while(desc->mask) { - if(desc->mask == mask) - break; - desc ++; - } - if(desc->mask == 0) { - return 0; - } - - if(desc->serverflag) { + if(serverflag) { irc_chanalert(cs_bot, msg_mode_serv, u->name, add?"now":"no longer", - desc->desc, + modedesc, add?'+':'-', mode, u->user->server->name); } else { irc_chanalert(cs_bot, msg_mode, u->name, add?"now":"no longer", - desc->desc, + modedesc, add?'+':'-', mode); } @@ -316,6 +290,7 @@ static int cs_event_umode(CmdParams* cmdparams) int mask; int add = 1; char *modes; + ModeDef* def; SET_SEGV_LOCATION(); if (!cs_module->synched || !cs_cfg.mode_watch) { @@ -338,12 +313,20 @@ static int cs_event_umode(CmdParams* cmdparams) add = 0; break; default: - mask = GetModeMask (*modes); + mask = GetUmodeMask (*modes); if (mask == UMODE_BOT) { irc_chanalert (cs_bot, msg_bot, cmdparams->source->name, add?"now":"no longer", add?'+':'-', *modes); } else { - cs_report_mode (OperUmodes, cmdparams->source, mask, add, *modes); + def = OperUmodes; + while(def->mask) { + if(def->mask == mask) + { + cs_report_mode(GetUmodeDesc(def->mask), def->serverflag, cmdparams->source, mask, add, *modes); + break; + } + def ++; + } } break; } @@ -358,6 +341,7 @@ static int cs_event_smode(CmdParams* cmdparams) int mask; int add = 1; char *modes; + ModeDef* def; SET_SEGV_LOCATION(); if (!cs_module->synched || !cs_cfg.mode_watch) { @@ -380,8 +364,17 @@ static int cs_event_smode(CmdParams* cmdparams) add = 0; break; default: - mask = GetSModeMask (*modes); - cs_report_mode (OperSmodes, cmdparams->source, mask, add, *modes); + mask = GetSmodeMask (*modes); + def = OperSmodes; + while(def->mask) { + if(def->mask == mask) + { + cs_report_mode(GetSmodeDesc(def->mask), def->serverflag, cmdparams->source, mask, add, *modes); + break; + } + def ++; + } + break; } modes++; diff --git a/modules/extauth/extauth.c b/modules/extauth/extauth.c index 03044182..d9ffb76a 100644 --- a/modules/extauth/extauth.c +++ b/modules/extauth/extauth.c @@ -101,22 +101,22 @@ static int AccessAdd(CmdParams* cmdparams) if (cmdparams->ac < 3) { return NS_ERR_NEED_MORE_PARAMS; } - if (hash_lookup(accesshash, cmdparams->av[0])) { - irc_prefmsg(NULL, cmdparams->source, "Entry for %s already exists", cmdparams->av[0]); + if (hash_lookup(accesshash, cmdparams->av[1])) { + irc_prefmsg(NULL, cmdparams->source, "Entry for %s already exists", cmdparams->av[1]); return NS_SUCCESS; } - if (strstr(cmdparams->av[1], "!")&& !strstr(cmdparams->av[1], "@")) { + if (strstr(cmdparams->av[2], "!")&& !strstr(cmdparams->av[2], "@")) { irc_prefmsg(NULL, cmdparams->source, "Invalid format for hostmask. Must be of the form nick!user@host."); return NS_ERR_SYNTAX_ERROR; } - level = atoi(cmdparams->av[2]); + level = atoi(cmdparams->av[3]); if(level < 0 || level > NS_ULEVEL_ROOT) { irc_prefmsg(NULL, cmdparams->source, "Level out of range. Valid values range from 0 to 200."); return NS_ERR_PARAM_OUT_OF_RANGE; } access = malloc(sizeof(NeoAccess)); - strlcpy(access->nick, cmdparams->av[0], MAXNICK); - strlcpy(access->mask, cmdparams->av[1], MAXHOST); + strlcpy(access->nick, cmdparams->av[1], MAXNICK); + strlcpy(access->mask, cmdparams->av[2], MAXHOST); access->level = level; node = hnode_create(access); hash_insert(accesshash, node, access->nick); @@ -137,16 +137,16 @@ static int AccessDel(CmdParams* cmdparams) if (cmdparams->ac < 1) { return NS_ERR_SYNTAX_ERROR; } - node = hash_lookup(accesshash, cmdparams->av[0]); + node = hash_lookup(accesshash, cmdparams->av[1]); if (node) { hash_delete(accesshash, node); free(hnode_get(node)); hnode_destroy(node); - ircsnprintf(confpath, CONFBUFSIZE, "AccessList/%s", cmdparams->av[0]); + ircsnprintf(confpath, CONFBUFSIZE, "AccessList/%s", cmdparams->av[1]); DelConf(confpath); - irc_prefmsg(NULL, cmdparams->source, "Deleted %s from Access List", cmdparams->av[0]); + irc_prefmsg(NULL, cmdparams->source, "Deleted %s from Access List", cmdparams->av[1]); } else { - irc_prefmsg(NULL, cmdparams->source, "Error, Could not find %s in access list.", cmdparams->av[0]); + irc_prefmsg(NULL, cmdparams->source, "Error, Could not find %s in access list.", cmdparams->av[1]); } return NS_SUCCESS; } @@ -162,7 +162,7 @@ static int AccessList(CmdParams* cmdparams) hash_scan_begin(&accessscan, accesshash); while ((node = hash_scan_next(&accessscan)) != NULL) { access = hnode_get(node); - irc_prefmsg(NULL, cmdparams->source, NULL, "%s %s (%d)", access->nick, access->mask, access->level); + irc_prefmsg(NULL, cmdparams->source, "%s %s (%d)", access->nick, access->mask, access->level); } irc_prefmsg(NULL, cmdparams->source, "End of List."); return NS_SUCCESS; @@ -171,11 +171,11 @@ static int AccessList(CmdParams* cmdparams) static int ea_cmd_access(CmdParams* cmdparams) { SET_SEGV_LOCATION(); - if (!strcasecmp(cmdparams->av[2], "add")) { + if (!strcasecmp(cmdparams->av[0], "add")) { return AccessAdd(cmdparams); - } else if (!strcasecmp(cmdparams->av[2], "del")) { + } else if (!strcasecmp(cmdparams->av[0], "del")) { return AccessDel(cmdparams); - } else if (!strcasecmp(cmdparams->av[2], "list")) { + } else if (!strcasecmp(cmdparams->av[0], "list")) { return AccessList(cmdparams); } irc_prefmsg(NULL, cmdparams->source, "Invalid Syntax."); @@ -184,14 +184,16 @@ static int ea_cmd_access(CmdParams* cmdparams) static int GetAccessLevel(Client * u) { + static char hostmask[MAXHOST]; hnode_t *node; NeoAccess *access; - dlog(DEBUG2, "GetAccessLevel for %s", u->name); - node = hash_lookup(accesshash, u->name); + dlog (DEBUG2, "GetAccessLevel for %s", u->name); + node = hash_lookup (accesshash, u->name); if (node) { access = hnode_get(node); - if ((match(access->mask, u->user->hostname))) { + ircsnprintf (hostmask, MAXHOST, "%s@%s", u->user->username, u->user->hostname); + if ((match (access->mask, hostmask))) { return(access->level); } } diff --git a/modules/hostserv/hostserv.c b/modules/hostserv/hostserv.c index 438c015c..cbcc5144 100644 --- a/modules/hostserv/hostserv.c +++ b/modules/hostserv/hostserv.c @@ -344,14 +344,14 @@ static int hs_levels(CmdParams* cmdparams) { int t; - if (cmdparams->ac == 2) { + if (cmdparams->ac == 0) { irc_prefmsg(hs_bot, cmdparams->source, "Configured Levels: ADD: %d, DEL: %d, LIST: %d, VIEW: %d", hs_cfg.add, hs_cfg.del, hs_cfg.list,hs_cfg.view); return NS_SUCCESS; - } else if (cmdparams->ac == 3) { + } else if (cmdparams->ac == 1) { if (UserLevel(cmdparams->source) >= NS_ULEVEL_ADMIN) { - if (!ircstrcasecmp(cmdparams->av[2], "RESET")) { + if (!ircstrcasecmp(cmdparams->av[0], "RESET")) { hs_cfg.add = 40; SetConf((void *) &hs_cfg.add, CFGINT, "AddLevel"); hs_cfg.del = 40; @@ -364,24 +364,24 @@ static int hs_levels(CmdParams* cmdparams) } } return NS_ERR_NO_PERMISSION; - } else if (cmdparams->ac == 4) { + } else if (cmdparams->ac == 2) { if (UserLevel(cmdparams->source) >= NS_ULEVEL_ADMIN) { - t = atoi(cmdparams->av[3]); + t = atoi(cmdparams->av[1]); if ((t <= 0) || (t > NS_ULEVEL_ROOT)) { irc_prefmsg(hs_bot, cmdparams->source, "Invalid Level. Must be between 1 and %d", NS_ULEVEL_ROOT); return NS_ERR_SYNTAX_ERROR; } - if (!ircstrcasecmp(cmdparams->av[2], "ADD")) { + if (!ircstrcasecmp(cmdparams->av[0], "ADD")) { hs_cfg.add = t; SetConf((void *) t, CFGINT, "AddLevel"); - } else if (!ircstrcasecmp(cmdparams->av[2], "DEL")) { + } else if (!ircstrcasecmp(cmdparams->av[0], "DEL")) { hs_cfg.del = t; SetConf((void *) t, CFGINT, "DelLevel"); - } else if (!ircstrcasecmp(cmdparams->av[2], "LIST")) { + } else if (!ircstrcasecmp(cmdparams->av[0], "LIST")) { hs_cfg.list = t; SetConf((void *) t, CFGINT, "ListLevel"); - } else if (!ircstrcasecmp(cmdparams->av[2], "VIEW")) { + } else if (!ircstrcasecmp(cmdparams->av[0], "VIEW")) { hs_cfg.view = t; SetConf((void *) t, CFGINT, "ViewLevel"); } else { @@ -390,7 +390,7 @@ static int hs_levels(CmdParams* cmdparams) return 1; } irc_prefmsg(hs_bot, cmdparams->source, - "Level for %s set to %d", cmdparams->av[2], t); + "Level for %s set to %d", cmdparams->av[0], t); return NS_SUCCESS; } return NS_ERR_NO_PERMISSION; @@ -400,16 +400,16 @@ static int hs_levels(CmdParams* cmdparams) static int hs_bans(CmdParams* cmdparams) { - if (cmdparams->ac == 2) { + if (cmdparams->ac == 0) { hs_listban(cmdparams->source); return NS_SUCCESS; - } else if (cmdparams->ac == 4) { + } else if (cmdparams->ac == 2) { if (UserLevel(cmdparams->source) >= NS_ULEVEL_ADMIN) { - if (!ircstrcasecmp(cmdparams->av[2], "ADD")) { - hs_addban(cmdparams->source, cmdparams->av[3]); + if (!ircstrcasecmp(cmdparams->av[0], "ADD")) { + hs_addban(cmdparams->source, cmdparams->av[1]); return NS_SUCCESS; - } else if (!ircstrcasecmp(cmdparams->av[2], "DEL")) { - hs_delban(cmdparams->source, cmdparams->av[3]); + } else if (!ircstrcasecmp(cmdparams->av[0], "DEL")) { + hs_delban(cmdparams->source, cmdparams->av[1]); return NS_SUCCESS; } } else { @@ -515,9 +515,9 @@ static int hs_chpass(CmdParams* cmdparams) char *oldpass; char *newpass; - nick = cmdparams->av[2]; - oldpass = cmdparams->av[3]; - newpass = cmdparams->av[4]; + nick = cmdparams->av[0]; + oldpass = cmdparams->av[1]; + newpass = cmdparams->av[2]; hn = list_find(vhosts, nick, findnick); if (hn) { @@ -570,10 +570,10 @@ static int hs_add(CmdParams* cmdparams) char *h; char *p; - cmd = cmdparams->av[2]; - m = cmdparams->av[3]; - h = cmdparams->av[4]; - p = cmdparams->av[5]; + cmd = cmdparams->av[0]; + m = cmdparams->av[1]; + h = cmdparams->av[2]; + p = cmdparams->av[3]; SET_SEGV_LOCATION(); hash_scan_begin(&hs, bannedvhosts); @@ -643,10 +643,10 @@ static int hs_list(CmdParams* cmdparams) int vhostcount; SET_SEGV_LOCATION(); - if (cmdparams->ac == 2) { + if (cmdparams->ac == 0) { start = 0; - } else if (cmdparams->ac == 3) { - start = atoi(cmdparams->av[2]); + } else if (cmdparams->ac == 1) { + start = atoi(cmdparams->av[0]); } vhostcount = list_count(vhosts); @@ -695,7 +695,7 @@ static int hs_view(CmdParams* cmdparams) int tmpint; SET_SEGV_LOCATION(); - tmpint = atoi(cmdparams->av[2]); + tmpint = atoi(cmdparams->av[0]); if (!tmpint) { irc_prefmsg(hs_bot, cmdparams->source, "Syntax: /msg %s VIEW #", hs_bot->name); @@ -775,7 +775,7 @@ static int hs_del(CmdParams* cmdparams) int tmpint; SET_SEGV_LOCATION(); - tmpint = atoi(cmdparams->av[2]); + tmpint = atoi(cmdparams->av[0]); if (!tmpint) { irc_prefmsg(hs_bot, cmdparams->source, "Syntax: /msg %s DEL #", hs_bot->name); @@ -820,8 +820,8 @@ static int hs_login(CmdParams* cmdparams) char *pass; SET_SEGV_LOCATION(); - login = cmdparams->av[2]; - pass = cmdparams->av[3]; + login = cmdparams->av[0]; + pass = cmdparams->av[1]; /* Check HostName Against Data Contained in vhosts.data */ hn = list_find(vhosts, login, findnick); if (hn) { diff --git a/modules/hostserv/hostserv.vcproj b/modules/hostserv/hostserv.vcproj index 3c81fd1f..88ee6e2e 100755 --- a/modules/hostserv/hostserv.vcproj +++ b/modules/hostserv/hostserv.vcproj @@ -33,7 +33,7 @@ source, + irc_prefmsg (NULL, cmdparams->source, "User mode auth levels:"); for (i = 0; i < user_auth_mode_count; i++) { - irc_prefmsg(NULL, cmdparams->source, "%s: %d", - user_auth_modes[i].modename, user_auth_modes[i].level); + irc_prefmsg (NULL, cmdparams->source, "%s: %d", + GetUmodeDesc (user_auth_modes[i].umode), user_auth_modes[i].level); } if (HaveFeature (FEATURE_USERSMODES)) { for (i = 0; i < user_auth_smode_count; i++) { - irc_prefmsg(NULL, cmdparams->source, "%s: %d", - user_auth_smodes[i].modename, user_auth_smodes[i].level); + irc_prefmsg (NULL, cmdparams->source, "%s: %d", + GetSmodeDesc (user_auth_smodes[i].umode), user_auth_smodes[i].level); } } return NS_SUCCESS; diff --git a/src/ircd.c b/src/ircd.c index 4701067b..2bd25280 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -735,7 +735,7 @@ irc_prefmsg (const Bot *botptr, const Client *target, const char *fmt, ...) if (config.want_privmsg) { irc_send_privmsg (botptr->u->name, target->name, ircd_buf); } else { - irc_send_notice (botptr->u->name, target->name, ircd_buf); + irc_send_notice (botptr?botptr->u->name:ns_botptr->u->name, target->name, ircd_buf); } } @@ -1675,7 +1675,7 @@ send_cmd (char *fmt, ...) ircvsnprintf (buf, BUFSIZE, fmt, ap); va_end (ap); - dlog(DEBUG2, "TX: %s", buf); + dlog(DEBUGTX, "%s", buf); if(strnlen (buf, BUFSIZE) < BUFSIZE - 2) { strlcat (buf, "\n", BUFSIZE); } else { diff --git a/src/log.c b/src/log.c index 70a0e2b3..0a564b2f 100644 --- a/src/log.c +++ b/src/log.c @@ -51,6 +51,8 @@ const char *loglevels[LOG_LEVELMAX] = { }; const char *dloglevels[DEBUGMAX] = { + "DEBUGRX", + "DEBUGTX", "DEBUG1", "DEBUG2", "DEBUG3", diff --git a/src/modes.c b/src/modes.c index 2a8b5421..49e130a9 100644 --- a/src/modes.c +++ b/src/modes.c @@ -38,6 +38,51 @@ ChanModes ircd_cmodes[MODE_TABLE_SIZE]; UserModes ircd_umodes[MODE_TABLE_SIZE]; UserModes ircd_smodes[MODE_TABLE_SIZE]; +typedef struct ModeDesc { + unsigned int mask; + const char * desc; +} ModeDesc; + +static ModeDesc UmodeDesc[] = { +#ifdef UMODE_DEBUG + {UMODE_DEBUG, "Debug"}, +#endif + {UMODE_TECHADMIN, "Technical Administrator"}, +#ifdef UMODE_SERVICESOPER + {UMODE_SERVICESOPER,"Services operator"}, +#endif +#ifdef UMODE_IRCADMIN + {UMODE_IRCADMIN, "IRC admin"}, +#endif +#ifdef UMODE_SUPER + {UMODE_SUPER, "Super"}, +#endif +#ifdef UMODE_SRA + {UMODE_SRA, "Services root"}, +#endif + {UMODE_SERVICES, "Network Service"}, + {UMODE_NETADMIN, "Network Administrator"}, + {UMODE_SADMIN, "Services Administrator"}, + {UMODE_ADMIN, "Server Administrator"}, + {UMODE_COADMIN, "Co-Server Administrator"}, + {UMODE_OPER, "Global Operator"}, + {UMODE_LOCOP, "Local Operator"}, + {UMODE_REGNICK, "Registered nick"}, + {UMODE_BOT, "Bot"}, + {0, 0}, +}; + +static ModeDesc SmodeDesc[] = { + {SMODE_NETADMIN, "Network Administrator"}, + {SMODE_CONETADMIN, "Co-Network Administrator"}, + {SMODE_TECHADMIN, "Technical Administrator"}, + {SMODE_COTECHADMIN, "Co-Technical Administrator"}, + {SMODE_ADMIN, "Server Administrator"}, + {SMODE_GUESTADMIN, "Guest Administrator"}, + {SMODE_COADMIN, "Co-Server Administrator"}, + {0, 0}, +}; + /** @brief InitIrcdModes * * Build internal mode tables by translating the protocol information @@ -126,7 +171,7 @@ UmodeMaskToString(const long Umode) } } UmodeStringBuf[j] = '\0'; - return(UmodeStringBuf); + return UmodeStringBuf; } /** @brief UmodeStringToMask @@ -162,7 +207,7 @@ UmodeStringToMask(const char* UmodeString, long Umode) } tmpmode++; } - return(Umode); + return Umode; } /** @brief SmodeMaskToString @@ -185,7 +230,7 @@ SmodeMaskToString(const long Smode) } } SmodeStringBuf[j] = '\0'; - return(SmodeStringBuf); + return SmodeStringBuf; } /** @brief SmodeStringToMask @@ -221,7 +266,7 @@ SmodeStringToMask(const char* SmodeString, long Smode) } tmpmode++; } - return(Smode); + return Smode; } /** @brief CUmodeStringToMask @@ -231,7 +276,7 @@ SmodeStringToMask(const char* SmodeString, long Smode) * @return */ long -CUmodeStringToMask(const char* UmodeString, long Umode) +CUmodeStringToMask (const char* UmodeString, long Umode) { int add = 0; char* tmpmode; @@ -257,23 +302,52 @@ CUmodeStringToMask(const char* UmodeString, long Umode) } tmpmode++; } - return(Umode); + return Umode; } -int IsBotMode(const char mode) +int IsBotMode (const char mode) { if(ircd_umodes[(int)mode].umode & UMODE_BOT) { - return 1; + return NS_TRUE; } - return 0; + return NS_FALSE; } -int GetModeMask(const char mode) +int GetUmodeMask (const char mode) { return ircd_umodes[(int)mode].umode; } -int GetSModeMask(const char mode) +int GetSmodeMask (const char mode) { return ircd_smodes[(int)mode].umode; } + +const char * GetUmodeDesc (const unsigned int mask) +{ + ModeDesc* entry; + + entry = UmodeDesc; + while(entry->mask) { + if (entry->mask == mask) { + return entry->desc; + } + entry ++; + } + return NULL; +} + +const char * GetSmodeDesc (const unsigned int mask) +{ + ModeDesc* entry; + + entry = SmodeDesc; + while(entry->mask) { + if (entry->mask == mask) { + return entry->desc; + } + entry ++; + } + return NULL; +} + diff --git a/src/protocol/ircup10.c b/src/protocol/ircup10.c index 6d0478ca..65395583 100644 --- a/src/protocol/ircup10.c +++ b/src/protocol/ircup10.c @@ -849,7 +849,7 @@ parse (char *line) if (!(*line)) return; dlog(DEBUG1, "------------------------BEGIN PARSE-------------------------"); - dlog(DEBUG1, "RX: %s", line); + dlog(DEBUGRX, "%s", line); coreLine = strpbrk (line, " "); if (coreLine) { *coreLine = 0;