summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO18
-rw-r--r--PKGBUILD18
-rw-r--r--ipset-loader25
-rw-r--r--ipset-loader@.service11
4 files changed, 72 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..c32b530a5b6f
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,18 @@
+pkgbase = ipset-loader-git
+ pkgdesc = ipset rule loader
+ pkgver = 0.1
+ pkgrel = 1
+ arch = any
+ license = GPL3
+ makedepends = git
+ depends = ipset
+ depends = zstd
+ provides = ipset-loader
+ conflicts = ipset-loader
+ source = ipset-loader@.service
+ source = ipset-loader
+ sha512sums = SKIP
+ sha512sums = SKIP
+
+pkgname = ipset-loader-git
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..fcffab1a9944
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,18 @@
+pkgname=ipset-loader-git
+pkgver=0.1
+pkgrel=1
+pkgdesc="ipset rule loader"
+arch=(any)
+license=(GPL3)
+depends=(ipset zstd)
+makedepends=(git)
+provides=(ipset-loader)
+conflicts=(ipset-loader)
+source=("ipset-loader@.service" "ipset-loader")
+sha512sums=(SKIP SKIP)
+
+package() {
+ install -Dm755 ipset-loader -t "$pkgdir"/usr/bin
+ install -Dm644 ipset-loader@.service -t "$pkgdir"/usr/lib/systemd/system/
+}
+
diff --git a/ipset-loader b/ipset-loader
new file mode 100644
index 000000000000..0d6e43932962
--- /dev/null
+++ b/ipset-loader
@@ -0,0 +1,25 @@
+#!/bin/bash
+if [ $# -eq 0 ]; then
+ echo "usage: $0 <ipset-file>"
+ echo "will also try ipset-file.zst if ipset-file does not exist."
+fi
+
+if [ ! -f $1 ]; then
+ if [ ! -f $1.zst ]; then
+ echo "fatal error: neither $1 nor $1.zst is found."
+ exit 1
+ else
+ echo "$1.zst is being loaded..."
+ zstdcat $1.zst | ipset restore -!
+ fi
+else
+ if [[ $1 == *.zst ]]; then
+ echo "$1 is being loaded..."
+ zstdcat $1 | ipset restore -!
+ else
+ echo "$1 is being loaded..."
+ cat $1 | ipset restore -!
+ fi
+fi
+
+exit $?
diff --git a/ipset-loader@.service b/ipset-loader@.service
new file mode 100644
index 000000000000..8e90d5999320
--- /dev/null
+++ b/ipset-loader@.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Load ipset from files
+After=network.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/ipset-loader /usr/share/ipset/%i
+
+[Install]
+WantedBy=multi-user.target
+