ZapretKVN-android/scripts/verify-rule-sets.sh
loop-uh b7de35157f
All checks were successful
Android CI / build (push) Successful in 9m30s
emias.info напрямую в rule-set zapret-ru-domains
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 07:00:37 -04:00

51 lines
1.9 KiB
Shell
Executable file

#!/usr/bin/env bash
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CLI="$PROJECT_ROOT/core-build/output/sing-box"
ASSETS="$PROJECT_ROOT/app/src/main/assets/rule-sets"
[[ -x "$CLI" ]] || { echo "Pinned audit CLI is missing." >&2; exit 1; }
TMP_DIR="$(mktemp -d)"
trap 'rm -rf -- "$TMP_DIR"' EXIT
"$CLI" rule-set compile \
"$PROJECT_ROOT/rulesets/zapret-ru-domains.json" \
-o "$TMP_DIR/zapret-ru-domains.srs"
cmp -s "$TMP_DIR/zapret-ru-domains.srs" "$ASSETS/zapret-ru-domains.srs" || {
echo "Packaged RU domain rule-set is not reproducible from pinned source/CLI." >&2
exit 1
}
expect_match() {
local file="$1" value="$2"
local output
output="$("$CLI" rule-set match -f binary "$file" "$value" 2>&1)"
grep -Fq 'match rules.' <<<"$output"
}
expect_no_match() {
local file="$1" value="$2"
local output
output="$("$CLI" rule-set match -f binary "$file" "$value" 2>&1)"
if grep -Fq 'match rules.' <<<"$output"; then
echo "Unexpected match: $file <- $value" >&2
exit 1
fi
}
expect_match "$ASSETS/zapret-ru-domains.srs" "example.ru"
expect_match "$ASSETS/zapret-ru-domains.srs" "example.xn--p1ai"
expect_match "$ASSETS/zapret-ru-domains.srs" "championat.com"
expect_match "$ASSETS/zapret-ru-domains.srs" "www.championat.com"
expect_no_match "$ASSETS/zapret-ru-domains.srs" "notchampionat.com"
expect_match "$ASSETS/zapret-ru-domains.srs" "emias.info"
expect_match "$ASSETS/zapret-ru-domains.srs" "lk.emias.info"
expect_no_match "$ASSETS/zapret-ru-domains.srs" "notemias.info"
expect_no_match "$ASSETS/zapret-ru-domains.srs" "example.com"
expect_match "$ASSETS/zapret-ru-ip.srs" "5.255.255.5"
expect_match "$ASSETS/zapret-ru-ip.srs" "2a02:6b8::feed:0ff"
expect_no_match "$ASSETS/zapret-ru-ip.srs" "1.1.1.1"
expect_no_match "$ASSETS/zapret-ru-ip.srs" "2606:4700:4700::1111"
echo "Packaged rule-set hashes, reproducibility and RU/non-RU IPv4/IPv6 matches passed."