Archived
Build KarlDNS self-hosted DynDNS service
This commit is contained in:
1 parent
45bc38d950
commit
ca92dc211a
65 files changed
+9200
-3570
No files matched your search
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
KARLDNS_INSTALL_MODE="${KARLDNS_INSTALL_MODE:-auto}"
|
||||
KARLDNS_DELETE_CONFIG="${KARLDNS_DELETE_CONFIG:-0}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
KarlDNS Linux uninstaller
|
||||
|
||||
Usage:
|
||||
uninstall-linux.sh [options]
|
||||
|
||||
Options:
|
||||
--mode MODE auto, system, or user. Default: auto
|
||||
--delete-config Also delete the private updater config and last-IP cache
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
}
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--mode) KARLDNS_INSTALL_MODE="${2:?missing value for --mode}"; shift 2 ;;
|
||||
--delete-config) KARLDNS_DELETE_CONFIG=1; shift ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) echo "KarlDNS uninstaller: unknown option: $1" >&2; usage >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
remove_user() {
|
||||
config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/karldns"
|
||||
cache_dir="${XDG_CACHE_HOME:-$HOME/.cache}/karldns"
|
||||
updater_path="${HOME}/.local/bin/karldns-update"
|
||||
cron_file="$(mktemp)"
|
||||
|
||||
if command -v crontab >/dev/null 2>&1; then
|
||||
crontab -l 2>/dev/null | awk '
|
||||
$0 == "# karldns-update start" {skip = 1; next}
|
||||
$0 == "# karldns-update end" {skip = 0; next}
|
||||
skip != 1 {print}
|
||||
' > "$cron_file" || true
|
||||
crontab "$cron_file"
|
||||
fi
|
||||
rm -f "$cron_file" "$updater_path"
|
||||
|
||||
if [ "$KARLDNS_DELETE_CONFIG" = "1" ]; then
|
||||
rm -rf "$config_dir" "$cache_dir"
|
||||
fi
|
||||
}
|
||||
|
||||
remove_system() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "System uninstall needs root. Re-run with sudo or set --mode user." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -f /etc/cron.d/karldns-updater /usr/local/bin/karldns-update
|
||||
if [ "$KARLDNS_DELETE_CONFIG" = "1" ]; then
|
||||
rm -rf /etc/karldns /var/cache/karldns
|
||||
fi
|
||||
}
|
||||
|
||||
case "$KARLDNS_INSTALL_MODE" in
|
||||
auto)
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
KARLDNS_INSTALL_MODE="system"
|
||||
else
|
||||
KARLDNS_INSTALL_MODE="user"
|
||||
fi
|
||||
;;
|
||||
user|system) ;;
|
||||
*) echo "KARLDNS_INSTALL_MODE must be auto, user, or system" >&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
if [ "$KARLDNS_INSTALL_MODE" = "system" ]; then
|
||||
remove_system
|
||||
else
|
||||
remove_user
|
||||
fi
|
||||
|
||||
echo "KarlDNS uninstalled from $KARLDNS_INSTALL_MODE mode."
|
||||
if [ "$KARLDNS_DELETE_CONFIG" = "0" ]; then
|
||||
echo "Private config was kept. Re-run with --delete-config to remove it."
|
||||
fi
|
||||
Reference in new issue
Block a user