1
0
mirror of https://github.com/anope/anope.git synced 2026-06-30 23:26:39 +02:00

Remove the asynchronous identifing hack and replace it with something better. Fixes m_*_authentication only being able to properly work when people identify normally using nickserv/identify

This commit is contained in:
Adam
2012-10-07 22:39:58 -04:00
parent 0a111c1976
commit b8b63ff115
54 changed files with 687 additions and 470 deletions
+32
View File
@@ -304,7 +304,39 @@ class CoreExport NickCore : public Extensible, public Flags<NickCoreFlag, NI_END
* Deletes all the memory allocated in the certificate list vector and then clears the vector.
*/
void ClearCert();
};
class IdentifyRequest
{
Anope::string account;
Anope::string password;
std::set<Module *> holds;
bool dispatched;
bool success;
static std::set<IdentifyRequest *> requests;
protected:
IdentifyRequest(const Anope::string &acc, const Anope::string &pass);
virtual ~IdentifyRequest();
public:
virtual void OnSuccess() = 0;
virtual void OnFail() = 0;
const Anope::string &GetAccount() const { return account; }
const Anope::string &GetPassword() const { return password; }
/* Hold this request. Once held it must be Release()d later on */
void Hold(Module *m);
void Release(Module *m);
void Success(Module *m);
void Dispatch();
static void ModuleUnload(Module *m);
};
extern CoreExport void change_core_display(NickCore *nc);
+1
View File
@@ -26,6 +26,7 @@ class ConnectionSocket;
class DNSPacket;
class dynamic_reference_base;
class Entry;
class IdentifyRequest;
class InfoFormatter;
class ListenSocket;
class Log;
+4 -8
View File
@@ -765,15 +765,11 @@ class CoreExport Module : public Extensible
*/
virtual void OnNickInfo(CommandSource &source, NickAlias *na, InfoFormatter &info, bool ShowHidden) { }
/** Check whether a users password is correct.
* @param u The user
* @param command The command the user is doing
* @param params Command params
* @param account The account the password should be checked against
* @param password The password
* @return EVENT_ALLOW to allow the password, EVENT_STOP to stop processing completely
/** Check whether a username and password is correct
* @param u The user trying to identify, if applicable.
* @param req The login request
*/
virtual EventReturn OnCheckAuthentication(Command *c, CommandSource *source, const std::vector<Anope::string> &params, const Anope::string &account, const Anope::string &password) { return EVENT_CONTINUE; }
virtual void OnCheckAuthentication(User *u, IdentifyRequest *req) { }
/** Called when a user does /ns update
* @param u The user