mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Fix compilation of some extras modules
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11776 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
5e1d239f3d
commit
83454575bc
@ -33,6 +33,7 @@
|
||||
|
||||
class ModuleLDAPAuth : public Module
|
||||
{
|
||||
LocalIntExt ldapAuthed;
|
||||
std::string base;
|
||||
std::string attribute;
|
||||
std::string ldapserver;
|
||||
@ -46,21 +47,21 @@ class ModuleLDAPAuth : public Module
|
||||
LDAP *conn;
|
||||
|
||||
public:
|
||||
ModuleLDAPAuth()
|
||||
{
|
||||
ModuleLDAPAuth() : ldapAuthed("ldapauth", this)
|
||||
{
|
||||
conn = NULL;
|
||||
Implementation eventlist[] = { I_OnUserDisconnect, I_OnCheckReady, I_OnRehash, I_OnUserRegister };
|
||||
Implementation eventlist[] = { I_OnCheckReady, I_OnRehash, I_OnUserRegister };
|
||||
ServerInstance->Modules->Attach(eventlist, this, 4);
|
||||
OnRehash(NULL);
|
||||
}
|
||||
|
||||
virtual ~ModuleLDAPAuth()
|
||||
~ModuleLDAPAuth()
|
||||
{
|
||||
if (conn)
|
||||
ldap_unbind_ext(conn, NULL, NULL);
|
||||
}
|
||||
|
||||
virtual void OnRehash(User* user)
|
||||
void OnRehash(User* user)
|
||||
{
|
||||
ConfigReader Conf;
|
||||
|
||||
@ -110,11 +111,11 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual ModResult OnUserRegister(User* user)
|
||||
ModResult OnUserRegister(User* user)
|
||||
{
|
||||
if ((!allowpattern.empty()) && (InspIRCd::Match(user->nick,allowpattern)))
|
||||
{
|
||||
user->Extend("ldapauthed");
|
||||
ldapAuthed.set(user,1);
|
||||
return MOD_RES_PASSTHRU;
|
||||
}
|
||||
|
||||
@ -188,7 +189,6 @@ public:
|
||||
{
|
||||
if (verbose)
|
||||
ServerInstance->SNO->WriteToSnoMask('c', "Forbidden connection from %s!%s@%s (No password provided)", user->nick.c_str(), user->ident.c_str(), user->host.c_str());
|
||||
user->Extend("ldapauth_failed");
|
||||
return false;
|
||||
}
|
||||
cred.bv_val = (char*)user->password.data();
|
||||
@ -196,7 +196,7 @@ public:
|
||||
if ((res = ldap_sasl_bind_s(conn, ldap_get_dn(conn, entry), LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL)) == LDAP_SUCCESS)
|
||||
{
|
||||
ldap_msgfree(msg);
|
||||
user->Extend("ldapauthed");
|
||||
ldapAuthed.set(user,1);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@ -204,24 +204,16 @@ public:
|
||||
if (verbose)
|
||||
ServerInstance->SNO->WriteToSnoMask('c', "Forbidden connection from %s!%s@%s (%s)", user->nick.c_str(), user->ident.c_str(), user->host.c_str(), ldap_err2string(res));
|
||||
ldap_msgfree(msg);
|
||||
user->Extend("ldapauth_failed");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
virtual void OnUserDisconnect(User* user)
|
||||
ModResult OnCheckReady(User* user)
|
||||
{
|
||||
user->Shrink("ldapauthed");
|
||||
user->Shrink("ldapauth_failed");
|
||||
return ldapAuthed.get(user) ? MOD_RES_PASSTHRU : MOD_RES_DENY;
|
||||
}
|
||||
|
||||
virtual ModResult OnCheckReady(User* user)
|
||||
{
|
||||
return user->GetExt("ldapauthed") ? MOD_RES_PASSTHRU : MOD_RES_DENY;
|
||||
}
|
||||
|
||||
virtual Version GetVersion()
|
||||
Version GetVersion()
|
||||
{
|
||||
return Version("Allow/Deny connections based upon answer from LDAP server", VF_VENDOR, API_VERSION);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
class ModuleSQLAuth : public Module
|
||||
{
|
||||
LocalIntExt sqlAuthed;
|
||||
Module* SQLutils;
|
||||
Module* SQLprovider;
|
||||
|
||||
@ -32,8 +33,8 @@ class ModuleSQLAuth : public Module
|
||||
bool verbose;
|
||||
|
||||
public:
|
||||
ModuleSQLAuth()
|
||||
{
|
||||
ModuleSQLAuth() : sqlAuthed("sqlauth", this)
|
||||
{
|
||||
ServerInstance->Modules->UseInterface("SQLutils");
|
||||
ServerInstance->Modules->UseInterface("SQL");
|
||||
|
||||
@ -57,7 +58,7 @@ public:
|
||||
}
|
||||
|
||||
|
||||
virtual void OnRehash(User* user)
|
||||
void OnRehash(User* user)
|
||||
{
|
||||
ConfigReader Conf;
|
||||
|
||||
@ -68,11 +69,11 @@ public:
|
||||
verbose = Conf.ReadFlag("sqlauth", "verbose", 0); /* Set to true if failed connects should be reported to operators */
|
||||
}
|
||||
|
||||
virtual ModResult OnUserRegister(User* user)
|
||||
ModResult OnUserRegister(User* user)
|
||||
{
|
||||
if ((!allowpattern.empty()) && (InspIRCd::Match(user->nick,allowpattern)))
|
||||
{
|
||||
user->Extend("sqlauthed");
|
||||
sqlAuthed.set(user, 1);
|
||||
return MOD_RES_PASSTHRU;
|
||||
}
|
||||
|
||||
@ -160,19 +161,17 @@ public:
|
||||
if(res->Rows())
|
||||
{
|
||||
/* We got a row in the result, this is enough really */
|
||||
user->Extend("sqlauthed");
|
||||
sqlAuthed.set(user, 1);
|
||||
}
|
||||
else if (verbose)
|
||||
{
|
||||
/* No rows in result, this means there was no record matching the user */
|
||||
ServerInstance->SNO->WriteGlobalSno('a', "Forbidden connection from %s!%s@%s (SQL query returned no matches)", user->nick.c_str(), user->ident.c_str(), user->host.c_str());
|
||||
user->Extend("sqlauth_failed");
|
||||
}
|
||||
}
|
||||
else if (verbose)
|
||||
{
|
||||
ServerInstance->SNO->WriteGlobalSno('a', "Forbidden connection from %s!%s@%s (SQL query failed: %s)", user->nick.c_str(), user->ident.c_str(), user->host.c_str(), res->error.Str());
|
||||
user->Extend("sqlauth_failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -180,7 +179,7 @@ public:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!user->GetExt("sqlauthed"))
|
||||
if (!sqlAuthed.get(user))
|
||||
{
|
||||
ServerInstance->Users->QuitUser(user, killreason);
|
||||
}
|
||||
@ -189,18 +188,12 @@ public:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual void OnUserDisconnect(User* user)
|
||||
ModResult OnCheckReady(User* user)
|
||||
{
|
||||
user->Shrink("sqlauthed");
|
||||
user->Shrink("sqlauth_failed");
|
||||
return sqlAuthed.get(user) ? MOD_RES_PASSTHRU : MOD_RES_DENY;
|
||||
}
|
||||
|
||||
virtual ModResult OnCheckReady(User* user)
|
||||
{
|
||||
return user->GetExt("sqlauthed") ? MOD_RES_PASSTHRU : MOD_RES_DENY;
|
||||
}
|
||||
|
||||
virtual Version GetVersion()
|
||||
Version GetVersion()
|
||||
{
|
||||
return Version("Allow/Deny connections based upon an arbitary SQL table", VF_VENDOR, API_VERSION);
|
||||
}
|
@ -43,7 +43,6 @@ public:
|
||||
|
||||
QueryInfo(const std::string &n, const std::string &s, const std::string &h, unsigned long i, int cat)
|
||||
{
|
||||
ServerInstance = Instance;
|
||||
qs = FIND_SOURCE;
|
||||
nick = n;
|
||||
source = s;
|
@ -15,7 +15,6 @@
|
||||
#include "m_sqlv2.h"
|
||||
#include "m_sqlutils.h"
|
||||
#include "m_hash.h"
|
||||
#include "commands/cmd_oper.h"
|
||||
|
||||
/* $ModDesc: Allows storage of oper credentials in an SQL table */
|
||||
/* $ModDep: m_sqlv2.h m_sqlutils.h m_hash.h */
|
||||
@ -24,6 +23,8 @@ typedef std::map<irc::string, Module*> hashymodules;
|
||||
|
||||
class ModuleSQLOper : public Module
|
||||
{
|
||||
LocalStringExt saved_user;
|
||||
LocalStringExt saved_pass;
|
||||
Module* SQLutils;
|
||||
std::string databaseid;
|
||||
irc::string hashtype;
|
||||
@ -32,8 +33,8 @@ class ModuleSQLOper : public Module
|
||||
parameterlist names;
|
||||
|
||||
public:
|
||||
ModuleSQLOper()
|
||||
{
|
||||
ModuleSQLOper() : saved_user("sqloper_user", this), saved_pass("sqloper_pass", this)
|
||||
{
|
||||
ServerInstance->Modules->UseInterface("SQLutils");
|
||||
ServerInstance->Modules->UseInterface("SQL");
|
||||
ServerInstance->Modules->UseInterface("HashRequest");
|
||||
@ -68,8 +69,8 @@ public:
|
||||
if (!SQLutils)
|
||||
throw ModuleException("Can't find m_sqlutils.so. Please load m_sqlutils.so before m_sqloper.so.");
|
||||
|
||||
Implementation eventlist[] = { I_OnRequest, I_OnRehash, I_OnPreCommand, I_OnLoadModule };
|
||||
ServerInstance->Modules->Attach(eventlist, this, 3);
|
||||
Implementation eventlist[] = { I_OnRehash, I_OnPreCommand, I_OnLoadModule };
|
||||
ServerInstance->Modules->Attach(eventlist, this, 4);
|
||||
}
|
||||
|
||||
bool OneOfMatches(const char* host, const char* ip, const char* hostlist)
|
||||
@ -170,8 +171,8 @@ public:
|
||||
*/
|
||||
AssociateUser(this, SQLutils, req.id, user).Send();
|
||||
|
||||
user->Extend("oper_user", strdup(username.c_str()));
|
||||
user->Extend("oper_pass", strdup(password.c_str()));
|
||||
saved_user.set(user, username);
|
||||
saved_pass.set(user, password);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -187,7 +188,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char* OnRequest(Request* request)
|
||||
const char* OnRequest(Request* request)
|
||||
{
|
||||
if (strcmp(SQLRESID, request->GetId()) == 0)
|
||||
{
|
||||
@ -196,14 +197,10 @@ public:
|
||||
User* user = GetAssocUser(this, SQLutils, res->id).S().user;
|
||||
UnAssociate(this, SQLutils, res->id).S();
|
||||
|
||||
char* tried_user = NULL;
|
||||
char* tried_pass = NULL;
|
||||
|
||||
user->GetExt("oper_user", tried_user);
|
||||
user->GetExt("oper_pass", tried_pass);
|
||||
|
||||
if (user)
|
||||
{
|
||||
std::string* tried_user = saved_user.get(user);
|
||||
std::string* tried_pass = saved_pass.get(user);
|
||||
if (res->error.Id() == SQL_NO_ERROR)
|
||||
{
|
||||
if (res->Rows())
|
||||
@ -226,15 +223,15 @@ public:
|
||||
if (OperUser(user, row["hostname"].d, row["type"].d))
|
||||
{
|
||||
/* If/when one of the rows matches, stop checking and return */
|
||||
saved_user.unset(user);
|
||||
saved_pass.unset(user);
|
||||
return SQLSUCCESS;
|
||||
}
|
||||
if (tried_user && tried_pass)
|
||||
{
|
||||
LoginFail(user, tried_user, tried_pass);
|
||||
free(tried_user);
|
||||
free(tried_pass);
|
||||
user->Shrink("oper_user");
|
||||
user->Shrink("oper_pass");
|
||||
LoginFail(user, *tried_user, *tried_pass);
|
||||
saved_user.unset(user);
|
||||
saved_pass.unset(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -246,11 +243,9 @@ public:
|
||||
*/
|
||||
if (tried_user && tried_pass)
|
||||
{
|
||||
LoginFail(user, tried_user, tried_pass);
|
||||
free(tried_user);
|
||||
free(tried_pass);
|
||||
user->Shrink("oper_user");
|
||||
user->Shrink("oper_pass");
|
||||
LoginFail(user, *tried_user, *tried_pass);
|
||||
saved_user.unset(user);
|
||||
saved_pass.unset(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -262,11 +257,9 @@ public:
|
||||
*/
|
||||
if (tried_user && tried_pass)
|
||||
{
|
||||
LoginFail(user, tried_user, tried_pass);
|
||||
free(tried_user);
|
||||
free(tried_pass);
|
||||
user->Shrink("oper_user");
|
||||
user->Shrink("oper_pass");
|
||||
LoginFail(user, *tried_user, *tried_pass);
|
||||
saved_user.unset(user);
|
||||
saved_pass.unset(user);
|
||||
}
|
||||
|
||||
}
|
||||
@ -322,7 +315,7 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual Version GetVersion()
|
||||
Version GetVersion()
|
||||
{
|
||||
return Version("Allows storage of oper credentials in an SQL table", VF_VENDOR, API_VERSION);
|
||||
}
|
@ -28,22 +28,23 @@ class ModuleSQLutils : public Module
|
||||
private:
|
||||
IdUserMap iduser;
|
||||
IdChanMap idchan;
|
||||
SimpleExtItem<AssocIdList> idExt;
|
||||
|
||||
public:
|
||||
ModuleSQLutils()
|
||||
{
|
||||
ModuleSQLutils() : idExt("sqlutils_list", this)
|
||||
{
|
||||
ServerInstance->Modules->PublishInterface("SQLutils", this);
|
||||
Implementation eventlist[] = { I_OnChannelDelete, I_OnUnloadModule, I_OnRequest, I_OnUserDisconnect };
|
||||
ServerInstance->Modules->Attach(eventlist, this, 4);
|
||||
}
|
||||
|
||||
virtual ~ModuleSQLutils()
|
||||
~ModuleSQLutils()
|
||||
{
|
||||
ServerInstance->Modules->UnpublishInterface("SQLutils", this);
|
||||
}
|
||||
|
||||
|
||||
virtual const char* OnRequest(Request* request)
|
||||
const char* OnRequest(Request* request)
|
||||
{
|
||||
if(strcmp(SQLUTILAU, request->GetId()) == 0)
|
||||
{
|
||||
@ -98,15 +99,15 @@ public:
|
||||
return SQLUTILSUCCESS;
|
||||
}
|
||||
|
||||
virtual void OnUserDisconnect(User* user)
|
||||
void OnUserDisconnect(User* user)
|
||||
{
|
||||
/* A user is disconnecting, first we need to check if they have a list of queries associated with them.
|
||||
* Then, if they do, we need to erase each of them from our IdUserMap (iduser) so when the module that
|
||||
* associated them asks to look them up then it gets a NULL result and knows to discard the query.
|
||||
*/
|
||||
AssocIdList* il;
|
||||
AssocIdList* il = idExt.get(user);
|
||||
|
||||
if(user->GetExt("sqlutils_queryids", il))
|
||||
if(il)
|
||||
{
|
||||
for(AssocIdList::iterator listiter = il->begin(); listiter != il->end(); listiter++)
|
||||
{
|
||||
@ -129,20 +130,19 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
user->Shrink("sqlutils_queryids");
|
||||
delete il;
|
||||
idExt.unset(user);
|
||||
}
|
||||
}
|
||||
|
||||
void AttachList(Extensible* obj, unsigned long id)
|
||||
{
|
||||
AssocIdList* il;
|
||||
AssocIdList* il = idExt.get(obj);
|
||||
|
||||
if(!obj->GetExt("sqlutils_queryids", il))
|
||||
if (!il)
|
||||
{
|
||||
/* Doesn't already exist, create a new list and attach it. */
|
||||
il = new AssocIdList;
|
||||
obj->Extend("sqlutils_queryids", il);
|
||||
idExt.set(obj, il);
|
||||
}
|
||||
|
||||
/* Now either way we have a valid list in il, attached. */
|
||||
@ -151,9 +151,9 @@ public:
|
||||
|
||||
void RemoveFromList(Extensible* obj, unsigned long id)
|
||||
{
|
||||
AssocIdList* il;
|
||||
AssocIdList* il = idExt.get(obj);
|
||||
|
||||
if(obj->GetExt("sqlutils_queryids", il))
|
||||
if (il)
|
||||
{
|
||||
/* Only do anything if the list exists... (which it ought to) */
|
||||
il->remove(id);
|
||||
@ -161,8 +161,7 @@ public:
|
||||
if(il->empty())
|
||||
{
|
||||
/* If we just emptied it.. */
|
||||
delete il;
|
||||
obj->Shrink("sqlutils_queryids");
|
||||
idExt.unset(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -185,15 +184,15 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnChannelDelete(Channel* chan)
|
||||
void OnChannelDelete(Channel* chan)
|
||||
{
|
||||
/* A channel is being destroyed, first we need to check if it has a list of queries associated with it.
|
||||
* Then, if it does, we need to erase each of them from our IdChanMap (idchan) so when the module that
|
||||
* associated them asks to look them up then it gets a NULL result and knows to discard the query.
|
||||
*/
|
||||
AssocIdList* il;
|
||||
AssocIdList* il = idExt.get(chan);
|
||||
|
||||
if(chan->GetExt("sqlutils_queryids", il))
|
||||
if (il)
|
||||
{
|
||||
for(AssocIdList::iterator listiter = il->begin(); listiter != il->end(); listiter++)
|
||||
{
|
||||
@ -215,12 +214,11 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
chan->Shrink("sqlutils_queryids");
|
||||
delete il;
|
||||
idExt.unset(chan);
|
||||
}
|
||||
}
|
||||
|
||||
virtual Version GetVersion()
|
||||
Version GetVersion()
|
||||
{
|
||||
return Version("Provides some utilities to SQL client modules, such as mapping queries to users and channels", VF_VENDOR | VF_SERVICEPROVIDER, API_VERSION);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user