X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_sqloper.cpp;h=7620af7f3f0f3a19288fef101a47e99cd2b5ad85;hb=b5b17f22e98ce06bc639edede60784bb1988a9e5;hp=307f72f3c034e70194ff67edac07b129c8699ce9;hpb=11e45f2cb78c0667e2c7c7e2370944bf64b140b8;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_sqloper.cpp b/src/modules/m_sqloper.cpp index 307f72f3c..7620af7f3 100644 --- a/src/modules/m_sqloper.cpp +++ b/src/modules/m_sqloper.cpp @@ -1,16 +1,22 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2010 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2009-2010 Daniel De Graaf * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * --------------------------------------------------- + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include "inspircd.h" #include "sql.h" #include "hash.h" @@ -35,10 +41,9 @@ class OpMeQuery : public SQLQuery { public: const std::string uid, username, password; - OpMeQuery(Module* me, const std::string& q, const std::string& u, const std::string& un, const std::string& pw) - : SQLQuery(me, q), uid(u), username(un), password(pw) + OpMeQuery(Module* me, const std::string& u, const std::string& un, const std::string& pw) + : SQLQuery(me), uid(u), username(un), password(pw) { - ServerInstance->Logs->Log("m_sqloper",DEBUG, "SQLOPER: query=\"%s\"", q.c_str()); } void OnResult(SQLResult& res) @@ -147,19 +152,27 @@ public: { ConfigTag* tag = ServerInstance->Config->ConfValue("sqloper"); - SQL.SetProvider("SQL/" + tag->getString("dbid")); - SQL.lookup(); + std::string dbid = tag->getString("dbid"); + if (dbid.empty()) + SQL.SetProvider("SQL"); + else + SQL.SetProvider("SQL/" + dbid); + hashtype = tag->getString("hash"); query = tag->getString("query", "SELECT hostname as host, type FROM ircd_opers WHERE username='$username' AND password='$password'"); } ModResult OnPreCommand(std::string &command, std::vector ¶meters, LocalUser *user, bool validated, const std::string &original_line) { - if (validated && command == "OPER" && parameters.size() == 2 && SQL) + if (validated && command == "OPER" && parameters.size() >= 2) { - LookupOper(user, parameters[0], parameters[1]); - /* Query is in progress, it will re-invoke OPER if needed */ - return MOD_RES_DENY; + if (SQL) + { + LookupOper(user, parameters[0], parameters[1]); + /* Query is in progress, it will re-invoke OPER if needed */ + return MOD_RES_DENY; + } + ServerInstance->Logs->Log("m_sqloper",DEFAULT, "SQLOPER: database not present"); } return MOD_RES_PASSTHRU; } @@ -173,7 +186,7 @@ public: userinfo["username"] = username; userinfo["password"] = hash ? hash->hexsum(password) : password; - SQL->submit(new OpMeQuery(this, SQL->FormatQuery(query, userinfo), user->uuid, username, password)); + SQL->submit(new OpMeQuery(this, user->uuid, username, password), query, userinfo); } Version GetVersion()