qoder-bin
maintainer zxp19821005
· 1 votes
· scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged
The package downloads a prebuilt RPM from a non-standard host (download.qoder.com) which is not a widely recognized distribution point, and the checksum is skipped, increasing supply-chain risk.
Triggered rules
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:29
"${pkgname%-bin}-${pkgver}.rpm::https://download.qoder.com/release/latest/${pkgname%-bin}_${CARCH}.rpm"
MEDIUM
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package downloads a prebuilt RPM from a non-standard host (download.qoder.com) which is not a widely recognized distribution point, and the checksum is skipped, increasing supply-chain risk.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2
pkgname=qoder-bin
3
_pkgname=Qoder
4
pkgver=1.20.1
5
_electronversion=42
6
pkgrel=1
7
pkgdesc="Agent Programming Platform for Real Software.(Prebuilt version.Use system-wide electron)"
8
arch=('x86_64')
9
url="https://qoder.com/"
10
_ghurl="https://github.com/QoderAI/changelog-zh_CN"
11
license=('LicenseRef-custom')
12
conflicts=("${pkgname%-bin}")
13
provides=("${pkgname%-bin}=${pkgver}")
14
depends=(
15
"electron${_electronversion}"
16
'libxkbfile'
17
'nodejs'
18
'python'
19
)
20
optdepends=(
21
'bash'
22
'zsh'
23
)
24
options=(
25
'!emptydirs'
26
'!strip'
27
)
28
source=(
29
"${pkgname%-bin}-${pkgver}.rpm::https://download.qoder.com/release/latest/${pkgname%-bin}_${CARCH}.rpm"
30
"LICENSE.html"
31
"${pkgname%-bin}.js"
32
"${pkgname%-bin}.sh"
33
)
34
sha256sums=('SKIP'
35
'd93359b3ca57aec94960975eec23b6412dc8fc0c5b5fcbce57bee0931e01ec61'
36
'3e78d843645c4cc5709698e0717785acdef5f36e60e3e220801bdf3b8effd799'
37
'700067aa4b354a91ab3374b5495af9eb3093855a3d8016a8303e88abf3470599')
38
pkgver() {
39
cd "${srcdir}/usr/share/${pkgname%-bin}/resources/app"
40
grep '"version":' featureFlags.json | awk -F'"version": "' '{print $2}' | awk -F',' '{print $1}' | tr -d '"'
41
}
42
_get_app_dir() {
43
find "${srcdir}" -type f -name "resources.pak" -exec dirname {} + | head -n 1
44
}
45
_check_electron_version() {
46
echo "Verifying Electron version..."
47
local _main_exe=$(find "$(_get_app_dir)" -maxdepth 1 -type f -executable -printf '%s %p\n' | sort -nr | head -1 | cut -d' ' -f2-)
48
[[ -z "${_main_exe}" ]] && echo -e "\033[1;33mNote: Could not find Electron binary.\033[0m" && return
49
local _elec_ver=$(strings "${_main_exe}" | grep -oP 'Electron/\K[0-9]+' | head -1)
50
[[ -z "${_elec_ver}" ]] && echo -e "\033[1;33mNote: Could not determine Electron version.\033[0m" && return
51
[[ "${_elec_ver}" != "${_electronversion}" ]] &&
52
echo -e "\033[1;31mWarning: Electron version mismatch! Detected: ${_elec_ver}, Expected: ${_electronversion}\033[0m" ||
53
echo -e "Electron version verified: \033[1;31m${_elec_ver}\033[0m"
54
}
55
prepare() {
56
_check_electron_version
57
sed -i -e "
58
s/@electronversion@/${_electronversion}/g
59
s/@appname@/${pkgname%-bin}/g
60
s/@runname@/app/g
61
s/@cfgdirname@/${_pkgname}/g
62
" "${srcdir}/${pkgname%-bin}.sh"
63
sed -i "s/@ELECTRON@/electron${_electronversion}/g" "${srcdir}/${pkgname%-bin}.js"
64
sed -i -e "
65
s/\/usr\/share\/${pkgname%-bin}\///g
66
s/Icon=${_pkgname}/Icon=${pkgname%-bin}/g
67
" "${srcdir}/usr/share/applications/${pkgname%-bin}"*.desktop
68
local _app_dir=$(_get_app_dir)
69
find "${_app_dir}/resources/app" -name "win32-*" -name "*.node" -delete
70
rm -rf \
71
"${_app_dir}/resources/app/node_modules/windows-foreground-love" \
72
"${_app_dir}/resources/app/node_modules/native-is-elevated" \
73
"${_app_dir}/resources/app/extensions/ms-vscode.js-debug/src/win32-app-container-tokens."*".node"
74
}
75
package() {
76
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
77
install -Dm755 "${srcdir}/${pkgname%-bin}.js" -t "${pkgdir}/usr/lib/${pkgname%-bin}"
78
local _app_dir=$(_get_app_dir)
79
cp -a "${_app_dir}/resources/app/"* "${pkgdir}/usr/lib/${pkgname%-bin}/"
80
install -Dm644 "${srcdir}/usr/share/pixmaps/${_pkgname}.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-bin}.png"
81
install -Dm644 "${srcdir}/usr/share/applications/${pkgname%-bin}"* -t "${pkgdir}/usr/share/applications"
82
install -Dm644 "${srcdir}/usr/share/appdata/${pkgname%-bin}.appdata.xml" -t "${pkgdir}/usr/share/appdata"
83
install -Dm644 "${srcdir}/usr/share/mime/packages/${pkgname%-bin}-workspace.xml" -t "${pkgdir}/usr/share/mime/packages"
84
if [ -x "/usr/bin/zsh" ];then
85
install -Dm644 "${srcdir}/usr/share/bash-completion/completions/${pkgname%-bin}" -t "${pkgdir}/usr/share/bash-completion/completions"
86
fi
87
if [ -x "/usr/bin/zsh" ];then
88
install -Dm644 "${srcdir}/usr/share/zsh/site-functions/_${pkgname%-bin}" -t "${pkgdir}/usr/share/zsh/site-functions"
89
fi
90
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
91
}
92
Changes since previous scan
--- PKGBUILD @ 2026-07-29 03:10+++ PKGBUILD @ 2026-08-03 00:08@@ -1,7 +1,7 @@ # Maintainer: zxp19821005 <zxp19821005 at 163 dot com> pkgname=qoder-bin _pkgname=Qoder-pkgver=1.19.1+pkgver=1.20.1 _electronversion=42 pkgrel=1 pkgdesc="Agent Programming Platform for Real Software.(Prebuilt version.Use system-wide electron)"Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 11:11:22 | MEDIUM | 2 |
| 2026-07-29 03:10:20 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 05:37:03 | MEDIUM | 2 |
| 2026-07-28 01:36:52 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 07:34:55 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 03:15:42 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |