various minor improvements
authorIan Kelling <ian@iankelling.org>
Thu, 5 Jan 2017 16:30:18 +0000 (08:30 -0800)
committerIan Kelling <ian@iankelling.org>
Thu, 5 Jan 2017 16:30:18 +0000 (08:30 -0800)
btrbk-run
check-subvol-stale
desktop-20-autostart.sh
distro-end
input-setup
mount-latest-subvol

index c226997d1a147d2cb1b0f01f83d347ee4fd760c5..485c7f579a2d5b54a0ee8c438315eb5c65094d94 100755 (executable)
--- a/btrbk-run
+++ b/btrbk-run
@@ -38,6 +38,7 @@ while true; do
     case $1 in
         -c) conf_only=true; shift ;;
         -n) dry_run=true; dry_run_arg=-n; shift ;;
+        # btrbk arg: Resume only. Skips snapshot creation.
         -r) resume_arg=-r; shift ;;
         -t) IFS=, targets=($2); shift 2 ;;
         -h|--help) usage ;;
@@ -52,7 +53,7 @@ read primary <<<"$@"
 rsync-dirs() {
     local host=$1
     local path=$2
-    rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/"
+    rsync $dry_run_arg -ahi --relative --delete "$path" "root@$host:/"
 }
 
 vol-conf() {
@@ -70,15 +71,26 @@ tg-conf() {
 target send-receive ssh://$tg$vol/btrbk
 EOF
 }
-
+m() { printf "%s\n" "$*";  "$@"; }
 
 
 if ! which btrbk &>/dev/null; then
     echo "$0: error: no btrbk binary found"
 fi
 
+if [[ $- == *i* ]]; then
+    progress_arg=--progress
+fi
+
 cat >/etc/btrbk.conf <<'EOF'
 ssh_identity /root/.ssh/id_rsa
+# Just a guess that local7 is a good facility to pick.
+# It's a bit odd that the transaction log has to be logged to
+# a file or syslog, while other output is sent to std out.
+# The man does not mention a way for them to be together, but
+# I dunno if setting a log level like warn might also output
+# transaction info.
+transaction_syslog local7
 
 # so we only run one at a time
 lockfile                   /var/lock/btrbk.lock
@@ -106,9 +118,10 @@ EOF
 
 # note q is owned by root:1000
 # note p is owned 1000:1000 and chmod 700
-mountpoints=(/q)
-if awk '{print $2}' /etc/fstab | grep -xF /p &>/dev/null; then
-    mountpoints+=(/p)
+mountpoints=(/a)
+qmnt=/q
+if awk '{print $2}' /etc/fstab | grep -xF $qmnt &>/dev/null; then
+    mountpoints+=($qmnt)
 fi
 
 # if our mountpoints are from stale snapshots,
@@ -174,11 +187,11 @@ if $conf_only; then
 fi
 
 if $dry_run; then
-    btrbk -n $resume_arg run
+    btrbk -n $resume_arg run
 else
     # -q and just using the syslog option seemed nice,
     # but it doesn't show when a send has a parent and when it doesn't.
-    btrbk $resume_arg run
+    m btrbk $progress_arg $resume_arg run
 fi
 
 # if we have /p, rsync to targets without /p
@@ -198,7 +211,7 @@ if mountpoint /p >/dev/null; then
 fi
 
 if ! $dry_run; then
-    $script_dir/mount-latest-remote ${targets[@]}
+    $script_dir/mount-latest-remote ${targets[@]}
 fi
 
 
index 1451844f7c89298d2a9e100eeabba7f837874d24..f278188fa63c6e58b00a76f66b20b971f15873fc 100644 (file)
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
+# usage: $0 SUBVOL_MOUNTPOINT...
 # if latest subvols $@ are not mounted, exit 1, print message, and touch /nocow/btrfs-stale/$subvol
 
 [[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@"
@@ -50,7 +50,7 @@ for d; do
         continue
     fi
     stale=true
-    if btrfs sub show $d|sed '0,/^\t*Snapshot(s):/d;s/^\s*//' | \
+    if btrfs sub show $d 2>/dev/null | sed '0,/^\t*Snapshot(s):/d;s/^\s*//' | \
             grep -xF btrbk/$last_snap &>/dev/null; then
         stale=false
     else
index e1169609f1a3393f943a0c9656dc040ff096061f..a86864a031518d3461ace01cebb9109304d19b96 100755 (executable)
@@ -15,8 +15,9 @@
 
 # first 2 alternatives showed under ubuntu 14.04, second 2 under arch at 11/2015
 
-right_monitor_rotation=left
 if [[ $1 ]]; then
+    right_monitor_rotation=left
+else
     right_monitor_rotation=normal
 fi
 
index 44be816d82fee63536c3a83adce2ad8bb5aa47a9..8034fb918383b7a2df3a6f7fab19a1b36c3fc047 100755 (executable)
@@ -32,6 +32,7 @@ spa() { # simple package add
     simple_packages+=($@)
 }
 
+
 distro=$(distro-name)
 
 pending_reboot=false
@@ -59,30 +60,26 @@ case $HOSTNAME in
         # universal packages
         # swh-plugins is for karaoke pulsaudio filter.
         # mutagen for pithos
-        # lib32stdc++6/default-jdk for android studio
-        # android site says it needs a bunch of packages for ubuntu,
-        # but I googled for debian, and someone says you just need one, plus the
-        # jdk
-        # https://pid7007blog.blogspot.com/2015/07/installing-android-studio-in-debian-8.html
-        # see w.org for more android studio details
-        #
         simple_packages+=(
             apache2
             bwm-ng
             chromium
-            default-jdk
+            debconf-doc
             duplicity
+            eclipse
             evince
             fdupes
             filelight
+            gcc-doc
             gdb
             gitk
             goaccess
             gnome-screenshot
+            i3lock
             jq
             locate
-            lib32stdc++6
             manpages
+            manpages-dev
             meld
             nmap
             offlineimap
@@ -93,7 +90,6 @@ case $HOSTNAME in
             pianobar
             pidgin
             python3-mutagen
-            slock
             squashfs-tools
             swh-plugins
             tcpdump
@@ -258,6 +254,19 @@ esac
 ########### end section including li/lj ###############
 
 
+
+## android studio setup
+# this contains the setting for android sdk to point to
+# /a/opt/androidsdk, which is asked upon first run
+lnf /a/opt/.AndroidStudio2.2 ~
+# android site says it needs a bunch of packages for ubuntu,
+# but I googled for debian, and someone says you just need lib32stdc++6 plus the
+# jdk
+# https://pid7007blog.blogspot.com/2015/07/installing-android-studio-in-debian-8.html
+# see w.org for more android studio details
+spa lib32stdc++6 default-jdk
+
+
 if [[ $HOSTNAME == frodo ]]; then
     case $distro in
         ubunut|debian)
@@ -320,7 +329,6 @@ esac
 
 ####### misc packages ###########
 
-
 if [[ $HOSTNAME == treetowl ]]; then
     case $distro in
         debian|ubuntu)
@@ -339,29 +347,38 @@ EOF
 
             # some reason it doesn't seem to start automatically anyways
             pi-nostart transmission-daemon
+            #
             # config file documented here, and it's the same config
             # for daemon vs client, so it's documented in the gui.
             # https://trac.transmissionbt.com/wiki/EditConfigFiles#Options
+            #
+            # I originaly setup rpc-whitelist, but after using
+            # routing to a network namespace, it doesn't see the
+            # real source address, so it's disabled.
+            # todo: setup a password.
             s ruby <<'EOF'
 require 'json'
 p = '/etc/transmission-daemon/settings.json'
 File.write(p, JSON.pretty_generate(JSON.parse(File.read(p)).merge({
-'rpc-whitelist' => '127.0.0.1,192.168.1.*',
+'rpc-whitelist-enabled' => false,
 'rpc-authentication-required' => false,
-'incomplete-dir' => '/i/k/partial-torrents',
+'incomplete-dir' => '/k/partial-torrents',
+'incomplete-dir-enabled' => true,
 'download-dir' => '/i/k/torrents',
 "speed-limit-up" => 700,
 "speed-limit-up-enabled" => true,
+"peer-port" => 61486,
 "ratio-limit" => 1.4000,
-"ratio-limit-enabled" => true,
+"ratio-limit-enabled" => false,
+"pidfile": "/var/lib/transmission-daemon/transmission-daemon.pid",
 })) + "\n")
 EOF
-            sgo transmission-daemon
-            ;;
-        arch)
-            # todo, setup it's config file & daemon
-            pi transmission-cli
+
+            # make sure its not enabled, not sure if this is needed
+            ser disable transmission-daemon
+            sgo transmission-daemon-nn
             ;;
+        # todo: others unknown
     esac
 fi
 
@@ -439,13 +456,14 @@ done
 
 case $distro in
     debian|ubuntu)
