diff --git a/.config/bash/aliases.bash b/.config/bash/aliases.bash index edd0f60..1c0e90e 100644 --- a/.config/bash/aliases.bash +++ b/.config/bash/aliases.bash @@ -14,6 +14,8 @@ alias scr="$sudo systemctl daemon-reload && $sudo systemctl reload-or-restart" alias hist='history | less' alias m='mv -vi' +alias nginx-edit="sudo vi /etc/nginx/nginx.conf && nginx -t && sudo systemctl reload nginx" + # Fast Find ff() { name=$1 @@ -22,6 +24,12 @@ ff() { find "$@" -name "*$name*" } +xtrace () { + set -x + "$@" + set +x +} + highlight() { echo "$1"; } status() { highlight 'System' diff --git a/.config/bash/iridion.bash b/.config/bash/iridion.bash index 0b4c810..e05209f 100644 --- a/.config/bash/iridion.bash +++ b/.config/bash/iridion.bash @@ -1,6 +1,43 @@ set -o pipefail alias localip="ip addr show | grep -E '(ens|eth)' | grep -oP '"'(?<=inet\s)\d+(\.\d+){3}'"' | head -1" +ip=$(localip) + +logs() { + if test $# -eq 0 + then + lnav $(pwd | cut -d '/' -f1-5)/{logs,document_errors} + else + for site in $(find /home -maxdepth 3 -name "*$1*") + do cd $site + lnav logs + done + fi +} + +monitor() { + file=gatus.yaml + echo 'customer-endpoint: &customer + interval: 10m + conditions: + - "[STATUS] == 200" +endpoints:' >$file + for user in $(list users) + do group="$(hestia v-list-user $user | head -3 | cut -d':' -f2 | tr -s ' ' | sed 'N;s/\n/:/;N;s/\n / (/;s/$/)/')" + for domain in $(hestia v-list-web-domains $user | grep "$ip" | awk '{print $1}') + do echo '- name: "'$domain'" + <<: *customer + group: "'$group'" + url: "https://'$domain'"' >>$file + done + for domain in $(hestia v-list-mail-domains $user | tail +3 | awk '{print $1}') + do echo '- name: "Mail '$domain'" + <<: *customer + group: "'$group'" + url: "https://mail.'$domain'"' >>$file + done + done +} letsencrypt() { if test $# -eq 0 @@ -10,7 +47,6 @@ letsencrypt() { done else ( - ip=$(localip) IFS=$'\n' for user do @@ -20,15 +56,22 @@ letsencrypt() { for domain in $(hestia v-list-mail-domains $user | tail +3 | awk '{print $1}') do hestia v-list-mail-domain-ssl $user $domain | grep -q . || hestia v-add-letsencrypt-domain $user $domain '' yes done - for domain in $(hestia v-list-web-domains $user | grep $ip | awk '{print $1}') + for domain in $(hestia v-list-web-domains $user | grep "$ip" | awk '{print $1}') do #echo commented out due to command echoing in hestia alias #echo "Checking $user $domain" >&2 hestia v-list-web-domain $user $domain | grep -q REDIRECT && continue #hestia v-list-mail-domain-ssl $user $domain | grep -q . || hestia v-add-letsencrypt-domain $user $domain '' yes - hestia v-list-web-domain-ssl $user $domain | grep -q . && continue + hestia v-list-web-domain-ssl $user $domain | grep . >/dev/null && continue #echo "Generating Certificate" >&2 hestia v-add-letsencrypt-domain $user $domain $(hestia v-list-web-domain $user $domain | grep ALIAS | tr -s ' ' | cut -d' ' -f2- | tr ' ' ',') done + echo "Waiting an hour to not trigger letsencrypt rate limits..." + time=0 + while test $time -lt 2000 + do sleep 100 + sudo -v + time=$((time + 100)) + done done ) fi @@ -46,7 +89,7 @@ list() { done else if test -t 1 then sudo "$HESTIA/bin/v-list-$type" "$@" | column -t - else sudo "$HESTIA/bin/v-list-$type" "$@" | tail +3 | awk '{print $1}' + else sudo "$HESTIA/bin/v-list-$type" "$@" | tail +3 | $(if test $type = users; then echo "grep -v yes"; else echo cat; fi) | awk '{print $1}' fi fi } @@ -56,7 +99,7 @@ hestia() { test "$1" = "-x" && shift && set -x command=$1 shift - echo '>' sudo $(which $command) "$@" >&2 + echo '>' sudo "$(which $command)" "$@" >&2 export SHELLOPTS sudo --preserve-env=SHELLOPTS timeout 30s $(which $command) "$@" set +x