X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_restrictbanned.cpp;h=d4054916740e40c9c033a78d41d7dc9e6d9888a0;hb=f9ef4ebc9dc4fd46cdafcc76df644b4896251dac;hp=01245b505ae052b1142bda5f794e16aa288ff08c;hpb=4e7c9f5a9257723765f9994aff90440a0b6cf3c9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_restrictbanned.cpp b/src/modules/m_restrictbanned.cpp index 01245b505..d40549167 100644 --- a/src/modules/m_restrictbanned.cpp +++ b/src/modules/m_restrictbanned.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * InspIRCd: (C) 2002-2008 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -21,6 +21,8 @@ class ModuleRestrictBanned : public Module public: ModuleRestrictBanned(InspIRCd* Me) : Module(Me) { + Implementation eventlist[] = { I_OnLocalTopicChange, I_OnUserPreNick, I_OnUserPreNotice, I_OnUserPreMessage }; + ServerInstance->Modules->Attach(eventlist, this, 4); } virtual ~ModuleRestrictBanned() @@ -29,15 +31,11 @@ class ModuleRestrictBanned : public Module virtual Version GetVersion() { - return Version(1,1,0,1,VF_VENDOR,API_VERSION); + return Version(1,2,0,1,VF_VENDOR,API_VERSION); } - void Implements(char* List) - { - List[I_OnLocalTopicChange] = List[I_OnUserPreNick] = List[I_OnUserPreNotice] = List[I_OnUserPreMessage] = 1; - } - int CheckRestricted(userrec *user, chanrec *channel, const std::string &action) + int CheckRestricted(User *user, Channel *channel, const std::string &action) { /* aren't local? we don't care. */ if (!IS_LOCAL(user)) @@ -53,12 +51,16 @@ class ModuleRestrictBanned : public Module return 0; } - virtual int OnUserPreNick(userrec *user, const std::string &newnick) + virtual int OnUserPreNick(User *user, const std::string &newnick) { /* if they aren't local, we don't care */ if (!IS_LOCAL(user)) return 0; + /* Allow changes to UID */ + if (isdigit(newnick[0])) + return 0; + /* bit of a special case. */ for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { @@ -69,21 +71,21 @@ class ModuleRestrictBanned : public Module return 0; } - virtual int OnLocalTopicChange(userrec *user, chanrec *channel, const std::string &topic) + virtual int OnLocalTopicChange(User *user, Channel *channel, const std::string &topic) { return CheckRestricted(user, channel, "change the topic"); } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) + virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { return OnUserPreNotice(user,dest,target_type,text,status,exempt_list); } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) + virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { - chanrec *channel = (chanrec *)dest; + Channel *channel = (Channel *)dest; return CheckRestricted(user, channel, "message the channel"); }