From cc22db15dc9e4778bd7ed9260c15253d26bc20c6 Mon Sep 17 00:00:00 2001 From: Xevion Date: Thu, 7 Nov 2024 21:23:45 -0600 Subject: [PATCH] Switch Local VPN config to script --- home/dot_config/ovpn/Local.ovpn.tmpl | 1 - home/run_install_ovpn_config.sh.tmpl | 43 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) delete mode 100644 home/dot_config/ovpn/Local.ovpn.tmpl create mode 100644 home/run_install_ovpn_config.sh.tmpl diff --git a/home/dot_config/ovpn/Local.ovpn.tmpl b/home/dot_config/ovpn/Local.ovpn.tmpl deleted file mode 100644 index a823787..0000000 --- a/home/dot_config/ovpn/Local.ovpn.tmpl +++ /dev/null @@ -1 +0,0 @@ -{{- bitwardenAttachment "OpenVPN-Config.ovpn" "eca96b94-ee35-4aa8-a58f-b21e016c94a3" -}} \ No newline at end of file diff --git a/home/run_install_ovpn_config.sh.tmpl b/home/run_install_ovpn_config.sh.tmpl new file mode 100644 index 0000000..75a66f6 --- /dev/null +++ b/home/run_install_ovpn_config.sh.tmpl @@ -0,0 +1,43 @@ +#!/bin/bash +set -eu +{{/* This script pulls down the OpenVPN-Config.ovpn file. It will do so once per week. */ -}} + +FILE=~/.config/ovpn/Local.ovpn +ONE_WEEK=45 + +function displaytime { + local T=$1 + local D=$((T / 60 / 60 / 24)) + local H=$((T / 60 / 60 % 24)) + local M=$((T / 60 % 60)) + local S=$((T % 60)) + (($D > 0)) && printf '%d days ' $D + (($H > 0)) && printf '%d hours ' $H + (($M > 0)) && printf '%d minutes ' $M + (($D > 0 || $H > 0 || $M > 0)) && printf 'and ' + printf '%d seconds\n' $S +} + +download() { + echo "Downloading OpenVPN-Config.ovpn" + TEMP_FILE=$(mktemp) + if bw get attachment 'OpenVPN-Config.ovpn' --itemid eca96b94-ee35-4aa8-a58f-b21e016c94a3 --output "$TEMP_FILE"; then + mv "$TEMP_FILE" "$FILE" + else + echo "Failed to download OpenVPN-Config.ovpn" + fi +} + +# Check if file exists +if [ -f "$FILE" ]; then + FILE_ABSOLUTE=$(realpath "$FILE") + RELATIVE_SECONDS=$(expr $EPOCHSECONDS - $(stat -c %Y -- "$FILE_ABSOLUTE")) + + echo "File exists, last downloaded $(displaytime $RELATIVE_SECONDS) ago" + if ! test "$RELATIVE_SECONDS" -lt $ONE_WEEK; then + echo "File is older than a week, redownloading (last downloaded $(displaytime $RELATIVE_SECONDS) ago)" + download + fi +else + download +fi