aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_cloaking.cpp
diff options
context:
space:
mode:
authorGravatar brain2008-09-16 17:32:32 +0000
committerGravatar brain2008-09-16 17:32:32 +0000
commit48d214c9bdeb0419667ef91c081e3686b9e40a74 (patch)
tree29fe8f09adc73d118120f551c8aec4735c3eab90 /src/modules/m_cloaking.cpp
parentBe more verbose in ValidateNotEmpty on failure. Patch by CyberbotX. (diff)
downloadinspircd++-48d214c9bdeb0419667ef91c081e3686b9e40a74.tar.gz
inspircd++-48d214c9bdeb0419667ef91c081e3686b9e40a74.tar.bz2
inspircd++-48d214c9bdeb0419667ef91c081e3686b9e40a74.zip
Shrink users properly on quit, and make cloaks for all existing users on load, for situations where the cloaking module is loaded after the ircd is booted. Thanks Ankit
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10546 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_cloaking.cpp')
-rw-r--r--src/modules/m_cloaking.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp
index 6163b41b7..278b74541 100644
--- a/src/modules/m_cloaking.cpp
+++ b/src/modules/m_cloaking.cpp
@@ -292,8 +292,10 @@ class ModuleCloaking : public Module
ServerInstance->Modules->UseInterface("HashRequest");
- Implementation eventlist[] = { I_OnRehash, I_OnUserDisconnect, I_OnCleanup, I_OnCheckBan, I_OnUserConnect, I_OnSyncUserMetaData };
+ Implementation eventlist[] = { I_OnRehash, I_OnUserDisconnect, I_OnCleanup, I_OnCheckBan, I_OnUserConnect, I_OnSyncUserMetaData, I_OnCleanup };
ServerInstance->Modules->Attach(eventlist, this, 6);
+
+ CloakExistingUsers();
}
void OnSyncUserMetaData(User* user, Module* proto,void* opaque, const std::string &extname, bool displayable)
@@ -306,6 +308,17 @@ class ModuleCloaking : public Module
}
}
+ void CloakExistingUsers()
+ {
+ std::string* cloak;
+ for (std::vector<User*>::iterator u = ServerInstance->Users->local_users.begin(); u != ServerInstance->Users->local_users.end(); u++)
+ {
+ if (!(*u)->GetExt("cloaked_host", cloak))
+ {
+ OnUserConnect(*u);
+ }
+ }
+ }
virtual int OnCheckBan(User* user, Channel* chan)
{
@@ -338,7 +351,10 @@ class ModuleCloaking : public Module
{
std::string* tofree;
if (user->GetExt("cloaked_host", tofree))
+ {
delete tofree;
+ user->Shrink("cloaked_host");
+ }
}
virtual void OnCleanup(int target_type, void* item)