visync 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of visync might be problematic. Click here for more details.

visync/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """Visync - Ventoy ISO Synchronization Tool."""
2
+
3
+ __version__ = "0.1.0"
visync/config.toml ADDED
@@ -0,0 +1,259 @@
1
+ #!/visync/config.toml
2
+ [iso]
3
+ download_dir = ""
4
+ # ^ We don't download straight to the ventoy drive as its faster to verify and acts as a buffer. --no-buffer flag can override this, but verify will still happen, just on the drive.
5
+
6
+ [checksums]
7
+ enabled = true
8
+
9
+
10
+
11
+ ###################################
12
+ ####### DISTRO RECOGNITION ########
13
+ ###################################
14
+ [base_distros]
15
+ # Strict internal volume ID matches
16
+ arch = "Arch Linux"
17
+ fedora = "Fedora"
18
+ ubuntu = "Ubuntu"
19
+ debian = "Debian"
20
+
21
+ [fork_overrides]
22
+ # Key format: "parent_distro.keyword_in_filename" = "Clean Name"
23
+ "arch.manjaro" = "Manjaro"
24
+ "ubuntu.pop-os" = "Pop!_OS"
25
+ "ubuntu.pop_os" = "Pop!_OS"
26
+ "ubuntu.mint" = "Linux Mint"
27
+ "debian.kali" = "Kali Linux"
28
+ "debian.parrot" = "Parrot Security"
29
+ # Fedora's aarch64 images carry "Fedora" in the volume ID, so without this they
30
+ # are indistinguishable from x86_64 and install/remove cannot target one.
31
+ "fedora.aarch64" = "Fedora ARM"
32
+
33
+ [standalone_matches]
34
+ # Text matching targets for standalone distros, flavors, and tools
35
+ gparted = "GParted Live"
36
+ hbcd = "Hiren's BootCD"
37
+ hiren = "Hiren's BootCD"
38
+ kodachi = "Linux Kodachi"
39
+ nixos-minimal = "NixOS Minimal"
40
+ nixos-graphical = "NixOS Graphical"
41
+ nixos = "NixOS Minimal"
42
+ parrot = "Parrot Security"
43
+ pond = "Pond"
44
+ pop = "Pop!_OS"
45
+ systemrescue = "SystemRescue"
46
+ rescuezilla = "Rescuezilla"
47
+ tails = "Tails"
48
+ tiny11 = "Tiny11"
49
+
50
+ # Specific desktop flavor/version overrides so regex doesn't grab them poorly.
51
+ # These must mirror the [distros.*] clean_name exactly: install/remove match an
52
+ # identified distro against clean_name, so a missing entry here makes a
53
+ # configured distro impossible to remove (test_verify_consistency_enforces this).
54
+ fedora-kde = "Fedora KDE"
55
+ fedora-arm = "Fedora ARM"
56
+ ubuntu-desktop = "Ubuntu Desktop"
57
+ ubuntu-server = "Ubuntu Server"
58
+
59
+ ###################################
60
+ ######## DYNAMIC SCRAPERS #########
61
+ ###################################
62
+ #
63
+ [distros.Fedora]
64
+ clean_name = "Fedora"
65
+ keyword = "fedora"
66
+ strategy = "fedora_nested"
67
+ # dl.fedoraproject.org serves an Anubis bot challenge to scrapers; kernel.org
68
+ # mirrors the same tree bot-free. Integrity is pinned via signing_key_fingerprint.
69
+ base_url = "https://mirrors.kernel.org/fedora/releases/"
70
+ version_regex = 'href="([0-9]+)\s*/"'
71
+ iso_regex = 'href="(Fedora-Workstation-Live-(?:x86_64-[0-9][0-9.\-]*\.iso|[0-9][0-9.\-]*\.x86_64\.iso))"'
72
+ checksum_url = "{base_url}{version}/{variant_dir}/{arch}/iso/{checksum_stem}-CHECKSUM"
73
+ checksum_format = "gpg_checksum"
74
+ signing_key_url = "https://fedoraproject.org/fedora.gpg"
75
+ # Release-signing keys from https://fedoraproject.org/fedora.gpg (refresh when
76
+ # Fedora publishes new keys). Matches VALIDSIG fingerprints via --status-fd.
77
+ signing_key_fingerprint = [
78
+ "C6E7F081CF80E13146676E88829B606631645531",
79
+ "36F612DCF27F7D1A48A835E4DBFCF71C6D9F90A6",
80
+ "4F50A6114CD5C6976A7F1179655A4B02F577861E",
81
+ "D924B10D3E810DABDD8B56B596E7E91491211FCE",
82
+ ]
83
+
84
+ [distros.ArchLinux]
85
+ clean_name = "Arch Linux"
86
+ keyword = "archlinux"
87
+ strategy = "direct_match"
88
+ base_url = "https://geo.mirror.pkgbuild.com/iso/latest/"
89
+ iso_regex = 'href="(archlinux-[0-9\.]+-x86_64\.iso)"'
90
+ checksum_url = "{base_url}sha256sums.txt"
91
+ checksum_format = "sha256sums"
92
+ checksum_algo = "sha256"
93
+
94
+ [distros.UbuntuServer]
95
+ clean_name = "Ubuntu Server"
96
+ keyword = "live-server"
97
+ strategy = "ubuntu_nested"
98
+ base_url = "https://releases.ubuntu.com/"
99
+ version_regex = 'href="([0-9\.]+)/"'
100
+ # Current Ubuntu LTS only — see UbuntuDesktop for the rationale.
101
+ version_filter = '\d*[02468]\.04(\.\d+)*'
102
+ iso_regex = 'href="(ubuntu-[0-9\.-]+live-server-amd64\.iso)"'
103
+ checksum_url = "{base_url}{version}/SHA256SUMS"
104
+ checksum_format = "sha256sums"
105
+ checksum_algo = "sha256"
106
+
107
+ ################
108
+ ##### ARM ######
109
+ ################
110
+
111
+ [distros.FedoraARM]
112
+ clean_name = "Fedora ARM"
113
+ keyword = "fedora-arm"
114
+ strategy = "fedora_nested"
115
+ # dl.fedoraproject.org serves an Anubis bot challenge to scrapers; kernel.org
116
+ # mirrors the same tree bot-free. Integrity is pinned via signing_key_fingerprint.
117
+ base_url = "https://mirrors.kernel.org/fedora/releases/"
118
+ variant_path = "Workstation/aarch64/iso"
119
+ version_regex = 'href="([0-9]+\s*/)"'
120
+ # Fedora ships Workstation aarch64 lives under the standard variant subtree
121
+ iso_regex = 'href="(Fedora-Workstation-Live-(?:aarch64-[0-9][0-9.\-]*\.iso|[0-9][0-9.\-]*\.aarch64\.iso))"'
122
+ checksum_url = "{base_url}{version}/{variant_dir}/{arch}/iso/{checksum_stem}-CHECKSUM"
123
+ checksum_format = "gpg_checksum"
124
+ signing_key_url = "https://fedoraproject.org/fedora.gpg"
125
+ signing_key_fingerprint = [
126
+ "C6E7F081CF80E13146676E88829B606631645531",
127
+ "36F612DCF27F7D1A48A835E4DBFCF71C6D9F90A6",
128
+ "4F50A6114CD5C6976A7F1179655A4B02F577861E",
129
+ "D924B10D3E810DABDD8B56B596E7E91491211FCE",
130
+ ]
131
+
132
+ # NOTE: Arch Linux ARM was removed. os.archlinuxarm.org serves a TLS
133
+ # certificate that does not match its hostname (scraping fails closed), and
134
+ # its artifacts are per-device .tar.gz rootfs archives — not .iso/.img files
135
+ # Ventoy can boot or visync can track. Re-add here if upstream publishes a
136
+ # bootable image over a valid certificate.
137
+
138
+ #############################
139
+ ###### ADDITIONAL DT #######
140
+ #############################
141
+
142
+ [distros.FedoraKDE]
143
+ clean_name = "Fedora KDE"
144
+ keyword = "fedora-kde"
145
+ strategy = "fedora_nested"
146
+ variant_path = "KDE/x86_64/iso"
147
+ # dl.fedoraproject.org serves an Anubis bot challenge to scrapers; kernel.org
148
+ # mirrors the same tree bot-free. Integrity is pinned via signing_key_fingerprint.
149
+ base_url = "https://mirrors.kernel.org/fedora/releases/"
150
+ version_regex = 'href="([0-9]+\s*/)"'
151
+ iso_regex = 'href="(Fedora-KDE-Desktop-Live-(?:x86_64-[0-9][0-9.\-]*\.iso|[0-9][0-9.\-]*\.x86_64\.iso))"'
152
+ checksum_url = "{base_url}{version}/{variant_dir}/{arch}/iso/{checksum_stem}-CHECKSUM"
153
+ checksum_format = "gpg_checksum"
154
+ signing_key_url = "https://fedoraproject.org/fedora.gpg"
155
+ signing_key_fingerprint = [
156
+ "C6E7F081CF80E13146676E88829B606631645531",
157
+ "36F612DCF27F7D1A48A835E4DBFCF71C6D9F90A6",
158
+ "4F50A6114CD5C6976A7F1179655A4B02F577861E",
159
+ "D924B10D3E810DABDD8B56B596E7E91491211FCE",
160
+ ]
161
+
162
+ [distros.UbuntuDesktop]
163
+ clean_name = "Ubuntu Desktop"
164
+ keyword = "desktop"
165
+ strategy = "ubuntu_nested"
166
+ base_url = "https://releases.ubuntu.com/"
167
+ version_regex = 'href="([0-9\.]+)/"'
168
+ # Track the current Ubuntu LTS rather than the newest release of any kind.
169
+ # LTS is an even-numbered year with a .04 month; interim releases (26.10,
170
+ # 25.10, ...) are excluded. Point releases like 26.04.1 also match, which is
171
+ # what we want — those are the same LTS series.
172
+ version_filter = '\d*[02468]\.04(\.\d+)*'
173
+ iso_regex = 'href="(ubuntu-[0-9\.-]+desktop-amd64\.iso)"'
174
+ checksum_url = "{base_url}{version}/SHA256SUMS"
175
+ checksum_format = "sha256sums"
176
+ checksum_algo = "sha256"
177
+
178
+ [distros.ParrotSecurity]
179
+ clean_name = "Parrot Security"
180
+ keyword = "parrot"
181
+ strategy = "ubuntu_nested"
182
+ base_url = "https://deb.parrotsec.org/parrot/iso/"
183
+ version_regex = 'href="([0-9\.]+(?:-[0-9]+)?)/"'
184
+ iso_regex = 'href="(Parrot-security-[0-9\.]+_amd64\.iso)"'
185
+ # signed-hashes.txt is one clearsigned file listing md5, sha256 and sha512
186
+ # sections for every image. The parser selects the sha256 section by header
187
+ # and digest length — taking the first match would compare an md5 against a
188
+ # sha256 and delete a good download as "corrupt".
189
+ checksum_url = "{base_url}{version}/signed-hashes.txt"
190
+ checksum_format = "sha256sums"
191
+ checksum_algo = "sha256"
192
+ # Signing key published by Parrot and referenced from inside the signed
193
+ # content itself. Fingerprint confirmed via gpg --verify (VALIDSIG) against
194
+ # the untouched file, and matches the fingerprint in Parrot's own
195
+ # hash-and-key-verification documentation.
196
+ signing_key_url = "https://deb.parrot.sh/parrot/misc/archive.gpg"
197
+ signing_key_fingerprint = [
198
+ "B711822346552E4D92DA02DF7A8286AF0E81EE4A",
199
+ ]
200
+
201
+ [distros.NixOS]
202
+ clean_name = "NixOS Minimal"
203
+ keyword = "nixos-minimal"
204
+ strategy = "nixos_channel"
205
+ # base_url is a prefix: the current stable channel (e.g. 26.05) is appended,
206
+ # giving https://channels.nixos.org/nixos-26.05, which redirects to the exact
207
+ # releases.nixos.org directory. NixOS publishes no nixos-stable alias, so the
208
+ # channel is resolved from the release bucket at scrape time — see
209
+ # nixos_channel in src/download.py.
210
+ base_url = "https://channels.nixos.org/nixos"
211
+ # Optional pin. If set and still a real channel it wins; otherwise the newest
212
+ # stable channel from the bucket is used. Omit to always track latest stable.
213
+ # channel = "26.05"
214
+ variant = "minimal"
215
+ # ISOs and .sha256 sidecars live under releases.nixos.org, NOT the channel host
216
+ # (channels.nixos.org serves no .sha256, which made `visync verify` fail with
217
+ # "source unreachable" for every NixOS ISO).
218
+ releases_base_url = "https://releases.nixos.org"
219
+ # Sidecars sit at /nixos/<channel>/nixos-<full release>/<iso>.sha256
220
+ checksum_url = "{release_base_url}/nixos/{version}/nixos-{release}/{iso_name}.sha256"
221
+ checksum_format = "sha256sums"
222
+ checksum_algo = "sha256"
223
+
224
+ [distros.NixOSGraphical]
225
+ clean_name = "NixOS Graphical"
226
+ keyword = "nixos-graphical"
227
+ strategy = "nixos_channel"
228
+ base_url = "https://channels.nixos.org/nixos"
229
+ variant = "graphical"
230
+ releases_base_url = "https://releases.nixos.org"
231
+ checksum_url = "{release_base_url}/nixos/{version}/nixos-{release}/{iso_name}.sha256"
232
+ checksum_format = "sha256sums"
233
+ checksum_algo = "sha256"
234
+
235
+ [distros.PopOS]
236
+ clean_name = "Pop!_OS"
237
+ keyword = "pop"
238
+ strategy = "popos_api"
239
+ api_url = "https://api.pop-os.org/builds"
240
+ variant = "generic"
241
+ release = "24.04"
242
+ checksum_format = "sha256sums"
243
+ checksum_algo = "sha256"
244
+
245
+ [distros.Tails]
246
+ clean_name = "Tails"
247
+ keyword = "tails"
248
+ strategy = "tails_api"
249
+ api_url = "https://tails.net/install/v2/Tails/amd64/stable/latest.json"
250
+ file_type = "img"
251
+ checksum_format = "sha256sums"
252
+ checksum_algo = "sha256"
253
+
254
+ [distros.Pond]
255
+ clean_name = "Pond"
256
+ keyword = "pond"
257
+ strategy = "content_disposition"
258
+ base_url = "https://releases.butterfly.so/iso/"
259
+ iso_regex = '^pond-installer-([0-9]+\.[0-9]+\.[0-9]+)-x86_64\.iso$'