X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_services_account.cpp;h=27d9b335e14b9a91beb5003c93e616e2ea031b4f;hb=52acbb466b84a1cd161b1c111f855d6f0419fff3;hp=b5024e4df1dfa2680ee38bc3811a4e0325fd7127;hpb=67878d628c15f2adec41b6d3b266830a636c2ed0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index b5024e4df..27d9b335e 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -11,11 +11,11 @@ * --------------------------------------------------- */ +#include "inspircd.h" #include "users.h" #include "channels.h" #include "modules.h" #include "hashcomp.h" -#include "inspircd.h" /* $ModDesc: Povides support for ircu-style services accounts, including chmode +R, etc. */ @@ -116,7 +116,7 @@ class ModuleServicesAccount : public Module AChannel_M* m2; AUser_R* m3; public: - ModuleServicesAccount(InspIRCd* Me) : Module::Module(Me) + ModuleServicesAccount(InspIRCd* Me) : Module(Me) { m1 = new AChannel_R(ServerInstance); @@ -147,6 +147,10 @@ class ModuleServicesAccount : public Module virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { std::string *account; + + if (!IS_LOCAL(user)) + return 0; + user->GetExt("accountname", account); if (target_type == TYPE_CHANNEL) @@ -155,7 +159,7 @@ class ModuleServicesAccount : public Module if ((c->IsModeSet('M')) && (!account)) { - if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server)) || (!strcmp(user->server,""))) + if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server))) { // user is ulined, can speak regardless return 0; @@ -221,7 +225,7 @@ class ModuleServicesAccount : public Module // this method is called. We should use the ProtoSendMetaData function after we've // corrected decided how the data should look, to send the metadata on its way if // it is ours. - virtual void OnSyncUserMetaData(userrec* user, Module* proto, void* opaque, const std::string &extname) + virtual void OnSyncUserMetaData(userrec* user, Module* proto, void* opaque, const std::string &extname, bool displayable) { // check if the linking module wants to know about OUR metadata if (extname == "accountname") @@ -231,6 +235,9 @@ class ModuleServicesAccount : public Module user->GetExt("accountname", account); if (account) { + // remove any accidental leading/trailing spaces + trim(*account); + // call this function in the linking module, let it format the data how it // sees fit, and send it on its way. We dont need or want to know how. proto->ProtoSendMetaData(opaque,TYPE_USER,user,extname,*account); @@ -239,7 +246,7 @@ class ModuleServicesAccount : public Module } // when a user quits, tidy up their metadata - virtual void OnUserQuit(userrec* user, const std::string &message) + virtual void OnUserQuit(userrec* user, const std::string &message, const std::string &oper_message) { std::string* account; user->GetExt("accountname", account); @@ -279,8 +286,9 @@ class ModuleServicesAccount : public Module if ((target_type == TYPE_USER) && (extname == "accountname")) { userrec* dest = (userrec*)target; + /* logging them out? */ - if (extdata == "") + if (extdata.empty()) { std::string* account; dest->GetExt("accountname", account); @@ -297,6 +305,8 @@ class ModuleServicesAccount : public Module if (!dest->GetExt("accountname", text)) { text = new std::string(extdata); + // remove any accidental leading/trailing spaces + trim(*text); dest->Extend("accountname", text); } } @@ -339,7 +349,7 @@ class ModuleServicesAccountFactory : public ModuleFactory }; -extern "C" void * init_module( void ) +extern "C" DllExport void * init_module( void ) { return new ModuleServicesAccountFactory; }