agisoft-viewer
maintainer dobedobedo
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The source is a prebuilt tarball from a host that is not on the whitelist, but it is from a subdomain (download.agisoft.com) that plausibly belongs to the official vendor, and the package installs only static files and scripts without executing remote code or exfiltrating data.
Triggered rules
LOW
AI review downgraded a static finding
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 source is a prebuilt tarball from a host that is not on the whitelist, but it is from a subdomain (download.agisoft.com) that plausibly belongs to the official vendor, and the package installs only static files and scripts without executing remote code or exfiltrating data.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:15
source=("https://s3-eu-west-1.amazonaws.com/download.agisoft.com/${_pkgname}_${pkgver//./_}_amd64.tar.gz"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Yu-Hsuan Tu <dobe0331 at gmail dot com>
2
_pkgname=viewer
3
pkgname=agisoft-${_pkgname}
4
pkgver=2.3.1
5
pkgrel=3
6
pkgdesc="A free stand-alone software to visualize 3D data"
7
arch=('x86_64')
8
url="https://www.agisoft.com/"
9
license=('custom:Agisoft EULA' 'custom')
10
makedepends=('imagemagick')
11
provides=('agisoft-viewer')
12
conflicts=('agisoft-metashape-pro')
13
options=('!strip')
14
install=${pkgname}.install
15
source=("https://s3-eu-west-1.amazonaws.com/download.agisoft.com/${_pkgname}_${pkgver//./_}_amd64.tar.gz"
16
"agisoft-viewer-icon-encoded.txt"
17
"agisoft-3dv-mime-icon-encoded.txt")
18
sha256sums=('b9ea72b05ed0ba183c7817a3b3261c31f8eb80b8db79db599c1b459ca92fe56b'
19
'a5e29a00393d55a9b589e1fb30acb57a96ef26756507d2793e7f3494d5778ae3'
20
'047225857a8b30362bab61f916ab1ddb19c0906959bf57c4ab5e499b8a9c4fc8')
21
22
build() {
23
# Create desktop entries
24
echo "[Desktop Entry]
25
Type=Application
26
Name=Agisoft Viewer
27
Comment=Visualise the MetaShape output 3D data
28
Exec=agisoft-viewer
29
MimeType=application/agisoft.3dv;application/agisoft.vpz
30
Icon=agisoft-viewer
31
Terminal=false
32
Categories=Science;ImageProcessing" > "$srcdir/agisoft-viewer.desktop"
33
34
# Create Viewer MIME type file
35
echo '<?xml version="1.0" encoding="UTF-8"?>
36
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
37
<mime-type type="application/agisoft.vpz">
38
<comment>Viewer Project</comment>
39
<icon name="application-agisoft-viewer-vpz"/>
40
<glob-deleteall/>
41
<glob pattern="*.vpz"/>
42
</mime-type>
43
<mime-type type="application/agisoft.3dv">
44
<comment>Viewer 1.6 Project</comment>
45
<icon name="application-agisoft-viewer-3dv"/>
46
<glob-deleteall/>
47
<glob pattern="*.3dv"/>
48
</mime-type>
49
</mime-info>' > "$srcdir/${pkgname}-mime.xml"
50
51
# Create 128x128 application icons
52
base64 -d "$srcdir/agisoft-viewer-icon-encoded.txt" > "$srcdir/agisoft-viewer_128.png"
53
54
# Create 128x128 mime icons
55
base64 -d "$srcdir/agisoft-3dv-mime-icon-encoded.txt" > "$srcdir/application-agisoft-3dv_128.png"
56
57
# Create icons for other resolutions
58
for _res in 16 32 48 64; do
59
magick "$srcdir/agisoft-viewer_128.png" -resize ${_res}x${_res} "$srcdir/agisoft-viewer_${_res}.png"
60
magick "$srcdir/application-agisoft-3dv_128.png" -resize ${_res}x${_res} "$srcdir/application-agisoft-3dv_${_res}.png"
61
done
62
63
# Create executables for /usr/bin
64
echo "#!/bin/bash
65
/opt/agisoft/${_pkgname}/viewer.sh \$@" > "$srcdir/agisoft-viewer"
66
}
67
68
package() {
69
# Move extracted folder to opt
70
cd "$pkgdir"
71
mkdir -p "opt/agisoft"
72
mv "${srcdir}/${_pkgname}" "${pkgdir}/opt/agisoft/"
73
74
# Install licenses
75
cd opt/agisoft/${_pkgname}
76
install -Dm644 eula.txt "$pkgdir/usr/share/licenses/$pkgname/eula.txt"
77
mv licenses "$pkgdir/usr/share/licenses/$pkgname"
78
rm eula.txt
79
80
# Move desktop entries
81
mkdir -p "${pkgdir}/usr/share/applications/"
82
mv "${srcdir}/agisoft-viewer.desktop" "${pkgdir}/usr/share/applications/"
83
84
# Create MIME type
85
mkdir -p "${pkgdir}/usr/share/mime/packages"
86
mv "${srcdir}/${pkgname}-mime.xml" "${pkgdir}/usr/share/mime/packages"
87
88
# Move icons
89
for _res in 16x16 32x32 48x48 64x64 128x128; do
90
mkdir -p "${pkgdir}/usr/share/icons/hicolor/${_res}/apps/"
91
mkdir -p "${pkgdir}/usr/share/icons/hicolor/${_res}/mimetypes/"
92
cp "$srcdir/agisoft-viewer_${_res/x*}.png" "${pkgdir}/usr/share/icons/hicolor/${_res}/mimetypes/application-agisoft-viewer-vpz.png"
93
mv "$srcdir/agisoft-viewer_${_res/x*}.png" "${pkgdir}/usr/share/icons/hicolor/${_res}/apps/agisoft-viewer.png"
94
mv "$srcdir/application-agisoft-3dv_${_res/x*}.png" "${pkgdir}/usr/share/icons/hicolor/${_res}/mimetypes/application-agisoft-viewer-3dv.png"
95
done
96
97
# Create executables in /usr/bin
98
install -Dm755 "$srcdir/agisoft-viewer" "$pkgdir/usr/bin/agisoft-viewer"
99
100
# Set correct permission
101
chmod -R g=u "$pkgdir/opt/agisoft/${_pkgname}"
102
chmod -R o=u "$pkgdir/opt/agisoft/${_pkgname}"
103
chmod -R g-w "$pkgdir/opt/agisoft/${_pkgname}"
104
chmod -R o-w "$pkgdir/opt/agisoft/${_pkgname}"
105
chmod -R g=u "$pkgdir/usr/share/licenses/$pkgname/licenses"
106
chmod -R o=u "$pkgdir/usr/share/licenses/$pkgname/licenses"
107
chmod -R g-w "$pkgdir/usr/share/licenses/$pkgname/licenses"
108
chmod -R o-w "$pkgdir/usr/share/licenses/$pkgname/licenses"
109
}
110
111
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |