]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules.cpp
Tidying of snotices (adding '***' to start of WriteOpers texts)
[user/henk/code/inspircd.git] / src / modules.cpp
index 5ac49e75a3b794b77f3e8a0c71c3d6dae3202761..38b84c2bde2ab318ef51dfb330bb21a20dba3506 100644 (file)
@@ -231,11 +231,12 @@ int               Module::OnExtendedMode(userrec* user, void* target, char modechar, int type
 void           Module::OnMode(userrec* user, void* dest, int target_type, std::string text) { };
 Version                Module::GetVersion() { return Version(1,0,0,0,VF_VENDOR); }
 void           Module::OnOper(userrec* user, std::string opertype) { };
+void           Module::OnPostOper(userrec* user, std::string opertype) { };
 void           Module::OnInfo(userrec* user) { };
 void           Module::OnWhois(userrec* source, userrec* dest) { };
 int            Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; };
-int            Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; };
-int            Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; };
+int            Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; };
+int            Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; };
 int            Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; };
 void           Module::OnUserPostNick(userrec* user, std::string oldnick) { };
 int            Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; };
@@ -270,8 +271,8 @@ void                Module::OnRawSocketAccept(int fd, std::string ip, int localport) { };
 int            Module::OnRawSocketWrite(int fd, char* buffer, int count) { return 0; };
 void           Module::OnRawSocketClose(int fd) { };
 int            Module::OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult) { return 0; };
-void           Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text) { };
-void           Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text) { };
+void           Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text, char status) { };
+void           Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text, char status) { };
 void           Module::OnRemoteKill(userrec* source, userrec* dest, std::string reason) { };
 void           Module::OnUserInvite(userrec* source,userrec* dest,chanrec* channel) { };
 void           Module::OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { };
@@ -281,6 +282,7 @@ void                Module::OnSyncChannel(chanrec* chan, Module* proto, void* opaque) { };
 void           Module::ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline) { };
 void           Module::OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname) { };
 void           Module::OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname) { };
+void           Module::OnSyncOtherMetaData(Module* proto, void* opaque) { };
 void           Module::OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata) { };
 void           Module::ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata) { };
 void           Module::OnWallops(userrec* user, std::string text) { };
@@ -300,6 +302,8 @@ void                Module::OnCleanup(int target_type, void* item) { };
 void           Module::Implements(char* Implements) { for (int j = 0; j < 255; j++) Implements[j] = 0; };
 void           Module::OnChannelDelete(chanrec* chan) { };
 Priority       Module::Prioritize() { return PRIORITY_DONTCARE; }
+void           Module::OnSetAway(userrec* user) { };
+void           Module::OnCancelAway(userrec* user) { };
 
 /* server is a wrapper class that provides methods to all of the C-style
  * exports in the core
@@ -335,6 +339,30 @@ void Server::RemoveSocket(InspSocket* sock)
         }
 }
 
+long Server::PriorityAfter(std::string modulename)
+{
+       for (unsigned int j = 0; j < Config->module_names.size(); j++)
+       {
+               if (Config->module_names[j] == modulename)
+               {
+                       return ((j << 8) | PRIORITY_AFTER);
+               }
+       }
+       return PRIORITY_DONTCARE;
+}
+
+long Server::PriorityBefore(std::string modulename)
+{
+       for (unsigned int j = 0; j < Config->module_names.size(); j++)
+       {
+               if (Config->module_names[j] == modulename)
+               {
+                       return ((j << 8) | PRIORITY_BEFORE);
+               }
+       }
+       return PRIORITY_DONTCARE;
+}
+
 void Server::RehashServer()
 {
        WriteOpers("*** Rehashing config file");
@@ -408,15 +436,15 @@ void Server::ChangeUserNick(userrec* user, std::string nickname)
        force_nickchange(user,nickname.c_str());
 }
 
-virtual void KickUser(userrec* source, userrec* target, chanrec* chan, std::string reason)
+void Server::KickUser(userrec* source, userrec* target, chanrec* chan, std::string reason)
 {
        if (source)
        {
-               kick_channel(source,target,chan,reason);
+               kick_channel(source,target,chan,(char*)reason.c_str());
        }
        else
        {
-               server_kick_channel(target,chan,reason,true);
+               server_kick_channel(target,chan,(char*)reason.c_str(),true);
        }
 }
 
@@ -497,7 +525,7 @@ void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool Inc
        }
        else
        {
-               ChanExceptSender_NoFormat(Channel,User,s.c_str());
+               ChanExceptSender_NoFormat(Channel,User,0,s.c_str());
        }
 }
 
@@ -655,16 +683,19 @@ bool Server::PseudoToUser(userrec* alive,userrec* zombie,std::string message)
        alive->fd = FD_MAGIC_NUMBER;
        alive->FlushWriteBuf();
        alive->ClearBuffer();
-       Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick);
+       // save these for later
+       std::string oldnick = alive->nick;
+       std::string oldhost = alive->host;
+       std::string oldident = alive->ident;
        kill_link(alive,message.c_str());
-
         if (find(local_users.begin(),local_users.end(),alive) != local_users.end())
         {
                local_users.erase(find(local_users.begin(),local_users.end(),alive));
                log(DEBUG,"Delete local user");
         }
-
+       // Fix by brain - cant write the user until their fd table entry is updated
        fd_ref_table[zombie->fd] = zombie;
+       Write(zombie->fd,":%s!%s@%s NICK %s",oldnick.c_str(),oldident.c_str(),oldhost.c_str(),zombie->nick);
         for (unsigned int i = 0; i < zombie->chans.size(); i++)
         {
                 if (zombie->chans[i].channel != NULL)