diff options
| author | Scott Ostler <scottbot9000@gmail.com> | 2010-07-10 01:34:12 -0400 |
|---|---|---|
| committer | Scott Ostler <scottbot9000@gmail.com> | 2010-07-10 01:34:12 -0400 |
| commit | 0c9cbc22f710237166445e8869545ad8152c7039 (patch) | |
| tree | 085ca1b60cf68ebc2b9b17b6421736b5b8fef219 | |
| parent | 1847fd22d50433184eaaeafce9e47874f7c8c36f (diff) | |
added report viewer
| -rw-r--r-- | docs/reserved_nicks.txt | 2 | ||||
| -rw-r--r-- | src/admin.clj | 25 | ||||
| -rw-r--r-- | src/site.clj | 2 | ||||
| -rwxr-xr-x | src/utils.clj | 10 |
4 files changed, 39 insertions, 0 deletions
diff --git a/docs/reserved_nicks.txt b/docs/reserved_nicks.txt index d6adf82..d7aad5b 100644 --- a/docs/reserved_nicks.txt +++ b/docs/reserved_nicks.txt @@ -62,6 +62,8 @@ porn post privacy refresh +report +reports reset room rooms diff --git a/src/admin.clj b/src/admin.clj index 4e90bad..7c7721e 100644 --- a/src/admin.clj +++ b/src/admin.clj @@ -217,3 +217,28 @@ AND cancelled = false (format-unknown-action action))] [(flash-assoc :msg msg) (redirect-to "/debug")]))) + +(def report-dir "/var/reports") + +(defn get-reports [] + (reverse + (sort + (for [f (.listFiles (new File report-dir))] + (.replaceAll (.getName f) ".html" ""))))) + +(defn list-reports-dir [session] + (if-super-vip + (let [reports (get-reports)] + (html + [:html + [:head [:title "dump.fm reports"]] + [:body + [:ul + (for [r reports] + [:li [:a {:href (str "/reports/" r)} r]])]]])))) + +(defn show-report [session f] + (if-super-vip + (if (contains? (set (get-reports)) f) + (serve-file report-dir (str f ".html")) + "ERROR"))) diff --git a/src/site.clj b/src/site.clj index c2bc4ef..5294f40 100644 --- a/src/site.clj +++ b/src/site.clj @@ -1186,6 +1186,8 @@ order by count desc limit ? offset ?") (POST "/mute" (mute! session params)) (POST "/cancel-mute" (handle-cancel-mute! session params)) (GET "/profile-test/:t" (profile session "ryder" (params :t))) + (GET "/reports" (list-reports-dir session)) + (GET "/reports/:file" (show-report session (params :file))) (GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search (undecoded-url-piece (request-url request) 2))) (GET "/search" (serve-template "search_files" session)) diff --git a/src/utils.clj b/src/utils.clj index 607343e..4a3343f 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -294,7 +294,17 @@ (defn is-vip? [session] (session :is_admin)) +(def super-vips #{"timb" "scottbot" "ryder"}) + +(defn is-super-vip? [session] + (contains? super-vips (:nick session))) + (defmacro if-vip [e] "Evaluates expr if user is vip otherwise returns 404. Can only be used where session is defined." `(if (is-vip? ~'session) ~e (unknown-page))) + +(defmacro if-super-vip [e] + "Evaluates expr if user is vip otherwise returns 404. Can only be used + where session is defined." + `(if (is-super-vip? ~'session) ~e (unknown-page))) |
