summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Ostler <scottbot9000@gmail.com>2010-07-10 01:34:12 -0400
committerScott Ostler <scottbot9000@gmail.com>2010-07-10 01:34:12 -0400
commit0c9cbc22f710237166445e8869545ad8152c7039 (patch)
tree085ca1b60cf68ebc2b9b17b6421736b5b8fef219 /src
parent1847fd22d50433184eaaeafce9e47874f7c8c36f (diff)
added report viewer
Diffstat (limited to 'src')
-rw-r--r--src/admin.clj25
-rw-r--r--src/site.clj2
-rwxr-xr-xsrc/utils.clj10
3 files changed, 37 insertions, 0 deletions
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)))