diff options
author | Adam <Adam@anope.org> | 2014-02-12 14:39:41 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2014-02-12 14:39:41 -0500 |
commit | 269c2786e96c3c8d2711be912d8fa40d99b090d4 (patch) | |
tree | c49e5ce41b25a07f5e9b593948e6a2ca3f5d6b1d /include/modules/sasl.h | |
parent | 96fc940af7f20001b290cc65a76d0afb88a6160c (diff) |
Add SASL EXTERNAL support. Thanks to ShutterQuick for fixing and testing.
Diffstat (limited to 'include/modules/sasl.h')
-rw-r--r-- | include/modules/sasl.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/include/modules/sasl.h b/include/modules/sasl.h new file mode 100644 index 000000000..836c26d19 --- /dev/null +++ b/include/modules/sasl.h @@ -0,0 +1,63 @@ +/* + * + * (C) 2014 Anope Team + * Contact us at team@anope.org + * + * Please read COPYING and README for further details. + */ + +namespace SASL +{ + struct Message + { + Anope::string source; + Anope::string target; + Anope::string type; + Anope::string data; + Anope::string ext; + }; + + class Mechanism; + + struct Session + { + time_t created; + Anope::string uid; + Reference<Mechanism> mech; + + Session(Mechanism *m, const Anope::string &u) : created(Anope::CurTime), uid(u), mech(m) { } + virtual ~Session() { } + }; + + /* PLAIN, EXTERNAL, etc */ + class Mechanism : public Service + { + public: + Mechanism(Module *o, const Anope::string &sname) : Service(o, "SASL::Mechanism", sname) { } + + virtual Session* CreateSession(const Anope::string &uid) { return new Session(this, uid); } + + virtual void ProcessMessage(Session *session, const Message &) = 0; + }; + + class Service : public ::Service + { + public: + Service(Module *o) : ::Service(o, "SASL::Service", "sasl") { } + + virtual void ProcessMessage(const Message &) = 0; + + virtual Anope::string GetAgent() = 0; + + virtual Session* GetSession(const Anope::string &uid) = 0; + + virtual void SendMessage(SASL::Session *session, const Anope::string &type, const Anope::string &data) = 0; + + virtual void Succeed(Session *, NickCore *) = 0; + virtual void Fail(Session *) = 0; + virtual void SendMechs(Session *) = 0; + }; +} + +static ServiceReference<SASL::Service> sasl("SASL::Service", "sasl"); + |