summaryrefslogtreecommitdiffstats
path: root/old/bin
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-07-11 19:44:12 +0200
committertv <tv@shackspace.de>2015-07-11 19:44:12 +0200
commit2bc5c58d85990e483af8fde57ed5f2442351b69c (patch)
tree94cd29e6a98f1ce6228104055d0550e318242290 /old/bin
parentc5fcda1390afaba71133b2ee6ac1ddd0f559ef8c (diff)
move old stuff
Diffstat (limited to 'old/bin')
-rwxr-xr-xold/bin/copy-secrets69
-rwxr-xr-xold/bin/genid11
-rwxr-xr-xold/bin/netmask-to-prefix12
-rwxr-xr-xold/bin/nixos-query4
-rwxr-xr-xold/bin/urlencode35
5 files changed, 131 insertions, 0 deletions
diff --git a/old/bin/copy-secrets b/old/bin/copy-secrets
new file mode 100755
index 00000000..f4049359
--- /dev/null
+++ b/old/bin/copy-secrets
@@ -0,0 +1,69 @@
+#! /bin/sh
+#
+# copy-secrets system_name target
+#
+set -euf
+
+system_name=$1
+target=$2
+
+nixos_config=$config_root/modules/$system_name
+secrets_nix=$secrets_root/$system_name/nix
+secrets_rsync=$secrets_root/$system_name/rsync
+
+if ! test -e "$secrets_rsync"; then
+ exit # nothing to do
+fi
+
+# XXX this is ugly
+# Notice NIX_PATH used from host
+# Notice secrets required to evaluate configuration
+NIX_PATH=$NIX_PATH:nixos-config=$PWD/modules/$system_name
+NIX_PATH=$NIX_PATH:secrets=$PWD/secrets/$system_name/nix
+export NIX_PATH
+
+case $(nixos-query tv.retiolum.enable 2>/dev/null) in true)
+ retiolum_secret=$(nixos-query tv.retiolum.privateKeyFile)
+ retiolum_uid=$(nixos-query users.extraUsers.retiolum-tinc.uid)
+esac
+
+case $(nixos-query services.ejabberd-cd.enable 2>/dev/null) in true)
+ ejabberd_secret=$(nixos-query services.ejabberd-cd.certFile)
+ ejabberd_uid=$(nixos-query users.extraUsers.ejabberd.uid)
+esac
+
+case $(nixos-query tv.consul.enable 2>/dev/null) in true)
+ consul_secret=$(nixos-query tv.consul.encrypt-file)
+ consul_uid=$(nixos-query users.extraUsers.consul.uid)
+esac
+
+(set -x
+ rsync \
+ --rsync-path="mkdir -p \"$2\" && rsync" \
+ -vzrlptD \
+ "$secrets_rsync/" \
+ "$target:/")
+
+ssh "$target" -T <<EOF
+set -euf
+
+retiolum_secret=${retiolum_secret-}
+retiolum_uid=${retiolum_uid-}
+ejabberd_secret=${ejabberd_secret-}
+ejabberd_uid=${ejabberd_uid-}
+consul_secret=${consul_secret-}
+consul_uid=${consul_uid-}
+
+if test -n "\$retiolum_secret"; then
+ chown -v "\$retiolum_uid:0" "\$retiolum_secret"
+fi
+
+if test -n "\$ejabberd_secret"; then
+ chown -v "\$ejabberd_uid:0" "\$ejabberd_secret"
+fi
+
+if test -n "\$consul_secret"; then
+ chown -v "\$consul_uid:0" "\$consul_secret"
+fi
+
+EOF
diff --git a/old/bin/genid b/old/bin/genid
new file mode 100755
index 00000000..8e224074
--- /dev/null
+++ b/old/bin/genid
@@ -0,0 +1,11 @@
+#! /bin/sh
+# usage: genid NAME
+set -euf
+name=$1
+hash=$(printf %s "$name" | sha1sum | cut -d\ -f1 | tr a-f A-F)
+echo "
+ min=2^16 # bigger than nobody and nogroup, see <nixos/modules/misc/ids.nix>
+ max=2^32 # see 2^(8*sizeof(uid_t))
+ ibase=16
+ ($hash + min) % max
+" | bc
diff --git a/old/bin/netmask-to-prefix b/old/bin/netmask-to-prefix
new file mode 100755
index 00000000..1c4dbeb2
--- /dev/null
+++ b/old/bin/netmask-to-prefix
@@ -0,0 +1,12 @@
+#! /bin/sh
+set -euf
+
+netmask=$1
+
+binaryNetmask=$(echo $1 | sed 's/^/obase=2;/;s/\./;/g' | bc | tr -d \\n)
+binaryPrefix=$(echo $binaryNetmask | sed -n 's/^\(1*\)0*$/\1/p')
+if ! echo $binaryPrefix | grep -q .; then
+ echo $0: bad netmask: $netmask >&2
+ exit 4
+fi
+printf %s $binaryPrefix | tr -d 0 | wc -c
diff --git a/old/bin/nixos-query b/old/bin/nixos-query
new file mode 100755
index 00000000..1111aead
--- /dev/null
+++ b/old/bin/nixos-query
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+result=$(nix-instantiate -A config."$1" --eval --json '<nixos>')
+echo $result | jq -r .
diff --git a/old/bin/urlencode b/old/bin/urlencode
new file mode 100755
index 00000000..02ca0307
--- /dev/null
+++ b/old/bin/urlencode
@@ -0,0 +1,35 @@
+#! /bin/sh
+set -euf
+exec sed '
+ s/%/%25/g
+ s/ /%20/g
+ s/!/%21/g
+ s/"/%22/g
+ s/#/%23/g
+ s/\$/%24/g
+ s/\&/%26/g
+ s/'\''/%27/g
+ s/(/%28/g
+ s/)/%29/g
+ s/\*/%2a/g
+ s/+/%2b/g
+ s/,/%2c/g
+ s/-/%2d/g
+ s/\./%2e/g
+ s/\//%2f/g
+ s/:/%3a/g
+ s/;/%3b/g
+ s//%3e/g
+ s/?/%3f/g
+ s/@/%40/g
+ s/\[/%5b/g
+ s/\\/%5c/g
+ s/\]/%5d/g
+ s/\^/%5e/g
+ s/_/%5f/g
+ s/`/%60/g
+ s/{/%7b/g
+ s/|/%7c/g
+ s/}/%7d/g
+ s/~/%7e/g
+'