106 lines
3.5 KiB
Bash
106 lines
3.5 KiB
Bash
![]() |
#!/bin/bash
|
||
|
# Info: Script to install/create/delete/update coredns from file settings
|
||
|
# Author: JesusPerezLorenzo
|
||
|
# Release: 1.0
|
||
|
# Date: 12-11-2024
|
||
|
|
||
|
USAGE="install-coredns.sh install | update | remvoe"
|
||
|
[ "$1" == "-h" ] && echo "$USAGE" && exit 1
|
||
|
|
||
|
[ -r "env-coredns" ] && . ./env-coredns
|
||
|
|
||
|
OS=$(uname | tr '[:upper:]' '[:lower:]')
|
||
|
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')"
|
||
|
CMD_TSKSRVC=${1:-install}
|
||
|
|
||
|
HOSTNAME=$(hostname)
|
||
|
export LC_CTYPE=C.UTF-8
|
||
|
export LANG=C.UTF-8
|
||
|
|
||
|
[ ! -d "/etc/coredns" ] && sudo mkdir /etc/coredns
|
||
|
ROOT=$(dirname "$0")
|
||
|
|
||
|
_init() {
|
||
|
[ -z "$COREDNS_VERSION" ] || [ -z "$ARCH" ] && exit 1
|
||
|
local has_coredns
|
||
|
local curr_vers
|
||
|
has_coredns=$(type -P coredns)
|
||
|
[ -n "$has_coredns" ] && curr_vers=$(coredns -version 2>/dev/null | grep CoreDNS | cut -f2 -d"-" | sed 's/ //g')
|
||
|
[ "$curr_vers" == "$COREDNS_VERSION" ] && return
|
||
|
[ -n "$has_coredns" ] && sudo timeout -k 10 20 systemctl stop coredns
|
||
|
[ ! -d "tmp" ] && mkdir tmp
|
||
|
rm -f "tmp/coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz"
|
||
|
if ! curl -fsSL https://github.com/coredns/coredns/releases/download/v${COREDNS_VERSION}/coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz -o "tmp/coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz" ; then
|
||
|
echo "Error downloading coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz"
|
||
|
exit 1
|
||
|
fi
|
||
|
if ! tar xzf "tmp/coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz" -C tmp ; then
|
||
|
echo "Error extracting coredns_${COREDNS_VERSION}-${ARCH}.tar.gz"
|
||
|
exit 1
|
||
|
fi
|
||
|
rm -f "tmp/coredns_${COREDNS_VERSION}_${OS}_${ARCH}.tgz"
|
||
|
[ ! -r "tmp/coredns" ] && echo "Error extracting coredns" && exit 1
|
||
|
chmod +x tmp/coredns
|
||
|
sudo mv tmp/coredns /usr/local/bin
|
||
|
rm -r "tmp"
|
||
|
}
|
||
|
_config_coredns() {
|
||
|
[ ! -d "/etc/coredns" ] && sudo mkdir /etc/coredns
|
||
|
|
||
|
has_user=$(sudo grep coredns /etc/passwd)
|
||
|
[ -z "$has_user" ] && sudo useradd -d /var/lib/coredns -m coredns
|
||
|
|
||
|
# [ ! -d "/etc/ssl/coredns" ] && sudo mkdir -p /etc/ssl/coredns
|
||
|
sudo cp "$ROOT"/Corefile /etc/coredns 2>/dev/null
|
||
|
sudo cp "$ROOT"/resources/* /etc/coredns 2>/dev/null
|
||
|
sudo rm -f /etc/coredns/*.j2
|
||
|
sudo chown -R coredns:coredns /etc/coredns
|
||
|
|
||
|
if [ ! -L "/etc/systemd/system/coredns.service" ] ; then
|
||
|
sudo cp coredns.service /lib/systemd/system/coredns.service
|
||
|
sudo timeout -k 10 20 systemctl daemon-reload >/dev/null 2>&1
|
||
|
#[ ! -L "/etc/systemd/system/coredns.service" ] && sudo ln -s /lib/systemd/system/coredns.service /etc/systemd/system
|
||
|
fi
|
||
|
sudo timeout -k 10 20 systemctl enable --now coredns >/dev/null 2>&1
|
||
|
sudo timeout -k 10 20 systemctl restart coredns >/dev/null 2>&1
|
||
|
}
|
||
|
_stop_resolved() {
|
||
|
sudo timeout -k 10 20 systemctl stop coredns >/dev/null 2>&1
|
||
|
sudo timeout -k 10 20 systemctl disable coredns >/dev/null 2>&1
|
||
|
}
|
||
|
_remove_coredns() {
|
||
|
sudo timeout -k 10 20 systemctl stop coredns >/dev/null 2>&1
|
||
|
sudo timeout -k 10 20 systemctl disable coredns >/dev/null 2>&1
|
||
|
}
|
||
|
_start_coredns() {
|
||
|
sudo timeout -k 10 20 systemctl enable coredns >/dev/null 2>&1
|
||
|
sudo timeout -k 10 20 systemctl start coredns >/dev/null 2>&1
|
||
|
}
|
||
|
_restart_coredns() {
|
||
|
sudo timeout -k 10 20 systemctl restart coredns >/dev/null 2>&1
|
||
|
}
|
||
|
if [ "$CMD_TSKSRVC" == "config" ] ; then
|
||
|
_config_coredns
|
||
|
exit
|
||
|
fi
|
||
|
if [ "$CMD_TSKSRVC" == "remove" ] ; then
|
||
|
_remove_coredns
|
||
|
exit
|
||
|
fi
|
||
|
if ! _init ; then
|
||
|
echo "error coredns init"
|
||
|
exit 1
|
||
|
fi
|
||
|
if ! _config_coredns ; then
|
||
|
echo "error coredns config"
|
||
|
exit 1
|
||
|
fi
|
||
|
[ "$CMD_TSKSRVC" == "update" ] && _restart_coredns && exit 0
|
||
|
if ! _stop_resolved ; then
|
||
|
echo "error coredns stop"
|
||
|
exit 1
|
||
|
fi
|
||
|
if ! _start_coredns ; then
|
||
|
echo "error coredns start"
|
||
|
exit 1
|
||
|
fi
|