From 75d426ed982e958738d303f6dc4053f833614915 Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 1 Jan 2006 20:49:25 +0000 Subject: [PATCH] Changes to how classes are looked up (connects slightly faster) and fix for case sensitive passwords git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2723 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/cmd_pass.cpp | 4 ++-- src/helperfuncs.cpp | 21 +++------------------ src/users.cpp | 14 ++++++++------ 3 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/cmd_pass.cpp b/src/cmd_pass.cpp index 5b640fb76..0e40fea81 100644 --- a/src/cmd_pass.cpp +++ b/src/cmd_pass.cpp @@ -70,11 +70,11 @@ void cmd_pass::Handle (char **parameters, int pcnt, userrec *user) WriteServ(user->fd,"462 %s :You may not reregister",user->nick); return; } + ConnectClass* a = GetClass(user); strlcpy(user->password,parameters[0],MAXBUF); - if (!strcasecmp(parameters[0],Passwd(user))) + if (!strcmp(parameters[0],a->pass.c_str())) { user->haspassed = true; } } - diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index c2a323a7c..2ff939dc6 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -1153,33 +1153,18 @@ int usercount(chanrec *c) // looks up a users password for their connection class (/ tags) -char* Passwd(userrec *user) +ConnectClass* GetClass(userrec *user) { for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++) { - if ((i->type == CC_ALLOW) && match(user->host,i->host.c_str())) + if (match(user->host,i->host.c_str())) { - return (char*)i->pass.c_str(); + return (ConnectClass*)i->second; } } return ""; } -bool IsDenied(userrec *user) -{ - for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++) - { - if ((i->type == CC_DENY) && match(user->host,i->host.c_str())) - { - return true; - } - } - return false; -} - - - - /* sends out an error notice to all connected clients (not to be used * lightly!) */ diff --git a/src/users.cpp b/src/users.cpp index f4075dec4..fd7efb7aa 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -642,16 +642,18 @@ void FullConnectUser(userrec* user, CullList* Goners) user->idle_lastmsg = TIME; log(DEBUG,"ConnectUser: %s",user->nick); - if ((*(Passwd(user))) && (!user->haspassed)) + ConnectClass* a = GetClass(user); + + if (a->type == CC_DENY) + { + Goners->AddItem(user,"Unauthorised connection"); + return; + } + if ((*(a->pass.c_str())) && (!user->haspassed)) { Goners->AddItem(user,"Invalid password"); return; } - if (IsDenied(user)) - { - Goners->AddItem(user,"Unauthorised connection"); - return; - } char match_against[MAXBUF]; snprintf(match_against,MAXBUF,"%s@%s",user->ident,user->host); -- 2.39.2