various updates
[distro-setup] / brc
diff --git a/brc b/brc
index b163a093094e0689b9c3477b6683f48d79cddbe4..382b3627ded5e67a98c6c9fa71fbca675151e9b4 100644 (file)
--- a/brc
+++ b/brc
@@ -272,7 +272,7 @@ _khfix_common() {
     local h=${1##*@}
     local x
     ssh-keygen -R $h -f $(readlink -f ~/.ssh/known_hosts)
-    x=$(timeout 1 ssh -oBatchMode=yes -v $1 |& sed -rn "s/debug1: Connecting to $h \[([^\]*)].*/\1/p")
+    x=$(timeout 1 ssh -oBatchMode=yes -oControlMaster=no -oControlPath=/ -v $1 |& sed -rn "s/debug1: Connecting to $h \[([^\]*)].*/\1/p")
     if [[ ! $x ]]; then
         echo "khfix: ssh failed"
         return 1
@@ -380,7 +380,7 @@ cam() {
 }
 
 ccat () { # config cat. see a config without extra lines.
-    grep '^\s*[^[:space:]#]' "$@"
+    grep '^\s*[^;[:space:]#]' "$@"
 }
 
 cdiff() {
@@ -514,6 +514,11 @@ envload() { # load environment from a previous: export > file
     done < "$file"
 }
 
+# mail related
+etail() {
+    sudo tail -f /var/log/exim4/mainlog
+}
+
 f() {
     # cd forward
     c +
@@ -541,8 +546,24 @@ fastboot() { /a/opt/androidsdk/platform-tools/fastboot "$@"; }
 # Create from existing manually installed apps by doing
 # fdroidcl search -i, then manually removing
 # automatically installed/preinstalled apps
+
+# firefox updater. commented out, firefox depends on nonfree opengl.
+# de.marmaro.krt.ffupdater
+# # causes replicant to die on install and go into a boot loop
+# me.ccrama.redditslide
+#
+# # my attempt at recovering from boot loop:
+# # in that case, boot to recovery (volume up, home button, power, let go of power after samsun logo)
+# # then
+# mount /dev/block/mmcblk0p12 /data
+# cd /data
+# find -iname '*appname*'
+# rm -rf FOUND_DIRS
+# usually good enough to just rm -rf /data/app/APPNAME
+#
+# currently broken:
+#at.bitfire.davdroid
 fdroid_pkgs=(
-    at.bitfire.davdroid
     com.alaskalinuxuser.justnotes
     com.artifex.mupdfdemo
     com.fsck.k9
@@ -554,10 +575,8 @@ fdroid_pkgs=(
     com.zoffcc.applications.zanavi
     cz.martykan.forecastie
     de.danoeh.antennapod
-    de.marmaro.krt.ffupdater
     im.vector.alpha # riot
     info.papdt.blackblub
-    me.ccrama.redditslide
     me.tripsit.tripmobile
     net.gaast.giggity
     net.osmand.plus
@@ -689,6 +708,29 @@ feh() {
     command feh -FzZ "$@"
 }
 
+# mail related
+frozen() {
+    rm -rf /tmp/frozen
+    s mailq |gr frozen|awk '{print $3}' | while read -r id; do
+        s exim -Mvl $id
+        echo
+        s exim -Mvh $id
+        echo
+        s exim -Mvb $id
+        echo -e '\n\n##############################\n'
+    done | tee -a /tmp/frozen
+}
+frozenrm() {
+    local ids=()
+    while read -r line; do
+        printf '%s\n' "$line"
+        ids+=($(printf '%s\n' "$line" |gr frozen|awk '{print $3}'))
+    done < <(s mailq)
+    echo "sleeping for 2 in case you change your mind"
+    sleep 2
+    s exim -Mrm "${ids[@]}"
+}
+
 funce() {
     # like -e for functions. returns on error.
     # at the end of the function, disable with:
@@ -956,6 +998,8 @@ mbenable() {
     set -x
     mv -T $src $dst || { set +x; return 1; }
     ln -s -T $dst $src
+    /a/exe/lnf /p/.mu ~
+    mu index --maildir=/m/4e
     set +x
 }
 mbdisable() {
@@ -1135,6 +1179,7 @@ rlu() { # [OPTS] HOST PATH
     s rsync -rlpchviog --relative "${opts[@]}" "$path" "root@$host:/";
 }
 
+# only run on desktop. simpler to keep this on one system.
 r2eadd() { # usage: name url
     # initial setup of rss2email:
     # r2e new r2e@iankelling.org
@@ -1330,6 +1375,10 @@ srun() {
     ssh $1 /tmp/${2##*/} "${@:2}"
 }
 
+sss() { # ssh solo
+    ssh -oControlMaster=no -oControlPath=/ "$@"
+}
+
 swap() {
     local tmp
     tmp=$(mktemp)
@@ -1399,6 +1448,7 @@ te() {
     return $ret
 }
 
+# mail related
 testmail() {
     declare -gi _seq; _seq+=1
     echo "test body" | m mail -s "test mail from $HOSTNAME, $_seq" "${@:-root@localhost}"
@@ -1409,7 +1459,8 @@ testmail() {
     # MSG_ID is in /var/log/exim4/mainlog, looks like 1ccdnD-0001nh-EN
 }
 
-# to test sieve, use below command. make modifications, then copy to live file, use -eW to actually modify mailbox
+# to test sieve, use below command. for fsf mail, see fsf-get-mail script.
+# make modifications, then copy to live file, use -eW to actually modify mailbox
 # cp /p/c/subdir_files/sieve/personal{test,}.sieve; testsievelist -eW INBOX
 #
 # Another option is to use sieve-test SCRIPT MAIL_FILE. note,
@@ -1417,17 +1468,19 @@ testmail() {
 
 # sieve with output filter. arg is mailbox, like INBOX.
 # This depends on dovecot conf, notably mail_location in /etc/dovecot/conf.d/10-mail.conf
-#
+
 testsievelist() {
     sieve-filter ~/sieve/maintest.sieve "$@" >/tmp/testsieve.log 2> >(tail) && sed -rn '/^Performed actions:/{n;n;p}' /tmp/testsieve.log | sort -u
 }
 
 
+# mail related
 # plain sieve
 testsieve() {
     sieve-filter ~/sieve/main.sieve "$@"
 }
 
+# mail related
 testexim() {
     # testmail above calls sendmail, which is a link to exim/postfix.
     # it's docs don't say a way of adding an argument
@@ -1455,6 +1508,13 @@ tm() {
     (sleep $(calc "$@ * 60") && mpv --no-config --volume 50 /a/bin/data/alarm.mp3) > /dev/null 2>&1 &
 }
 
+trg() { transmission-remote-gtk&r; }
+trc() {
+    # example, set global upload limit to 100 kilobytes:
+    # trc -u 100
+    TR_AUTH=":$(jq -r .profiles[0].password ~/.config/transmission-remote-gtk/config.json)" transmission-remote transmission.lan -ne "$@"
+}
+
 
 tu() {
     local s;
@@ -1503,22 +1563,6 @@ vpnbash() {
 }
 
 
-trg() { transmission-remote-gtk&r; }
-
-# transmission() {
-#     local pid=$(cat /var/lib/transmission-daemon/transmission-daemon.pid)
-#     if [[ $pid && -e /proc/$pid ]]; then
-#         echo "noop. already running."
-#         return
-#     fi
-
-#     local NAME=transmission-daemon
-#     local DAEMON=/usr/bin/$NAME
-#     local duser=debian-transmission
-
-#     [ -e /etc/default/$NAME ] && . /etc/default/$NAME
-#     s ip netns exec vpn sudo -u $duser ionice -c 3 nice -n 19 $DAEMON $OPTIONS
-# }
 
 virshrm() {
     for x in "$@"; do virsh destroy "$x"; virsh undefine "$x"; done
@@ -1549,6 +1593,12 @@ vpn() {
     [[ $1 ]] || { echo need arg; return 1; }
     journalctl --unit=openvpn-client@$1 -f -n0 &
     s systemctl start openvpn-client@$1
+    # sometimes the ask-password agent does not work and needs a delay.
+    sleep .5
+    # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=779240
+    # noticed around 8-2017 after update from around stretch release
+    # on debian testing, even though the bug is much older.
+    s systemd-tty-ask-password-agent
 }
 
 vpnoff() {
@@ -1574,10 +1624,12 @@ vspicy() { # usage: VIRSH_DOMAIN
 wtr() { curl wttr.in/boston; }
 
 xl() {
-    # this succeeds even if gnome-screensaver isn't running.
+    # this succeeds even if gnome-screensaver isn\'t running.
     gnome-screensaver-command --exit &>/dev/null
     if ! pidof xscreensaver; then
+        pushd /
         xscreensaver &
+        popd
         # 1 was not long enough
         sleep 3
     fi