chiark / gitweb /
ae5e11d4e710f7ee28ec1118e1e8c8cc3ef89905
[disorder] / debian / postinst.disorder
1 #! /bin/sh
2 #
3 # This file is part of DisOrder
4 # Copyright (C) 2004 Richard Kettlewell
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 # USA
20 #
21
22 set -e
23
24 . /usr/share/debconf/confmodule
25
26 add_jukebox_user() {
27   adduser --quiet --system --group --shell /bin/sh --home /var/lib/disorder \
28     --no-create-home jukebox
29 }
30
31 configure_init_d() {
32   update-rc.d disorder defaults 92 19 > /dev/null
33 }
34
35 restart_server() {
36   /etc/init.d/disorder restart
37 }
38
39 case "$1" in
40 configure )
41   if grep -q ^jukebox: /etc/passwd; then
42     :
43   else
44     add_jukebox_user
45   fi
46   if test ! -f /etc/disorder/config.private; then
47     # pwgen in debian stable has insane exit status
48     set +e
49     rootpw=`pwgen 16 1`
50     webpw=`pwgen 16 1`
51     set -e
52     if test -z "$rootpw" || test -z "$webpw"; then
53       echo "$0: pwgen failed" 1>&2
54       exit 1
55     fi
56     u=`umask`
57     umask 077
58
59     echo allow root "$rootpw" > /etc/disorder/config.private.new
60     echo allow www-data "$webpw" >> /etc/disorder/config.private.new
61     chgrp jukebox /etc/disorder/config.private.new
62     chmod 640 /etc/disorder/config.private.new
63     mv /etc/disorder/config.private.new /etc/disorder/config.private
64
65     if test ! -f /etc/disorder/config.www-data; then
66       echo password "$webpw" > /etc/disorder/config.www-data.new
67       chgrp www-data /etc/disorder/config.www-data.new
68       chmod 640 /etc/disorder/config.www-data.new
69       mv /etc/disorder/config.www-data.new /etc/disorder/config.www-data
70     fi
71     umask $u
72   fi
73
74   if test ! -f /etc/disorder/http.users; then
75     u=`umask`
76     umask 077
77     touch /etc/disorder/http.users
78     chgrp www-data /etc/disorder/http.users
79     chmod 640 /etc/disorder/http.users
80     umask $u
81   fi
82   chown jukebox:jukebox /var/lib/disorder
83   configure_init_d
84   restart_server
85   if test ! -e /etc/disorder/http.users; then
86     touch /etc/disorder/http.users
87   fi
88   db_stop
89   ldconfig -n /usr/lib
90   ;;
91 abort-upgrade )
92   /etc/init.d/disorder restart
93   ;;
94 reconfigure )
95   /etc/init.d/disorder reload
96   ;;
97 esac