You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
3.8 KiB

#!/bin/sh
##
## monotone-setup.sh -- Monotone server setup
##
# minimum command line argument handling
if [ $# -eq 0 ]; then
echo "Usage: $0 install [<server-mail-address> [<server-password>]]"
echo "Usage: $0 uninstall"
exit 1
fi
cmd="$1"
shift
# dispatch command
case "$cmd" in
install )
# determine server address
server_address="$1"
if [ ".$server_address" = . ]; then
server_address=`@l_shtool@ echo -e "mtn-serve@%h%d"`
fi
echo "++ server address: \"$server_address\""
# determine server key password
server_password="$2"
if [ ".$server_password" = . ]; then
server_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`"
fi
echo "++ server password: \"$server_password\""
# generate database
echo "++ generating database \"@l_prefix@/var/monotone/monotone.db\""
@l_prefix@/bin/mtn \
db init --db="@l_prefix@/var/monotone/monotone.db"
chown @l_rusr@:@l_rgrp@ @l_prefix@/var/monotone/monotone.db
chmod 664 @l_prefix@/var/monotone/monotone.db
# generate server key
echo "++ generating server key \"@l_prefix@/etc/monotone/monotone-server/keys/$server_address\""
mkdir @l_prefix@/etc/monotone/monotone-server 2>&1 || true
mkdir @l_prefix@/etc/monotone/monotone-server/keys 2>&1 || true
chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/keys
chmod 775 @l_prefix@/etc/monotone/monotone-server/keys
( echo "$server_password"
echo "$server_password"
) | @l_prefix@/bin/mtn \
--keydir="@l_prefix@/etc/monotone/monotone-server/keys/" \
genkey "$server_address" >/dev/null 2>&1
chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/keys/$server_address.*
chmod 664 @l_prefix@/etc/monotone/monotone-server/keys/$server_address.*
# setting up ACLs
echo "++ setting up server ACLs \"@l_prefix@/etc/monotone/monotone-server/{read,write}-permissions\""
( echo "comment \"provide read access to everyone except anonymous/nil\""
echo "pattern \"*\""
echo "deny \"nil\""
echo "allow \"*\""
) >@l_prefix@/etc/monotone/monotone-server/read-permissions
( echo "*"
) >@l_prefix@/etc/monotone/monotone-server/write-permissions
chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/read-permissions
chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/write-permissions
chmod 600 @l_prefix@/etc/monotone/monotone-server/read-permissions
chmod 600 @l_prefix@/etc/monotone/monotone-server/write-permissions
# setting up configuration script
echo "++ setting up server configuration script \"@l_prefix@/etc/monotone/monotone-server/monotonerc\""
( echo "function get_passphrase(keypair_id)"
echo " return \"$server_password\""
echo "end"
) >@l_prefix@/etc/monotone/monotone-server/monotonerc
chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/monotonerc
chmod 600 @l_prefix@/etc/monotone/monotone-server/monotonerc
;;
uninstall )
# remove server and database related files
echo "++ removing server and database related files"
rm -f @l_prefix@/etc/monotone/monotone-server/monotonerc 2>&1 || true
rm -f @l_prefix@/etc/monotone/monotone-server/read-permissions 2>&1 || true
rm -f @l_prefix@/etc/monotone/monotone-server/write-permissions 2>&1 || true
rm -f @l_prefix@/etc/monotone/monotone-server/keys/* 2>&1 || true
rmdir @l_prefix@/etc/monotone/monotone-server/keys 2>&1 || true
rmdir @l_prefix@/etc/monotone/monotone-server 2>&1 || true
rm -f @l_prefix@/var/monotone/monotone.db 2>&1 || true
;;
esac