diff options
Diffstat (limited to 'services')
| -rwxr-xr-x | services/bin/obsolete/copy-services | 34 | ||||
| -rwxr-xr-x | services/bin/sync-host-to-services | 15 | ||||
| -rwxr-xr-x | services/lib/filter | 54 | ||||
| -rw-r--r-- | services/services.txt | 1 |
4 files changed, 103 insertions, 1 deletions
diff --git a/services/bin/obsolete/copy-services b/services/bin/obsolete/copy-services new file mode 100755 index 00000000..381d39a3 --- /dev/null +++ b/services/bin/obsolete/copy-services @@ -0,0 +1,34 @@ +#!/bin/bash + +set -euf +cd $(dirname $(readlink -f $0)) +usage(){ + cat <<EOF +usage: $0 [pubkey-file] [bootstrap-file] + if pubkey-file is "" it will be skipped. + + e.g.: + $0 "" ../path/to/other/bootstrap +EOF + +} +pubfile=${1:-} +bootfile=${2:-../etc/services/bootstrap} +outdir=$PWD/out +mkdir -p "$outdir" +for i in `cat $bootfile`; do + # retard uriparsing but good enough for our use case + netloc=${i##*//} + host=${netloc%%:*} + port=${netloc##*:} + [ "$port" == "$host" ] && port=1337 + + pubarg="${pubfile:+-i $pubfile}" + #printf "[32m" + cat >$outdir/$host <<EOF +$(ssh ${pubarg} "services@$host" -p "$port" -o PasswordAuthentication=no + 2>/dev/null||: ) +EOF + #printf "[0m" +done + diff --git a/services/bin/sync-host-to-services b/services/bin/sync-host-to-services new file mode 100755 index 00000000..526bc569 --- /dev/null +++ b/services/bin/sync-host-to-services @@ -0,0 +1,15 @@ +#!/bin/sh +green='\e[0;32m' +red='\e[0;31m' +nc='\e[0m' + +outdir=${1?please provide services-outdir} +find ../../retiolum/hosts -type f | while read hostfile;do + host=$(basename "$hostfile") + if test -e "$outdir/$host";then + printf "${green}$host already exists$nc\n" + else + printf "${red}$host missing, adding${nc}\n" + cat ../services.txt | sed "s#{{hostname}}#$host#" > $outdir/$host + fi +done diff --git a/services/lib/filter b/services/lib/filter new file mode 100755 index 00000000..f69a5b0d --- /dev/null +++ b/services/lib/filter @@ -0,0 +1,54 @@ +#! /bin/sh +# +# usage: +# export PATH="//services/lib:$PATH" +# cd services +# ls | filter owner == $LOGNAME | filter hasnt mail +# +set -euf + +main() { + case $# in + 2) op1 "$@";; + 3) op2 "$@";; + *) echo 'You are made of stupid!' >&2; exit 23;; + esac +} + +# op1 OP SCHEMA +op1() { + case "$1" in + has) + xargs grep -H "^$2:" \ + | cut -d: -f1 + ;; + hasnt) + a=$(mktemp) + b=$(mktemp) + trap "rm $a $b; trap - EXIT INT QUIT" EXIT INT QUIT + cat > $a + cat $a | xargs grep -H "^$2:" | cut -d: -f1 > $b + diff -u $b $a | sed -n '/^++/d;s/^+\(.*\)/\1/p' | grep . + esac +} + +# op2 SCHEMA OP RHS +op2() { + case "$2" in + ==|is) + xargs grep -H "^$1:$3$" \ + | cut -d: -f1 + ;; + !=|isnt) + xargs grep -H "^$1:" \ + | grep -v ":$1:$3" \ + | cut -d: -f1 + ;; + contains) + xargs grep -H "^$1:.*$3.*$" \ + | cut -d: -f1 + ;; + esac +} + +main "$@" diff --git a/services/services.txt b/services/services.txt index 265e6d1c..ad9efde6 100644 --- a/services/services.txt +++ b/services/services.txt @@ -3,5 +3,4 @@ type: mail: expires: location: -services://{{hostname}}:22 tinc://{{hostname}} |
