110 lines
2.1 KiB
Bash
Executable file
110 lines
2.1 KiB
Bash
Executable file
#!/bin/zsh
|
|
|
|
# synapsys:
|
|
# cout "output_type" "message"
|
|
# supported output types:
|
|
# inf war err
|
|
cout() {
|
|
local msg="$2"
|
|
local lead="[=]"
|
|
if [[ "$1" == "war" ]]; then
|
|
lead="[?]"
|
|
fi
|
|
if [[ "$1" == "inf" ]]; then
|
|
lead="[=]"
|
|
fi
|
|
if [[ "$1" == "err" ]]; then
|
|
lead="[!]"
|
|
fi
|
|
print -P "$lead" "$msg"
|
|
}
|
|
|
|
|
|
# synapsys:
|
|
# ask "default_ans" "message"
|
|
#
|
|
# if user answers YES ask returns 0
|
|
# if NO, returns 1
|
|
#
|
|
# ex: ask "y" "overwrite?"
|
|
# out: overwrite? [Y/n]:
|
|
ask() {
|
|
local def_ans="$1"
|
|
local promt
|
|
if [[ "$def_ans" == "y" ]]; then
|
|
promt="[Y/n]"
|
|
elif [[ "$def_ans" == "n" ]]; then
|
|
promt="[y/N]"
|
|
else
|
|
cout "err" "ask() got \$default_ans as $1"
|
|
exit 10
|
|
fi
|
|
|
|
local msg="$2"
|
|
while [[ true ]]; do
|
|
local ans=''
|
|
read -r "ans?$msg $promt: "
|
|
local ans="${ans:l}"
|
|
|
|
if [[ "$def_ans" == "y" ]]; then
|
|
if [[ -z "$ans" || "$ans" == "y" || "$ans" == "yes" ]]; then
|
|
return 0
|
|
elif [[ "$ans" == "n" || "$ans" == "no" ]]; then
|
|
return 1
|
|
fi
|
|
|
|
elif [[ "$def_ans" == "n" ]]; then
|
|
if [[ -z "$ans" || "$ans" == "n" || "$ans" == "no" ]]; then
|
|
return 1
|
|
elif [[ "$ans" == "y" || "$ans" == "YES" ]]; then
|
|
return 0
|
|
fi
|
|
fi
|
|
done
|
|
|
|
}
|
|
|
|
# synapsys:
|
|
# abort_install "reason"
|
|
abort_install() {
|
|
cout "err" "%F{red}Install aborted:%f\t$1"
|
|
exit 1
|
|
}
|
|
|
|
if [[ ! $(id -g ipban) ]]; then
|
|
sudo groupadd --system ipban
|
|
else
|
|
abort_install "Group %Bipban%b already exists"
|
|
fi
|
|
|
|
if [[ ! $(id -u ipban) ]]; then
|
|
sudo useradd \
|
|
--system \
|
|
--gid ipban \
|
|
--no-create-home \
|
|
--comment "ipban service" \
|
|
--home-dir / \
|
|
--shell /sbin/nologin \
|
|
ipban
|
|
else
|
|
abort_install "User %Bipban%b already exists"
|
|
fi
|
|
|
|
db_dir="/var/lib/ipban"
|
|
if [[ ! -d $db_dir ]]; then
|
|
sudo mkdir $db_dir
|
|
sudo chmod 775 $db_dir
|
|
sudo chown ipban:ipban $db_dir
|
|
else
|
|
if ask "n" "directory $db_dir already exists. rewrite?"; then
|
|
sudo rm -rf $db_dir
|
|
|
|
sudo mkdir $db_dir
|
|
sudo chmod 775 $db_dir
|
|
sudo chown ipban:ipban $db_dir
|
|
else
|
|
abort_install "User decided not to overwrite \'$db_dir\'. Which is requred to store banned ip\'s"
|
|
fi
|
|
fi
|
|
|
|
#TODO: create systemd service
|