#!/bin/bash # I, Ian Kelling, follow the GNU license recommendations at # https://www.gnu.org/licenses/license-recommendations.en.html. They # recommend that small programs, < 300 lines, be licensed under the # Apache License 2.0. This file contains or is part of one or more small # programs. If a small program grows beyond 300 lines, I plan to switch # its license to GPL. # Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # We setup kd as a server which runs profanity, because profanity # contains important state which it does not save to disk: the most # recent read message in each chat room and for private messages. # To do this, uses data directories in /d/p. # However, if we need to take kd down for maintenance, we can run # profanity on HOST2 with data directory in /p. To do this, stop # profanity, run prof-backup, and then systemctl start profanity from # HOST2, and then run prof. To connect from other machines, run prof # HOST2_SSH_NAME. To have the profanity service stopped and started with # switch-mail-host, do touch /p/profanity-here. To do the reverse, # # systemctl stop profanity # rsync /p/profanity{,-config} kdwg.b8.nz:/d/p # ssh root@kdwg.b8.nz systemctl --now enable profanity if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi source /a/bin/bash-bear-trap/bash-bear source /a/bin/bash_unpublished/source-state if [[ ! $HOSTNAME ]]; then HOSTNAME=$(cat /etc/hostname) fi if [[ $HOSTNAME != "$HOST2" ]]; then exit 0 fi case $HOSTNAME in kd) if systemctl --quiet is-active profanity; then rsync /d/p/profanity{,-config} /p fi ;; *) if ssh iank@b8.nz systemctl --user --quiet is-active profanity; then rsync -a b8.nz:/d/p/profanity{,-config} /p fi ;; esac