idos-timetable-data-chaps-trains-europe-2026-latest
maintainer dreieck
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads timetable data and a license PDF from the official project host chaps.cz and its subdomain ttakt.chaps.cz; these are non-executable data files, so even though the host is not whitelisted and checksums are skipped, the risk is low as they cannot execute code.
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 timetable data and a license PDF from the official project host chaps.cz and its subdomain ttakt.chaps.cz; these are non-executable data files, so even though the host is not whitelisted and checksums are skipped, the risk is low as they cannot execute code.
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:77
"${_target}::https://ttakt.chaps.cz/TTAktual/Win/Zip/${_zipfile}" -
PKGBUILD:78
"IDOS-Licence.pdf::https://chaps.cz/files/idos/IDOS-Licence.pdf"
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer: dreieck
2
3
# PKGBUILD last time manually edited: At least on 2025-12-10.
4
5
_year='26'
6
_prevyear="$(( ${_year} - 1 ))"
7
url="https://chaps.cz/eng/download/idos/zip#kotvatt"
8
#url="http://chaps.cz/eng/download/idos-new/zip#kotvatt" # URL valid for the time when the timetable is still in the future.
9
_zipfile="VLAK${_year}E.ZIP"
10
_pkgver() {
11
# Reason for a _pkgver(): Have something to run before source download so that we can have version aware source downloads.
12
# Do not use metadata of the source file, but do website parsing: So we do not need to download the file to (AUR-)update the package version with our own crude hacked script 'idos-aur-update-versions.sh'.
13
#date -r "${srcdir}/${_target}" +"%Y_%m_%d"
14
15
wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 -q -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g'
16
# wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 --no-check-certificate -q -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g'
17
}
18
19
_pkgname="idos-timetable-data-chaps-trains-europe-20${_year}"
20
pkgname="${_pkgname}-latest"
21
epoch=0
22
_pkgver="$(_pkgver)" # This should be set _before_ sources get downloaded.
23
pkgver="${_pkgver}"
24
pkgrel=1
25
pkgdesc="20${_prevyear}/20${_year} Timetable data for the timetable search engines by CHAPS: European trains."
26
arch=(any)
27
license=('custom')
28
29
groups=(
30
"idos-timetable"
31
)
32
33
depends=(
34
"idos-timetable-data-trains-common"
35
)
36
37
makedepends=(
38
"wget"
39
)
40
41
optdepends=(
42
"idos-timetable-tariff-trains-europe: For showing prices."
43
"idos-timetable-tariff-trains-cz: For showing prices (for Czech Republic only)."
44
"idos-timetable-tariff-trains-sk: For showing prices (for Slovakia only)."
45
"idos-timetable-maps-trains-europe: For displaying routes on maps."
46
"idos-timetable-maps-trains-cz: For displaying routes on (for Czech Republic only)."
47
"idos-timetable-maps-trains-sk: For displaying routes on (for Slovakia only)."
48
"idos-timetable-additionalinfo-trains-europe: For (links to) additional information about train composition and stations."
49
"idos-timetable-additionalinfo-trains-cz: For (links to) additional information about train composition and stations (for Chech Republic only)"
50
"idos-timetable-additionalinfo-trains-sk: For (links to) additional information about train composition and stations (for Slovakia only)."
51
)
52
53
provides=(
54
"${_pkgname}=${pkgver}"
55
56
"idos-timetable-data=${pkgver}"
57
"idos-timetable-data-trains=${pkgver}"
58
59
"idos-timetable-data-trains-europe=${pkgver}"
60
"idos-timetable-data-trains-europe-20${_year}=${pkgver}"
61
)
62
63
replaces=(
64
'idos-timetable-data-chaps-trains-europe-latest'
65
)
66
67
conflicts=(
68
"${_pkgname}"
69
70
### The conflict will be handled by idos-timetable-data-chaps-all, if needed. Sometimes idos-timetable-data-chaps-all does not provide the train data, and then idos-timetable-data-chaps-all will depend on this package, thus this package should not have idos-timetable-data-chaps-all as conflict.
71
# "idos-timetable-data-chaps-all"
72
)
73
74
_target="vlak${_year}e-${_pkgver}.zip"
75
76
source=(
77
"${_target}::https://ttakt.chaps.cz/TTAktual/Win/Zip/${_zipfile}"
78
"IDOS-Licence.pdf::https://chaps.cz/files/idos/IDOS-Licence.pdf"
79
"license-dummy.txt"
80
)
81
82
sha256sums=(
83
'SKIP'
84
"SKIP"
85
"c6bb216055d3670d3100b7a74e04ce0644030f365f4349a09e630ef60fbcb9a4"
86
)
87
88
pkgver() {
89
printf '%s' "${_pkgver}"
90
}
91
92
93
package() {
94
_instdirbase='/opt/idos-timetable'
95
_instdir="${pkgdir}/${_instdirbase}"
96
install -d -m755 "${_instdir}"
97
98
cp -r "${srcdir}"/Data* "${_instdir}/"
99
chmod 755 "${_instdir}"/Data*
100
chmod 644 "${_instdir}"/Data*/*
101
rm -f "${_instdir}/Data1"/[vV][lL][aA][kK].[tT][tT][rR] # This one is provided by idos-timetable-data-trains-common.
102
103
install -d -m755 "${pkgdir}/usr/share/doc/${_pkgname}"
104
echo "${url}" > "${pkgdir}/usr/share/doc/${_pkgname}/info.url"
105
chmod 644 "${pkgdir}/usr/share/doc/${_pkgname}/info.url"
106
107
install -D -m644 "${srcdir}/license-dummy.txt" "${pkgdir}/usr/share/licenses/${pkgname}/copying.txt"
108
install -D -m644 "${srcdir}/IDOS-Licence.pdf" "${pkgdir}/usr/share/licenses/${pkgname}/IDOS-Licence.pdf"
109
}
110
Changes since previous scan
--- PKGBUILD @ 2026-07-27 00:24+++ PKGBUILD @ 2026-08-03 00:08@@ -12,8 +12,8 @@ # Do not use metadata of the source file, but do website parsing: So we do not need to download the file to (AUR-)update the package version with our own crude hacked script 'idos-aur-update-versions.sh'. #date -r "${srcdir}/${_target}" +"%Y_%m_%d" - wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 -nv -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g'- # wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 --no-check-certificate -nv -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g'+ wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 -q -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g'+ # wget --user-agent='' --dns-timeout=30 --connect-timeout=30 --read-timeout=30 --no-check-certificate -q -O- "${url}" | tr -d '\a' | tr '\n' '\a' | sed 's|^.*File '"${_zipfile}"'\(.*\)Zip/'"${_zipfile}"'.*$|\1\n|g' | tr '\a' '\n' | grep 'Update date:' | cut -d, -f1 | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+).|\n\3_\2_\1\n|g' | grep -E '^[0-9]+_[0-9]+_[0-9]+' | sed -E -e 's|_([0-9])_|_0\1_|g' -e 's|_([0-9])$|_0\1|g' } _pkgname="idos-timetable-data-chaps-trains-europe-20${_year}"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 15:35:03 | MEDIUM | 1 |
| 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 |