mainly minor fixes
authorIan Kelling <ian@iankelling.org>
Thu, 13 Jun 2024 22:59:26 +0000 (18:59 -0400)
committerIan Kelling <ian@iankelling.org>
Thu, 13 Jun 2024 22:59:26 +0000 (18:59 -0400)
13 files changed:
brc2
btrbk-run
btrfsmaint
dynamic-ip-update
epanic-clean
ffs
i3-abrowser
i3-konsole
i3-sway/common.conf
keyscript-on
mail-setup
mailtest-check
myi3status

diff --git a/brc2 b/brc2
index ff0d7a8c97f38dedbbd3d284df7553cef5fe3b18..3b1d5ba270298d0329926c20719c38b5141f7c76 100644 (file)
--- a/brc2
+++ b/brc2
@@ -4854,19 +4854,24 @@ klease() {
 }
 
 # ffs and switch the bash history on this terminal.
-ffs() {
-  local last
-  last="${*: -1}"
-  if [[ $last && $last != -* && $last != sysops ]]; then
-    his
-  fi
-  command ffs "$@"
-}
+# disabled because I don't really need this and
+# the history switching is annoying for debugging.
+#
+# ffs() {
+#   local last
+#   last="${*: -1}"
+#   if [[ $last && $last != -* && $last != sysops ]]; then
+#     his
+#   fi
+#   command ffs "$@"
+# }
 
 i3gen() {
   /b/ds/i3-sway/gen
 }
 
+
+
 export BASEFILE_DIR=/a/bin/fai-basefiles
 
 #export ANDROID_HOME=/a/opt/android-home
index fc096579f95dd8620782ff4e7dfcf7ecb4d84506..0cdc6256294d97a6fe6e4228f216975b961785dc 100644 (file)
--- a/btrbk-run
+++ b/btrbk-run
@@ -194,8 +194,8 @@ dry_run=false # mostly for testing
 rate_limit=no
 verbose=true; verbose_arg="-l trace"
 force=false
-if [[ $INVOCATION_ID ]]; then
-  # INVOCATION_ID means running as a systemd service. we cant show progress in this case,
+if [[ $PPID == 1 ]]; then
+  # running as a service. we cant show progress in this case,
   # but if we pass the arg, it will insert mbuffer into the command.
   progress_arg=
 else
index f50f5494e2aba068fb68aa2bd51f748b87d358a7..3eb4759ad104029c54613c754a2980116ae95812 100755 (executable)
@@ -29,7 +29,7 @@ set -e; . /usr/local/lib/bash-bear; set +e
 # inspired from
 # https://github.com/kdave/btrfsmaintenance
 
