#!/usr/local/bin/txr @(next :args) @(load "config") @(load "logging") @(load "headers") @(load "auth") @(load "session") @(load "lockdir") @(load "random") @(load "util") @(load "aliases") @(load "login-form") @(load "error-form") @(load "alias-list-form") @(load "edit-memo-form") @(load "startup") @(do (randomize)) @(startup domain) @(next :env) @(gather :vars (clientip (cookie-userid nil) (cookie-sessid nil))) REMOTE_ADDR=@clientip @(sess-cookie cookie-userid cookie-sessid) @(end) @(check-session session-valid-p cookie-userid cookie-sessid clientip) @(next :env) @(if session-valid-p) @ (skip) @ (cases) QUERY_STRING=auth @ (error-form "Redundant Authentication" "You are already logged in") @ (or) QUERY_STRING=logout @ (remove-session cookie-userid) @ (login-form "Logged out; you may log in again.") @ (or) QUERY_STRING=update-aliases @ (next *stdin*) @postdata @ (cases) @ (update-aliases cookie-userid postdata) @ (alias-list-form cookie-userid) @ (or) @ (error-form "Invalid input" `Unable to parse POST data: @postdata`) @ (end) @ (or) QUERY_STRING=edit=@{edit-alias} @ (edit-memo-form cookie-userid edit-alias) @ (or) QUERY_STRING=update-memo&@{edit-alias} @ (cases) @ (next *stdin*) memo=@{new-memo}&@(skip) @ (update-memo cookie-userid edit-alias new-memo) @ (or) @ (error-form "Invalid input" `Unable to parse POST data`) @ (end) @ (or) QUERY_STRING=@(skip) @ (alias-list-form cookie-userid) @ (end) @(else) @ (skip) @ (cases) QUERY_STRING=auth @ (cases) @ (next *stdin*) userid=@userid&password=@password @ (set password @(url-decode password)) @ (auth userid password) @ (ensure-session userid clientip) @ (alias-list-form userid) @ (or) @ (login-form "Invalid login; try again!") @ (end) @ (or) QUERY_STRING=@(skip) @ (login-form @(if cookie-userid "Invalid or expired session; Please log in." "Please log in.")) @ (end) @(end) @(do (save-random-state))