diff --git a/pubnixvm b/pubnixvm new file mode 120000 index 0000000..6019709 --- /dev/null +++ b/pubnixvm @@ -0,0 +1 @@ +/sshfs/root/bin/ \ No newline at end of file diff --git a/tilserv/accept b/tilserv/accept new file mode 100755 index 0000000..5394bbd --- /dev/null +++ b/tilserv/accept @@ -0,0 +1,14 @@ +#!/usr/bin/env -S bash -e + +[[ -z "$1" ]] && { + printf 'Usage: %s username\n' "$0" + exit 1 +} + +[[ -f "/var/tmp/register/$1" ]] || { + printf "Application from %s does not exist\n" "$1" + exit 2 +} + +read -rp "Accept $1's application? [y/N] " +[[ $REPLY =~ [Yy] ]] && bash -e "/var/tmp/register/$1" || exit 3 diff --git a/tilserv/allowssl b/tilserv/allowssl new file mode 100755 index 0000000..6f27597 --- /dev/null +++ b/tilserv/allowssl @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +setfacl -R -m u:"${1}":rx /etc/letsencrypt +setfacl -R -m g:"${1}":rx /etc/letsencrypt +setfacl -R -m u:"${1}":rx /etc/letsencrypt/live +setfacl -R -m g:"${1}":rx /etc/letsencrypt/live +setfacl -R -m u:"${1}":rx /etc/letsencrypt/live/vern.cc +setfacl -R -m g:"${1}":rx /etc/letsencrypt/live/vern.cc +setfacl -R -m u:"${1}":rx /etc/letsencrypt/archive +setfacl -R -m g:"${1}":rx /etc/letsencrypt/archive +setfacl -R -m u:"${1}":rx /etc/letsencrypt/archive/vern.cc-0001 +setfacl -R -m g:"${1}":rx /etc/letsencrypt/archive/vern.cc-0001 diff --git a/tilserv/countvotes b/tilserv/countvotes new file mode 100755 index 0000000..f4b5679 --- /dev/null +++ b/tilserv/countvotes @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +if [ $# -eq 0 ]; then + printf 'Usage: %s text\n' "$0" + exit 1 +fi + +for i in /vm/*; do head -n 1 "$i"/.vote 2>/dev/null; done | grep -ci "^\s*$*\s*$" diff --git a/tilserv/delete b/tilserv/delete new file mode 100755 index 0000000..bf7e412 --- /dev/null +++ b/tilserv/delete @@ -0,0 +1,24 @@ +#!/usr/bin/env -S bash + +[[ -z "$1" ]] && { + printf 'Usage: %s username\n' "$0" + exit 1 +} + +#[[ -d "/sshfs/home/$1" ]] || { +# printf "User %s does not exist\n" "$1" +# exit 2 +#} + +read -rp "Delete user $1? [y/N] " +[[ $REPLY =~ [Yy] ]] && { + ssh 192.168.122.30 "tar -zcpvf - /home/${1}" > ~/"${1}"-data.tar.gz + ssh 192.168.122.30 "userdel -r '$1'; groupdel '$1'" + curl -XPOST -H "Authorization: Bearer $(&2 + exit 1 +} + +[[ "$1" -ge 0 ]] 2> /dev/null || { + printf 'Expected non-negative integer, got `%s'\''\n' "$1" >&2 + exit 2 +} + +print_to_ttys() { + who | while read -r _ TTY _; do + printf "Printing to %s\n" "$TTY" + printf "$@" > /dev/$TTY + done +} + +print_to_ttys "\nRebooting in %d seconds, please save your work\n" "$1" + +if [[ "$1" -gt 5 ]]; then + read -t "$(($1-5))" <><(:)||: + print_to_ttys "\nRebooting in %d seconds\n" 5 + read -t 5 <><(:)||: +else + read -t $1 <><(:)||: +fi + +systemctl reboot diff --git a/tilserv/remind b/tilserv/remind new file mode 100755 index 0000000..1ca5c0a --- /dev/null +++ b/tilserv/remind @@ -0,0 +1,17 @@ +#!/usr/bin/env -S bash -e + +[[ -z "$@" ]] && set -- $(tty) + +TMP=$(ls /var/tmp/register | wc -l) +FILE_DATE=$(stat -c %Y /sshfs/var/tmp/poll) +WEEK_DATE=$(date -d '7 days ago' +%s) + +[[ $TMP > 0 ]] && + for FILE in "$@"; do + [[ "$FILE" != *ptmx ]] && printf '\nTHERE ARE %d UNCHECKED MEMBERSHIP REQUESTS.\n' "$TMP" > $FILE + done ||: + +[ $FILE_DATE -lt $WEEK_DATE ] && + for FILE in "$@"; do + [[ "$FILE" != *ptmx ]] && printf '\nTHE POLL IS OVER' > $FILE + done ||: diff --git a/tilserv/remindall b/tilserv/remindall new file mode 100755 index 0000000..ad2d15a --- /dev/null +++ b/tilserv/remindall @@ -0,0 +1,3 @@ +#!/usr/bin/env -S bash -e + +w | while read -r U P _; do [[ $U == root ]] && /root/bin/remind /dev/$P; done diff --git a/tilserv/ssh-socks b/tilserv/ssh-socks new file mode 100755 index 0000000..3880bf9 --- /dev/null +++ b/tilserv/ssh-socks @@ -0,0 +1,10 @@ +#!/bin/bash +shopt -s extglob + +CMD=$(printf "ssh -nNT "; for i in /vm/*; do user="${i##/vm/}"; printf -- "-L /var/socks/%s.sock:/home/%s/.webserver.sock " "$user" "$user"; done; printf 192.168.122.30) + +rm /var/socks/* 2>/dev/null || echo No sockets +$CMD & +echo $! > /var/run/ssh-socks.pid +sleep 2 +chown -R www-data:www-data /var/socks/