-if [[ $INVOCATION_ID ]]; then
+if [[ $PPID == 1 ]]; then
   err-cleanup() {
     exim -odf -i root <<EOF
 From: root@$(hostname -f)
index 44d9ffe40fadd925aa262b9247aa24f1195e3edb..3d36363bcfe3cce4e60aa2c1e4ff804d9f9eaad8 100755 (executable)
@@ -76,7 +76,7 @@ main() {
 
   if ! tmp=$(ip -4 route get 85.119.83.50 2>/dev/null); then
     # our internet is down
-    if [[ $INVOCATION_ID ]]; then
+    if [[ $PPID == 1 ]]; then
       return 0
     else
       echo $0: failed to get route, giving up
@@ -121,7 +121,7 @@ main() {
 
   if $athome; then
     if ! cur4="$(dig +short $dyndomain @iankelling.org | tail -1)"; then
-      if [[ ! $INVOCATION_ID ]]; then
+      if [[ $PPID != 1 ]]; then
         echo "$0: dig failed. internet looks down. giving up"
       fi
       return 0
@@ -224,7 +224,7 @@ loop-main() {
 }
 
 nsupdate_fails=0
-if [[ $INVOCATION_ID ]]; then
+if [[ $PPID == 1 ]]; then
   nsupdate_fail_limit=10
   loop-main
 else
index c9739ba6d8474516e2c71fd1237f3665cb5527dc..f6328c2b41a26bd27624098d013f872b307c68d6 100755 (executable)
@@ -202,7 +202,7 @@ if [[ ! -w $pl-archive ]]; then
   chmod 664 $pl-archive
 fi
 
-if [[ $INVOCATION_ID ]]; then
+if [[ $PPID == 1 ]]; then
   loop-main
 else
   main
diff --git a/ffs b/ffs
index 4ffb0a0f6e184b23acba9108e1821247c7498b69..fe42908750b636051efe1ba9d2393b89d95f94e3 100755 (executable)
--- a/ffs
+++ b/ffs
@@ -37,14 +37,16 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${P
 
 usage() {
   cat <<EOF
-Usage: ${0##*/} [OPTIONS] [sysops|tech|staff]
-3 mountpoints: fsf-sysops (default, public), fsf (all staff), fsf-tech (tech team)
+Usage: ${0##*/} [OPTIONS] [sysops|tech|staff|test]
+
+arg is icecast mountpoint suffix, except staff removes suffix.
 
 -d    debug.
 -r RESOLUTION_TYPE
    full: full screen even high resolution.
    tall (default): half screen.
    quarter: self evident
+-l   loud/listen. Start unmuted. Usually for testing.
 -u    Undelayed. Removes 5 second video delay, and about 4 second audio delay.
 -w    do not launch watch of stream
 
@@ -70,9 +72,10 @@ debug=false
 delay=true
 loglevel=fatal
 watch=true
+volume=0
 fullscreen=false
 tall=true
-temp=$(getopt -l help hdr:uw "$@") || usage 1
+temp=$(getopt -l help hdlr:uw "$@") || usage 1
 eval set -- "$temp"
 while true; do
   case $1 in
@@ -82,6 +85,9 @@ while true; do
       loglevel=info
       ffp_args+=(-d)
       ;;
+    -l)
+      volume=1
+      ;;
     -r)
       case $2 in
         tall)
@@ -113,17 +119,24 @@ while true; do
 done
 
 mount_suffix=-sysops
-case $1 in
-  sysops|tech)
-    mount_suffix=-$1
-    ;;&
-  tech)
-    delay=false
-    ;;
-  staff)
-    mount_suffix=
-    ;;
-esac
+if [[ $1 ]]; then
+  case $1 in
+    sysops|tech)
+      mount_suffix=-$1
+      ;;&
+    tech)
+      delay=false
+      ;;
+    staff)
+      mount_suffix=
+      ;;
+    *)
+      echo "error: unexpected \$1: $1" >&2
+      exit 1
+      ;;
+  esac
+  ffp_args+=($1)
+fi
 
 if $delay; then
   # 2500 gets us around a 4 second delay, up from 1.5s.
