js-design-electron-bin
maintainer zxp19821005
· 1 votes
· scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged
The package downloads a prebuilt AppImage from a non-standard host (download.js.design), which is not on common trust whitelists and could allow supply-chain tampering of an executable with a skipped checksum; however, it is plausibly the official project's own distribution domain.
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:16
"${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://download.js.design/assets/download/%E5%8D%B3%E6%97%B6%E8%AE%BE%E8%AE%A1%20Linux%E7%89%88.AppImage"
MEDIUM
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-07-25) reviewed this and agrees it is MEDIUM (confidence 85%): The package downloads a prebuilt AppImage from a non-standard host (download.js.design), which is not on common trust whitelists and could allow supply-chain tampering of an executable with a skipped checksum; however, it is plausibly the official project's own distribution domain.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2
_pkgname=js.design
3
pkgname="${_pkgname//./-}-electron-bin"
4
pkgver=1.0.7
5
_electronversion=15
6
pkgrel=5
7
pkgdesc="A professional UI design software tailored for Chinese designers.(Prebuilt version.Use system-wide electron)即时设计"
8
arch=('x86_64')
9
url="https://js.design"
10
license=("LicenseRef-custom")
11
conflicts=("${_pkgname//./-}")
12
depends=(
13
"electron${_electronversion}"
14
)
15
source=(
16
"${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://download.js.design/assets/download/%E5%8D%B3%E6%97%B6%E8%AE%BE%E8%AE%A1%20Linux%E7%89%88.AppImage"
17
"LICENSE.txt"
18
"${pkgname%-bin}.sh"
19
)
20
sha256sums=('3697482be454c0191810f39b0b93eb3c28eb5e9c77c6c3ad0634269f8e1a2bd5'
21
'f1c8afcb7fbd3ad91d1f8b4bea8d66a21f9cb85be22b16ce652b66ca9473c616'
22
'a774c2f54fbbeeaac3cefc0f7250796d30c86d27f0fd40b7eaf9c0fdb021623d')
23
pkgver() {
24
cd "${srcdir}/squashfs-root"
25
grep "X-AppImage-Version" "${_pkgname}.desktop" | sed "s/X-AppImage-Version=//g"
26
}
27
_get_app_dir() {
28
find "${srcdir}" -type f -name "resources.pak" -exec dirname {} + | head -n 1
29
}
30
_check_electron_version() {
31
echo "Verifying Electron version..."
32
local _app_dir=$(_get_app_dir)
33
local _main_exe=""
34
if [[ -n "${_app_dir}" ]]; then
35
_main_exe=$(find "${_app_dir}" -maxdepth 1 -type f -executable -printf '%s %p\n' | sort -nr | head -n 1 | cut -d' ' -f2-)
36
fi
37
if [[ -n "${_main_exe}" ]]; then
38
local _elec_ver=$(strings "${_main_exe}" | grep '^Chrome/[0-9.]* Electron/[0-9]' | cut -d'/' -f3 | cut -d'.' -f1 | head -n 1)
39
if [[ -n "${_elec_ver}" ]]; then
40
if [[ "${_elec_ver}" != "${_electronversion}" ]]; then
41
echo -e "\033[1;31mWarning: Electron version mismatch! Detected: ${_elec_ver}, Expected: ${_electronversion}\033[0m"
42
else
43
echo -e "Electron version verified: \033[1;31m${_elec_ver}\033[0m"
44
fi
45
fi
46
else
47
echo -e "\033[1;33mNote: Could not find Electron binary for version verification.\033[0m"
48
fi
49
}
50
prepare() {
51
sed -i -e "
52
s/@electronversion@/${_electronversion}/g
53
s/@appname@/${pkgname%-bin}/g
54
s/@runname@/app.asar/g
55
s/@cfgdirname@/${_pkgname}/g
56
" "${srcdir}/${pkgname%-bin}.sh"
57
if [ ! -x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" ];then
58
chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage"
59
fi
60
if [ -d "${srcdir}/squashfs-root" ];then
61
rm -rf "${srcdir}/squashfs-root"
62
fi
63
"${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" --appimage-extract > /dev/null
64
_check_electron_version
65
local _app_dir=$(_get_app_dir)
66
sed -i -e "
67
s/AppRun --no-sandbox/${pkgname%-bin}/g
68
s/Icon=${_pkgname}/Icon=${pkgname%-bin}/g
69
" "${_app_dir}/${_pkgname}.desktop"
70
}
71
package() {
72
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
73
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-bin}"
74
local _app_dir=$(_get_app_dir)
75
cp -a "${_app_dir}/resources/". "${pkgdir}/usr/lib/${pkgname%-bin}/"
76
install -Dm644 "${_app_dir}/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname%-bin}.desktop"
77
find "${srcdir}" -type f \( -name "*.png" -o -name "*.svg" \) -path "*share/icons/*" | while read -r _i; do
78
_extension="${_i##*.}"
79
_icon_path="${_i#*share/icons/}"
80
_target_dir="/usr/share/icons/$(dirname "${_icon_path}")"
81
install -Dm644 "${_i}" "${pkgdir}${_target_dir}/${pkgname%-bin}.${_extension}"
82
done
83
install -Dm644 "${srcdir}/LICENSE.txt" -t "${pkgdir}/usr/share/licenses/${pkgname}"
84
}
85
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 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | 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 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |