/* * ================================================================= * Filename: m_ircops.c * Description: Command /ircops * Author: Raistlin * Modified: Global + Local IRC Operators, hide +B bots * Version: Unreal3.2 * ================================================================= */ #include "config.h" #include "struct.h" #include "common.h" #include "sys.h" #include "numeric.h" #include "msg.h" #include "channel.h" #include #include #include #include "h.h" #ifndef MODVAR #define MODVAR #endif #define RPL_IRCOPS 337 #define MSG_IRCOPS "IRCOPS" #define TOK_IRCOPS "AO" #define IsAway(x) ((x)->user && (x)->user->away) #define MyUser(x) (IsPerson(x) && MyConnect(x)) extern void sendto_one(aClient *to, char *pattern, ...); extern void sendto_serv_butone(aClient *one, char *pattern, ...); ModuleHeader MOD_HEADER(m_ircops) = { "ircops", "Clients & Staff", "Command /ircops - Author: Raistlin Lists Global & Local Online IRCOps", "3.2-b8-5", NULL }; static char *find_otype(aClient *acptr) { if (acptr->umodes & UMODE_NETADMIN) return "Network Administrator"; if (acptr->umodes & UMODE_SADMIN) return "Services Administrator"; if (acptr->umodes & UMODE_ADMIN) return "Server Administrator"; if (acptr->umodes & UMODE_COADMIN) return "Co-Administrator"; if (IsAnOper(acptr)) return "IRC Operator"; return "Local IRC Operator"; } static int m_ircops(aClient *cptr, aClient *sptr, int parc, char *parv[]) { aClient *acptr; sendto_serv_butone(cptr, ":%s %s", sptr->name, MSG_IRCOPS); /* Header */ if (MyUser(sptr)) { sendto_one(sptr, ":%s %d %s :\00312------------------------------------------------------------", me.name, RPL_IRCOPS, sptr->name); sendto_one(sptr, ":%s %d %s :\002%-12s | %-22s | %s\002", me.name, RPL_IRCOPS, sptr->name, "Nickname", "Access", "Server"); sendto_one(sptr, ":%s %d %s :\00312------------------------------------------------------------", me.name, RPL_IRCOPS, sptr->name); } for (acptr = client; acptr; acptr = acptr->next) { if (!MyClient(acptr) || !IsOper(acptr) || IsULine(acptr)) continue; /* +B (bot) olanları gizle */ if (acptr->umodes & UMODE_BOT) continue; /* HideOper kontrolü */ if (!IsOper(sptr) && IsHideOper(acptr)) continue; sendto_one(sptr, ":%s %d %s :%-12s | %-22s | %s%s", me.name, RPL_IRCOPS, sptr->name, acptr->name, find_otype(acptr), me.name, IsAway(acptr) ? " \00304(Away)" : IsHelpOp(acptr) ? " \00303(Help)" : ""); } return 0; } static Command *CmdIrcops; DLLFUNC int MOD_INIT(m_ircops)(ModuleInfo *modinfo) { CmdIrcops = CommandAdd( modinfo->handle, MSG_IRCOPS, TOK_IRCOPS, m_ircops, 1, 0 ); return (CmdIrcops ? MOD_SUCCESS : MOD_FAILED); } DLLFUNC int MOD_LOAD(m_ircops)(int module_load) { return MOD_SUCCESS; } DLLFUNC int MOD_UNLOAD(m_ircops)(int module_unload) { if (CmdIrcops) CommandDel(CmdIrcops); return MOD_SUCCESS; }