chiark / gitweb /
WIP installation stuff
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Dec 2009 18:09:44 +0000 (18:09 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Dec 2009 18:09:44 +0000 (18:09 +0000)
.gitignore
crontab.part [deleted file]
crontab.part.INO [new file with mode: 0644]
install-aggregates [new file with mode: 0755]
install-key [new file with mode: 0755]
install-substitutions [new file with mode: 0755]
setup [new file with mode: 0755]
stump/etc/added-footer.IN1 [new file with mode: 0644]
stump/etc/added-headers.INO [new file with mode: 0644]
stump/etc/hostname.REPLACEMENT [deleted file]

index 0299241bbd006e1435acf1991243470c6e7c6b61..4da94c140e103b5627112d0527720b565c7e926e 100644 (file)
@@ -12,3 +12,9 @@
 /xlog/log/*/event.log
 /xlog/log/*/event.log.[0-9]
 /xlog/log/*/event.log.[0-9].gz
+/settings
+/crontab.part
+/stump/etc/added-headers
+/stump/etc/added-footer
+/stump/etc/added-footer.new
+/stump/etc/approval.key.txt
diff --git a/crontab.part b/crontab.part
deleted file mode 100644 (file)
index 602ab06..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# install with
-#  ssh webstump@chiark crontab live/crontab
-#
-#m h  d m dow
-50 7  12 * *   savelog live/xlog/log/uk.rec.cycling.moderated/event.log
-50 7  12 * *   savelog live/errs
diff --git a/crontab.part.INO b/crontab.part.INO
new file mode 100644 (file)
index 0000000..4704cd1
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# install with
+#  ssh webstump@chiark live/crontab-install
+#
+#m h  d m dow
+50 7  12 * *   savelog live-%ABBREV%/xlog/log/%GROUP%/event.log
+50 7  12 * *   savelog live-%ABBREV%/errs
diff --git a/install-aggregates b/install-aggregates
new file mode 100755 (executable)
index 0000000..10e2e6d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -e
+
+basedir=`dirname "$0"`
+case "$basedir" in
+.|..)          basedir="$basedir/.."           ;;
+*)             basedir=`dirname "$basedir"`    ;;
+esac
+cd $basedir
+
+for f in       crontab forward-suffix forward-slimy
+do
+       d=$f
+       g=$f.combined
+       >$g
+
+       case $f in
+       forward-*)      d=.$d; echo '# Exim filter' >>$g ;;
+       esac
+
+       echo '# autogenerated - do not edit' >>$g
+       if test -f $f.part; then cat $f.part >>$g; fi
+       cat live-*/$f.part >>$g
+
+       mv -f $g $d
+       case $f in
+       crontab)        crontab crontab ;;
+       esac
+done
diff --git a/install-key b/install-key
new file mode 100755 (executable)
index 0000000..feee4cc
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+
+fail () { echo >&2 "fatal: $*"; exit 1; }
+
+. settings
+
+armorout=stump/etc/approval.key.txt
+if test -f $armorout; then exit 0; fi
+
+if [ x"`whoami`" != xwebstump ]; then fail "wrong user"; fi
+
+gpg --batch --gen-key - <<END
+%echo Generating key...
+Key-Type: RSA
+Key-Length: 2048
+Key-Usage: sign
+Name-Real: $GROUP approval key
+Name-Email: $MODEMAIL
+%commit
+%echo Key generated.
+END
+
+gpg --export --armor "$GROUP approval key <$MODEMAIL>" >$armorout
diff --git a/install-substitutions b/install-substitutions
new file mode 100755 (executable)
index 0000000..b0349fa
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -e
+. settings
+export GROUP
+export ABBREV
+export INFOHEADER
+find -name '*.IN[O1]' -exec perl -e '
+       use IO::Handle;
+       use POSIX;
+       my $f= shift;
+       my $d= $f;
+       $d =~ s/\.IN([O1])$//;
+       my $overwrite= ($1 eq 'O');
+       my $g= "$d.new";
+       open F, "< $f" or die "$f $!";
+       open G, "> $g" or die "$g $!";
+       while (<F>) {
+               s/\%(\w+)\%/ 
+                       exists($ENV{$1}) ? $ENV{$1} : die "$1 ?"
+                /ge;
+               print G or die $!;
+       }
+       F->error and die $!;
+       close F or die $!;
+       close G or die $!;
+       if ($overwrite) {
+               rename $g, $d or die "$g $d $!";
+       } else {
+               if (link $g, $d) {
+                       unlink $g or die $!;
+               } else {
+                       die "$g $d $!" unless $!==&EEXIST;
+               }
+       }
+' '{}' \;
diff --git a/setup b/setup
new file mode 100755 (executable)
index 0000000..980a5a5
--- /dev/null
+++ b/setup
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -e
+# To set up a new newsgroup, run this script.
+#
+# Some things are idempotent, others are once-only.
+
+./install-key
+./install-substitutions
+./install-aggregates
diff --git a/stump/etc/added-footer.IN1 b/stump/etc/added-footer.IN1
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/stump/etc/added-headers.INO b/stump/etc/added-headers.INO
new file mode 100644 (file)
index 0000000..afe9a1c
--- /dev/null
@@ -0,0 +1 @@
+X-Moderation: %INFOHEADER%
diff --git a/stump/etc/hostname.REPLACEMENT b/stump/etc/hostname.REPLACEMENT
deleted file mode 100755 (executable)
index 820d4a2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-#
-# This is a shell script that replaces "hostname" on bsd-derived systems
-# where inews conflicts with system-provided "hostname" program.
-#
-# This is a drop-in replacement for hostname.
-#
-# Edit this file and set HOSTNAME and FULL_HOSTNAME to the right values,
-# according to your machine's system name.
-#
-# Read instructions in "modenv" file (close to RNEWS) where I explain when
-# you should use this script, and how.
-#
-# Example: 
-# HOSTNAME=galaxy
-# FULL_HOSTNAME=galaxy.galstar.com
-
-HOSTNAME=manifold
-FULL_HOSTNAME=manifold.algebra.com
-
-if [ "x$1" = "-f" ] ; then
-  echo $HOSTNAME
-else
-  echo $FULL_HOSTNAME
-fi