summaryrefslogtreecommitdiffstats
path: root/auth.txr
blob: f2c062eb9057640dbdf53381e6b4a7f48568bea6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@(do
  (defun put-binary-str (str stream)
    (let ((len (length str)))
      (put-byte (trunc len 256) stream)
      (put-byte (mod len 256) stream)
      (put-string str stream)))

  (defun sasl-auth (user pass)
    (let ((sock (open-socket af-unix sock-stream)))
      (sock-connect sock (new sockaddr-un path "/var/run/saslauthd/mux"))
      (put-binary-str user sock)
      (put-binary-str pass sock)
      (put-binary-str "" sock)
      (put-binary-str "" sock)
      (let ((response (get-string sock)))
        (equal [response 2..4] "OK")))))
@(define auth (userid password))
@  (require (sasl-auth userid password))
@(end)