summaryrefslogtreecommitdiff
path: root/src/site.clj
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-11 16:50:40 -0400
committersostler <sbostler@gmail.com>2010-04-11 16:50:40 -0400
commit57c3298cbb88181ab2a9e2dd5309b7a5df6eb30f (patch)
treee9ca474c5a1fa584728b152bf95ac5471943253c /src/site.clj
parent57be29ee7b7782830cf981d9437b18c88620f8ed (diff)
Initial muting implementation
Diffstat (limited to 'src/site.clj')
-rw-r--r--src/site.clj103
1 files changed, 11 insertions, 92 deletions
diff --git a/src/site.clj b/src/site.clj
index 084f34c..85e93d1 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -6,9 +6,7 @@
java.io.File
javax.imageio.ImageIO
org.apache.commons.codec.digest.DigestUtils
- javax.servlet.http.Cookie
- org.antlr.stringtemplate.StringTemplateGroup)
- (:require [clojure.contrib.str-utils2 :as s])
+ javax.servlet.http.Cookie)
(:use clojure.xml
clojure.contrib.command-line
clojure.contrib.duck-streams
@@ -16,6 +14,7 @@
clojure.contrib.sql
clojure.contrib.str-utils
clojure.contrib.def
+ admin
compojure
email
utils
@@ -28,9 +27,6 @@
(def *flusher-sleep* (seconds 4))
(def *user-timeout* (seconds 15))
-(def template-group (new StringTemplateGroup "dumpfm" "template"))
-(.setRefreshInterval template-group 3)
-
(defstruct user-struct :nick :user_id :avatar :last-seen)
(defstruct message-struct :nick :content :created_on :msg_id)
@@ -74,6 +70,9 @@
;; Utils
+(defn id [x]
+ x)
+
(defn open-file [dir-comps filename]
(let [d (str-join (System/getProperty "file.separator")
(cons *root-directory* dir-comps))
@@ -92,31 +91,6 @@
(.setTimeZone df (TimeZone/getTimeZone "GMT"))
(.format df dt))))
-;; 404
-
-(defn unknown-page []
- [404 "Page not Found"])
-
-;; User authentication
-
-(def nick-regex #"^[A-Za-z0-9\-_∆˚†]*$")
-
-(defn is-invalid-nick? [n]
- (cond
- (< (count n) 3) "NICK_TOO_SHORT"
- (not (re-matches nick-regex n)) "NICK_INVALID_CHARS"))
-
-(defn check-nick [nick]
- (let [query "SELECT * FROM users WHERE LOWER(nick) = ? LIMIT 1"]
- (> (count (do-select [query (s/lower-case nick)])) 0)))
-
-(defn fetch-nick [nick]
- (let [query "SELECT * FROM users WHERE nick = ? LIMIT 1"]
- (first (do-select [query nick]))))
-
-(defn authorize-nick-hash [nick hash]
- (let [db-user (fetch-nick nick)]
- (and db-user (= (db-user :hash) hash) db-user)))
;; Room handling
@@ -290,9 +264,6 @@
;; Login code
-(defn is-vip? [session]
- (session :is_admin))
-
(defn session-map-from-db
[user-info]
{:user_id (user-info :user_id)
@@ -309,21 +280,6 @@
:avatar (user-info :avatar)
:password_login true))
-;; Templates
-
-;; TODO: avoid exception
-(defn fetch-template [template session]
- (let [st (.getInstanceOf template-group template)]
- (if (session :nick)
- (do (.setAttribute st "user_email" (session :email))
- (.setAttribute st "user_nick" (session :nick))
- (if (non-empty-string? (session :avatar)) (.setAttribute st "user_avatar" (session :avatar)))
- (.setAttribute st "isadmin" (is-vip? session))))
- st))
-
-(defn serve-template [template session]
- (.toString (fetch-template template session)))
-
;; login-token functions
(defn logged-in?
@@ -847,8 +803,6 @@
(str "RawFavs=" (json-str favs))))
-
-
;; Account resets
(defn reset-page [session]
@@ -947,47 +901,6 @@
(not (session :nick)) [200 "NOT_LOGGED_IN"]
:else (do-upload-avatar session image))))
-;; Debug Page
-
-(defn exception-to-string [e]
- (let [sw (java.io.StringWriter.)
- pw (java.io.PrintWriter. sw)]
- (.printStackTrace e pw)
- (.toString sw)))
-
-(defn lookup-templates [dir selected]
- (for [f (.listFiles (File. dir))
- :when (and (.isFile f) (.endsWith (.getName f) ".st"))]
- (let [n (s/butlast (.getName f) 3)]
- {"template" n
- "selected" (= selected n)})))
-
-(defn debug-page [session flash]
- (if (is-vip? session)
- (let [st (fetch-template "debug" session)]
- (.setAttribute st "flash" (:msg flash))
- (.setAttribute st "mailtemps" (lookup-templates "template/mail" "welcome"))
- (.toString st))
- (unknown-page)))
-
-(defn debug-commmand! [session params]
- (if (is-vip? session)
- (let [action (:action params)
- msg (try
- (cond (= action "regemail")
- (do (send-registration-email (params :nick) (params :to) (params :template))
- (str "Sent registration mail to " (params :to)))
- :else (str "Unknown action: " action))
- (catch Exception e
- (str "<h2 color=\"red\">Caught Exception in " action " --"
- (.getMessage e)
- "</h2><br><pre>"
- (exception-to-string e)
- "</pre>")))]
- [(flash-assoc :msg msg)
- (redirect-to "/debug")])
- (unknown-page)))
-
;; Compojure Routes
@@ -1055,8 +968,14 @@
(GET "/reset" (reset-page session))
(POST "/reset-request" (reset-account-request! session params))
(POST "/reset/:key" (reset-account! session (-> request :route-params :key)))
+
+ ;; Admin stuff (should be own route?)
(GET "/debug" (debug-page session flash))
(POST "/debug" (debug-commmand! session params))
+ (GET "/mute-status" (mute-status session))
+ (POST "/mute" (mute! session params))
+
+ ;; Footer pages
(GET "/about_us" (serve-template "about_us" session))
(GET "/goodies" (serve-template "goodies" session))
(GET "/help" (serve-template "help" session))