eusoft-ting-fr-bin
The package downloads a prebuilt .deb from the official project's static host (frdic.com), which is plausibly legitimate; the source is not executed directly but repackaged, and the build uses system Electron, reducing supply-chain risk despite the non-whitelisted host.
Triggered rules
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 package downloads a prebuilt .deb from the official project's static host (frdic.com), which is plausibly legitimate; the source is not executed directly but repackaged, and the build uses system Electron, reducing supply-chain risk despite the non-whitelisted host.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:22
"${pkgname%-bin}-${pkgver}.deb::https://static.frdic.com/pkg/${_pkgname}/${_pkgname}.deb" -
PKGBUILD:23
"LICENSE.html::https://www.eudic.net/v4/en/home/privacy"
PKGBUILD
2 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
_pkgname=ting_fr
pkgname="eusoft-${_pkgname//_/-}-bin"
_zhname='每日法语听力'
pkgver=10.2.0
_electronversion=11
pkgrel=1
pkgdesc="Listening statistics, note synchronization, and voice highlighting follow-up make learning French easy and enjoyable for you.(Prebuilt version.Use system-wide electron)听力统计、笔记同步、语音高亮跟随,让您轻松愉快学法语"
arch=('x86_64')
url="https://www.frdic.com/ting"
license=('LicenseRef-custom')
conflicts=(
"${pkgname%-bin}"
"eudic-${_pkgname}"
"${_pkgname}"
)
depends=(
"electron${_electronversion}"
'ffmpeg'
)
source=(
"${pkgname%-bin}-${pkgver}.deb::https://static.frdic.com/pkg/${_pkgname}/${_pkgname}.deb"
"LICENSE.html::https://www.eudic.net/v4/en/home/privacy"
"${pkgname%-bin}.sh"
)
sha256sums=('cdf9d08b640518a101e875a9d2b5c4e92e32258c78f0e98017020031803a4a93'
'7f16e15435a7380645f8573fd7333f67c16811c04c15364d2e5d7bd44fa5e23a'
'f2fe8c189974ffb9d445e9a42bd4f1d5b60185607c3fcafae79ab44be224e013')
_get_electron_version() {
_electronversion="$(strings "${srcdir}/opt/${_zhname}/${_pkgname}" | grep '^Chrome/[0-9.]* Electron/[0-9]' | cut -d'/' -f3 | cut -d'.' -f1)"
echo -e "The electron version is: \033[1;31m${_electronversion}\033[0m"
}
prepare() {
sed -i -e "
s/@electronversion@/${_electronversion}/g
s/@appname@/${pkgname%-bin}/g
s/@runname@/app.asar/g
s/@cfgdirname@/${_pkgname}/g
s/@options@//g
" "${srcdir}/${pkgname%-bin}.sh"
bsdtar -xf "${srcdir}/data."*
_get_electron_version
sed -i -e "
s/\"\/opt\/${_zhname}\/${_pkgname}\"/${pkgname%-bin}/g
s/Icon=${_pkgname}/Icon=${pkgname%-bin}/g
" "${srcdir}/usr/share/applications/${_pkgname}.desktop"
ln -sf "/usr/bin/ffmpeg" "${srcdir}/opt/${_zhname}/resources/ffmpeg-linux-x64"
}
package() {
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm644 "${srcdir}/opt/${_zhname}/resources/app.asar" -t "${pkgdir}/usr/lib/${pkgname%-bin}"
cp -Pr --no-preserve=ownership "${srcdir}/opt/${_zhname}/resources/app.asar.unpacked" "${pkgdir}/usr/lib/${pkgname%-bin}"
install -Dm644 "${srcdir}/opt/${_zhname}/swiftshader/"* -t "${pkgdir}/usr/lib/${pkgname%-bin}/swiftshader"
install -Dm644 "${srcdir}/usr/share/applications/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname%-bin}.desktop"
_icon_sizes=(32x32 128x128 256x256)
for _icons in "${_icon_sizes[@]}";do
install -Dm644 "${srcdir}/usr/share/icons/hicolor/${_icons}/apps/${_pkgname}.png" \
"${pkgdir}/usr/share/icons/hicolor/${_icons}/apps/${pkgname%-bin}.png"
done
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |