-case $USER in
- ian)
- # p needs to go first so .ssh link is created, then config link inside it
- for dir in {/a/c,/p/c}{,/machine_specific/$HOSTNAME}; do
- common-file-setup $dir
- done
- sudo -u traci "$BASH_SOURCE"
- ;;
- traci)
- for dir in /a/c{,/machine_specific/$HOSTNAME}; do
- common-file-setup $dir
- done
- ;;
- *)
- echo "$0: error: run as ian or traci"
- exit 1
- ;;
+user=$(id -un)
+all_dirs=({/a/bin/ds,/p/c}{,/machine_specific/$HOSTNAME})
+# note, we assume a group of hosts does not have the
+# same name as a single host, which is no problem on our scale.
+for x in /p/c/machine_specific/*.hosts /a/bin/ds/machine_specific/*.hosts; do
+ if grep -qxF $HOSTNAME $x; then all_dirs+=( ${x%.hosts} ); fi
+done
+
+c_dirs=(/a/c{,/machine_specific/$HOSTNAME})
+case $user in
+ iank)
+ files=(/p/c/machine_specific/*/filesystem/etc/ssh/*_key
+ /p/c/filesystem/etc/openvpn/client/*.key
+ /p/c/filesystem/etc/openvpn/easy-rsa/keys/*.key
+ /p/c/machine_specific/kw/filesystem/etc/openvpn/client/*.key
+ )
+ if [[ -e ${files[0]} ]]; then
+ chmod 600 ${files[@]}
+ fi
+ # p needs to go first so .ssh link is created, then config link inside it
+ m common-file-setup ${all_dirs[@]}
+
+ #### begin special extra stuff ####
+ install -d -m700 ~/gpg-agent-socket
+
+ f=/var/lib/bind
+ if [[ -e $f ]]; then
+ # reset to the original permissions.
+ m s chgrp -R bind $f
+ m s chmod g+w $f
+ fi
+ sudo bash -c 'shopt -s nullglob; for f in /etc/bind/*.key /etc/bind/*.private /etc/bind/key.*; do chgrp bind $f; done'
+ if [[ -e /etc/davpass ]] && getent group www-data &>/dev/null; then
+ s chgrp www-data /etc/davpass
+ fi
+ if [[ -e /var/lib/znc ]] && getent group znc; then
+ s chown -R znc:znc /var/lib/znc
+ fi
+ /a/exe/lnf -T /p/arbtt-capture.log ~/.arbtt/capture.log
+ f=/etc/prometheus-htpasswd
+ if [[ -e $f ]]; then
+ s chmod 640 $f /etc/prometheus-pass
+ s chown root:www-data $f
+ if getent passwd prometheus; then
+ s chown root:prometheus /etc/prometheus-pass
+ fi
+ fi
+
+ ##### end special extra stuff #####
+
+ if [[ -e /etc/openvpn ]]; then
+ sudo bash -c 'shopt -s nullglob && cd /etc/openvpn && for f in client/* server/*; do ln -sf $f .; done'
+ fi
+
+ m sudo -H -u user2 "${BASH_SOURCE[0]}"
+
+ f=/a/bin/distro-setup/system-status
+ if [[ -x $f ]]; then
+ $f _
+ fi
+ echo 0 >~/.local/conflink
+
+ ;;
+ user2)
+ m common-file-setup ${c_dirs[@]}
+ ;;
+ *)
+ echo "$0: error: unexpected user"; exit 1
+ ;;