monotone-setup.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/sh
  2. ##
  3. ## monotone-setup.sh -- Monotone server setup
  4. ##
  5. # minimum command line argument handling
  6. if [ $# -eq 0 ]; then
  7. echo "Usage: $0 install [<server-mail-address> [<server-password>]]"
  8. echo "Usage: $0 uninstall"
  9. exit 1
  10. fi
  11. cmd="$1"
  12. shift
  13. # dispatch command
  14. case "$cmd" in
  15. install )
  16. # determine server address
  17. server_address="$1"
  18. if [ ".$server_address" = . ]; then
  19. server_address=`@l_shtool@ echo -e "mtn-serve@%h%d"`
  20. fi
  21. echo "++ server address: \"$server_address\""
  22. # determine server key password
  23. server_password="$2"
  24. if [ ".$server_password" = . ]; then
  25. server_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`"
  26. fi
  27. echo "++ server password: \"$server_password\""
  28. # generate database
  29. echo "++ generating database \"@l_prefix@/var/monotone/monotone.db\""
  30. @l_prefix@/bin/mtn \
  31. db init --db="@l_prefix@/var/monotone/monotone.db"
  32. chown @l_rusr@:@l_rgrp@ @l_prefix@/var/monotone/monotone.db
  33. chmod 664 @l_prefix@/var/monotone/monotone.db
  34. # generate server key
  35. echo "++ generating server key \"@l_prefix@/etc/monotone/monotone-server/keys/$server_address\""
  36. mkdir @l_prefix@/etc/monotone/monotone-server 2>&1 || true
  37. mkdir @l_prefix@/etc/monotone/monotone-server/keys 2>&1 || true
  38. chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/keys
  39. chmod 775 @l_prefix@/etc/monotone/monotone-server/keys
  40. ( echo "$server_password"
  41. echo "$server_password"
  42. ) | @l_prefix@/bin/mtn \
  43. --keydir="@l_prefix@/etc/monotone/monotone-server/keys/" \
  44. genkey "$server_address" >/dev/null 2>&1
  45. chown @l_rusr@:@l_rgrp@ "@l_prefix@/etc/monotone/monotone-server/keys/$server_address"
  46. chmod 664 "@l_prefix@/etc/monotone/monotone-server/keys/$server_address"
  47. # setting up ACLs
  48. echo "++ setting up server ACLs \"@l_prefix@/etc/monotone/monotone-server/{read,write}-permissions\""
  49. ( echo "comment \"provide read access to everyone except anonymous/nil\""
  50. echo "pattern \"*\""
  51. echo "deny \"nil\""
  52. echo "allow \"*\""
  53. ) >@l_prefix@/etc/monotone/monotone-server/read-permissions
  54. ( echo "*"
  55. ) >@l_prefix@/etc/monotone/monotone-server/write-permissions
  56. chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/read-permissions
  57. chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/write-permissions
  58. chmod 600 @l_prefix@/etc/monotone/monotone-server/read-permissions
  59. chmod 600 @l_prefix@/etc/monotone/monotone-server/write-permissions
  60. # setting up configuration script
  61. echo "++ setting up server configuration script \"@l_prefix@/etc/monotone/monotone-server/monotonerc\""
  62. ( echo "function get_passphrase(keypair_id)"
  63. echo " return \"$server_password\""
  64. echo "end"
  65. ) >@l_prefix@/etc/monotone/monotone-server/monotonerc
  66. chown @l_rusr@:@l_rgrp@ @l_prefix@/etc/monotone/monotone-server/monotonerc
  67. chmod 600 @l_prefix@/etc/monotone/monotone-server/monotonerc
  68. ;;
  69. uninstall )
  70. # remove server and database related files
  71. echo "++ removing server and database related files"
  72. rm -f @l_prefix@/etc/monotone/monotone-server/monotonerc 2>&1 || true
  73. rm -f @l_prefix@/etc/monotone/monotone-server/read-permissions 2>&1 || true
  74. rm -f @l_prefix@/etc/monotone/monotone-server/write-permissions 2>&1 || true
  75. rm -f @l_prefix@/etc/monotone/monotone-server/keys/* 2>&1 || true
  76. rmdir @l_prefix@/etc/monotone/monotone-server/keys 2>&1 || true
  77. rmdir @l_prefix@/etc/monotone/monotone-server 2>&1 || true
  78. rm -f @l_prefix@/var/monotone/monotone.db 2>&1 || true
  79. ;;
  80. esac