chiark / gitweb /
Error handling fixes including new log file
[modbot-mtm.git] / install-newsgroup
1 #!/bin/bash
2 set -e
3
4 . settings
5 . ../global-settings
6 . persistent-autosettings
7
8 mkdir -p stump/tmp/messages
9 mkdir -p stump/data
10 mkdir -p webstump/queues/$GROUP
11 mkdir -p webstump/log
12 mkdir -p xlog/log/$GROUP
13
14 ngdir=webstump/config/newsgroups/$GROUP
15 mkdir -p $ngdir
16 cp webstump/skeleton/*.IN[1O] $ngdir/.
17
18 exec <moderators
19
20 mods=$ngdir/moderators
21 exec 3>$mods.new
22
23 test -f $mods || touch $mods
24
25 while read name email; do
26         set +e
27         grep "^$name " $mods >$mods.tmp
28         rc=$?
29         set -e
30         case $rc in
31         0)      ;;
32         1)
33                 pass=`perl -e </dev/urandom '
34                         select(STDIN); $|=1; select(STDOUT);
35                         for $x (0..7) {
36                                 read(STDIN,$bin,4) == 4 or die $!;
37                                 $v= unpack "l",$bin;
38                                 $v %= 36;
39                                 printf "%c", $v<10
40                                         ? $v+ord("0")
41                                         : $v-10+ord("A");
42                         }
43                         print "\n";
44                 '`
45                 echo "$name $pass" >$mods.tmp
46
47                 mail -s "your $ABBREV moderator password" <<END "$email"
48 The moderation interface for $GROUP is here:
49   $CGIBASEURL/g.$ABBREV/webstump?action=login_screen&newsgroup=$GROUP
50
51 Your username and password for the moderation interface are:
52   $name
53   $pass
54 These are _not_ case sensitive (!)
55
56 Please see other emails for further information.
57
58 Regards,
59 moderation system administrator
60 END
61                 ;;
62         *)
63                 echo >&2 "huh $rc ?"; exit 1
64                 ;;
65         esac
66         cat $mods.tmp >&3
67         rm $mods.tmp
68 done
69
70 exec <$mods
71 while read name pass; do
72         set +e
73         grep "^$name " $mods.new >$mods.tmp
74         rc=$?
75         set -e
76         case $rc in
77         0)      ;;
78         1)
79                 echo "*** Preserving obsolete moderator $name"
80                 cat $mods.tmp >&3
81                 ;;
82         *)
83                 echo >&2 "huh2 $rc ?"; exit 1
84                 ;;
85         esac
86         rm $mods.tmp
87 done
88
89 mv -f $mods.new $mods