From 284d151d65e0ea43e5a41ab0d409f6549cde464b Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 11 Jan 2022 21:34:22 +0300 Subject: add ipset script --- cf-ipset.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 cf-ipset.sh diff --git a/cf-ipset.sh b/cf-ipset.sh new file mode 100755 index 0000000..29bfa66 --- /dev/null +++ b/cf-ipset.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +TEMP=$(mktemp) +IPSET_NAME="$1" + +ipset_exists() { + ipset -L "$1" >/dev/null 2>/dev/null +} + +die() { + echo "error: $@" + [ -f "$TEMP" ] && rm "$TEMP" + exit 1 +} + +[ -z "$IPSET_NAME" ] && { + echo "usage: $0 IPSET_NAME" + exit +} + +if ! ipset_exists "$IPSET_NAME"; then + echo "warn: set $IPSET_NAME doesn't exists, creating it for you..." + ipset create $IPSET_NAME hash:net || die "failed to create ipset" +fi + +list=$(curl -s "https://www.cloudflare.com/ips-v4") +[ -z "$list" ] && die "failed to fetch cf networks" + +ipset flush $IPSET_NAME || die "failed to flush $IPSET_NAME" +for net in $list; do + ipset add $IPSET_NAME $net || echo "error: failed to add $net to $IPSET_NAME" +done -- cgit v1.2.3