eusoft-eudic-bin
The package downloads a prebuilt AppImage binary from static-main.frdic.com (the official CDN of Eudic/Eusoft, the legitimate vendor of this Chinese dictionary software). The domain frdic.com is the known official domain for Eudic (French Dictionary/Eudic brand in China). The AppImage is extracted and its contents installed system-wide. While this is an unofficial AUR package wrapping a proprietary binary, the source host appears to be the legitimate vendor CDN rather than a personal/random host. However, there is no integrity verification beyond a sha256sum of the AppImage itself (which could be silently replaced at the URL since the version is embedded in a query parameter). The sha256sum provides some protection against substitution at download time. The LICENSE.html and wrapper script are listed in sources without URLs, meaning they must be pre-existing files in the AUR git repo — this is a minor concern but normal for AUR packages. Overall this is a standard proprietary binary packaging pattern for AUR: a prebuilt binary from what appears to be the official vendor CDN, with checksums. The medium rating is marginally justified due to the proprietary binary execution and the query-parameter versioning scheme, but this is a common and accepted AUR pattern for commercial software. Confidence is moderate because frdic.com is the legitimate Eudic vendor domain.
Triggered rules
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:30
"${pkgname%-bin}-${pkgver}.AppImage::https://static-main.frdic.com/pkg/eudic.AppImage?v=${pkgver//./-}"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The package downloads a prebuilt AppImage binary from static-main.frdic.com (the official CDN of Eudic/Eusoft, the legitimate vendor of this Chinese dictionary software). The domain frdic.com is the known official domain for Eudic (French Dictionary/Eudic brand in China). The AppImage is extracted and its contents installed system-wide. While this is an unofficial AUR package wrapping a proprietary binary, the source host appears to be the legitimate vendor CDN rather than a personal/random host. However, there is no integrity verification beyond a sha256sum of the AppImage itself (which could be silently replaced at the URL since the version is embedded in a query parameter). The sha256sum provides some protection against substitution at download time. The LICENSE.html and wrapper script are listed in sources without URLs, meaning they must be pre-existing files in the AUR git repo — this is a minor concern but normal for AUR packages. Overall this is a standard proprietary binary packaging pattern for AUR: a prebuilt binary from what appears to be the official vendor CDN, with checksums. The medium rating is marginally justified due to the proprietary binary execution and the query-parameter versioning scheme, but this is a common and accepted AUR pattern for commercial software. Confidence is moderate because frdic.com is the legitimate Eudic vendor domain.
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com> / ihipop <ihipop at gmail dot com>
_pkgname=eudic
pkgname="eusoft-${_pkgname}-bin"
pkgver=11.6.0
pkgrel=1
pkgdesc="Authoritative English dictionary software, an essential tool for English learners.(Prebuilt version)权威的英语词典软件,英语学习者必备的工具."
arch=('x86_64')
url="https://www.eudic.net/v4/en/app/eudic"
license=('LicenseRef-custom')
provides=("${_pkgname}=${pkgver}")
conflicts=("${pkgname%-bin}" "${_pkgname}")
options=('!strip')
depends=(
'nss'
'alsa-lib'
'libdrm'
'harfbuzz'
'mesa'
'libthai'
'fontconfig'
)
makedepends=(
'fuse2'
)
options=(
'!strip'
'!emptydirs'
)
source=(
"${pkgname%-bin}-${pkgver}.AppImage::https://static-main.frdic.com/pkg/eudic.AppImage?v=${pkgver//./-}"
"LICENSE.html"
"${pkgname%-bin}.sh"
)
sha256sums=('5b5e107fc99b700bfb519d2ecaf6877bbf117ceee7cc8f784c784e0be8b0a2a3'
'89862f4074e530896863738bf9d49c03c8d0cd0f6a543d4ccc1cdc53e8f83a24'
'f8da4fa48422d34fd5e2f8e1e87c9f52b66a7308a88855c39ae03599209dcbaf')
prepare() {
sed -i -e "
s/@appname@/${pkgname%-bin}/g
s/@runname@/${_pkgname}/g
" "${srcdir}/${pkgname%-bin}.sh"
chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}.AppImage"
rm -rf "${srcdir}/squashfs-root/"
"${srcdir}/${pkgname%-bin}-${pkgver}.AppImage" --appimage-extract > /dev/null
rm -f "${srcdir}"*.AppImage
sed -i -e "
s/\/usr\/share\/${_pkgname}\/AppRun/env QT_AUTO_SCREEN_SCALE_FACTOR=1 QT_IM_MODULE=fcitx QT_QPA_PLATFORM=\"xcb\" ${pkgname%-bin}/g
s/Icon=com.eusoft.${_pkgname}/Icon=${pkgname%-bin}/g
" "${srcdir}/squashfs-root/default.desktop"
ln -sf "/usr/lib/qt/plugins/platforminputcontexts/libfcitx"*.so "${srcdir}/squashfs-root/plugins/platforminputcontexts/"
}
package() {
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-bin}"
cp -Pr --no-preserve=ownership "${srcdir}/squashfs-root/"* "${pkgdir}/usr/lib/${pkgname%-bin}"
install -Dm644 "${srcdir}/squashfs-root/default.desktop" "${pkgdir}/usr/share/applications/${pkgname%-bin}.desktop"
install -Dm644 "${srcdir}/squashfs-root/com.eusoft.${_pkgname}.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-bin}.png"
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Medium | 2 |
| 2026-09-16 00:03:17 | Medium | 2 |
| 2026-09-15 00:25:31 | Medium | 2 |
| 2026-09-14 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |