git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9255 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
w00t 2008-04-02 08:54:43 +00:00
parent 4b2dda4d80
commit 9fcf4c08a1
4 changed files with 70 additions and 82 deletions

View File

@ -273,7 +273,7 @@ class CoreExport InspIRCd : public classbase
private:
/** Holds the current UID. Used to generate the next one.
*/
char current_uid[UUID_LENGTH + 1];
char current_uid[UUID_LENGTH];
/** Set up the signal handlers
*/

View File

@ -595,6 +595,8 @@ void InspIRCd::InitialiseUID()
{
int i = 3;
printf("FUCKING UID IS %s\n", current_uid);
current_uid[0] = Config->sid[0];
current_uid[1] = Config->sid[1];
current_uid[2] = Config->sid[2];
@ -603,7 +605,11 @@ void InspIRCd::InitialiseUID()
for(i = 3; i < UUID_LENGTH - 1; i++)
current_uid[i] = 'A';
printf("FUCKING UID IS %s %d\n", current_uid, strlen(current_uid));
current_uid[UUID_LENGTH] = '\0';
printf("FUCKING UID IS %s %d\n", current_uid, strlen(current_uid));
}
int InspIRCd::Run()

View File

@ -1,79 +0,0 @@
/* +------------------------------------+
* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
* InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
*
* ---------------------------------------------------
*/
#include "inspircd.h"
#include "users.h"
#include "channels.h"
#include "modules.h"
#include "httpclient.h"
/* $ModDep: httpclient.h */
class MyModule : public Module
{
public:
MyModule(InspIRCd* Me)
: Module::Module(Me)
{
Implementation eventlist[] = { I_OnRequest, I_OnUserJoin, I_OnUserPart };
ServerInstance->Modules->Attach(eventlist, this, 3);
}
virtual ~MyModule()
{
}
virtual Version GetVersion()
{
return Version(1,0,0,1,VF_VENDOR,API_VERSION);
}
virtual void OnUserJoin(User* user, Channel* channel, bool sync, bool &silent)
{
// method called when a user joins a channel
std::string chan = channel->name;
std::string nick = user->nick;
ServerInstance->Log(DEBUG,"User " + nick + " joined " + chan);
Module* target = ServerInstance->Modules->Find("m_http_client.so");
if(target)
{
HTTPClientRequest req(ServerInstance, this, target, "http://znc.in/~psychon");
req.Send();
}
else
ServerInstance->Log(DEBUG,"module not found, load it!!");
}
virtual const char* OnRequest(Request* req)
{
HTTPClientResponse* resp = (HTTPClientResponse*)req;
if(!strcmp(resp->GetId(), HTTP_CLIENT_RESPONSE))
{
ServerInstance->Log(DEBUG, resp->GetData());
}
return NULL;
}
virtual void OnUserPart(User* user, Channel* channel, const std::string &partmessage, bool &silent)
{
}
};
MODULE_INIT(MyModule)

View File

@ -141,7 +141,68 @@ bool InspIRCd::FindServerName(const std::string &servername)
*/
std::string InspIRCd::GetUID()
{
int i;
static int curindex = -1;
if (curindex == -1)
{
// Starting up
current_uid[0] = Config->sid[0];
current_uid[1] = Config->sid[1];
current_uid[2] = Config->sid[2];
for (int i = 3; i < UUID_LENGTH; i++)
current_uid[i] = 'Z';
current_uid[3] = 'Y'; // force fake client to get ZZZZZZZZ
curindex = 3;
}
while (1)
{
printf("Getting ID. curindex %d, current_uid %s\n", curindex, current_uid);
if (curindex == 3)
{
// Down to the last few.
if (current_uid[curindex] == 'Z')
{
// Reset.
for (int i = 3; i < UUID_LENGTH; i++)
{
current_uid[i] = 'A';
curindex = UUID_LENGTH - 1;
}
}
else
current_uid[curindex]++;
}
else
{
if (current_uid[curindex] == 'Z')
current_uid[curindex] = '0';
else if (current_uid[curindex] == '9')
{
current_uid[curindex] = 'A';
curindex--;
continue;
}
else
current_uid[curindex]++;
}
if (this->FindUUID(current_uid))
{
/*
* It's in use. We need to try the loop again.
*/
continue;
}
return current_uid;
}
#if 0
/*
* This will only finish once we return a UUID that is not in use.
@ -205,7 +266,7 @@ std::string InspIRCd::GetUID()
return current_uid;
}
}
#endif
/* not reached. */
return "";
}