Skip to content
Snippets Groups Projects
Select Git revision
  • c1f47674835f204859aadd8f25c7b40dae2bea24
  • main default protected
2 results

hakani.json

Blame
  • 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