diff options
author | Wojciech Kosior <kwojtus@protonmail.com> | 2020-06-04 20:41:50 +0200 |
---|---|---|
committer | Wojciech Kosior <kwojtus@protonmail.com> | 2020-06-04 20:41:50 +0200 |
commit | 3dbec14a792b2ea6d8f67a6090d57f0f1859e6d9 (patch) | |
tree | 9527df38ab3c86f12759a7781d6b777bbc168466 | |
parent | 5921557e322c0386ebc9a4ae00a9466c484eefb4 (diff) | |
download | 0tdns-3dbec14a792b2ea6d8f67a6090d57f0f1859e6d9.tar.gz 0tdns-3dbec14a792b2ea6d8f67a6090d57f0f1859e6d9.zip |
integrate with cron daemon
-rw-r--r-- | 0tdns_crontab | 1 | ||||
-rwxr-xr-x | setup.sh | 24 | ||||
-rwxr-xr-x | uninstall.sh | 13 |
3 files changed, 37 insertions, 1 deletions
diff --git a/0tdns_crontab b/0tdns_crontab new file mode 100644 index 0000000..306d439 --- /dev/null +++ b/0tdns_crontab @@ -0,0 +1 @@ +0 * * * * /usr/sbin/hourly.sh # <AUTO_GENERATED_0TDNS_ENTRY> do not remove this '<>' tag @@ -1,9 +1,31 @@ #!/bin/sh +# https://stackoverflow.com/questions/2990414/echo-that-outputs-to-stderr +errcho(){ >&2 echo "$@"; } + # run this script as root, once, at installation +if id -u 0tdns > /dev/null 2>&1; then + errcho "User 0tdns already exists." + errcho "Do you have Zero Trust DNS already set up?" + errcho "If so, you need to uninstall it properly" + errcho "(e.g. via provided uninstall.sh script)" + errcho "before setting it up again" + exit 1 +fi -# more will go here (e.g. initialization of postgres database) +if [ `id -u` != 0 ]; then + errcho "This script needs to be run as root" + exit 1 +fi # part of the program running inside network namespace # will run under this user useradd --system 0tdns + +# crontab automatically adds a 'DO NOT EDIT' header to +# crontab file; if we don't remove it every time - headers +# will accumulate :/ (not on Debian, though) +# line we want to add to crontab is in 0tdns_crontab file +crontab -l 2> /dev/null | + grep -vE '^# DO NOT EDIT THIS FILE|^# \(- installed on .*\)|^# \(Cron version .*\)' | + cat - 0tdns_crontab | crontab diff --git a/uninstall.sh b/uninstall.sh index 7c14cba..fee17b2 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -1,10 +1,23 @@ #!/bin/sh +# https://stackoverflow.com/questions/2990414/echo-that-outputs-to-stderr +errcho(){ >&2 echo "$@"; } + # run as root, obviously +if [ `id -u` != 0 ]; then + errcho "This script needs to be run as root" + exit 1 +fi # revert what was done in setup.sh userdel 0tdns +# remove our crontab entry marked with '<AUTO_GENERATED_0TDNS_ENTRY>' +# we also remove the 'DO NOT EDIT' header, as in setup.sh +crontab -l 2> /dev/null | + grep -vE '^# DO NOT EDIT THIS FILE|^# \(- installed on .*\)|^# \(Cron version .*\)' | + grep -v '<AUTO_GENERATED_0TDNS_ENTRY>' | crontab + # if told to - also revert what was done in install.sh if [ "x$1" = "x--delete-files" ]; then rm -r /var/lib/0tdns/ |