~ salmonella-environment-setup (master) 0b8774ddf653b3bd866bb69caed2d1d336c6fcf5
commit 0b8774ddf653b3bd866bb69caed2d1d336c6fcf5 Author: Mario Domenech Goulart <mario.goulart@gmail.com> AuthorDate: Sun Jan 19 18:40:06 2014 -0200 Commit: Mario Domenech Goulart <mario.goulart@gmail.com> CommitDate: Sun Jan 19 18:40:06 2014 -0200 salmonella: add awful configuration files and init script for Debian systems diff --git a/awful/awful.conf b/awful/awful.conf new file mode 100644 index 0000000..9c37406 --- /dev/null +++ b/awful/awful.conf @@ -0,0 +1,55 @@ +;; -*- scheme -*- +(use spiffy spiffy-sexpr-log spiffy-directory-listing html-tags html-utils intarweb awful) + +(root-path "/home/chicken/salmonella/reports") +(split-log? #t) + +(access-log "/var/log/awful") +(error-log "/var/log/awful/error.log") + +(mime-type-map + (append + (mime-type-map) + '(("logz" . text/plain) + ("svg" . image/svg+xml) + ("svgz" . image/svg+xml) + ("htmlz" . text/html)))) + +(define (send-gzipped-file file) + (if (memq 'gzip (header-values 'accept-encoding + (request-headers (current-request)))) + (with-headers '((content-encoding gzip)) + (lambda () + (send-static-file file))) + (send-response + code: 406 + body: "<h1>406 - Only gzip-compressed content is available</h1>"))) + +(index-files + (cons "index.htmlz" + (index-files))) + +(file-extension-handlers + `(("logz" . ,send-gzipped-file) + ("svgz" . ,send-gzipped-file) + ("htmlz" . ,send-gzipped-file))) + +(directory-listing-css "http://wiki.call-cc.org/chicken.css") +(handle-directory spiffy-directory-listing) +(directory-listing-page + (lambda (path contents) + (html-page + (<div> id: "content" + (<h2> "Index of " (<code> path) ":") + (<p> (<a> href: (or (pathname-directory path) path) + "Go to parent directory")) + contents) + css: (directory-listing-css) + doctype: (directory-listing-doctype) + title: ((directory-listing-title) path)))) + +;; Redirect requests to .html -> .htmlz. The redirection will only be +;; performed if the .html file doesn't exist in the filesystem +(define-page (irregex "/.*\\.html$") + (lambda (path) + (redirect-to (string-append path "z")))) diff --git a/awful/init-scripts/debian b/awful/init-scripts/debian new file mode 100755 index 0000000..e9c611f --- /dev/null +++ b/awful/init-scripts/debian @@ -0,0 +1,165 @@ +#!/bin/sh +# Start/stop/restart/reload the awful web framework. +# +### BEGIN INIT INFO +# Provides: awful +# Required-Start: $remote_fs $syslog $time +# Required-Stop: $remote_fs $syslog $time +# Should-Start: +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Awful web framework +# Description: A CHICKEN web framework on top of the Spiffy web server +### END INIT INFO + +PIDFILE=/var/run/awful.pid +NAME=awful +AWFUL=/home/chicken/local/chicken/bin/$NAME +AWFUL_ARGS='' + +# In some systems the pidfile might be (incorrectly) set to /etc +# if this pidfile is present, use it instead. +[ -e /etc/$NAME.pid ] && PIDFILE=/etc/$NAME.pid +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +. /lib/lsb/init-functions + +[ -e "/etc/$NAME/$NAME.conf" ] && AWFUL_ARGS="/etc/$NAME/$NAME.conf $AWFUL_ARGS" +[ -e "/etc/$NAME/privileged.conf" ] && AWFUL_ARGS="--privileged-code=/etc/$NAME/privileged.conf $AWFUL_ARGS" + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + + +is_running() { + if [ -f "$PIDFILE" ]; then + if pidofproc -p "$PIDFILE" >/dev/null; then + return 0 + else + return 1 + fi + else + return 1 + fi +} + +do_start() { + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + echo "Starting $NAME" + if is_running; then + echo "$NAME is already running." + else + rm -f $PIDFILE + $AWFUL $AWFUL_ARGS 2>&1 > /var/log/awful/init.log & + local pid=$! + local exit_code=$? + if [ "$exit_code" = "0" ]; then + echo $pid > $PIDFILE + return 0 + else + return 2 + fi + fi +} + + +do_stop() { + echo "Stopping $NAME" + if [ ! -f "$PIDFILE" ]; then + echo "Could not determine $NAME pid (no $PIDFILE)." + return 1 + fi + local pid=`cat $PIDFILE` + local cmdline=`cat /proc/$pid/cmdline` + local cmd=`echo $AWFUL$AWFUL_ARGS | sed "s/ //g"` + local killed= + + if [ "$cmd" = "$cmdline" ]; then + kill $pid + for i in `seq 1 5`; do + if pidofproc -p "$PIDFILE" >/dev/null; then + echo -n . + sleep 1 + kill $pid + else + killed=1 + break + fi + done + + if [ $killed = "1" ]; then + rm -f $PIDFILE + return 0 + else + return 1 + fi + else + echo "Error stopping $NAME." + return 1 + fi +} + + +do_restart() { + echo "Restarting $NAME" + do_stop + do_start + return $? +} + + +do_reload() { + # Considering awful defines a /reload page + echo "Reloading $NAME" + wget -O /dev/null http://localhost/reload &> /dev/null +} + + +do_status() { + if is_running; then + echo "running" + exit 0 + else + if [ -e "$PIDFILE" ]; then + echo "failed to start" + exit 1 + else + echo "not running" + exit 3 + fi + fi +} + +case "$1" in + start) + do_start + ;; + + stop) + do_stop + ;; + + restart) + do_restart + ;; + + reload|force-reload) + do_reload + ;; + + status) + do_status + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|status|restart|reload|force-reload}" + exit 2 + ;; +esac +exit 0 diff --git a/awful/privileged.conf b/awful/privileged.conf new file mode 100644 index 0000000..0be2898 --- /dev/null +++ b/awful/privileged.conf @@ -0,0 +1,4 @@ +(use spiffy awful) + +(server-port 80) +(spiffy-user "awful")Trap