case $(uname -s) in
Darwin )
- os=mac
+ echo "Mac OS X detected"
+ os=Mac
+ # TODO we should use jukebox and create it if necessary; see below
user=daemon
group=daemon
;;
+FreeBSD )
+ echo "FreeBSD detected"
+ os=FreeBSD
+ user=jukebox
+ group=jukebox
+ ;;
+Linux )
+ if grep Debian /etc/issue >/dev/null 2>&1; then
+ echo "You appear to be running Debian - please use .debs instead"
+ exit 1
+ fi
+ if grep Ubuntu /etc/issue >/dev/null 2>&1; then
+ echo "You appear to be running Ubuntu - please use .debs instead"
+ exit 1
+ fi
+ echo "Linux detected"
+ os=Linux
+ user=jukebox
+ group=jukebox
+ ;;
* )
+ echo
+ echo "WARNING: unknown operating system '$(uname -s)'"
+ echo "This script won't be able to do all setup on this platform"
os=unknown
user=daemon
group=daemon
echo "This script will:"
echo " - overwrite any existing configuration"
case $os in
-mac )
+Mac )
echo " - set the server up to be run at boot time"
echo " - start the server"
;;
if [ $port != none ]; then
echo "listen 0.0.0.0 $port" >> pkgconfdir/config.new
fi
+echo "smtp_server $smtp_server" >> pkgconfdir/config.new
+echo "mail_sender $mail_sender" >> pkgconfdir/config.new
echo
echo "Proposed pkgconfdir/config:"
echo "Installing pkgconfdir/config"
mv pkgconfdir/config.new pkgconfdir/config
+if [ ! -f pkgconfdir/options.user ]; then
+ echo "Making sure pkgconfdir/options.user exists"
+ touch pkgconfdir/options.user
+fi
+
+case $os in
+Mac )
+ # TODO niutil?
+ ;;
+FreeBSD )
+ if pw groupshow $group >/dev/null 2>&1; then
+ echo "$group group already exists"
+ else
+ echo "Creating $group group"
+ pw groupadd $group
+ fi
+ if pw usershow $user >/dev/null 2>&1; then
+ echo "$user user already exists"
+ else
+ echo "Creating $user user"
+ pw useradd $user -w no -d pkgstatedir -g $group -c 'DisOrder user'
+ fi
+ ;;
+Linux )
+ if grep ^$group: /etc/group >/dev/null; then
+ echo "$group group already exists"
+ else
+ echo "Creating $group group"
+ groupadd $group
+ fi
+ if grep ^$user: /etc/passwd >/dev/null; then
+ echo "$user user already exists"
+ else
+ echo "Creating $user user"
+ useradd -d pkgstatedir -g $group $user -c 'DisOrder user'
+ fi
+ ;;
+esac
+
echo "Making sure that pkgstatedir exists"
mkdir -p pkgstatedir
chown $user:$group pkgstatedir
chmod 2755 pkgstatedir
case $os in
-mac )
- echo "Installing the plist into /Library/LaunchDaemons/"
+Mac )
+ echo "Installing the plist into /Library/LaunchDaemons"
cp server/uk.org.greenend.rjk.disorder.plist /Library/LaunchDaemons/.
echo "Reloading launchd"
launchctl load /Library/LaunchDaemons
echo "Starting DisOrder server"
launchctl start uk.org.greenend.rjk.disorder
+ echo "Installing CGI"
+ install -m 555 server/disorder.cgi /Library/WebServer/CGI-Executables/disorder
+ echo "Setting up link to CGI's dependencies"
+ rm -f /Library/WebServer/Documents/disorder
+ ln -s pkgdatadir/static /Library/WebServer/Documents/disorder
+ echo
+ echo "You must sudo disorder setup-guest [--no-online-registration] next."
+ ;;
+FreeBSD )
+ echo "Installing startup script into /etc/rc.d"
+ install -m 555 examples/disorder.rc /etc/rc.d/disorder
+ echo "Starting DisOrder server"
+ /etc/rc.d/disorder start
+ echo "Identifying web server"
+ set /usr/local/www/*
+ case $# in
+ 0 )
+ echo
+ echo "Could not find a web server"
+ exit 1
+ ;;
+ 1 )
+ ;;
+ * )
+ echo
+ echo "Yikes! There seems to be more than one web server here."
+ echo "Guessing that you want $1."
+ echo
+ ;;
+ esac
+ web=$1
+ echo "Found $web"
+ echo "Installing CGI"
+ install -m 555 server/disorder.cgi $web/cgi-bin/disorder
+ echo "Setting up link to CGI's dependencies"
+ rm -f $web/data/disorder
+ ln -s pkgdatadir/static $web/data/disorder
+ echo
+ echo "You must sudo disorder setup-guest [--no-online-registration] next."
;;
* )
echo "Sorry, I don't know how to install the server on this platform."