aboutsummarylogtreecommitdiffstats
path: root/suscheck.sh
blob: b2a441755e1f86eda5826e3d423ad6790c19fc5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# suscheck.sh - CLI wrapper for suscheck package
# suspcheck.sh - filtering engine

# --- Default paths ---
SUSCHECK_ENGINE="./suspcheck.sh"
DATA_DIR="./suscheck-data"

# --- Parse flags ---
ACTION=""
COUNTRY=""
LOC=""
DOMAIN=""
MAINT=""

while getopts "ARc:l:d:m:" opt; do
    case "$opt" in
        A) ACTION="add" ;;
        R) ACTION="remove" ;;
        c) COUNTRY="$OPTARG" ;;
        l) LOC="$OPTARG" ;;
        d) DOMAIN="$OPTARG" ;;
        m) MAINT="$OPTARG" ;;
        *) echo "Usage: $0 [-A|-R] [-c country] [-l location] [-d domain] [-m maintainer] [PKGBUILD]"; exit 1 ;;
    esac
done
shift $((OPTIND-1))

# --- Determine JSON file ---
if [[ -n "$COUNTRY" ]]; then
    FILE="$DATA_DIR/${COUNTRY,,}.json"
else
    FILE="$DATA_DIR/suspicious.json"
fi

# --- Create file if adding and missing ---
if [[ "$ACTION" == "add" && ! -f "$FILE" ]]; then
    jq -n --arg c "$COUNTRY" '{country:$c,reason:"",cities:[],domains:[],maintainers:[]}' > "$FILE"
fi

# --- Add / Remove entries ---
if [[ -n "$ACTION" && -f "$FILE" ]]; then
    TMP=$(mktemp)
    if [[ "$ACTION" == "add" ]]; then
        [[ -n "$LOC" ]] && jq --arg l "$LOC" '.cities += [$l] | .cities |= unique' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        [[ -n "$DOMAIN" ]] && jq --arg d "$DOMAIN" '.domains += [$d] | .domains |= unique' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        [[ -n "$MAINT" ]] && jq --arg m "$MAINT" '.maintainers += [$m] | .maintainers |= unique' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        echo "✅ Added entries to $FILE"
    elif [[ "$ACTION" == "remove" ]]; then
        [[ -n "$LOC" ]] && jq --arg l "$LOC" '.cities -= [$l]' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        [[ -n "$DOMAIN" ]] && jq --arg d "$DOMAIN" '.domains -= [$d]' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        [[ -n "$MAINT" ]] && jq --arg m "$MAINT" '.maintainers -= [$m]' "$FILE" > "$TMP" && mv "$TMP" "$FILE"
        echo "✅ Removed entries from $FILE"
    fi
    exit 0
fi

# --- If no add/remove, call the filtering engine ---
PKGBUILD="$1"
if [[ -z "$PKGBUILD" ]]; then
    echo "Usage: $0 [-A|-R] [-c country] [-l location] [-d domain] [-m maintainer] [PKGBUILD]"
    exit 1
fi

"$SUSCHECK_ENGINE" "$PKGBUILD"