From: Ian Kelling Date: Fri, 28 Nov 2025 10:03:22 +0000 (-0500) Subject: fix transmission-daemon X-Git-Url: https://iankelling.org/git/?a=commitdiff_plain;h=e03fc8b862b361c66394ffb3a5ba31c9ce3a0a24;p=distro-setup fix transmission-daemon --- diff --git a/distro-end b/distro-end index c0dbfdd..38d74ad 100755 --- a/distro-end +++ b/distro-end @@ -1430,18 +1430,46 @@ ser stop transmission-daemon # not worth separating out. # between comps, the uid can change -f=$tdir/transmission-daemon -for d in $tdir/partial-torrents $tdir/torrents $f; do +tconf_dir=$tdir/.config/transmission-daemon + +case $HOSTNAME in + $d_host) + # to persist upload/dl metadata. initially, moved all the stuff + # in /var/lib/transmission-daemon to /d/tor + + transmission_home=$(eval echo ~debian-transmission) + if [[ $transmission_home != /d/tor ]]; then + if ser is-active transmission-daemon-nn &>/dev/null; then + ser stop transmission-daemon-nn + fi + s usermod --home /d/tor debian-transmission + fi + ;; + *) + # set to the default + s usermod --home /var/lib/transmission-daemon debian-transmission + s lnf -T $tconf_dir /var/lib/transmission-daemon/.config/transmission-daemon + sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon + ;; +esac + +for d in $tdir/partial-torrents $tdir/torrents $tconf_dir; do if [[ ! -d $d ]]; then sudo mkdir -p $d fi sudo chown -R debian-transmission:user2 $d done -s lnf -T $f /var/lib/transmission-daemon/.config/transmission-daemon -s lnf -T /etc/transmission-daemon/settings.json $f/settings.json -sudo chown -R debian-transmission:debian-transmission $f -sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon -# + +# /etc/transmission-daemon/README.json: +#Currently transmission overwrites the settings.json configuration file +# on exit. The daemon can be instructed to reload the config with a SIGHUP, +# or +# # invoke-rc.d transmission-daemon reload + +# Otherwise changes made manually to the file while the daemon is running +# will be silently overwritten on exit. +### end + # config file documented here, and it\'s the same config # for daemon vs non-daemon, so it\'s documented in the gui. # https://trac.transmissionbt.com/wiki/EditConfigFiles#Options @@ -1454,11 +1482,14 @@ sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daem # It is a read & write cache. # # just fyi: default rpc port is 9091 -d_host_suffix=$(awk '$2 == "'$d_host'" {print $1}' /p/c/host-info) -u ~/.config/transmission-daemon-iank.rb < '', 'rpc-whitelist-enabled' => false, 'rpc-host-whitelist-enabled' => false, 'rpc-authentication-required' => true, @@ -1472,54 +1503,44 @@ s = { "cache-size-mb" => 256, "ratio-limit" => 5.0, "ratio-limit-enabled" => false, + "rpc-username" => "transmission", + "rpc-url" => "/transmission/", "umask" => "002", $(if [[ -e /p/transmission-rpc-pass ]]; then echo '"rpc-password" => File.read("/p/transmission-rpc-pass").chomp,'; fi) } puts(JSON.pretty_generate(JSON.parse(File.read(p)).merge(s))) EOF -# shellcheck disable=SC2154 # false positive -if $ur || ! sudo test -s /etc/transmission-daemon/settings.json; then - restart_ser=false - ser=transmission-daemon-nn - if ser is-active $ser &>/dev/null; then - m ser stop $ser - restart_ser=true - fi + tmpf=$(mktemp) # shellcheck disable=SC2024 # false positive - if sudo ruby <~/.config/transmission-daemon-iank.rb >$tmpf; then - sudo dd of=/etc/transmission-daemon/settings.json <$tmpf - else + if ! sudo ruby <~/.config/transmission-daemon-iank.rb >$tmpf; then echo "iank ruby transmission error" >&2 - exit 1 + return 1 fi - if $restart_ser; then - m ser start $ser - fi -fi -####### end transmission + # shellcheck disable=SC2154 # false positive + if ! sudo diff -q $tmpf $tconf_dir/settings.json &>/dev/null; then + restart_ser=false + ser=transmission-daemon-nn + if ser is-active $ser &>/dev/null; then + m ser stop $ser + restart_ser=true + fi + sudo dd of=$tconf_dir/settings.json <$tmpf 2>/dev/null + if $restart_ser; then + m ser start $ser + fi + fi +} +tr-config-daemon case $HOSTNAME in $d_host) - # to persist upload/dl metadata. initially, moved all the stuff - # in /var/lib/transmission-daemon to /d/tor - - transmission_home=$(eval echo ~debian-transmission) - if [[ $transmission_home != /d/tor ]]; then - if ser is-active transmission-daemon-nn &>/dev/null; then - ser stop transmission-daemon-nn - fi - s usermod --home /d/tor debian-transmission - fi sgo transmission-daemon-nn - ;; - *) - # set to the default - s usermod --home /var/lib/transmission-daemon debian-transmission - ;; -esac +;; + esac +####### end transmission ######### begin transmission client setup ###### diff --git a/filesystem/etc/systemd/system/transmission-daemon-nn.service b/filesystem/etc/systemd/system/transmission-daemon-nn.service index 1215470..11f649b 100644 --- a/filesystem/etc/systemd/system/transmission-daemon-nn.service +++ b/filesystem/etc/systemd/system/transmission-daemon-nn.service @@ -13,6 +13,8 @@ User=debian-transmission Type=simple ExecStartPre=+/usr/local/bin/joins-namespace-of-check -p system-openvpn\\x2dclient\\x2dtr.slice openvpn-client-tr@client ExecStart=/usr/bin/transmission-daemon -f --log-level=error +# for debugging. +#ExecStart=/usr/bin/transmission-daemon -f --log-level=debug ExecReload=/bin/kill -s HUP $MAINPID PrivateNetwork=true Nice=19 diff --git a/filesystem/usr/local/bin/joins-namespace-of-check b/filesystem/usr/local/bin/joins-namespace-of-check index 6949004..a105423 100755 --- a/filesystem/usr/local/bin/joins-namespace-of-check +++ b/filesystem/usr/local/bin/joins-namespace-of-check @@ -53,10 +53,8 @@ fi sleep 1 unit="$1" -procsf="$slice_dir"/$unit.service/cgroup.procs -if [[ -s $procsf ]]; then - pid=$(head -n1 $procsf) -else +procsf="$slice_dir/$unit.service/cgroup.procs" +if ! pid=$(head -n1 $procsf); then echo "error: no pid in $procsf. is the service running?" exit 1 fi