X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=conflink;h=da04cb9a93a55959b9dadd02febbfcbd1715f531;hb=HEAD;hp=03c58408443153340df5557c75a221962c512975;hpb=7fe1df9789fd03b11c9572898b6286221e7db12f;p=distro-setup diff --git a/conflink b/conflink index 03c5840..da04cb9 100755 --- a/conflink +++ b/conflink @@ -1,6 +1,27 @@ #!/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. -source /a/bin/errhandle/err +# 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. + + +source /a/bin/bash-bear-trap/bash-bear err-cleanup() { echo 1 >~/.local/conflink } @@ -94,7 +115,7 @@ subdir-link-r() { local fullpath fullpath="$(readlink -f "$path")" if [[ -f $path || $(dirname "$fullpath") == "$below" ]]; then - m lnf -T "$path" "$HOME/${path#$root/}" + m lnf -T "$path" "$HOME/${path#"$root/"}" elif [[ -d "$path" ]]; then subdir-link-r "$root" "$path" fi @@ -114,7 +135,8 @@ common-file-setup() { # we dont want t, instead c for checksum. # That way we dont set times on directories. # -a = -rlptgoD - cmd=( s rsync -rclpgoDiSAX --chmod=Dg-s --chown=root:root + # -A is acls, implies -p + cmd=( s rsync -rclgoDiSAX --chmod=Dg-s --chown=root:root --exclude=/etc/dovecot/users --exclude='/etc/exim4/passwd*' --exclude='/etc/exim4/*.pem' @@ -222,6 +244,7 @@ case $user in m s chgrp -R bind $f m s chmod g+w $f fi + # shellcheck disable=SC2016 # obviously expected s 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/caldav-htpasswd ]] && getent group www-data &>/dev/null; then s chgrp www-data /etc/caldav-htpasswd @@ -231,23 +254,22 @@ case $user in fi if [[ -e /p/c/user-specific ]]; then if getent passwd prometheus &>/dev/null; then - s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:prometheus /p/c/user-specific/prometheus/prometheus-pass /etc + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:prometheus /p/c/user-specific/prometheus/prometheus-pass /etc + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:prometheus /p/c/user-specific/prometheus/prometheus/ssl/* /etc/prometheus/ssl fi if getent passwd www-data &>/dev/null; then - s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:www-data /p/c/user-specific/www-data/* /etc - fi - fi - f=/etc/nagios4/htdigest.users - if [[ -e $f ]]; then - if getent passwd nagios &>/dev/null; then - s chown nagios:www-data $f + v s rsync -clpgoDiSAX --chmod=Dg-s --chown=root:www-data /p/c/user-specific/www-data/* /etc fi fi - if [[ -d /var/lib/bitcoind ]]; then + if [[ -d /var/lib/bitcoind && -d /p/c/user-specific/bitcoin ]]; then s rsync -clpgoDiSAX --chmod=Dg-s --chown=bitcoin:bitcoin /p/c/user-specific/bitcoin/settings.json /var/lib/bitcoind s rsync -rclpgoDiSAX --chmod=Dg-s --chown=root:bitcoin /p/c/user-specific/bitcoin/bitcoin /etc fi + # this folder strangely requires ownership as icecast2 + if [[ -d /etc/icecast2 && -f /p/c/icecast.xml ]]; then + m s rsync -rclgoDiSAX --chmod=0644 --chown=root:root /p/c/icecast.xml /etc/icecast2 + fi ##### end special extra stuff ##### if ! $fast; then