master
tilde.town 2015-08-02 00:34:59 +00:00
parent a49376017d
commit 6e467b35e9
3 changed files with 10 additions and 72 deletions

View File

@ -4,15 +4,10 @@ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/ga
source /var/local/venvs/tildetown/bin/activate
stats=/usr/local/bin/generate_stats
stats=/usr/bin/stats
template=/var/www/tilde.town/template.index.html
mustache=/var/local/tildetown/scripts/mustache.hy
output_path=/var/www/tilde.town/index.html
# hello from datagrok
#
# generate_stats was breaking and outputting no lines. i dunno how to fix that,
# but i can un-disaappear the homepage by saying "output empty json if broken"
#
# generate_stats | hy $mustache $template > $output_path
($stats || echo '{}') | hy $mustache $template > $output_path
deactivate

8
scripts/stats 100755
View File

@ -0,0 +1,8 @@
#!/bin/bash
cd /var/local
source venvs/tildetown/bin/activate
output=$(python tildetown/tildetown-py/stats.py)
deactivate
echo $output

View File

@ -1,65 +0,0 @@
(import [json [dumps]])
(import [os [listdir]])
(import [os.path [getmtime]])
(import [datetime [datetime]])
(import [sh [find facter]])
;; this script emits json on standard out that has information about tilde.town
;; users. It denotes who has not updated their page from the default. It also
;; reports the time this script was run. The user list is sorted by public_html update time.
(defn slurp [filename]
(try
(.read (apply open [filename "r"] {"encoding" "utf-8"}))
(catch [e Exception]
"")))
(def default-html (slurp "/etc/skel/public_html/index.html"))
(defn default? [username]
(= default-html (slurp (.format "/home/{}/public_html/index.html" username))))
(defn bounded-find [path]
;; find might return 1 but still have worked fine (because of dirs it can't
;; go into)
(apply find [path "-maxdepth" "3"] {"_ok_code" [0 1]}))
(defn guarded-mtime [filename]
(let [[path (.rstrip filename)]]
(try
(getmtime path)
(catch [e Exception]
0))))
(defn modify-time [username]
(->> (.format "/home/{}/public_html" username)
bounded-find
(map guarded-mtime)
list
max))
(defn sort-user-list [usernames]
(apply sorted [usernames] {"key" modify-time}))
(defn user-generator [] (->> (listdir "/home")
(filter (fn [f] (and (not (= f "ubuntu")) (not (= f "poetry")))))))
(if (= __name__ "__main__")
(let [[all_users (->> (user-generator)
sort-user-list
reversed
(map (fn [un] {"username" un
"default" (default? un)}))
list)]
[live_users (-> (filter (fn [u] (not (get u "default"))) all_users)
list)]
[data {"all_users" all_users
"live_users" live_users
"active_user_count" (-> (. (facter "active_user_count") stdout)
.strip
int)
"generated_at" (.strftime (.now datetime) "%Y-%m-%d %H:%M:%S")
"num_users" (len all_users)
"num_live_users" (len live_users)}]]
(print (dumps data))))