ishellpro-bin

MEDIUM
maintainer billyaddlers 0 votes scanned 2026-10-17 00:21:55.226236
View on AUR
Why flagged

Downloads a prebuilt proprietary binary AppImage from a Chinese Alibaba Cloud OSS bucket (oss-cn-beijing.aliyuncs.com), which is plausibly the project's own CDN but is an unverifiable third-party object store where the artifact could be silently swapped; the binary is extracted and executed directly on the user's system. The checksum is present (not SKIP'd), which mitigates the risk somewhat, but the host is not the project's primary domain and the package has few votes.

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:73 source=("${pkgname}-${pkgver}-amd64.AppImage::https://ishell-down.oss-cn-beijing.aliyuncs.com/ishellpro_${pkgver}_amd64.AppImage")
Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Medium AI review llm_review

An AI model (anthropic/claude-sonnet-4.6) reviewed this and agrees it is MEDIUM (confidence 70%): Downloads a prebuilt proprietary binary AppImage from a Chinese Alibaba Cloud OSS bucket (oss-cn-beijing.aliyuncs.com), which is plausibly the project's own CDN but is an unverifiable third-party object store where the artifact could be silently swapped; the binary is extracted and executed directly on the user's system. The checksum is present (not SKIP'd), which mitigates the risk somewhat, but the host is not the project's primary domain and the package has few votes.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: BillyAddlers <finnsonalca123@gmail.com>
2#
3# ishellpro — native Arch package built from the official upstream AppImage.
4#
5# Why this package exists
6# -----------------------
7# Upstream only publishes a linuxdeploy-built AppImage. Its AppRun hook forces
8# the AppImage's own bundled libraries onto LD_LIBRARY_PATH:
9#
10# LD_LIBRARY_PATH="$APPDIR/usr/lib/x86_64-linux-gnu:$APPDIR/usr/lib:..."
11#
12# Those are Ubuntu 22.04 builds (ICU 70, WebKitGTK 2.4x linked against libsoup3,
13# GTK 3.24, GStreamer, ...). They permanently shadow the host libraries, so the
14# app never gets Arch's updates, breaks whenever the bundled set drifts from the
15# kernel/loader, and drags ~238 MiB of duplicated libraries around. That is the
16# "AppImage dependency trap".
17#
18# This PKGBUILD extracts the AppImage, keeps ONLY the application payload (the
19# ishellpro ELF, its icons and the .desktop entry) and drops every bundled
20# library. The installed binary then links against Arch's own gtk3 /
21# webkit2gtk-4.1 / libsoup3 / glib2 / ICU just like any other native package.
22#
23# Verified locally:
24# * upstream binary RUNPATH is "$ORIGIN/../lib"; from /usr/lib/ishellpro/ that
25# resolves to /usr/lib, and `ldd` reports no missing objects,
26# * the app starts and initialises (window, sqlite DB, tray) against the system
27# WebKitGTK 2.54 / GTK 3.24 / ICU 78 stack under a clean environment.
28#
29# Upstream only ships x86_64 for Linux (the aarch64 update feed re-serves the
30# x86_64 build), hence arch=('x86_64').
31#
32# GPU acceleration
33# ----------------
34# The upstream binary exports WEBKIT_DISABLE_DMABUF_RENDERER=1 and
35# WEBKIT_DMABUF_RENDERER_DISABLE_GBM=1 to its WebKitGTK subprocesses on Linux,
36# but only when those variables are not already set. That disables WebKitGTK's
37# DMA-BUF renderer and forces CPU/software rendering: the web process never
38# opens /dev/dri and the UI is sluggish on large/HiDPI windows. WebKitGTK treats
39# a value of 0 as "not disabled", so a launcher installed at /usr/bin/ishellpro
40# pre-sets both to 0 to keep GPU-accelerated rendering. The launcher leaves any
41# user-supplied value untouched, skips the fix under NVIDIA PRIME offload
42# (prime-run), where WebKit + PRIME + Wayland aborts, and can be disabled with
43# ISHELLPRO_GPU_FIX=0.
44
45pkgname=ishellpro-bin
46pkgver=3.1.58
47pkgrel=2
48pkgdesc="Lightweight cross-platform SSH/SFTP terminal client (native repack of the upstream AppImage)"
49arch=('x86_64')
50url="https://ishell.cc"
51license=('custom:proprietary')
52install="ishellpro-bin.install"
53
54# The GUI stack is pulled in transitively:
55# gtk3 -> glib2, gdk-pixbuf2, pango, cairo, at-spi2-core, dconf, ...
56# webkit2gtk-4.1 -> libsoup3, bubblewrap, libsecret, gstreamer, icu, libwpe, ...
57depends=(
58 'gtk3'
59 'webkit2gtk-4.1'
60 'libsoup3'
61 'libayatana-appindicator' # system tray icon
62 'xdg-utils' # xdg-open / xdg-mime (opener plugin, scheme handlers)
63 'hicolor-icon-theme'
64)
65optdepends=(
66 'xdg-desktop-portal: file open/save dialogs and OpenURI under Wayland'
67 'xdg-desktop-portal-gtk: GTK portal backend'
68)
69
70# Prebuilt binary: a separate -debug package is pointless.
71options=('!debug')
72
73source=("${pkgname}-${pkgver}-amd64.AppImage::https://ishell-down.oss-cn-beijing.aliyuncs.com/ishellpro_${pkgver}_amd64.AppImage")
74sha256sums=('7b8d9503706323497a5ec3924f6ea9c5a254f147bcb763dd4bb3951f9b967835')
75
76package() {
77 # Extract in-tree. --appimage-extract uses the runtime's built-in squashfs
78 # reader, so no FUSE and no squashfs-tools are required.
79 chmod +x "${pkgname}-${pkgver}-amd64.AppImage"
80 ./"${pkgname}-${pkgver}-amd64.AppImage" --appimage-extract >/dev/null
81
82 local appdir='squashfs-root'
83
84 # Application binary. It is installed under /usr/lib; the binary's own
85 # "$ORIGIN/../lib" RUNPATH still resolves to the system /usr/lib from there,
86 # so it keeps linking against the distro GTK/WebKit/ICU stack.
87 install -Dm755 "${appdir}/usr/bin/ishellpro" "${pkgdir}/usr/lib/ishellpro/ishellpro"
88
89 # Launcher in /usr/bin. Upstream forces software rendering on Linux unless the
90 # WebKit renderer variables are already set; this wrapper re-enables the GPU
91 # path (rationale inline) and then execs the real binary.
92 install -d "${pkgdir}/usr/bin"
93 cat > "${pkgdir}/usr/bin/ishellpro" <<'LAUNCHER'
94#!/bin/sh
95# iShellPro launcher.
96#
97# The upstream binary unconditionally sets, for its WebKitGTK subprocesses on
98# Linux:
99#
100# WEBKIT_DISABLE_DMABUF_RENDERER=1
101# WEBKIT_DMABUF_RENDERER_DISABLE_GBM=1
102#
103# (only when those variables are not already set). That disables WebKitGTK's
104# DMA-BUF renderer and forces CPU/software rendering, so the webview never opens
105# /dev/dri and the UI is sluggish, especially on large or HiDPI windows.
106#
107# WebKitGTK honours a value of 0 as "not disabled", and upstream leaves a value
108# that is already present untouched, so pre-setting both to 0 restores
109# GPU-accelerated rendering. An explicit value from the environment wins.
110#
111# Exception: with NVIDIA PRIME render offload (prime-run) on Wayland, enabling
112# the GPU path makes WebKit abort ("Gdk-Message: Error 71 (Protocol error)
113# dispatching to Wayland display") or fail to allocate GBM buffers. There we
114# keep upstream's software fallback. Set ISHELLPRO_GPU_FIX=0 to opt out manually.
115self=$(readlink -f -- "$0" 2>/dev/null) || self=$0
116bindir=${self%/*}
117
118if [ "${ISHELLPRO_GPU_FIX:-1}" != "0" ] && [ -z "${__NV_PRIME_RENDER_OFFLOAD:-}" ]; then
119 : "${WEBKIT_DISABLE_DMABUF_RENDERER:=0}"
120 : "${WEBKIT_DMABUF_RENDERER_DISABLE_GBM:=0}"
121 export WEBKIT_DISABLE_DMABUF_RENDERER WEBKIT_DMABUF_RENDERER_DISABLE_GBM
122fi
123
124exec "$bindir/../lib/ishellpro/ishellpro" "$@"
125LAUNCHER
126 chmod 755 "${pkgdir}/usr/bin/ishellpro"
127
128 # Icons (all sizes upstream ships).
129 install -Dm644 "${appdir}/usr/share/icons/hicolor/32x32/apps/ishellpro.png" \
130 "${pkgdir}/usr/share/icons/hicolor/32x32/apps/ishellpro.png"
131 install -Dm644 "${appdir}/usr/share/icons/hicolor/128x128/apps/ishellpro.png" \
132 "${pkgdir}/usr/share/icons/hicolor/128x128/apps/ishellpro.png"
133 install -Dm644 "${appdir}/usr/share/icons/hicolor/256x256@2/apps/ishellpro.png" \
134 "${pkgdir}/usr/share/icons/hicolor/256x256@2/apps/ishellpro.png"
135
136 # Desktop entry. Upstream ships an empty Categories= and a generic
137 # Name/Comment; give it proper values. Exec is pinned to the launcher (never
138 # prime-run, which breaks the GPU path). MimeType (scheme handlers) is as-is.
139 install -Dm644 "${appdir}/usr/share/applications/ishellpro.desktop" \
140 "${pkgdir}/usr/share/applications/ishellpro.desktop"
141 sed -i \
142 -e 's/^Categories=$/Categories=Network;/' \
143 -e 's|^Comment=.*|Comment=Lightweight cross-platform SSH/SFTP terminal client|' \
144 -e 's/^Name=.*/Name=iShellPro/' \
145 -e 's|^Exec=.*|Exec=ishellpro|' \
146 "${pkgdir}/usr/share/applications/ishellpro.desktop"
147
148 # Everything else in the AppImage is intentionally NOT installed:
149 # usr/lib/** , usr/lib/x86_64-linux-gnu/** bundled Ubuntu libraries + WebKit
150 # helper processes + GTK/GIO/pixbuf
151 # loaders -> provided by depends=()
152 # usr/bin/xdg-open, usr/bin/xdg-mime -> provided by xdg-utils
153 # usr/share/glib-2.0/schemas/** -> provided by gsettings-desktop-schemas
154 # usr/share/doc/** -> Ubuntu copyright stubs
155}
156

Scan history

Scanned at (UTC)SeverityRules
2026-10-17 00:21:55 Medium 3
2026-10-16 00:12:47 Medium 3
2026-10-15 15:14:36 Medium 3
2026-10-15 15:12:23 Medium 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion