Select Git revision
hakani.json
ban.sh 1.40 KiB
#!/bin/bash
# Check valid IP
validate_ipv4() {
local ip="$1"
local regex='^([0-9]{1,3}\.){3}[0-9]{1,3}$'
# Check Format
if [[ ! $ip =~ $regex ]]; then
echo "Invalid IPv4 address: inccorect format"
return 1
fi
# Chack bit between 0 and 255
IFS='.' read -r -a octets <<< "$ip"
for octet in "${octets[@]}"; do
if ((octet < 0 || octet > 255)); then
echo "Invalid IPv4 address: Byte out of range (0-255)"
return 1
fi
done
return 0
}
# Check if parms
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <ipv4 address>"
exit 1
fi
# Chack if is IP
validate_ipv4 "$1"
if [[ $? -eq 0 ]]; then
domain=$(docker ps -qa | xargs docker inspect | awk '/traefik.http.routers.*.rule/{print $2}' | sed -e 's/^"Host(`//' -e 's/`)",*//' -e 's/`,`/\n/g' | grep -v 'ClientIP' | sort -u | sed "s/^/\`/" | sed "s/$/\`/" | paste -sd ",")
sed -i "s/HOSTS=.*/HOSTS=$domain/" .env
IP="$1"
# if BAN_IPS is empt or note
if grep -q "^BAN_IPS=" .env && grep -q "^BAN_IPS=$" .env; then
# if BAN_IPS empty, put ip
sed -i "s/^BAN_IPS=$/BAN_IPS=\`$IP\`/" .env
else
# else, add comma between ip
sed -i -E "/^BAN_IPS=/ s/$/,\`$IP\`/" .env
fi
# sed -i "s/^BAN_IPS=\(.*\)/BAN_IPS=\1,\`$1\`/" .env
# sed "s/^BAN_IPS=\(.*\)/BAN_IPS=\1,\`79.85.55.114\`/" .env
docker-compose up -d
else
exit 1
fi