various fixes
[distro-setup] / brc2
diff --git a/brc2 b/brc2
index d678668326210e9be69c3ab65903a2131806ba7b..5035ca2f5c3c348e81524ca034dd1c2db9818d09 100644 (file)
--- a/brc2
+++ b/brc2
@@ -507,7 +507,7 @@ lipush() {
   a="-ahviSAXPH --specials --devices --delete --relative --exclude-from=/p/c/li-rsync-excludes"
   ret=0
   for h in li je bk; do
-    m s rsync "$@" $a ${p[@]} /p/c/machine_specific/$h root@$h.b8.nz:/ || ret=$?
+    m s rsync "$@" $a ${p[@]} /p/c/machine_specific/$h root@$h.b8.nz:/
     ## only li is debian11
     #p[0]=/a/opt/emacs-trisuqel10
     #p[1]=/a/opt/emacs-trisquel10-nox
@@ -1134,6 +1134,32 @@ EOF
 }
 
 
+mns() { # mount namespace
+  ns=$1
+  shift
+  s mkdir -p /root/mount_namespaces
+  if ! s mountpoint /root/mount_namespaces >/dev/null; then
+    m s mount --bind /root/mount_namespaces /root/mount_namespaces
+  fi
+  m s mount --make-private /root/mount_namespaces
+  if [[ ! -e /root/mount_namespaces/$ns ]]; then
+    s touch /root/mount_namespaces/$ns
+  fi
+  if ! s mountpoint /root/mount_namespaces/$ns >/dev/null; then
+    m unshare --propagation slave --mount=/root/mount_namespaces/$ns /bin/true
+  fi
+  m sudo -E /usr/bin/nsenter --mount=/root/mount_namespaces/$ns "$@"
+}
+
+mnsnonet() {
+  ns=$1
+  if ! s ip netns list | grep -Fx nonet &>/dev/null; then
+    s ip netns add nonet
+  fi
+  mns $ns --net=/var/run/netns/nonet sudo -E -u iank /bin/bash
+}
+
+
 lom() {
   local l base
   if [[ $1 == /* ]]; then
@@ -1153,12 +1179,12 @@ lom() {
       fi
     fi
     m sudo mkdir -p /mnt/$base
-    m sudo mount /dev/mapper/$base /mnt/$base
-    m sudo chown $USER:$USER /mnt/$base
+    m mns mount /dev/mapper/$base /mnt/$base
+    m mns chown $USER:$USER /mnt/$base
   else
     base=$1
-    if mountpoint /mnt/$base &>/dev/null; then
-      m sudo umount /mnt/$base
+    if mns mountpoint /mnt/$base &>/dev/null; then
+      m mns umount /mnt/$base
     fi
     if sudo cryptsetup status /dev/mapper/$base &>/dev/null; then
       if ! m sudo cryptsetup luksClose /dev/mapper/$base; then
@@ -1758,7 +1784,9 @@ vpncmd() {
 }
 vpnf() {
   sudo -v
-  vpncmd sudo -E -u iank env "PATH=$PATH" abrowser -no-remote -P vpn & r
+  vpncmd sudo -E -u iank env "PATH=$PATH" abrowser -no-remote -P vpn &
+  sleep 5
+  r
 }
 vpn2f() {
   sudo -v
@@ -1917,7 +1945,15 @@ if [[ -e $f ]]; then
   source $f
 fi
 
-
+electrum() {
+  # https://electrum.readthedocs.io/en/latest/tor.html
+  # https://github.com/spesmilo/electrum-docs/issues/129
+  s rsync -ptog --chown bitcoin:bitcoin ~/.Xauthority /var/lib/bitcoind/.Xauthority
+  sudo -u bitcoin DISPLAY=$DISPLAY XAUTHORITY=/var/lib/bitcoind/.Xauthority /a/opt/electrum-4.2.1-x86_64.AppImage -p socks5:localhost:9050
+}
+monero() {
+  sudo -u bitcoin DISPLAY=$DISPLAY XAUTHORITY=/var/lib/bitcoind/.Xauthority /a/opt/monero-gui-v0.17.3.2/monero-wallet-gui
+}
 
 
 reset-konsole() {
@@ -1944,6 +1980,12 @@ scrollbar true
 EOF
 }
 
+# make a page of links found in the files $@. redirect output
+linkhtml() {
+  gr -oh 'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)' "$@" | \
+    rev | sort -u | rev | sed 's,.*,<a href="\0">\0</a><br\>,'
+}
+
 reset-xscreensaver() {
   # except for spash, i set these by setting gui options in
   # xscreensaver-command -demo