-        pi-nostart openvpn
+        # suggests because we want the resolvconf package.
+        # todo: check other distros to make sure it's installed
+        pi-nostart --install-suggests openvpn
         # pi-nostart this doesnt seem to be good enough?
         ser disable openvpn@client
         ser disable openvpn
         ;;
-    # suggests because we want the resolvconf package
-    *) pi --install-suggests openvpn;;
+    *) pi openvpn;;
 esac
 
 pi wget
@@ -661,8 +679,33 @@ case $distro in
             spa bitcoin-qt/unstable
         fi
         ;;
+    s cp /a/opt/bitcoin/contrib/init/bitcoind.service /usr/lib/systemd/system
+    ser daemon-reload
+    sgo bitcoind
+
+    s mkdir -p $dir
+    s touch $f
+    s chmod -R o-rwx $dir
+    s chown -R bitcoin:bitcoin $dir
+    s dd of=$f <<EOF
+rpcbind=127.0.0.1
+server=1
+rpcpassword=$(openssl rand -base64 32)
+rpcuser=$(openssl rand -base64 32)
+
+# Joinmarket
+walletnotify=curl -sI --connect-timeout 1 http://localhost:62602/walletnotify?%s
+alertnotify=curl -sI --connect-timeout 1 http://localhost:62602/alertnotify?%s
+EOF
     # other distros unknown
 esac
