viewfinder-data-gog-bin
maintainer dreieck
· 0 votes
· base
viewfinder-gog-bin
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The non-standard host is for downloading the EULA, which is non-executable data; the actual game binaries are fetched via lgogdownloader from GOG's official infrastructure, a legitimate and expected method for GOG games on AUR.
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 non-standard host is for downloading the EULA, which is non-executable data; the actual game binaries are fetched via lgogdownloader from GOG's official infrastructure, a legitimate and expected method for GOG games on AUR.
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:33
"thunderfulgames-EULA.html::https://thunderfulgames.com/privacy-policy/thunderfulgames-end-user-licence-agreement/"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: dreieck (https://aur.archlinux.org/account/dreieck)
2
3
_gogname="viewfinder"
4
#_downloadname="viewfinder-remake"
5
pkgbase="viewfinder-gog-bin"
6
pkgname=(
7
"viewfinder-data-gog-bin"
8
"viewfinder-launcher"
9
)
10
pkgver=1.1.4+gog91670
11
pkgrel=1
12
epoch=0
13
arch=(
14
'x86_64'
15
)
16
pkgdesc="A puzzle video game based on mapping photographs or other two-dimension works onto the three-dimensional space of the game's world, creating new geometries and layouts. You need a GOG account and have purchased the file through GOG; PKGBUILD might ask you for GOG login."
17
url="https://thunderfulgames.com/games/viewfinder/"
18
# url="https://en.wikipedia.org/wiki/Viewfinder_(video_game)"
19
groups=(
20
'games'
21
)
22
makedepends=(
23
'imagemagick' # to extract icon
24
'innoextract'
25
'lgogdownloader'
26
'zopfli' # For 'zopflipng'
27
)
28
checkdepends=()
29
source=(
30
"viewfinder.sh"
31
"viewfinder.desktop"
32
"license-note-proprietary.txt"
33
"thunderfulgames-EULA.html::https://thunderfulgames.com/privacy-policy/thunderfulgames-end-user-licence-agreement/"
34
)
35
sha256sums=(
36
'603702ba7c13e982f2d36eacbe16930639ad49d893b9ef6e0f44dee2d3728fd9' # viewfinder.sh
37
'cdd4d852c651f228121455a97c3f293b63a79e629bd0c2706a2871f31296738c' # viewfinder.desktop
38
'911d46210699f7e6f453bb2ed7a6d8f1baeeabd6b724e04d8a83361e2e18da4c' # license-note-proprietary.txt
39
'SKIP' # thunderfulgames-EULA.html
40
)
41
42
_get_gameversion() {
43
## Argumens:
44
# $1: Gamename
45
46
if [ "$#" -lt 1 ]; then
47
error "${FUNCNAME[0]}: Need to specify one argument: GOG Game name (e.g. '${_gogname}')."
48
return 11
49
fi
50
51
_gamename="${1#*://}" # Strip away possibly leading '://'.
52
53
/usr/bin/lgogdownloader --game "^${_gamename}$" --platform windows --list details | grep -E -m1 '^[[:space:]]*version:' | awk '{print $2}'
54
}
55
56
_get_gogversion() {
57
## Argumens:
58
# $1: Gamename
59
60
if [ "$#" -lt 1 ]; then
61
error "${FUNCNAME[0]}: Need to specify one argument: GOG Game name (e.g. '${_gogname}')."
62
return 11
63
fi
64
65
_gamename="${1#*://}" # Strip away possibly leading '://'.
66
67
/usr/bin/lgogdownloader --game "^${_gamename}$" --platform windows --list details | grep -E -m1 '^[[:space:]]*path:' | sed -E 's|^.*_\(([0-9]*)\)\..*|\1|'
68
}
69
70
_get_version() {
71
## Argumens:
72
# $1: Gamename
73
74
if [ "$#" -lt 1 ]; then
75
error "${FUNCNAME[0]}: Need to specify one argument: GOG Game name (e.g. '${_gogname}')."
76
return 11
77
fi
78
79
printf '%s' "$(_get_gameversion "$1")+gog$(_get_gogversion "$1")"
80
}
81
82
_download_game() {
83
## Argumens:
84
# $1: Gamename
85
# $2: Output directory
86
87
if [ "$#" -lt 2 ]; then
88
error "${FUNCNAME[0]}: Need to specify two arguments: 1.: GOG Game name (e.g. '${_gogname}'), 2.: Output directory (use '\${SRCDEST}')."
89
return 11
90
fi
91
92
local _gamename
93
local _targetdir
94
95
_gamename="${1#*://}" # Strip away possibly leading '://'.
96
_targetdir="$2"
97
98
/usr/bin/lgogdownloader --threads 2 --verbosity 2 --directory "${_targetdir}" --no-color --save-serials --save-logo --save-icon --save-game-details-json --save-product-json --include all --include-hidden-products --exclude patches --lowspeed-timeout 60 --lowspeed-rate 128 --progress-interval 2000 --platform windows --game "^${_gamename}$" --no-fast-status-check --download
99
}
100
101
_get_archivename() {
102
## Argumens:
103
# $1: Gamename
104
105
if [ "$#" -lt 1 ]; then
106
error "${FUNCNAME[0]}: Need to specify one argument: GOG Game name (e.g. '${_gogname}')."
107
return 11
108
fi
109
110
_gamename="${1#*://}" # Strip away possibly leading '://'.
111
112
basename "$(/usr/bin/lgogdownloader --game "^${_gamename}$" --platform windows --list details | grep -E -m1 '^[[:space:]]*path:' | awk '{print $2}')"
113
}
114
115
prepare() {
116
cd "${srcdir}"
117
if [ -e "${_gogname}" ]; then
118
rm "${_gogname}"
119
fi
120
121
if [ -e "unpack" ]; then
122
rm -Rf "unpack"
123
fi
124
125
msg2 "Downloading GOG game '${_gogname}' ..."
126
_download_game "${_gogname}" "${SRCDEST}"
127
ln -s "${SRCDEST}/${_gogname}" "${srcdir}/${_gogname}"
128
129
local _archivename
130
_archivename="$(_get_archivename "${_gogname}")"
131
132
mkdir -p unpack/game
133
134
msg2 "Extracting game data ..."
135
innoextract --color off --progress --output-dir "${srcdir}/unpack/game" --extract "${srcdir}/${_gogname}/${_archivename}"
136
137
local _exe
138
find "${srcdir}/unpack" -name '*.exe' -or -name '*.com' -or -name '*.bat' | while read _exe; do
139
chmod a+x "${_exe}"
140
done
141
}
142
143
pkgver() {
144
_get_version "${_gogname}"
145
}
146
147
build() {
148
## 'icon.png' downloaded from GOG directly may be corrupt.
149
if [ -e "${srcdir}/${_gogname}/icon_viewfinder.png" ]; then
150
rm -f "${srcdir}/${_gogname}/icon_viewfinder.png"
151
fi
152
msg2 "Generating 'icon.png' ..."
153
magick "${srcdir}/unpack/game/app"/goggame*.ico[6] "${srcdir}/${_gogname}/icon_viewfinder.png"
154
zopflipng -m -y "${srcdir}/${_gogname}/icon_viewfinder.png" "${srcdir}/${_gogname}/icon_viewfinder.png"
155
}
156
157
package_viewfinder-data-gog-bin() {
158
pkgdesc="A puzzle video game based on mapping photographs or other two-dimension works onto the three-dimensional space of the game's world, creating new geometries and layouts."
159
arch=('x86_64')
160
license=(
161
'LicenseRef-Proprietary'
162
'LicenseRef-GOG_User_Agreement'
163
)
164
depends=()
165
optdepends=(
166
"viewfinder-launcher: To launch the game via wine by executing '/usr/bin/viewfinder'."
167
)
168
provides=(
169
"viewfinder-data=${pkgver}"
170
)
171
conflicts=(
172
"viewfinder-data"
173
)
174
175
local _viewfinderdir
176
_viewfinderdir='/usr/lib/viewfinder'
177
178
install -dvm755 "${pkgdir}/${_viewfinderdir}"
179
#cp -rv "${srcdir}/unpack/game"/{Viewfinder_Data,Viewfinder.exe,UnityPlayer.dll,GameAssembly.dll,baselib.dll,UnityCrashHandler64.exe,GalaxyConfig.json} "${pkgdir}/${_viewfinderdir}"/
180
cp -rv "${srcdir}/unpack/game"/* "${pkgdir}/${_viewfinderdir}"/
181
182
install -Dvm644 "${srcdir}/${_gogname}/icon_viewfinder.png" "${pkgdir}/usr/share/pixmaps/viewfinder.png"
183
184
install -Dvm644 -t "${pkgdir}/usr/share/doc/viewfinder" "${srcdir}/${_gogname}"/{logo_viewfinder.jpg,game-details.json,product_viewfinder.json} "${srcdir}/unpack/game"/{goggame*.info,goggame*.script}
185
186
install -Dvm644 -t "${pkgdir}/usr/share/licenses/${pkgname}" "${srcdir}/license-note-proprietary.txt" "${srcdir}/thunderfulgames-EULA.html"
187
install -Dvm644 "${srcdir}/unpack/game/tmp/EULA.txt" "${pkgdir}/usr/share/licenses/${pkgname}/GOG-EULA.txt"
188
}
189
190
package_viewfinder-launcher() {
191
pkgdesc="Launcher script for the game 'Viewfinder'."
192
arch=('any')
193
license=('GPL-3.0-or-later')
194
depends=(
195
"sh"
196
"viewfinder-data"
197
"wine"
198
)
199
optdepends=()
200
provides=(
201
"viewfinder=${pkgver}"
202
)
203
conflicts=()
204
205
install -Dvm755 "${srcdir}/viewfinder.sh" "${pkgdir}/usr/bin/viewfinder"
206
install -Dvm644 "${srcdir}/viewfinder.desktop" "${pkgdir}/usr/share/applications/viewfinder.desktop"
207
208
install -dvm755 "${pkgdir}/usr/share/licenses/${pkgname}"
209
cd "${pkgdir}/usr/share/licenses/${pkgname}"
210
ln -sv "/usr/share/licenses/spdx/GPL-3.0-or-later.txt" .
211
}
212
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 |