shinobi-git
maintainer AlphaJack
· 5 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The npm install commands are for the project's own dependencies during build, using the source from the official GitLab repository; installing 'pg' is a declared optional dependency for PostgreSQL support, consistent with optdepends.
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 npm install commands are for the project's own dependencies during build, using the source from the official GitLab repository; installing 'pg' is a declared optional dependency for PostgreSQL support, consistent with optdepends.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
npm/yarn/pnpm install of an undeclared external package
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:47
npm install --user root -
PKGBUILD:48
npm install --user root pg
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer: AlphaJack <alphajack at tuta dot io>
2
3
pkgname="shinobi-git"
4
pkgver=r3116.07584db3
5
pkgrel=2
6
pkgdesc="The Open Source CCTV and NVR Solution"
7
url="https://shinobi.video/"
8
license=("custom") # not free for commercial use
9
arch=("any")
10
provides=("shinobi")
11
depends=("ffmpeg" "nodejs")
12
makedepends=("npm" "git")
13
optdepends=("mariadb: database"
14
"postgresql: database"
15
)
16
source=("git+https://gitlab.com/Shinobi-Systems/Shinobi.git"
17
"shinobi-camera.service"
18
"shinobi-cron.service"
19
"shinobi.target"
20
"shinobi.sysusers"
21
"shinobi.tmpfiles"
22
"conf.json"
23
"super.json")
24
sha256sums=('SKIP'
25
'da346d9858dafb1a42dd43153d26763de05bc7cdabb5563b979ca62d2cc51ce3'
26
'adacf7a3ec970e6d5c5d8c339f56bdce3720b952ab7278f31d70a294fd0b5bdd'
27
'676111c7502ed43671ac5a4451ee0f89913de1c4b4f1e2120cd5c4b89e842757'
28
'e7c849bfcf8619a093ec75467cf5e44b34cd3621fa0d639bfacf4c88e0bad258'
29
'a0213eb276dfd468ed835cccceece75da92141716afa4c2426e20a06f64b5625'
30
'a328e61ddb909cc0216569ed08ee5f4e35ce770da53995ab7d6413479ae8e106'
31
'b6f2093025736770ed18141eee36b2cd2507142310bb258bf6365c4740c9aae6')
32
backup=("etc/shinobi/conf.json" "etc/shinobi/super.json")
33
install="shinobi.install"
34
options=("!strip")
35
36
pkgver(){
37
cd "Shinobi"
38
# git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g' # -> fatal: No annotated tags can describe '07584db326ba8077f448a8383cc677469a769cbf'.
39
# git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g' # -> furrykitten.3.r534.g07584db3
40
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" # -> r3116.07584db3
41
}
42
43
package(){
44
# no /usr/bin, just systemd files
45
cd "Shinobi"
46
# program files
47
npm install --user root
48
npm install --user root pg
49
install -d "$pkgdir/usr/share/shinobi"
50
cp -r * "$pkgdir/usr/share/shinobi"
51
# configuration files
52
install -d -m 750 "$pkgdir/etc/shinobi/"
53
install -D -m 660 "$srcdir/conf.json" "$pkgdir/etc/shinobi/conf.json"
54
install -D -m 660 "$srcdir/super.json" "$pkgdir/etc/shinobi/super.json"
55
ln -s "/etc/shinobi/conf.json" "$pkgdir/usr/share/shinobi"
56
ln -s "/etc/shinobi/super.json" "$pkgdir/usr/share/shinobi"
57
# systemd files
58
install -D -m 644 "$srcdir/shinobi-camera.service" "$pkgdir/usr/lib/systemd/system/shinobi-camera.service"
59
install -D -m 644 "$srcdir/shinobi-cron.service" "$pkgdir/usr/lib/systemd/system/shinobi-cron.service"
60
install -D -m 644 "$srcdir/shinobi.target" "$pkgdir/usr/lib/systemd/system/shinobi.target"
61
install -D -m 644 "$srcdir/shinobi.sysusers" "$pkgdir/usr/lib/sysusers.d/shinobi.conf"
62
install -D -m 644 "$srcdir/shinobi.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/shinobi.conf"
63
# custom license
64
install -D -m 644 "LICENSE.md" "$pkgdir/usr/share/licenses/shinobi/LICENSE"
65
# version.json is used by the web server
66
# https://gitlab.com/Shinobi-Systems/Shinobi/-/issues/23
67
echo '{"Product" : "Shinobi Professional (Pro)" , "Branch" : "master" , "Version" : "'"$(git rev-parse HEAD)"'" , "Date" : "'"$(date)"'" , "Repository" : "https://gitlab.com/Shinobi-Systems/Shinobi"}' > "$pkgdir/usr/share/shinobi/version.json"
68
}
69
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 |