+if [[ $HOSTNAME == treetowl ]]; then
+    # dunno about sharing a wallet between multiple instances
+
+    sgo bitcoind
+fi
+
+
 
 
 # proprietary flash. going without for now
@@ -861,6 +904,8 @@ EOF
 
 if [[ $HOSTNAME == treetowl ]] && ! sudo test -e /etc/openvpn/client.key; then
     /a/bin/vpn-setup/vpn-mk-client-cert dopub
+    # route lan traffic from inside the network namespace.
+    tu /etc/openvpn/client.conf "route 192.168.1.0 255.255.255.0 net_gateway"
 fi
 
 
@@ -897,13 +942,22 @@ EOF
         ;;
 esac
 
-# note, for jessie, it depends on a higher version of btrfs-tools
+# note, for jessie, it depends on a higher version of btrfs-tools.
+#
+# # disabled due to my patch being in btrbk
 # case $distro in
 #     arch|debian|ubuntu) pi btrbk ;;
 #     # others unknown
 # esac
 cd /a/opt/btrbk
 s make install
+spa pv # for progress bar when running interactively.
+if [[ $HOSTNAME == treetowl ]]; then
+    # backup/sync manually on others hosts for now.
+    sgo btrbk.timer
+    # note: to see when it was last run,
+    # ser list-timers
+fi
 
 if [[ $HOSTNAME == treetowl ]] && [[ `debian-archive` != testing ]]; then
     # fail2 ban is broken, with a workaround, per
index 8ad80d315e9a1d73742078d87406b11ea4f2e99f..5db66e9dd92f77a7f994b6bb594e106b9416f64f 100755 (executable)
@@ -37,7 +37,7 @@ set_device_id() {
 
 case $HOSTNAME in
        tp|x2)
-               # original saved with: xkbcomp $DISPLAY /a/c/stretch-x2-11-2016.xkb
+               # original saved with: xkbcomp $DISPLAY /a/c/stretch-11-2016.xkb
                xkbcomp /a/c/x2.xkb $DISPLAY
                ;;
     treetowl*|iank-dev|frodo)
index 49ddcd594d39842306b1cc5d82f1d6e947c64dfc..091cf44448d4cace3675056a015f179f9cfa2989 100644 (file)
@@ -68,7 +68,7 @@ tu() {
 e() { printf "%s\n" "$*"; "$@"; }
 mnt() {
     dir=$1
-    if ! mountpoint $dir >/dev/null; then
+    if ! mountpoint $dir &>/dev/null; then
         mkdir -p $dir
         e mount $dir
     fi
@@ -78,18 +78,18 @@ ret=0
 
 first_root_crypt=$(awk '$2 == "/" {print $1}' /etc/mtab)
 tu /etc/fstab <<EOF
-$first_root_crypt  /q  btrfs  noatime,subvol=q  0 0
-/q/a  /a  none  bind  0 0
+$first_root_crypt  /a  btrfs  noatime,subvol=a  0 0
 EOF
 case $HOSTNAME in
     treetowl|x2|frodo)
         tu /etc/fstab <<EOF
-$first_root_crypt  /p  btrfs  noatime,subvol=p  0 0
+$first_root_crypt  /q  btrfs  noatime,subvol=q  0 0
+/q/p  /p  none  bind  0 0
 EOF
         ;;
 esac
 
-for vol in q p; do
+for vol in q a; do
     d=/$vol
     if ! awk '{print $2}' /etc/fstab | grep -xF $d &>/dev/null; then
         continue
@@ -101,7 +101,8 @@ for vol in q p; do
     while true; do
         new_roots=()
         for r in ${roots[@]}; do
-            # /q/a  /a  none  bind  0 0
+            # example
+            # /q/p  /p  none  bind  0 0
             new_roots+=($(sed -rn "s#^$r/\S+\s+(\S+)\s+none\s+bind\s.*#\1#p" /etc/fstab))
         done
         (( ${#new_roots} )) || break
@@ -196,10 +197,8 @@ EOF
             cryptdisks_start crypt_dev_$dev
         fi
     done
-else
-    tu /etc/fstab <<'EOF'
-/q/i  /i  none  bind,noauto  0 0
-EOF
+    # note, could do an else here and have some kind of mount for /i
+    # on other hosts.
 fi
 
 exit $ret