summaryrefslogtreecommitdiff
path: root/include/modules/sasl.h
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-02-12 14:39:41 -0500
committerAdam <Adam@anope.org>2014-02-12 14:39:41 -0500
commit269c2786e96c3c8d2711be912d8fa40d99b090d4 (patch)
treec49e5ce41b25a07f5e9b593948e6a2ca3f5d6b1d /include/modules/sasl.h
parent96fc940af7f20001b290cc65a76d0afb88a6160c (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.h63
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");
+