loxone-config-bin

LOW
maintainer VBen 1 votes scanned 2026-09-17 00:27:14.276658
View on AUR
Why flagged

The package downloads a proprietary Windows installer from the official vendor's update domain (updatefiles.loxone.com), which is plausibly part of the project's infrastructure; the build process runs the installer under Wine to extract files, which is expected for such packages, and no untrusted or obfuscated code is executed.

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-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a proprietary Windows installer from the official vendor's update domain (updatefiles.loxone.com), which is plausibly part of the project's infrastructure; the build process runs the installer under Wine to extract files, which is expected for such packages, and no untrusted or obfuscated code is executed.

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:17 "LoxoneConfigSetup_${_urlver}.zip::https://updatefiles.loxone.com/LoxConfig/LoxoneConfigSetup_${_urlver}.zip"

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: VBen <devel@velmeden.info>
2pkgname=loxone-config-bin
3pkgver=17.1.7.27
4pkgrel=2
5pkgdesc="Loxone Config - home automation configuration software (Wine)"
6arch=('x86_64')
7url="https://www.loxone.com"
8license=('LicenseRef-Loxone-Proprietary')
9depends=('wine' 'wine-mono' 'zenity')
10makedepends=('xorg-server-xvfb' 'icoutils')
11options=('!strip' 'emptydirs')
12
13# Version format in download URL: 17.1.6.30 -> 17010630 (each part zero-padded to 2 digits)
14_urlver=$(awk -F. '{printf "%02d%02d%02d%02d", $1, $2, $3, $4}' <<< "${pkgver}")
15
16source=(
17 "LoxoneConfigSetup_${_urlver}.zip::https://updatefiles.loxone.com/LoxConfig/LoxoneConfigSetup_${_urlver}.zip"
18 "loxone-config.sh"
19 "loxone-config.desktop"
20 "loxone-monitor.sh"
21 "loxone-monitor.desktop"
22 "loxone-config-dpi.sh"
23 "loxone-config-dpi.desktop"
24)
25sha256sums=('478b163c6883514d9faf83e4ce2fc1d4637bd0c5b3b8d05600b4eeade475949a'
26 '3def05431934b75dbda853eef3ec62659249c0194f7337751946d08de8d5954b'
27 '3ff9c4f99a924d74e3240dba49fbdce737113e1072f9f7aadf6d9fe6c76260b1'
28 'bd0052ac963c24524d2ebe4c3e0955713a4b0faa08439f497f2bb536825d8217'
29 '243f3787f9f42a5136aacad473f7a805cd7e0a8b96016ba73124748328bd45e8'
30 '6102feecaea9ac6bb7a005b3cec6bb5372f2693e84672cf4bb96c67c730198b3'
31 '80898cd754644840a821552eef63a6a55f1235c41523b216744c0f4da67a140d')
32
33build() {
34 export WINEPREFIX="${srcdir}/wine-prefix"
35 export WINEDEBUG=-all
36
37 Xvfb :99 -screen 0 1024x768x24 &>/dev/null &
38 local _xvfb_pid=$!
39 export DISPLAY=:99
40
41 wineboot --init 2>/dev/null
42 wine "${srcdir}/LoxoneConfigSetup.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
43 wineserver -w
44
45 kill "${_xvfb_pid}" 2>/dev/null || true
46 wait "${_xvfb_pid}" 2>/dev/null || true
47}
48
49package() {
50 local _prefix="${srcdir}/wine-prefix/drive_c"
51
52 # Installer uses "Program Files" on win32 prefix
53 local _appdir
54 _appdir=$(find "${_prefix}" -maxdepth 4 -name "LoxoneConfig.exe" -printf '%h\n' | head -1)
55 if [[ -z "${_appdir}" ]]; then
56 error "LoxoneConfig.exe not found after installation. Installation may have failed."
57 return 1
58 fi
59
60 # Install application files
61 install -dm755 "${pkgdir}/opt/${pkgname}"
62 cp -r "${_appdir}/." "${pkgdir}/opt/${pkgname}/"
63
64 # Version file read by the wrapper scripts: the pkgver part keeps the
65 # ProgramData folder name in sync with pkgver, and the full pkgver-pkgrel
66 # string is used to detect packaging updates and force a re-copy of
67 # ProgramData even when only pkgrel changes
68 echo -n "${pkgver}-${pkgrel}" > "${pkgdir}/opt/${pkgname}/VERSION"
69
70 # Copy Visual C++ runtime DLLs installed by the installer into the app directory
71 # so they are available at runtime without winetricks
72 local _sys32="${srcdir}/wine-prefix/drive_c/windows/system32"
73 while IFS= read -r -d '' _dll; do
74 install -Dm644 "${_dll}" "${pkgdir}/opt/${pkgname}/$(basename "${_dll}")"
75 done < <(find "${_sys32}" \( \
76 -name "mfc140*.dll" \
77 -o -name "mfcm140*.dll" \
78 -o -name "vcruntime140*.dll" \
79 -o -name "concrt140.dll" \
80 -o -name "vcomp140.dll" \
81 \) -print0)
82
83 # Install ProgramData files (read-only app data installed by the installer)
84 local _progdata="${_prefix}/ProgramData/Loxone/Loxone Config ${pkgver}"
85 if [[ -d "${_progdata}" ]]; then
86 install -dm755 "${pkgdir}/opt/${pkgname}/programdata"
87 cp -r "${_progdata}/." "${pkgdir}/opt/${pkgname}/programdata/"
88 fi
89
90 # Extract and install config icon (group_icon 128 is LoxoneConfig's own app icon;
91 # 130 is a document/file-type icon, not the app icon)
92 wrestool -x --type=14 --name=128 -o "${srcdir}/icon.ico" "${_appdir}/LoxoneConfig.exe" 2>/dev/null || true
93 if [[ -f "${srcdir}/icon.ico" ]]; then
94 icotool -x -o "${srcdir}" "${srcdir}/icon.ico" 2>/dev/null || true
95 local _png
96 _png=$(find "${srcdir}" -name "*.png" | sort -t_ -k3 -rn | head -1)
97 if [[ -n "${_png}" ]]; then
98 install -Dm644 "${_png}" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/${pkgname}.png"
99 fi
100 fi
101
102 # Extract and install monitor icon (group_icon 128 is LoxoneMonitor's own app icon;
103 # 130 is a document/file-type icon, not the app icon)
104 wrestool -x --type=14 --name=128 -o "${srcdir}/icon-monitor.ico" "${_appdir}/LoxoneMonitor.exe" 2>/dev/null || true
105 if [[ -f "${srcdir}/icon-monitor.ico" ]]; then
106 install -dm755 "${srcdir}/monitor-icon"
107 icotool -x -o "${srcdir}/monitor-icon" "${srcdir}/icon-monitor.ico" 2>/dev/null || true
108 local _monitor_png
109 _monitor_png=$(find "${srcdir}/monitor-icon" -name "*.png" | sort -t_ -k3 -rn | head -1)
110 if [[ -n "${_monitor_png}" ]]; then
111 install -Dm644 "${_monitor_png}" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/${pkgname}-monitor.png"
112 fi
113 fi
114
115 # Wrapper scripts
116 install -Dm755 "${srcdir}/loxone-config.sh" "${pkgdir}/usr/bin/loxone-config"
117 install -Dm755 "${srcdir}/loxone-monitor.sh" "${pkgdir}/usr/bin/loxone-monitor"
118 install -Dm755 "${srcdir}/loxone-config-dpi.sh" "${pkgdir}/usr/bin/loxone-config-dpi"
119
120 # Desktop entries
121 install -Dm644 "${srcdir}/loxone-config.desktop" "${pkgdir}/usr/share/applications/loxone-config.desktop"
122 install -Dm644 "${srcdir}/loxone-monitor.desktop" "${pkgdir}/usr/share/applications/loxone-monitor.desktop"
123 install -Dm644 "${srcdir}/loxone-config-dpi.desktop" "${pkgdir}/usr/share/applications/loxone-config-dpi.desktop"
124}
125

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

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

0 / 4000
Your suggestion