@@ -230,7 +243,7 @@ opts=(
   #
   # man page say zmq url default includes "localhost", but specifying a
   # localhost url caused an error for me.
-  -filter_complex "[0]azmq,volume=precision=fixed: volume=0 [vol0];
+  -filter_complex "[0]azmq,volume=precision=fixed: volume=$volume [vol0];
 [1]azmq='b=tcp\://127.0.0.1\:5556',volume=precision=fixed: volume=0 [vol1];
 [vol0][vol1] amerge=inputs=2;
 [2]zmq='b=tcp\://127.0.0.1\:5557',drawbox=color=0x262626,drawtext=fontsize=90: fontcolor=beige: x=40: y=40: text=''${delay_arg}[out]"
@@ -333,7 +346,7 @@ if [[ $mount_suffix == -sysops ]]; then
   touch $HOME/.iank-stream-on
 fi
 
-echo true >$HOME/.iank-stream-muted
+echo $volume >$HOME/.iank-stream-muted
 
 ffmpeg "${opts[@]}" &
 if $watch; then
index eb2d47c5fc3112936ea50ef5216357968112ab86..55246ee91cce6cf9dcd4e7747a5aa33f130ea70c 100755 (executable)
@@ -50,6 +50,6 @@ else
   abrowser &
   # on a fast computer, .5 is too fast, 1 is ok. on x200, 1 is too fast, 2 is ok.
   sleep 2
-  i3-msg "[workspace=__focused__ class=\"$b\"] mark abrowser"
+  i3-msg "[workspace=__focused__ class=\"$b\" instance=\"Navigator\" window_role=\"browser\"] mark abrowser"
   wait
 fi
index c4b5182f04a89aabe6a06eeac4264783c26a9c40..9aa27d5003e526b5ef5e458f127d1869319702e4 100755 (executable)
@@ -39,7 +39,8 @@ if i3-msg -t get_tree | jq --stream -r 'select(.[1]|scalars!=null) | "\(.[0]|joi
   fi
 else
   i3-split-maybe
-  konsole
+  konsole &
   sleep 1
   i3-msg "[workspace=__focused__ class=\"konsole\"] mark term"
+  wait
 fi
index d0ce9737bfe36f6ad506e0f26a7d8b737ea0a000..fe09e67136c7af6f6c8a53fe643a111c3ebac598 100644 (file)
@@ -64,8 +64,7 @@ bindsym $mod+e $ex "/a/exe/i3-emacs"
 bindsym $mod+r $ex "/a/bin/ds/xl"
 
 bindsym $mod+t $ex "i3-set-layout splitv"
-#bindsym $mod+Shift+t move workspace to output up
-bindsym $mod+Shift+t move workspace to output BIG-RIGHT eDP-1
+bindsym $mod+Shift+t move workspace to output BIG-RIGHT primary
 
 bindsym $mod+g $ex "i3-set-layout tabbed"
 
@@ -187,6 +186,8 @@ bindsym $mod+shift+semicolon $ex /b/ds/stream-clip sad
 bindsym XF86MonBrightnessUp $ex brightnessctl s +5%
 bindsym XF86MonBrightnessDown $ex brightnessctl s 5%-
 for_window [class="copyq" instance="copyq" window_type="normal"] floating enable
+# eh, dont really like web page titles + a long browser name string.
+for_window [class="firefox" instance="Navigator" window_role="browser"] title_format "b"
 bindsym $mod+y $ex copyq-restart
 
 # Font for window titles. Will also be used by the bar unless a different font
index b86dd39791afe18210991cb31c2d6f2dfd076fec..ef8f3e19f7f2fb0d89faea07b28c44656b55c2e7 100755 (executable)
@@ -41,7 +41,7 @@ sed="sed --follow-symlinks"
 # /sbin/update-initramfs: 157: mkinitramfs: not found
 PATH="/sbin:$PATH"
 
-if [[ $INVOCATION_ID ]]; then
+if [[ $PPID == 1 ]]; then
   if [[ -e /b/bash_unpublished/source-state ]]; then
     # this is the canonical one
     source /b/bash_unpublished/source-state
index f5553d3e36a6f557d7d55b5a8ce9d85ca774f8fb..d19fba0306f2317068ab9c8efed4a99f7801e4d5 100755 (executable)
@@ -3883,6 +3883,131 @@ fi
 #   err debbugs exist but is not uid 610: investigate
 # fi
 
+# * mail monitoring / testing
+
+# note, to test clamav, send an email with body that only contains
+# https://en.wikipedia.org/wiki/EICAR_test_file
+# which set malware_name to Eicar-Signature
+case $HOSTNAME in
+  $MAIL_HOST|bk|je)
+    # note: cronjob "ian" also does some important monitoring
+    # todo: this will sometimes cause an alert because mailtest-check will run
+    # before we have setup network namespace and spamassassin
+    u /etc/cron.d/mailtest <<EOF
+SHELL=/bin/bash
+PATH=/usr/bin:/bin:/usr/local/bin
+MAILTO=daylert@iankelling.org
+*/5  * * * *   $u send-test-forward |& log-once send-test-forward
+*/10 * * * *   root chmod -R g+rw /m/md/bounces |& log-once -1 bounces-chmod
+# if a bounce happened yesterday, dont let it slip through the cracks
+8   1 * * *   root export MAILTO=alerts@iankelling.org; [[ -s /var/log/exim4/mainlog.1 ]] && awk '\$5 == "**"' /var/log/exim4/mainlog.1
+EOF
+
+
+    m sudo rsync -ahhi --chown=root:root --chmod=0755 \
+      /b/ds/mailtest-check /b/ds/check-remote-mailqs /usr/local/bin/
+    u /etc/systemd/system/mailtest-check.service <<'EOF'
+[Unit]
+Description=mailtest-check
+After=local-fs.target
+StartLimitIntervalSec=0
+
+[Service]
+# avoid fans spinning up
+CPUQuota=22%
+Type=simple
+ExecStart=/usr/local/bin/mailtest-check slow
+Restart=always
+RestartSec=60
+
+[Install]
+WantedBy=graphical.target
+EOF
+    sysd-prom-fail-install mailtest-check
+    ;;&
+  $MAIL_HOST)
+    test_froms=(ian@iankelling.org z@zroe.org iank@gnu.org)
+    test_tos=(testignore@expertpathologyreview.com testignore@je.b8.nz testignore@amnimal.ninja jtuttle@gnu.org)
+
+    cat >>/etc/cron.d/mailtest <<EOF
+# 10 am friday
+0   10 * * 5  root echo "weekly alert. You are not in the matrix."
+2   * * * *   root check-remote-mailqs |& log-once check-remote-mailqs
+EOF
+    ;;&
+  bk)
+    test_froms=(testignore@amnimal.ninja testignore@expertpathologyreview.com)
+    test_tos=(testignore@iankelling.org testignore@je.b8.nz)
+    # We dont need to send from different addresses to the same
+    # address. this breaks down our nice elegant logic of building up
+    # froms and tos , so I just handle expertpath in a special case
+    # below and set the to: to be testignore@zroe.org.  If we did sent
+    # that way, it would also mess up our mailtest-check logic that
+    # finds which messages to check.
+    # for example: from testignore@amnimal.ninja to: testignore@iankelling.org testignore@zroe.org
+    # that would become 2 messages and we'd only check 1.
+    ;;&
+  je)
+    test_froms=(testignore@je.b8.nz)
+    test_tos=(testignore@iankelling.org testignore@zroe.org testignore@expertpathologyreview.com testignore@amnimal.ninja)
+    ;;&
+  $MAIL_HOST|bk|je)
+
+    # Dont put these test messages into the sent folder or else it will
+    # overwhelm it, plus i dont want to save a copy at all.
+    # Plus addresses we generally want to ignore.
+    u /etc/exim4/ignore-sent <<EOF
+$(printf "%s\n" ${test_tos[@]})
+vojdedIdNejyebni@b8.nz
+b@eximbackup.b8.nz
+EOF
+
+    cat >/usr/local/bin/send-test-forward <<'EOF'
+#!/bin/bash
+# we remove from the queue older than 4.3 minutes since we send every 5 minutes.
+olds=(
+$(/usr/sbin/exiqgrep -o 260 -i -r '^(testignore@(iankelling\.org|zroe\.org|expertpathologyreview\.com|amnimal\.ninja|je\.b8\.nz)|jtuttle@gnu\.org)$')
+)
+if (( ${#olds[@]} )); then
+  /usr/sbin/exim -Mrm "${olds[@]}" >/dev/null
+fi
+EOF
+    for test_from in ${test_froms[@]}; do
+
+      test_to=${test_tos[0]}
+      for t in ${test_tos[@]:1}; do
+        if [[ $test_from == *@gnu.org && $t == *@gnu.org ]]; then
+          continue
+        fi
+        test_to+=", $t"
+      done
+      case $test_from in
+        testignore@expertpathologyreview.com)
+          test_to=testignore@zroe.org
+          ;;
+      esac
+
+      cat >>/usr/local/bin/send-test-forward <<EOFOUTER
+/usr/sbin/exim -odf -f $test_from -t <<EOF
+From: $test_from
+To: $test_to
+Subject: test \$(date +%Y-%m-%dT%H:%M:%S%z) \$EPOCHSECONDS
+
+/usr/local/bin/send-test-forward
+EOF
+EOFOUTER
+    done
+    m chmod +x /usr/local/bin/send-test-forward
+    ;;
+  *)
+    soff mailtest-check.service
+    rm -fv /etc/cron.d/mailtest \
+       /var/lib/prometheus/node-exporter/mailtest-check.prom* \
+       /var/local/cron-errors/check-remote-mailqs*
+    ;;
+esac
+
+
 # * start / stop services
 
 reifactive dnsmasq nscd
@@ -3959,7 +4084,7 @@ case $HOSTNAME in
     ;;&
   $MAIL_HOST|bk|je)
     # start spamassassin/dovecot before exim.
