nginx-mod-shapow
maintainer mzajc
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The source is a tarball from the maintainer's personal host, but it contains only the module's source code that is compiled locally; the package does not execute remote binaries or scripts, and the installed files are static assets and a compiled Nginx module, posing minimal supply-chain risk.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The source is a tarball from the maintainer's personal host, but it contains only the module's source code that is compiled locally; the package does not execute remote binaries or scripts, and the installed files are static assets and a compiled Nginx module, posing minimal supply-chain risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:15
source=(https://files.zajc.tel/public/builds/$_modname/$pkgver/$_modname-src-$pkgver.tar.xz)
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Marko Zajc <marko at zajc period tel>
2
3
pkgname=nginx-mod-shapow
4
pkgver=2.2
5
pkgrel=0
6
7
_modname="${pkgname#nginx-mod-}"
8
9
pkgdesc="Nginx module to keep bots out with a proof-of-work challenge"
10
arch=('x86_64')
11
makedepends=('nginx' 'nginx-src')
12
url="https://git.zajc.tel/shapow.git/about"
13
license=('AGPL-3.0-only')
14
15
source=(https://files.zajc.tel/public/builds/$_modname/$pkgver/$_modname-src-$pkgver.tar.xz)
16
sha256sums=('d954551f2567bcc05509e4d902b2c115eec974b9ea1263fe6678d6f7b015f255')
17
backup=('etc/nginx/modules.d/19-shapow.conf')
18
19
prepare() {
20
mkdir -p build
21
cd build
22
ln -sf /usr/src/nginx/auto
23
ln -sf /usr/src/nginx/src
24
25
sed -i 's|^#define NGX_HTTP_SHAPOW_RESOURCE_ROOT .*|#define NGX_HTTP_SHAPOW_RESOURCE_ROOT "/usr/share/'$pkgname'"|' \
26
"$srcdir/$_modname/src/config.h";
27
}
28
29
build() {
30
cd build
31
auto/configure \
32
--with-ld-opt="$LDFLAGS" \
33
--with-compat \
34
--add-dynamic-module=../$_modname
35
make modules
36
}
37
38
package() {
39
if [[ "$BUILDTOOL" == devtools ]]; then
40
local nginx_dep="nginx=$(nginx -v 2>&1 | sed 's|.*/||')"
41
depends+=($nginx_dep)
42
else
43
depends+=(nginx)
44
fi
45
46
install -Dm644 "$srcdir"/$_modname/README.md "$pkgdir"/usr/share/licenses/$pkgname/README.md
47
install -Dm644 "$srcdir"/$_modname/screenshot.png "$pkgdir"/usr/share/licenses/$pkgname/screenshot.png
48
install -Dm644 "$srcdir"/$_modname/resources/challenge.html "$pkgdir"/usr/share/$pkgname/challenge.html
49
install -Dm644 "$srcdir"/$_modname/resources/challenge.css "$pkgdir"/usr/share/$pkgname/challenge.css
50
install -Dm644 "$srcdir"/$_modname/resources/challenge.js "$pkgdir"/usr/share/$pkgname/challenge.js
51
install -Dm644 "$srcdir"/$_modname/resources/challenge-worker.js "$pkgdir"/usr/share/$pkgname/challenge-worker.js
52
install -dm0755 "$pkgdir"/etc/nginx/modules.d
53
54
cd build/objs
55
for mod in *.so; do
56
install -Dm755 $mod "$pkgdir"/usr/lib/nginx/modules/$mod
57
echo "load_module \"/usr/lib/nginx/modules/$mod\";" >> "$pkgdir/etc/nginx/modules.d/19-shapow.conf"
58
done
59
}
60
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |