summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2022-01-11 21:09:38 +0300
committerEvgeny Zinoviev <me@ch1p.io>2022-01-11 21:09:38 +0300
commitce7eb4316d90bbc727b956fd7732ace558654305 (patch)
treeb90fa0f5774ad753fa00f0696455d1a65e6487b3
initial
-rwxr-xr-xcf-nginx-wl.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/cf-nginx-wl.sh b/cf-nginx-wl.sh
new file mode 100755
index 0000000..d7f67bb
--- /dev/null
+++ b/cf-nginx-wl.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+TEMP=$(mktemp)
+OUTPUT="$1"
+
+die() {
+ echo "error: $@"
+ [ -f "$TEMP" ] && rm "$TEMP"
+ exit 1
+}
+
+[ -z "$OUTPUT" ] && {
+ echo "usage: $0 OUTPUT"
+ exit
+}
+
+curl -s "https://www.cloudflare.com/ips-v4" --output "$TEMP" || die "downloading failed"
+[ -s "$TEMP" ] || die "temp file is empty"
+
+cat "$TEMP" | sed 's/^/allow /g' | sed 's/$/;/g' | tee "$TEMP" > /dev/null
+echo -e "satisfy all;\n$(cat "$TEMP")" > "$TEMP"
+echo "deny all;" >> "$TEMP"
+
+[ -f "$OUTPUT" ] && {
+ rm "$OUTPUT" || die "failed to remove old file $OUTPUT"
+}
+mv "$TEMP" "$OUTPUT"