-    sre dovecot $spamd_ser
+    sre dovecot $spamd_ser mailtest-check
     # Wait a bit before restarting exim, else I get a paniclog entry
     # like: spam acl condition: all spamd servers failed. But I'm tired
     # of waiting. I'll deal with this some other way.
@@ -4013,131 +4138,6 @@ case $HOSTNAME in
   bk) sre exim4in ;;
 esac
 
-# * mail monitoring / testing
-
-# note, to test clamav, send an email with body that only contains
-# https://en.wikipedia.org/wiki/EICAR_test_file
-# which set malware_name to Eicar-Signature
-case $HOSTNAME in
-  $MAIL_HOST|bk|je)
-    # note: cronjob "ian" also does some important monitoring
-    # todo: this will sometimes cause an alert because mailtest-check will run
-    # before we have setup network namespace and spamassassin
-    u /etc/cron.d/mailtest <<EOF
-SHELL=/bin/bash
-PATH=/usr/bin:/bin:/usr/local/bin
-MAILTO=daylert@iankelling.org
-*/5  * * * *   $u send-test-forward |& log-once send-test-forward
-*/10 * * * *   root chmod -R g+rw /m/md/bounces |& log-once -1 bounces-chmod
-# if a bounce happened yesterday, dont let it slip through the cracks
-8   1 * * *   root export MAILTO=alerts@iankelling.org; [[ -s /var/log/exim4/mainlog.1 ]] && awk '\$5 == "**"' /var/log/exim4/mainlog.1
-EOF
-
-
-    m sudo rsync -ahhi --chown=root:root --chmod=0755 \
-      /b/ds/mailtest-check /b/ds/check-remote-mailqs /usr/local/bin/
-    u /etc/systemd/system/mailtest-check.service <<'EOF'
-[Unit]
-Description=mailtest-check
-After=local-fs.target
-StartLimitIntervalSec=0
-
-[Service]
-Type=simple
-ExecStart=/usr/local/bin/mailtest-check slow
-Restart=always
-RestartSec=60
-
-[Install]
-WantedBy=graphical.target
-EOF
-    sysd-prom-fail-install mailtest-check
-    sre mailtest-check
-    ;;&
-  $MAIL_HOST)
-    test_froms=(ian@iankelling.org z@zroe.org iank@gnu.org)
-    test_tos=(testignore@expertpathologyreview.com testignore@je.b8.nz testignore@amnimal.ninja jtuttle@gnu.org)
-
-    cat >>/etc/cron.d/mailtest <<EOF
-# 10 am friday
-0   10 * * 5  root echo "weekly alert. You are not in the matrix."
-2   * * * *   root check-remote-mailqs |& log-once check-remote-mailqs
-EOF
-    ;;&
-  bk)
-    test_froms=(testignore@amnimal.ninja testignore@expertpathologyreview.com)
-    test_tos=(testignore@iankelling.org testignore@je.b8.nz)
-    # We dont need to send from different addresses to the same
-    # address. this breaks down our nice elegant logic of building up
-    # froms and tos , so I just handle expertpath in a special case
-    # below and set the to: to be testignore@zroe.org.  If we did sent
-    # that way, it would also mess up our mailtest-check logic that
-    # finds which messages to check.
-    # for example: from testignore@amnimal.ninja to: testignore@iankelling.org testignore@zroe.org
-    # that would become 2 messages and we'd only check 1.
-    ;;&
-  je)
-    test_froms=(testignore@je.b8.nz)
-    test_tos=(testignore@iankelling.org testignore@zroe.org testignore@expertpathologyreview.com testignore@amnimal.ninja)
-    ;;&
-  $MAIL_HOST|bk|je)
-
-    # Dont put these test messages into the sent folder or else it will
-    # overwhelm it, plus i dont want to save a copy at all.
-    # Plus addresses we generally want to ignore.
-    u /etc/exim4/ignore-sent <<EOF
-$(printf "%s\n" ${test_tos[@]})
-vojdedIdNejyebni@b8.nz
-b@eximbackup.b8.nz
-EOF
-
-    cat >/usr/local/bin/send-test-forward <<'EOF'
-#!/bin/bash
-# we remove from the queue older than 4.3 minutes since we send every 5 minutes.
-olds=(
-$(/usr/sbin/exiqgrep -o 260 -i -r '^(testignore@(iankelling\.org|zroe\.org|expertpathologyreview\.com|amnimal\.ninja|je\.b8\.nz)|jtuttle@gnu\.org)$')
-)
-if (( ${#olds[@]} )); then
-  /usr/sbin/exim -Mrm "${olds[@]}" >/dev/null
-fi
-EOF
-    for test_from in ${test_froms[@]}; do
-
-      test_to=${test_tos[0]}
-      for t in ${test_tos[@]:1}; do
-        if [[ $test_from == *@gnu.org && $t == *@gnu.org ]]; then
-          continue
-        fi
-        test_to+=", $t"
-      done
-      case $test_from in
-        testignore@expertpathologyreview.com)
-          test_to=testignore@zroe.org
-          ;;
-      esac
-
-      cat >>/usr/local/bin/send-test-forward <<EOFOUTER
-/usr/sbin/exim -odf -f $test_from -t <<EOF
-From: $test_from
-To: $test_to
-Subject: test \$(date +%Y-%m-%dT%H:%M:%S%z) \$EPOCHSECONDS
-
-/usr/local/bin/send-test-forward
-EOF
-EOFOUTER
-    done
-    m chmod +x /usr/local/bin/send-test-forward
-    ;;
-  *)
-    soff mailtest-check.service
-    rm -fv /etc/cron.d/mailtest \
-       /var/lib/prometheus/node-exporter/mailtest-check.prom* \
-       /var/local/cron-errors/check-remote-mailqs*
-    ;;
-esac
-
-
-
 # * misc
 m sudo -u $u mkdir -p /home/$u/.cache
 set -- /m/mucache /home/$u/.cache/mu /m/.mu /home/$u/.mu
index db5df60e0b883a5d4de948960e03c9f09b7da49a..9f37cb94ab6513352295c0e5debdcf8a24bba540 100755 (executable)
 # for  non-interactive, dont print unless something went
 # wrong
 
+#set -x
 
-source /b/bash-bear-trap/bash-bear
 
 [[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@"
 
+source /b/bash-bear-trap/bash-bear
+
 shopt -s nullglob
 
 e() { $int || return 0; printf "mailtest-check: %s\n" "$*"; }
@@ -83,6 +85,8 @@ fi
 # TODO, get je to deliver the local mailbox: /m/md/INBOX
 # dovecot appears to setup, i can t be sure.
 
+maini=0
+
 spamd_ser=spamd
 if systemctl cat spamassassin &>/dev/null; then
   spamd_ser=spamassassin
@@ -114,7 +118,11 @@ main() {
       ;;
     *)
       folders=(/m/md/l/testignore)
-      froms=(testignore@je.b8.nz testignore@expertpathologyreview.com testignore@amnimal.ninja ian@iankelling.org z@zroe.org)
+      # save some cpu cycles
+      froms=(testignore@je.b8.nz ian@iankelling.org)
+      if (( maini % 10 == 0 )); then
+        froms=(testignore@je.b8.nz testignore@expertpathologyreview.com testignore@amnimal.ninja ian@iankelling.org z@zroe.org)
+      fi
       if ! $int; then
         ### begin rsyncing fencepost email ###
         # We dont want to exit if rsync fails, that will get caught by
@@ -208,7 +216,8 @@ EOF
           # example line that sed is parsing:
           # (-0.1 / 5.0 requ) DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,SPF_HELO_PASS=-0.001,SPF_PASS=-0.001,TVD_SPACE_RATIO=0.001 autolearn=_AUTOLEARN
           resultfile=$(mktemp)
-          $spamcpre sudo -u Debian-exim spamassassin -D -t --cf='score PYZOR_CHECK 0' <"$latest" &>$resultfile
+          # add -D for debug info. usually it
+          $spamcpre sudo -u Debian-exim spamassassin -t --cf='score PYZOR_CHECK 0' <"$latest" &>$resultfile
 
           # note: on some mail, its 1 line after the send-test-forward, on others its 2 with a blank inbetween.
           # I use the sed -n to filter this.
@@ -336,7 +345,7 @@ EOF
   if $doprom && [[ -e $dir  ]]; then
     for l in "${p_unexpected_spamd_results[@]}"; do
       printf "%s\n" "$l" >>$path
-      done
+    done
     for l in "${p_missing_dnswl[@]}"; do
       printf "%s\n" "$l" >>$path
     done
@@ -355,12 +364,13 @@ loop-main() {
   while true; do
     premain_sec=$EPOCHSECONDS
     main
+    maini=$((maini + 1))
     sleep $(( 300 - ( EPOCHSECONDS - premain_sec ) ))
   done
 }
 
 
-if [[ $INVOCATION_ID ]]; then
+if [[ $PPID == 1 ]]; then
   loop-main
 else
   main
index 53b6458c15991892e628476b4d3a617dcca491fd..608c5cee55110fb0c611875738c0dbecacdac725 100755 (executable)
@@ -194,7 +194,8 @@ main() {
     case $muted in
       0) : ;;
       1)
-        if find $HOME/.iank-stream-muted -mmin +2 | grep . &>/dev/null; then
+        if find $HOME/.iank-stream-muted -mmin +2 | grep . &>/dev/null && \
+            ! pgrep -fc '^ffmpeg.*icecast://source.*/fsf-test'; then
           toggle-mute mute notify
         else
           ps_char="# UNMUTED # $ps_char"