* ---------------------------------------------------
*/
-#include "inspircd_config.h"
-#include "configreader.h"
#include "inspircd.h"
#include "users.h"
#include "channels.h"
#include "modules.h"
-
#include "m_hash.h"
/* $ModDesc: Provides masking of user hostnames */
ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
{
- /* Only opers can change other users modes */
- if ((source != dest) && (!*source->oper))
+ if (source != dest)
return MODEACTION_DENY;
/* For remote clients, we dont take any action, we just allow it.
/* If we get here, yes it really is an ipv6 ip */
unsigned int iv[] = { key1, key2, key3, key4 };
std::vector<std::string> hashies;
- std::string item = "";
+ std::string item;
int rounds = 0;
/* Reset the Hash module and send it our IV */
for (const char* input = ip; *input; input++)
{
item += *input;
- if (item.length() > 4)
+ if (item.length() > 7)
{
/* Send the Hash module a different hex table for each octet group's Hash sum */
HashHexRequest(Sender, HashProvider, xtab[(key1+rounds) % 4]).Send();
- hashies.push_back(std::string(HashSumRequest(Sender, HashProvider, item).Send()).substr(0,10));
- item = "";
+ hashies.push_back(std::string(HashSumRequest(Sender, HashProvider, item).Send()).substr(0,8));
+ item.clear();
}
rounds++;
}
{
/* Send the Hash module a different hex table for each octet group's Hash sum */
HashHexRequest(Sender, HashProvider, xtab[(key1+rounds) % 4]).Send();
- hashies.push_back(std::string(HashSumRequest(Sender, HashProvider, item).Send()).substr(0,10));
- item = "";
+ hashies.push_back(std::string(HashSumRequest(Sender, HashProvider, item).Send()).substr(0,8));
+ item.clear();
}
/* Stick them all together */
return irc::stringjoiner(":", hashies, 0, hashies.size() - 1).GetJoined();
public:
ModuleCloaking(InspIRCd* Me)
- : Module::Module(Me)
+ : Module(Me)
{
ServerInstance->UseInterface("HashRequest");
};
-extern "C" void * init_module( void )
+extern "C" DllExport void * init_module( void )
{
return new ModuleCloakingFactory;
}