diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/inspircd.cpp | 6 | ||||
-rw-r--r-- | src/modules/extra/m_httpclienttest.cpp | 79 | ||||
-rw-r--r-- | src/server.cpp | 65 |
3 files changed, 69 insertions, 81 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp index bf103328d..e53e6f56f 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -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() diff --git a/src/modules/extra/m_httpclienttest.cpp b/src/modules/extra/m_httpclienttest.cpp deleted file mode 100644 index 382546196..000000000 --- a/src/modules/extra/m_httpclienttest.cpp +++ /dev/null @@ -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) - diff --git a/src/server.cpp b/src/server.cpp index 4814852c4..f1ed20c59 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -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 ""; } |