From 90d7449c02681e1e16d81784d6610d6b0af96a3d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 21 Mar 2016 12:43:57 -0700 Subject: Implementing IMAP authentication. --- auth.txr | 31 ++++++++++++++++++++++++++++++- config.txr | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/auth.txr b/auth.txr index bb8f4cf..e2b9c26 100644 --- a/auth.txr +++ b/auth.txr @@ -15,5 +15,34 @@ (let ((response (get-string sock))) (equal [response 2..4] "OK"))))) @(define auth (userid password)) -@ (require (sasl-auth userid password)) +@ (if (eq auth :sasl)) +@ (require (sasl-auth userid password)) +@ (elif (eq auth :imap)) +@ (try) +@ (bind s @(let ((sock (open-socket af-inet sock-stream "r+ib"))) + (sock-connect sock (new sockaddr-in + addr inaddr-loopback + port 143)) + (sock-recv-timeout sock (* 30 1000000)))) +@ (next s) +* OK@(skip) +@ (output s) +A0001 LOGIN @userid @password@\r +@ (end) +@ (repeat :gap 0) +* @(skip) +@ (end) +@ (cases) +A0001 OK@(skip) +@ (accept) +@ (or) +A0001 NO@(skip) +@ (fail) +@ (end) +@ (catch timeout-error) +@ (fail) +@ (end) +@ (else) +@ (fail) +@ (end) @(end) diff --git a/config.txr b/config.txr index 4f28b53..74315ba 100644 --- a/config.txr +++ b/config.txr @@ -1,5 +1,6 @@ @(bind debug-enable t) @(bind aliases-file "/etc/tamarind/aliases") @(bind sessions-dir "/var/run/tamarind/sessions") +@(bind auth :imap) @(bind sasl-sock "/var/run/saslauthd/mux") @(bind csslink "") -- cgit v1.2.3