From eccc55bd7ce006bc455e86f49129449c635520ae Mon Sep 17 00:00:00 2001 From: Jeremy Anderson Date: Sun, 27 Sep 2026 02:32:46 -0400 Subject: [PATCH] SysDeck 0.4.6 - feature update, added qcrows --- BLOG.md | 16 + Makefile | 2 +- README.md | 4 +- bridge/__init__.py | 2 +- bridge/__pycache__/__init__.cpython-314.pyc | Bin 0 -> 5646 bytes bridge/__pycache__/auth.cpython-314.pyc | Bin 0 -> 16035 bytes bridge/__pycache__/benchmark.cpython-314.pyc | Bin 0 -> 10126 bytes bridge/__pycache__/builder.cpython-314.pyc | Bin 0 -> 91005 bytes bridge/__pycache__/containers.cpython-314.pyc | Bin 0 -> 5335 bytes bridge/__pycache__/db.cpython-314.pyc | Bin 0 -> 22697 bytes bridge/__pycache__/fester.cpython-314.pyc | Bin 0 -> 15513 bytes bridge/__pycache__/firewall.cpython-314.pyc | Bin 0 -> 116697 bytes bridge/__pycache__/firmware.cpython-314.pyc | Bin 0 -> 4628 bytes bridge/__pycache__/fleet.cpython-314.pyc | Bin 0 -> 6397 bytes bridge/__pycache__/glances.cpython-314.pyc | Bin 0 -> 16955 bytes bridge/__pycache__/grafana.cpython-314.pyc | Bin 0 -> 26876 bytes bridge/__pycache__/hwalert.cpython-314.pyc | Bin 0 -> 29991 bytes bridge/__pycache__/integrity.cpython-314.pyc | Bin 0 -> 3974 bytes bridge/__pycache__/jellyfin.cpython-314.pyc | Bin 0 -> 17661 bytes bridge/__pycache__/kata.cpython-314.pyc | Bin 0 -> 53292 bytes bridge/__pycache__/klanker.cpython-314.pyc | Bin 0 -> 27726 bytes bridge/__pycache__/mesh.cpython-314.pyc | Bin 0 -> 3581 bytes bridge/__pycache__/mining.cpython-314.pyc | Bin 0 -> 25980 bytes bridge/__pycache__/modules3p.cpython-314.pyc | Bin 0 -> 29900 bytes bridge/__pycache__/netsec.cpython-314.pyc | Bin 0 -> 21956 bytes bridge/__pycache__/packages.cpython-314.pyc | Bin 0 -> 76209 bytes bridge/__pycache__/photos.cpython-314.pyc | Bin 0 -> 17397 bytes bridge/__pycache__/policy.cpython-314.pyc | Bin 0 -> 78778 bytes bridge/__pycache__/prometheus.cpython-314.pyc | Bin 0 -> 31108 bytes bridge/__pycache__/remotefs.cpython-314.pyc | Bin 0 -> 20087 bytes bridge/__pycache__/sensors.cpython-314.pyc | Bin 0 -> 12517 bytes bridge/__pycache__/themes.cpython-314.pyc | Bin 0 -> 28763 bytes bridge/__pycache__/vault.cpython-314.pyc | Bin 0 -> 3525 bytes bridge/integrity.py | 10 +- bridge/kata.py | 448 +++++++++++++++++- .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 374 bytes compat/compat-manifest.json | 2 +- packaging/PKGBUILD | 2 +- packaging/debian/changelog | 12 + packaging/setup.py | 2 +- packaging/sysdeck.spec | 12 +- plugins/sysdeck-kata/kata.js | 108 ++++- shared/bridge.js | 11 +- tests/__pycache__/__init__.cpython-314.pyc | Bin 0 -> 171 bytes .../test_bridge_parsers.cpython-314.pyc | Bin 0 -> 245319 bytes tests/test_bridge_parsers.py | 276 ++++++++++- worklog.md | 27 ++ 47 files changed, 884 insertions(+), 50 deletions(-) create mode 100644 bridge/__pycache__/__init__.cpython-314.pyc create mode 100644 bridge/__pycache__/auth.cpython-314.pyc create mode 100644 bridge/__pycache__/benchmark.cpython-314.pyc create mode 100644 bridge/__pycache__/builder.cpython-314.pyc create mode 100644 bridge/__pycache__/containers.cpython-314.pyc create mode 100644 bridge/__pycache__/db.cpython-314.pyc create mode 100644 bridge/__pycache__/fester.cpython-314.pyc create mode 100644 bridge/__pycache__/firewall.cpython-314.pyc create mode 100644 bridge/__pycache__/firmware.cpython-314.pyc create mode 100644 bridge/__pycache__/fleet.cpython-314.pyc create mode 100644 bridge/__pycache__/glances.cpython-314.pyc create mode 100644 bridge/__pycache__/grafana.cpython-314.pyc create mode 100644 bridge/__pycache__/hwalert.cpython-314.pyc create mode 100644 bridge/__pycache__/integrity.cpython-314.pyc create mode 100644 bridge/__pycache__/jellyfin.cpython-314.pyc create mode 100644 bridge/__pycache__/kata.cpython-314.pyc create mode 100644 bridge/__pycache__/klanker.cpython-314.pyc create mode 100644 bridge/__pycache__/mesh.cpython-314.pyc create mode 100644 bridge/__pycache__/mining.cpython-314.pyc create mode 100644 bridge/__pycache__/modules3p.cpython-314.pyc create mode 100644 bridge/__pycache__/netsec.cpython-314.pyc create mode 100644 bridge/__pycache__/packages.cpython-314.pyc create mode 100644 bridge/__pycache__/photos.cpython-314.pyc create mode 100644 bridge/__pycache__/policy.cpython-314.pyc create mode 100644 bridge/__pycache__/prometheus.cpython-314.pyc create mode 100644 bridge/__pycache__/remotefs.cpython-314.pyc create mode 100644 bridge/__pycache__/sensors.cpython-314.pyc create mode 100644 bridge/__pycache__/themes.cpython-314.pyc create mode 100644 bridge/__pycache__/vault.cpython-314.pyc create mode 100644 bridge/modules/__pycache__/__init__.cpython-314.pyc create mode 100644 tests/__pycache__/__init__.cpython-314.pyc create mode 100644 tests/__pycache__/test_bridge_parsers.cpython-314.pyc diff --git a/BLOG.md b/BLOG.md index e4c7be3..6b1ea1d 100755 --- a/BLOG.md +++ b/BLOG.md @@ -1,3 +1,19 @@ +# QCrows All the Way Down: One VM-Image Format, Three Projects, Zero Trust Between Them + +*How SysDeck 0.4.6 became a first-class consumer of the in-house QCrows VM container image format — parsing image manifests straight out of tar.gz in memory, re-implementing the master toolchain's verification checks without extracting a single byte to disk, and rendering real image metadata in the Kata panel. The same format is produced by cockpit-kata's qcrows-pack and by AI-LSC's stack exporter; SysDeck verifies both with the same code path.* + +A QCrows image (`.qcrows`, spec v0.2.0) is a self-describing bundle for VM-based container runtimes: one tarball carrying a `metadata.toml` manifest, a Cockpit `menu.toml` entry, a `hashes.sha256` integrity list, the guest `rootfs.tar.gz`, and — mandatory since v0.2 — the guest kernel and its `.config`. The format's master implementation lives in the cockpit-kata project (`qcrows-pack`, `qcrows-verify`, `qcrows-inspect`, `qcrows-export`), and a second producer now exists: AI-LSC, the local AI stack manager, exports its active tool stack directly as `.qcrows` archives. SysDeck's Kata panel has listed whatever sat in `/usr/share/sysdeck/kata/qcrows/` since the v0.0.43 production rewrite — but until now it only ever looked at filenames. A bundle could be a Kata-tuned Alpine image or someone's holiday photo archive; the panel treated both as "a file with a size." + +v0.4.6 closes that gap by making the bridge a real format consumer. `qcrows-list` opens every archive in the directory with Python's `tarfile` in `r:*` mode and reads `metadata.toml` and `menu.toml` into memory — no extraction, no temp directories, nothing executable ever materialized from an image the operator hasn't chosen to trust. The TOML parser is deliberately small: QCrows metadata is a flat shape of `[ section ]` headers and scalar/array values, so ~40 lines of section-aware parsing cover it — and being section-aware is not cosmetic. The master `qcrows-inspect` greps first-matching keys, which reports the kernel's `size_mb` on the rootfs row of its own output; SysDeck's parser tracks the current section and gets `kernel.size_mb` and `rootfs.size_mb` right on the same files the master tool mislabels. + +The new `qcrows-verify` subcommand mirrors the master verifier check-for-check — required files, rootfs presence, kernel binary with a real magic test (bzImage's `HdrS` at offset 0x202, or ELF), the kernel `.config` with the five Kata-required options, and a full `sha256sum -c`-style walk of every entry in `hashes.sha256` — with two deliberate divergences in *how*, not *what*. First, the kernel check classifies bytes directly instead of shelling out to `file`: same verdicts, no subprocess. Second, the semantics are calibrated to the master's own exit codes: a missing kernel is a hard failure, but a shortfall of `CONFIG_VSOCKETS=y`-style options is a *warning*, exactly as in qcrows-verify, so a host-kernel-built bundle reports ok with advisories rather than failing a check the master would pass. The hash walk streams members in 1 MiB chunks and caps parsed text members at 1 MiB, header counts at ten thousand — tar-bomb posture inherited from the bridge's CVE-lesson hardening style. + +Everything runs through the same security gate the rest of the Kata bridge uses: filenames validated against the strict allowlist regex, paths resolved with `realpath` containment under the bundle directory, output sanitized before it reaches JSON. The panel card grew accordingly — image name and version, kernel version and format, architecture, hypervisor compatibility list, per-row Verify and Inspect actions whose output lands in the existing operation-output card, all rendered through `textContent`/`escapeHtml` per the panel's no-innerHTML rule. Legacy non-QCrows tarballs that happen to sit in the directory degrade to a stat-only row with an honest "(not a QCrows archive)" label instead of being silently miscounted. + +The test discipline is where the three-project story pays off. The new suite builds synthetic spec-conformant archives in a temp directory — including one whose `rootfs.tar.gz` is byte-flipped *after* its hashes are computed, which is what an integrity violation actually is — and additionally exercises the bridge against real images from both external producers: an AI-LSC stack export and a bundle from cockpit-kata's own `qcrows-pack`. Both parse, both verify clean, the tampered one fails on exactly the checksum check. One image format, two independent producers, one consumer that trusts none of them until the hashes say otherwise — which is the whole point of a self-describing format. + +--- + # SysDeck and the Cockpit Inheritance: One Module Catalog, Two Frontends, and the Case for Real Host State *A technical walkthrough of how SysDeck 0.4.4 — a standalone Linux operations console (thirty-one panels, one Bun process, no Cockpit required) that also ships as a drop-in Cockpit plugin suite — authenticates against the host's own Unix accounts through PAM exactly the way Cockpit does, keeps every module working in both frontends, holds itself to a compiler-enforced no-demo contract where every panel reads real host state or fails honestly, and resolves every fork in the road with a step-down through the system's real tools: ten package managers from pacman to sorcery, nftables before iptables, lm-sensors before raw sysfs. Grounded in the source code, not in marketing claims.* diff --git a/Makefile b/Makefile index b12b747..c979fff 100755 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ # Distro support: Arch Linux, Debian/Ubuntu, Fedora/RHEL/CentOS. PACKAGE := sysdeck -VERSION := 0.4.5 +VERSION := 0.4.6 LIB_DIR := $(DESTDIR)/usr/lib/$(PACKAGE) PYTHON_DIR := $(LIB_DIR)/bridge SHARE_DIR := $(DESTDIR)/usr/share/$(PACKAGE) diff --git a/README.md b/README.md index e0195e5..3c0f677 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # SysDeck [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) -[![Version](https://img.shields.io/badge/version-0.4.5-orange.svg)](#) +[![Version](https://img.shields.io/badge/version-0.4.6-orange.svg)](#) [![Next.js](https://img.shields.io/badge/Next.js-16-black.svg)](https://nextjs.org) [![Runtime](https://img.shields.io/badge/runtime-Bun-f9f1e0.svg)](https://bun.sh) [![Python](https://img.shields.io/badge/python-3.9%2B-3776AB.svg)](#) @@ -10,7 +10,7 @@ **A standalone Linux operations console — Unix-account login, real host state, no fabricated data. Cockpit is optional: the same module catalog loads there too.** Author: **Jeremy Anderson** · · · [github.com/dcosnet/SysDeck](https://github.com/dcosnet/SysDeck) -Version: **0.4.5** · License: **MIT** +Version: **0.4.6** · License: **MIT** ![SysDeck — the standalone console, Overview panel](docs/screenshots/overview.png) diff --git a/bridge/__init__.py b/bridge/__init__.py index 07a225f..085eb32 100755 --- a/bridge/__init__.py +++ b/bridge/__init__.py @@ -20,7 +20,7 @@ import os import subprocess from typing import Literal -__version__ = "0.4.5" +__version__ = "0.4.6" __author__ = "Jeremy Anderson" __url__ = "https://dcos.net" diff --git a/bridge/__pycache__/__init__.cpython-314.pyc b/bridge/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eaed0b72d5f99ff2e4252cbf4a135015063618e0 GIT binary patch literal 5646 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 Tw|1wC8$UM*5bRC0j9~pQT8HX| literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/benchmark.cpython-314.pyc b/bridge/__pycache__/benchmark.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d03f5bd717bf8093826af171c8d13dcef9d27ee GIT binary patch literal 10126 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 z%0D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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/containers.cpython-314.pyc b/bridge/__pycache__/containers.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26a33d4312a4a1d10eaf31f53a1ae49413cfdbb7 GIT binary patch literal 5335 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 Z*$U?~tJazy*j&Fj@Q#(U)v}xBe**H)QLz93 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/fester.cpython-314.pyc b/bridge/__pycache__/fester.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aabba545b71c64626db1876934eebd33001ca5a2 GIT binary patch literal 15513 zcmc(Gd2k%pd1v=b&w&{X1{Vn)Aka7nVF+MA5RiF6kRe=zcnE4jpv8a$2Qv*|#KFv{ zdxkVdjt#qZ6HrG8N2CRpsRW6sgeofuQ*ja|yR~a6vb}%o9}NKt;Wlff%BCvi|DdH< z*2=ZV?|a=nGXO71j*}+w`t>`%_r33Z*ZZca$mikkboKt=IsYRZ_dn^wdN!Mx+p9ds z&2kc#;!blCKgg$e_O_*L>}^lk*;`0C*xPBoT`9*Y+fcDJT<$$omdjf?$tKx5Y{u8n zCaW~}mV^#KK~KtiT1XX2j+9SwR&bK5f{PWWiX=Dk1uXBEJji=lzF2CP3i0KmuNa>y zk&5u;XLY4gG4drWUnZ3zU&iv~QaSRQSbmeV8Tks9-z;rGek;pYNZXL#&hlHNO5}I2 z{8p(-s>YWn)gY~v>X6o-+9d6i8jyQLYD5}1wOQIFH6ho0szPcxwM7b^+S=+(ZIfD2 zwwsN!{ZysYw(lz(7is3WO74_>=zy{M{IrHUwH<%9^shtG;FV!y1WWJP>JiAE-6@sJ!#%8I8uotjE02gE03MV_7!yWG6UH>EtelI6WwDVe)zGvoCgQS(K2FHvVqYYhieefi9ajSf#Pjla>vS|8Z83YP zt;Q(LVn~cc)szw)Pp2?;Z})&_JROZi#Do%_!bD0al~6=ADTmHR<#Y5zqSMIyW4gLJ)YsIs47me<%`IL0Dd$ss;NjUI^L3q$7YOS!m+3v zPl=6bC5DQiB0rzTgc$uf;HTNsp^B;Kw46w%#DAK-B*qh>*+Lc3TnQ;N%~TjhcQGO- zfgL#>o(TlSzH_oN<5AP&;l%WGC>{}$N;ICrXoM#NX^*JllgEKyMOKrExGEnM�+T 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 Pe-y-z?3}QTQN#ZSC9lH5 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/firewall.cpython-314.pyc b/bridge/__pycache__/firewall.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78685db0a04a0457bde0ceff8a28ef15e1d33f9a GIT binary patch literal 116697 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 C6zYNi literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/fleet.cpython-314.pyc b/bridge/__pycache__/fleet.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df596b7f0796c7fe01acdc2cbb888f32929e8d62 GIT binary patch literal 6397 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 Z)pf0F>FJw2rMk91aN>Or;&xGF{||4d;>Z91 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/glances.cpython-314.pyc b/bridge/__pycache__/glances.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f712761a99cb62ae9f5d5e7693c882d36a14e49c GIT binary patch literal 16955 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 CdLlsp literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/grafana.cpython-314.pyc b/bridge/__pycache__/grafana.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ab495717330b95f1a5a5a92cb0320e63edf7571 GIT binary patch literal 26876 zcmdsgdvqJwdEej-;z<&GijoM4ltfA-K#|modM!nYq9lr2Nm3Qr0`B^PjL#>;RSN2xLs(Pzq)xGOt>uR}kx`6}PQc7;%u#(IE@};~> zsV(OI6y?hJ@=Uo+pQ2oas@!J2vXbMgD!H-ZSRG%D{5qDeFXuLKd=2i`pDP+Tk^NdF zH_)f#vcK(^W4dD7_zftzk=4||5A(ISbJN|JCf3Mr!rf-}ZaZIxd_BwW;I|;ZmF1iG zZOAvUd^6vO{C1Z2@H>!iVtFs$jJ${CTX-+>EiAv2--&!H%eV4v$hWh68@~(r-7MeE z??HYq%kSd%A>YCByZQb60o)zr45s`{y%=ZBis zWuIoSFO8wVc1<1ob93ivj9j3ZTESB@U&LE@D{teiUR|t;Kf~McO%D1d%t7@z{lMOA ztx66v?o?WcZQzShqJ;Hg-3IQcrtfnhZoh5=7t%Do82^1twPo;z*c}{s)!pnqCipM< z!+!S>Ar!b2boU0wqCvsZ8IO%dgbw$Kpb)%#!`&GU1O+h?b~lX1Vo|Zf>kW)VL{B&v zYqVHSq4=esn5pS%NR0c(LgW5e2qgl3ar8pOF9gIU%+%aFG&JDu960W=Sd`BWiSEv01AWbHo)-65 zXe1aGg8}!28<`?~{tKeVJv0iq3vv%f9i7|}Ym}*Gn55E{0!}NG#{!3!I zU}l(E>vBO1vfN7Z$S6&{YBE?UHXkB2MOU+%l}ZnDGx~-(4#<<{7UE+VG@3T*NKkH7 zu3Ron<&_yqKbIQ~h6B+^C>&!gMubZWIBT&hE(pPJ%#G*%u!29K@Wlv&j*A$q41DhQ zx!FqwCL@vpm<9`l@u6dwtTdjSwHtHnXU>ASp$dRMnzN7ua zQn63O$i_nBL0=>ui^gM8sqZS*DsUm_yBHb^hW(d=Xs>gqcYK34E(%`pLMYt9ax5d? zA}i_pI{S}Fnl8!M*X8T%>l-1umZoi-5qaV$E5t}AxMA+RcJFV3lH%EV?lYQE4X-(i zH}b`6&!#yt2U#Hd+^ehO8udS+calC9ydINGm;Kj$_(;hp1Y>a_+^Cgwm>Ee2jKcUB zFGhsR{+LK#u~{mS*Sl94kLV4_=JWZ(;RxZZ&nJ`tY&ZVItw<)gk2!t>bp-zLUM2CTjp;coWAn5_@MGcYUrh(i8OUzYHimL77HzNu>utQ(hHl?ijAa_UgB ze)s#X-ILu*&XQZ#ZeCkpUzMtOIpusgX?|HKNBQxJ^RIL^f7ahT-qO6!<7+ z+kd@2XC=``GW=>`E&lu~$*ToM=mZ;zNqSn=f)m-hTA`Rdxe$qrHEIORCMT~KxtFvi z*upqSFE%2fg`qJFVPQ~u$F@MsN(Ru45zttn4nS-`($h|qOrV4f$WCM?xQ9;HRQF;TpDg2N2j|MZ@$&rU z*M0K+gPlE#JNp)P_PsZh+R3M!gGuus8zaeijPLB}?Cjv5B#736e&shoQ753iWxshqO_Kpe7i40PBT!eJN6+KG^M-8Cc*7oA(72+S zvl(>ajg{QlBKbK7;x+(6mwzefH9%w{?^0;;04=q=OL@1Na!0kiX;?c@l2-t?qzfo| zB5x@GW6i?Q47t^#Ld!evQjHlc_PpyX7Mpyv>7bJ^LJyt9#B`D(uQsmT0FIW?CT!zp zx|lGj2t0%qZvRLubTuf;hLDc0ws=}RZTsA#Py&J^-gLNw;j3LtgBKMJuxk!=_u zmrSwH+8w8x_K|;)K znbVhB{;H~PO26bRoeJFi{9^-Wubu3^b>ilUDKXKxXxo^yZTz6B?`I+{o-Y+`*G#S3 z4oOL#BFU;6O34%tzZ#BQ3qz)gUy#ho$Tr#}3m#zfp|**V4uXY1q*x%1#5kg46k`Dz zVgrfEQGiodSq~-MrC>~Q49RnF^m;TT1OrlO7Zb(@&R)4_+p=KWa%X&TTld1Y?sqRGt^JQVtzplH#Z`&Mxij;}lg{1u&AXQk zc=m}%%l1o0ijLU0@7h|99M*mJkOpZEohN!nW3p1udi-=c?*%e~^OGzf(`*gnh)*Nb ze!z+(j1m8LXi6SYay!O;WXg}a@i6zv(t1ZT>3~6D zNFWB#1MF_a@3?aez|BN0n@Q~wKdHzC_oOw)Mx$^9@In_Q=p!dtWYvd^5JE3KJ%NNo z*pbTtNh2_tqO23UFC_Xhy00({NH(tmGFT;M&Qg*r-JCSnN#-Lfz*ys?ZrN-sDtTDE zZpQI7M?$>U{#M|<&WCm0$2v{P&dJUXoyE6)?dGo~t~_wMrOKK|I<9!rBPR+zs^DxT zKLzzEsaY&;TqtgQb5GLQ_L$QYl}NT?th}OD*#?r(T0}1P?Qp zLSk38#01eg`m^V&)-X5e)(<1iO9@p=e)2I#T<5k43Ic^QfI z!ZHElQk*QdeDHI4BHMC6df0oBS#$;m`5t#5c#%v-?uM@6qs^@?tu4)MyY}vaDG8)5 z5^nU2WMl)>MPCOjH?I&H0?WY(?`rz*a*ZZ1so>Z}(8k~uNqaFW>1lc--DUBTWP<&J zjAxQD9K046#zd-dt9;4YPO_^3Z;-z%ZA7&W@b0h9gDa#3Ws-R>mG<^EuNh)IH^`cqi4Kim2#4K zlqu9PZcjtK($TT=Tn8}0!c1c#nNu;?VH#7y23eN^@_-y=TKCc1T)|s5^qp)3KeRb- z_22AI)_77j@5h|h-n2}~QqE(Y@;D8hIGnQWAkNvGogr$Ku8cZ#05_ioi(rV-vl@`d zhN!eE9fd7UARB;M`w@t=JyZGlB7nqANC?L^XrMwPAsoZcn^3Ir^X)?Mdp51{K$y)S*tT@Zw6zM{6IxY<%MPr;F$b)9 zjp24!3;oLA)$qnW>2Hqe&XTmjt^u;8!@7a$Rj-*oHLS;IXceIyW`(Eswq|uLXGwx*m+~!9!?0nXR(YEJeQ_sm zQAT9H#;1vE<2ql)au+q8bt|v~o0VMlcM~^k9N3b*S8_@(mDc0BxR&H5UZ;5RYQdS@ z+>Wd*60@?N3u#HRsb&9>oFsdMpf6@eV5`zb_IIEmn^$sbNr`HDMh(Qw^R87jG${b8 zF(EA{?>bA|fL%;K&B$x?6&bD68kYca?C6mDq7b>95!o{S9Omu0;1@$9Za@57O>SAF zBEx&sFOUQ2#Ng@vH8odQ@|)eOm~$@qWYR^hJkjW31v8|xIT9Yb;f58+ExSeX$S(ul z1!66$P40&7$e<#spejk@9oKvP(NMo+>>L>hMq}f}{wQ=V7<}PC@P3X&7meV@AV``H z$u2wd(hikz;}O<#01y>xtQKf`pl&hUjS*zY2+}+jx*(YpfyBh8B@-itEx5Z~D!Q<{ zJs4(Ej!m&jF;i8sa;I3QBx4%R7zi?Wi$4(X$wHB2yAThJ1$@x!!$E-w3X+~~V2ec` zBm;R!L`g3|gpv$^fSy=H(}G;{T+BH( zEZXZ9>~(WpDSJcG);M1_ADACbTG}VN9$MEY1{bZH?prrOUR&0d8p<9z%5H^kh8G?6 z3y%7^!Fzj?2Tvzk2a=BZl;bm#x{oT>FIH^5U$OO}vt}}!=zOrzlic7<+FBNEdlqba zQnr07I&G!pZ!E<(w|=Ez*}xT*EgQKa+bzdU$J7_+x8AF{XHPa9dSE{Mu%vQkG)blBJf7&_0Tt7O}Vyz ztm7PByvDzj-Sc-JSxasmxOo8GSg>v)1-9(3ovw$}*Dw2ejMdtf=a z8iE%Z>Wd#nk_?GU`&wn=k^9j-^xWq~& zQ`#9#)*P}u!P^EU2%7D<>sUHQKvfshHRObtwY)@}zVrvt`i4JS_#M1rgF#FL8Yj@x zHFbQ+Ts*aT$y_qkO1VbllCFkjtI=j$=8Oj8YAH^S(j?}r{E{bC_&O?mnpW`pc%PX_ z8%-pV+xpvsvvpH1z2;!It0$5y!)zjp8C}S_K(caKG{^Ok#XdzY$;f4pw$^i53$?=g z5jg_6ZXjc;MvLi-kVdJ6*B5}%t6&TTV4z`V>Vc-cW?M$ylz}l9fH7z5Nu%#Z1)tLB znj0G6`NZT+qt9#T6GKknpHpszk_07$y~68A8V!sJOBT4!$;Tfa3Cin~Fi$v!)N6w8Yr#oqOe`qe9 z>YnMH?uC)BG*#9_*jqo-Fx`;YJIAL=8wjP_XZB9-O&p&SKs?p&Urv>J^WXnUqWqs= zC^9I&i%=fP?Xue=vu#tOuYq>qb~VZq4PYq$?;&bJJ)yy7mm1|^-pg?)@!GxD;5+Ul z6olk~7+8T>V^G9J1G$H^J)+M@e=O@fL*jS@CDXpB?nmkrhyRXV$@^wBxlv zgw3cm%F`&E@@qMH=&KZ@hf$0kiQY!QPP?4~>Gs@0zMvFg% z5X-1uRd-3IZiA|B!>6d*pwz(XHmd3_Ro+BRs=8GwS^jrl0zF1702ei%Dm|M~!*~}0 z6HIHkx6G=x$}(*gsoE+!TcwOwep><9pb;WbwB}5d^A!p_aG)Y;0l%yS(bIxoR^?*E zu%5RL8+qHXnYRyHaxr39Lm1FlJ>I!?oK};2Rh(8fMkpt$%_H#Wh(Nw#sVHlBWrT|c zicv4gB*r4qDEuH+7=V??BxWs(>9;9lU0~bEAc~$j&vfg`jrx*T}OyH511%WlQ_%0?^p(b{b z>7WgNEB_ivCT;}u74Fl_S|8SA1uA7;6kJbx(jXLJRb>njtZtU@oR?F|toc4;(g4+X zDdU;z;^2Wxd)|)cN1Vu`4W|?wg_2o`H|&QE{$HR?nNOe#u%0ugoNxyD)jqj(>0rJ! zd~u{^ibs*izBt`_%MU9zPi=bWtWIp29a?m5eyro{j-_o4zZd^jeEy|-LTX#b;!1IbNV4UZsya(FZ`2`q$7DhJiQbDDW?>2AMW_4- zkvuJ2@(e*Wi-*aV+GuCaFJ{|knw;=O)WQTWh6juXG9Jk~O^!z>dTzjwo9{9kghs1m zm1RCS3ob?^tIQtR4P&~JmGH+WBNU;e64L2o@rsfu0J|RQl}c3Dm40VsEJYL7Ss=wZV>K)a$A~z$65SYHBY2w&pBj>71*6mA` zc1)anxMSD7SKn=4+|he~NAGPhvHwBkw)gx=eHoyfwTUmJ9G;0|4;xzV?fFjkVngTs zhR#`C;@GV1?JG%rdAg>~ROu1a1exR2JMD|shWplrrK;+i_K&J+9&s{Kt?2N(!s)6l zlXiG4A*k$5SvEtf^zM7B?mMwXZ})v~_oPUnMpIW4pMT)o@!pP!UXr)VriMuF*pn8u z?O*-klDRrrvt!A;F1fyW$y|}J)BC+kX4mbr1hfM~K$5t1ElHeKF7fG=vq+vty~=Xp zTtzD<&_tssU3%f)p&fap{#=^ZBY=x;_H7??r5ZSPk=*Xi>R#`cHLz!^MHq6xGZAL% zQ$(1oFfyzPNKyz_F0u2#3P+K8XJGg9aB*$Vk637d76j0Qw(>3>yD5}EQDk!KuDezRCi+2SHeqX`{b2d@tg6fGl?T9XYG>NIaM-K zK3zU_ZBCmisarBTrZh8#X~WdT#D!Gxrq%HI<@4e5?_E=$nK?6kCb56skSg~qnaiiH z%*3bTiF5NuQk77=vhTI2a?rlgsm__B(?=8A=lrR%hLvi&-N-ugh`P1R*$w4C`&$lK z(TIVW@2cx|=yS|W^qA4X7&6a82Xm<(LZDHPd}U>*tVWXyt@dzg1ETEUe3mK0h=~=+ z)Jrz0a?X=GCcS0kh#*S zBQrhIJ&6w3pUPl=%D;+?L< z^>2FKFK=YeR!ekgBCUjHWEEAlQ7TKHo!yJ z%uDY-ORp?u4fP0rNaM1KofC3GU7f=Z!}%PB4lOOS@k=1=Wn*^$8QHekpR(>)i=qFp zd1uPndUt3}cwpO@5dPA(`R>qywKb`4{n>qME88bAUv@Z`0sj3e0?)*ft!gYOBe@?5 z4D~~^b+clk;kEPc7uU0AtFdG~#)t7ViXks#y8MN(rYS;G-xolqiR1#<kRoad__X@hT(NXB0PT~Rkd@;T$R}L#+KK&B;76dHmBC@BCE#EnO)Pn64i5^Dc4pg zAs>-pj$r1@-|)WKzUXYZ?`&Bn1Kh2nH;+y=Kv}WXF52oAY;|+T=3jnb+q1O$@Q16E z37C-Hh`%0BZs~aINUHWQvE@xOTc)=p%yXMlrCU}uIH65Y=N?fvmpLcXCXh{Q6MMVs za*3%P<40oh-@AYFAdyYQQC&<*0g|r{-LAVWPBr}Yd3L*+Vv@^)QOpBux_=?Qin<`# z(@7FpSGOLnZarK&dap6<=QN?kyerRM!mUXaa_uE+!{pja)`rQom#htwYcE+FMrALd zzQL8huHdF;kMM8NWtk>`GRiaoX6!%!@hRfYOs*Bt#-Z2^$;522!i^lEfflbUGBYB2+8PQ%cwP|WN!OyLm=a+0132mZh?#O)6z1HkT zhh+<`OZJeuo2&A-ow&-JG++f8JcH2uRH zCZ8#fkcOI(TAd`1Ao*$xmPps^NTTYs{`Z}A?AhwoRfVZwtLsmH@zsTT)^n@ukiYl; zl^s&O2d=OkQoT=ZZ3)7nvilXbF=lO^wgM7_Eo-av7J>8MEx`Hh z2OH{f!`3zhx#8psnd8$sN1)qfe`riHg~U#_?b8tw)6xUG?~yEsz>f_EgW=AYWY6Y1 zF9jtF1vKJ30I+i*iOSNtf~1M(Fm8j~{{I04!_3O=vbu48SIU*k!MCK=!6i{P<(~;o2NQksn^P5VR#YZR-Y9>) zJn_YQ+EjI0{`(b|1&o(I?-70IGG}3o7g?F{9%=5X%4NL2Vp_}vHPy&?FUoEQX4~%Q z5_?|@zhAQDS>6l&|CJWA@^q?^jq-s5e(e>Q8+EicOm5WC+Au0hAM96a!^=Sy^UbDhv}`$j~R5aJC3y5aGozMnmCn zFd%!Di^R~SFv1N5_&a3hb0CPF!J#PAc#K5OB7$rsBtjVxvB~r@+$|uRe&JFum&iqP zh@46J91E5eTUt99N2M^Y6DjMqHObu5eH)v<5?SrL$R~4Iwc}_y2u#rqwxol^6t(0? z%C&8^Z^E%;t4{2EW7q4u<|^QFu4!7VX<4XgxwqkMZK|dVj_Nc~gaihM^kG(reW>eDyFv6o z2H6n;@t5hY#i&ts9Mh*h&BAz%sO}B`k!PfeWHlrd@%CEvGG%9Dce>wny*V;p^}GG= z*TMjaXR_Faf|)DhKAvO*IC~I`yonxz#Hl|XMhXo@m~Bf}5GW^64Qi0~IM=I*!o>(< zkrrD(0LSZ@79CL0`Bur`bdrd7pFVJ-k;R>2e%fGJYJSPH;cR4~>8Fjf_etpJQo1!FG& zW6uhGaM7&Y_gojv+Azhcwn_@rQ=)nF z-ZNZ@M`FS8nzbUwwz6}u4gyLq`Y#5VGh1b^`T-D8c#o3*ObOdz!TdY_m2Uq6NssW~ zDEr?j`5#Ccjgn2?X5wL+ZUhHblghD^F+gDpv<u?em1Cz|kIbyOUd;#?_5s$fc zlptR@TuE@DFk9lgk(uEBrm|+Td#dE09h)niIQnCg?MLRVOXV$pTz)V9b}LSANwyqI zx_WP#KXf%tn#tMIo3d_s4o>lp%L`6K<(+D{!SlQTM7bF!=t1TecZ1V81#Gv)GXwL# zhPlifPvpY6Q;#@G)p5#nzgoMt$X~2q2{UYX_8Brb#lUfzwqhWz{=6mYk_S;H{}Qe! zZOTpOH!3Oao(la($@-#ZBN5`u`eEb z`!Xfh+J%W-cq{}N%trn`Go3r>#ePCMIO4UOdua{hsw?{RH zF_ZFd2yrs$vnQS7fAn)4mbd1BgSzU45_i$LWe`$f@3&e zhPM6VTtdi54J&S&2;GTJchwiB}_`vyiAZMqPw;^q9ztK;AZ)5YSer@oE`r6>ZrC z(xPXiMbf_-8XFrgZf<5;_t?R7Pvl(-8>l)KGC&f%LO1H@DJ2YL({#gPH}qxc#%YCa z;NY0TbYpbhe6K#~+LMG=4RoVnu6O>@^V1C#rsHc4f%wanln z#Z!IAh55jk|MG=^|B%ptHvSX-R!BCO;AUT(mCt=-!Isb4?tRoHFkdTbP9LnnT4Kqc z;UN=*C%8M7J2pl>SR}~vHuqOgZSHMVb2WE1$jy;6_<5V7vW0v14w_R2vuCzfZth#Z zKyy^KaC6^9a{_JcmK!2p+4J^`Iok@(+V{{#de-0`l5GnD+2)_OIVxMYU+=1#+cmpK z?j704p0_zFTe!JDr?-uiz{G)#!ubu+f@6!09AD~1mp#%myX>emRv#&ZszsMw0NOW>xR%eu0LlY~f*ikKSgmk#z=7*ri9xM)1>V zVQO;}>~T~JyYlU7SCx})m`cvv2V$H)>K^;_mHUUgix-ZjcHz{asAxT{HEW1 zaqf81;raI9fB5VlfA)Rz3sgd1^ws)X+kb2O^kAYaap9X)Uq3g$^MR%Lf!^~&tIRp+ z95wn1oQbv%-_Zz77TAwdg-HWzJit0B{5tXi>yQ@C2`&5>MsXAoR%5d6b_fL}N7~Sp zK2Aj#N12TE3(6rKe@W*`;mj3*WDv=S4It1_*+CQ8lY{$?cOC5?Jeqybd1k2hG(RX= zl|xr>APPI@gr*0oag3>i)D4o4WNt%m z%m?H%@D2&XD1v{S_%}$QLuxdS^c5QYN(-lPe85>h;ELEk`v+Xf2b|>tuKWYe^&_t8 zM_dJBU|bs}oJ*x{B#ycXD^5?;=)Y|K4fB_szu}zHOt($P61`vl!eV99LS<9R)%<|- zENhE3Lz<7ZdIJKhkSy18uJW1f)7xh})1KreIAKnvO8X|9AL5Mg@tfnfzHsvk$&Ib| zj-{LjCTvRp?U?SEIW&C;`yAgomU49`x#A~A9F+W|9cOVq-mKGirAV z`yX?7@Wh7m>OOYhB(WziXmIGrlL{PI@nj?R>_3TW;8A|E9osyfv>=4~Niia1pLh`O z^<*nzQ=Zhbw{UGd*-e(SCrzY(E;n%o$AWX~lD>GMv}s9Svf%P8>1{Z!MoEhnaOk<- zx?tbDq_;CjyxpeC*DqJvY}yI)lZ_zw%j-D3ZF2m9u6jvt`f~4=dT$O*)v*&4T3>5Q z*=zq&@5Y&u`gK2DK56I7uE$^!Lz<;B>{Q(U*6`bd?=>WcUQD`Pn&|sjONaI29M%oB wZ=Cp@6Ul8aq}F#P_0@E&;1C%aD0NY3`83scnk+pY?)x6^u}!)kxHU-sFF&tkg#Z8m literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/hwalert.cpython-314.pyc b/bridge/__pycache__/hwalert.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4de8f8e1f2268c5dedf07ac2a08fb3b38443bf8d GIT binary patch literal 29991 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/jellyfin.cpython-314.pyc b/bridge/__pycache__/jellyfin.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e37550ab531587801b60c55a9216dd324cf62e2 GIT binary patch literal 17661 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/kata.cpython-314.pyc b/bridge/__pycache__/kata.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fd4e01aa3c424505bbc37779dd9ef442085ca5e GIT binary patch literal 53292 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/klanker.cpython-314.pyc b/bridge/__pycache__/klanker.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df6e3cef1edd74e462f23d7a68a29b735c36584b GIT binary patch literal 27726 zcmchAd30OXdFOlB36KQ1QxYXUE|Lg}07;RuBx(!AMLR`5LX>S$q(I_{garcd10Y$5 z?q|W>? zzwf>UAO*>Cn)b=O@8Z6@e0Tfyd%dNwz|P^>+x^2Qs~+dLzoj4AQ>I34A2f2@6en_V zZkQAKLwuZPZ$sR`-p06*y-jfwdz<5C_O`?=>}`!(+1nPkv3FkF&fX67ogcTKHuSI6 zn$5iX*Jt8dOf-nbc7yV(zgkPpyhT$xul$O;zDBKPy;PBCi5Cx>;w7RrUMkuuI5Dq+ z3%TNDq8)JuiuO+@w?2B&_kE4J6tbd!uM-dlUyg@7%2k^@$ov_;j^6a=KnTbGo6~9(Rj=q>Zu~8c%N#$96o%ae*d|tKv>u`Vn9K)NrR8@n`9O zV)Yk}69Y|ID_EN$?Olz1Q^)??XA{5g;5hrh#aOpAc24jJM?(JaIY}1w%fZ07Bpj4N zQT%G?JR}_O$E6GYi*9>oB0dq3JA}iMEKOb%I>P};jzz*k!$dqDjde6P2gV{XZ&-@E z?e-J>13s~*^O(@-^NEM{pYRP*4iT8->VO;hX}7 zXB>?R|8we!Jw71`wY_pA7QZNTOW{bZaP;Ugfj$E!Vf3QlyLc|rEuFXPP>cuT6Nypp zSY)zU{nngaYm?9!^^Z+Ro~_;%cav~oA~-eyz$9VPAB#(}J?@uB{h^R>UJ3^ya!g2s zCnJI2*`O2<{BdDLRo<20qDOtlefpS=MFNuG4+n&BL`Xzqaar&B$0FglKNv=( z6BteEsSuMSdp4lWSwrWYMC+)^ckqzdJ<{JP`W{D;*KR-G;%)P`2z@;#g=5FNPaN&> z3SDe8X)vi*N;l9>cGYN0J|7%Y+C?sV)&Q><-v%0TVXLqO!yJ_c#^hi$-lWVLCcbs+ zc5e&*wRY@i+0o)=^A(E-v5T<)Evnc=Fp5bI3lS_Oe>@@!=Y!G(4X{vT%pVeh;j`#} z7@(+A+F_5%k@G=XT206=#}mkPPP&L+vh-9!ip7OcWE{U@QA|)XR$N?=BcTvRxJekJ ziKT(E%ZYG2I4KG7NHl`{7n_7=C=nyj;u6ME>px8cN@E~>tCuF$YFLQH1EJukClU@_ zRC=u}RiPmvhw#CxfwV<<5<8*E-X0UE*+?SJrW9kR=7S2sEJPEdq2QR%JR$i*@rfiGxMqJe z*o;tTUrG_P>7O@*=lcTkGTaumOq0P?Gb*^y1-hckFkV|O0j|g)uo~%x|W^} z#+4n~!q#$FLX*H!ajJIIKXwl5gpeSRRd9?I?8vNb8Iuk$5`+~6Hj0fx+<#88pHc8; zFsYW}eRs7C3l zG&T{zNMq&u!xshgD4M{yDBq$XHVeV9-7lOFk2bLhdNPub!`PupR;nmACMQNmQ3()G z5UcXMKa`NL*w0GgSn#|Qx`;s>(ARFP!!BT#(b5!FJ_mYynU%Rk8BujzHYtlZ0JNko z%K&Q8@kVw%tQK0**6i>{5R>H=Nfno^)(7Y7N3B~!=<`o|s{Nv-YLZXa(#6*(Uav_BDw3tP7lNPf)CMJ(18VCk)7e{E2aXouE}hGOsA5<|94LI}eE z9JUKPfwmIXg2!_q2-^^6qukA|dY0>K!)?>BhaG}5cK zg}mA#Kc!9+YgJ98W<80O)YTIf`Y;ONh$reF2TQS{%b6by+FZ4_fSmcm!FVt!v9V%U z74UBm&i%R3g0-gnNZ_}?^knJaJJ8f(Ey2Z7Hr7jy*T*Ie8c6*4$1&7;8>`se!8)JBKA>2Kn zFv1Wk{x!!--;DOYv?HtOWSQ3X3T`XSH>XRqY*{oUS( zD~P}SCODICF|xq64=}hwF3+smWGfc@8KJ>1k4-cSV64yi$FX?a0to*ZFgFpvst{$%&5?pV2BAi&m=xCs79&4KaIrlzYS>#X;s{# z`~)xZL-?XR&5(88GW?v%q%E=(2cde4Pn!b4vACO0Th2!0Nq;;>RoAAA?peR-{E-oV zI2-|Kl14`40%SXjzgRhfDef1Xfj`3EV&Rp5^1h8P+!zJgV?_j@nQrez1gZ<3)CL&< z`>89do*|Q#Aey$T-EKD2ac*<66CykMpl}B&qXQy)HUu#On^j@-h*+#-YcT9%p+o?P z#hW%n&h@6vj2XfZ7%|swW7>J550YBf!Os0hdq$289FQRxaxx9uTbx`-@q7drkF2F4 zlU9a}2Pr?MxG(ZuGaF|s-e|s2yJNm~$6uaG)$UlRJ(O}BPMHp~O8#;4C|l4Bfeb#) z%`*s0^dPs(xSk90 zZbNcUe?*RJQq!nECK2}~G?2(8U=g$RpivTiZ>jjq?G4UghTN94MUhz2=BQteNogB? zvKX7_v?+=<()K~()q03)mrDUu*6iCysO1sLCU3weHqg5fnc|jBMsw*+XW8XvE^(ue2?*_tkdgcV=xPD|@IBwy1s=;Z)X=8swnV(Vr-Am1t<@ zqgfDZizEPSQ^f&Q=zYoOwi*TvqG=P#XHZ1HzWDTNx&FLNT#KD77R{n%JK&)wYQ#dP zQDslgItT--dIpU{ga+6nTDPl^?czuHgdt%Z;o8-2QPZHQ->Lq{dTHPLi?R~csAv=O zM7vgJ)GRvaU%Lu#H8$pBW~kfld9*t9aYLReZm3erm`j^m!})YAD|BJ`Vu4sF7WsG@ zVOlW)w}sQ{8%HmzxS)YHWi|VEv{%`d*t(e!EY{k~y!&bUta`A;foH0?sAV1Jv;1Sn z$oFs~QuXylBw+yhaYQZqEOp$m3iJ}?m1l_d0(;sF=m~nSAgg004OOXQ=|tZIHEY%@ zpA%j9Qk#{eMltfHWFl4 zanMVqpCIYOKMpkoc#40Akt}z*2d)m@DHYP>mU%F5UbVy9K(M&q9q*c{#qzhK)J<>*uHjuAXQ9s1e zmPrZi1;CP7Rh3!NoQR+G>_}T>iRl`MOOuEg#rk9yX1!M?+>tc1xl0;4gk-5S8HHY0 zgG*p)kYq(T685Z6e<>f_C5+g~v~%S(2&g3{Qm3t=76DzvV29IAjkoq4I@WXigfDF( zMN8TO%_j5&43c!7z9Q0Q(3D^_ZK5Gan?n(QAeOeOgD#T+DQ%*1#EAMSi<97k>K$op zV%%1_hQK0RA~#ZgBVeOOV^Ku?7t%)Q>9H6QvrURfsBmSr5w#2Qetcp?>m@AlDeg`& z=O~{weQK|o>RNJEq}FUn6*f&B_^Ea6f_3e(h1=v=^n4@L)S0T=KW&|H&fA2WcGqR^ zCGQQpFmD&;O0G*OyRcyIp6XgQ*v$v|n*}A8hc6A^D5#q+sGIBh)9O?~-Hn3I#e&Xv zeM`mVuee`yzqI8>as7O8{oKiS9#0k5FBI>a?)rt1E8Nd7mm19n_@&y7Z@OQ1zq#dK zZ+RhpIr&_2w(j|Fr)=ZzbYI{2ZbjSvCk%eyb_ zzTv2uchubBtbk|PV9qOADlU7a;l+lR8gCTW%@^0r9eC$Zs<>{Uc<(eiU3~fCrHhxp z`P?^eR;+s^`FqK^x|hEFscX}+k#nv4<(iv&? zwL+W*y^QZCPb0!Ke6=^uXBL^GWKmu(0lowt|soiowZ$S%j!Qlg-zAHg7L%r&itNg!$*}oetfin?_Fp7sJf`9&HPb| zf#O?vinrAw{^K&r^W$}93hOo;Fd6^K$RqsCF;=pG-pGW_AH+mm!S@&$q=<@^;7Z_X+snaa zioVg!QXa5=>{vxis?*nx$ZP8-$`9#Gs*fKc^1>d?sIRer0mf4L_`%1Hlg5ngFvtrq^+xJIc!(+N=#ptG55gVZE z%VJ@{ls%OQ!dwL|)dyyhnH^!sm7+1mgR16U7%C$d!UD|eA<|?+=?HB-RMCn75_VBo zQ;|3sg`p5utdRdAzK|}OG!Y6T#I%*{r)u(Er6W;wBV;~cIt*}lC`c?iF}b8mS>=`h zgU&hP&EpXiVLD8uAu7V`;hM2Rg;L=zvkj*x$JlBGNGewgMlN29bY=m~)CYSXpn#DP z7Pk!lPuxFjs;a?HIM^fh2o0l=NJ#RBccGFM5A{N^1}dgD7~P~0Y;T%P58O1yiVO=$ zn`Y`wTa=N`=Bw8c+Z-8v5{6u|5i*Og##txxv%3c+Dm1%ktJ;5`Oj2Unrj0J+TI1b2XoiX6&4D7K0crtLwgX;A%J6&QBaQbG|npd;PI%6AK%+UvFRBxbJ6GWM=O|VeQm`o7SS4%~#uRScOll!raL>PrZKXozjJkk6f1)Hg+wQuYcv- zi|6JxEtI>bjnloC97~Sk%eyY^nz^Wey|li5?(t98H&1uXa4->k)Cxn@VpMmoHW{E);K3ax6Itrw;$}j)#K`@G$%a5v%Vw zdK}zGj`m)I@y9%m@Slt0FzF13d>C*%h(G-?zUw?jDc^L9LvW@2s`2HW%M^VB3S_+Q zk#VFy^!0Qh4l9xW6fhq|wd zJH|t)0-8uXfu>ZcbaQk8$fddzj(3^_oo`2Bnr& z{B~Y~L|R6($cWF3d>ZD?Wfj+r(D2t`=5x49Xa>w2CU@NeyLB7fi(mwmgjUbCmKLB& zt7=Qk#*j^lv3@cEebFfS8Ii6;f`u2q;uj?NW3)0Vg&I19;2kWDFN+i5b77)zSd@uL zSn;8?a4}q(W#V_6(#8-x8Hle^go0kg+-CVSUeG3xi$IzWrj4jX{sz)wBqK3BfT{%` zoJJMO0eoPq`lpBhquIFv=Ty&}*LTTBo z`LmMxxe^3Rl~uFS+{skSQ0nw(YG^Fw4WufhluNp0cIE&mMQuMtcG~q zi&}K?_e(Z|BL9`B<&=UBRv-XEEe3{Ky6EdeqZZ&FLQ@YwE&RQxWsn#1c4D;$U^gJU zg(5%<^4g{b!teuODCyYy2j z6nAF#XDWc#&1wgg(}Iw}1?>}Vd)f%km84C}nT-YN)WRAXfOi&I=UOM41e9qKwg=!t zGXmI?|Gl(+21}qHQ^A;tmJW3zN5UgTi3TVUY z70YCeV+-yN5n;Q&uw<(D0lU6&(NQ&5H23Ha%HA%y=KJBA#hR^4*rWdMZ+!XGbg#ba zmz-s(^(~9e7JVxYqGizOxb`@twUAvNdymK0e*$=x{As`EC7Nlb<6a+TF-vn zyGLo=;?Hz@D`Dm@KewTp~xSGhz+CeTAvKBxZqhq0hzdUxFPm;`VM;g z+y=1c6Nz{*lr}T>WWYa(O0(5N=8*|M*zc#1%z99c$P~xaq|fc1wJbQQ=i(`bQ8UnE zhq8xYq#iu97X`Dv%Vb!5&`6S(hHiUb$G6<#5L^WZg_i;ZYh4Y9H(^6aWD-ND0SD{1 zHdva>J`TPDXhr2hNG}0iMjz;0@-vPn@S-JSn-{HK6O4?uVY8UG-K0Pe<%V=qDIKa9 z~9yEz1h`V+ibG%GOHvU$nq zOETtF)u>k*HSaS+uf*ONqn^7g*(SoIqBvJ4;Qhv2#-t8`eEZHz&2VsL4xZ$i6!7@t z9te7IZ#qx+M9MbaoK|rVW>9On%~n03z<0v`&%484c-<~uZE=ys%1q$WH}9Cag6iq+%ZD!=o{7zN-pJpO z%HQyL<+gu_ky`ybd5!$c+D1O@$Qt6bRpo!vHf^xe1uI57ZB?O4TaqfL9@B?BLsWkZFz#FAh?{wa=nhNaG{2e=2RCbG|=!?oVui0L;y;k^Y;X-A@ zjmoz9%C^PIZMV(%cAGO5*{97A1BxqNS@YtW**(|X3q|eImZidy%fU;*S^M0fg+ebx z0epuAZ}#}L#}|sXPg}{Mt9~iJ?8>*7@=IsVF69@^wBhH>1q#m3RnAwqmkX>e`!Z+E zv;Xpriz}$Ok-u?1f8*lj9e=qw<=9VVh!(YbZ;V~5`=g1Jv-wk7^RLJx(efo@jbGhg zzke_H{$8PLyYYh!guW(Y*d z41rgM%F_>ul6**(hfFe8}>d23gTfx19RFIINJdCr(_6G@6%9s_-TC|AP zoGye~L7nS>?}crvnJM%MIk6|hlMM4aU}6eDXQQ`}2Z;D=h%^x&oW7k&6^zr*2>cpJ zgvlU7R2>@W%h~gM)^lDgVD&MCIK1H)KkQ_x3Y`@914*uaK;9h~A@WURkJktvot-D-Cx?+H!UtazUM$Mg0J4}fH%O(iKL=6F;m}u_%M_!Hi&%zwbn=;j z=Ihp@6700{2s|D-s~l2}b1P=P33(1usx- z@Vp_{U*>u8T}maYCV!uT%M{E|0G%DjWFA#`t#Gc46Qov{x?f)#rk%KA2mBWDY z>-fgd-7}0#{lX6a2Ax2iOF2U+TWG1EXr|`7Cm~!~3$BbTTI;n84Lh!v|G7Q2-B|8^CyNEN5TsyA}L=q6@4nTNlrOqDO>EO)jr++FD}ls{`R-@k{#FE-{t?~_UrD{ zrtXxpCuQsT!dfs>xoBN;)45^6DWq(|14!ml>Dt-gV(I2fqu0c#1Iq@d*|U;>rt-Hg zG17V9j@d}0laylU#VbuOHqF(*Yec1RjMll7bV_>am8V~P`juyAo}Jrzqr7RpylJ7_ zd%yIrqJ;*tN9pckbLX#J{L5zg;h(L1qirtsM>{|fU7oufpXUK_M9wc`TQC#vS9Vr( zZ{j{^sYCc-X%U5+gdVr?BTHpZJvo3-yxxp3Sw8f1>*&y_Q!SpIyY`)KJmvQ!J3UXF z4ubCdh$KbE=9TsK0Eg`3L_P^2kq3x_cip1kYS%Ko-hf{=UiXqt z6Y?|J(7+aA7U^VUf(|if$YU-N2;|Rc{Bsm!GnePKXdsy{hn&V`q$Z7UDP91O5Ow0F zj0%OB+?gu@AX|b!Do=*cW*lfU1b2`VO__9_6V1@T=}#08V%#msT?6D^CUo`<9Kw-T zc4k!=n}ByBDZHWrl*i+7sGe|y`5d!qX4w+G@>SHATS5upi!Pxwl7uoWWF+xHT@qhu z9~k~NSv1B$gcSP#m;xr%D912-{4ua8s?>tcFsa2@$1$nJ^m74CCXIRaf;2CX{9=sA zqyhUDlGFTHw(KH*o6_n>w3AUI>WQlya*K~v8DTn-TT;a*=KFmgx6T${jm@=w@BC+L zwp=q(@YFj8-~QH%t?#ximh>+4`~HFH)V{N|olhDY8yowQE;=46G{hlPz@ZTaQ@1s3 z8=)~D5qlJ-|24Fs_z#kl#ISa{c;xW$6JlTI(UD`FkB#6Qg*X5;32l;Wg-y{t{gB^A z7Pdd0L}ZHlJBRZp&Z3)+67qDLHOzJ|IBKT4mmCF`w_n;m&pNeGd}6_IVyav5;`_o` zLO%D4Rn6~|EjYJNn^fewSh8`^x^c-_k}BQ2ShhLkY)Ea{^Qm*sv}wuVoH~-(Zx}W9 zsQZn({m;!@pQd@sFxOBS)$%PF=DI~;u2t=k1}%ZCGuQu{G1tQl(5~nVb^vozMLHtA z#A*gxV@z{ezs#$wUn--Xv3?Cb920H19}}Hnn=}418m3WoT}qoa!n){(O_?T~K*63{ z{eT&^lKZ^q$at@1cCMK3wZO%_VAw7e>ddhr(I`m)S?=&W|8)eO^}@d3)xmnrPGF*8?LthV9=e}7hc?BUOxX3QDw zEwF?_E0kplS#h4VL9=_dwvgd7o6X)z1>uN-yA%Y?+Hqf_Cl&7ye*S+zq8YcGwr8MC zmS^JG`njaRlSt-giwZ~yC+(TDvkGs`NSMM{!y1atq|FSfG!H`!?4FDj26vrhK|O;R zSZDF7;c*e z3ev5xKeakwM$HTHH%s9iGW+QFtuGy&?t$^dRW#G{nX_irhhV9+a+aA&hf^bg)G&;t zXHzBPsr>PWRVP~2U{z1Pyob#Le1Z>>f6L8%wvhsGib%c{EDjUTr06mA!KT8tl6 z6!vT}ezcLN_!cw5v>}LN0Lqc;v?+``JJOcp?BsR206Ic;b;(E^x24GaXfL_up3}Rn zt?g~?&F5R?0enXdkTh{Pz#okztKb`pOJbnygyS2$n!w#jlekJDfRtF;E``sJC}*>i z!^e*v?L5{wvcGenX9O;6`uSx2jIh>f6mIKiZ69r7Ah*%oEu&50 z$YgNL!`kwYQk$TPO9|qr!Z_M-UeYgD5U6L&1dDqNLeRmg=g|XxX%fd8Y^+wCFHctL zhtY)w7WI(KFUjs?5uLB_2R*pG1a8zpX!nzq_Y4wFH@0GofE*;;L!sU*kaVpcpybf; z{+_K$88F0-TWu-qOdEDU`Q34(!aRIkVNbvK+RVH+3vz6V+!461IMliDEzNZ#W=jrG3 z(|JeOQT;9&%6mo!4km1LnpgJb{;NSN(5g4UG$!oKk0cz&gy2E}tSwlw3FH_g37kcu zUSLYqivp5)xOi!R-5HPrq}Hu$Q70RZ9vkqT=stA(0dt|{EzPyKpe$kc5u_~x2adue z2ljyRP>yZX271$iC6ajLL93KpAw4+OL@FJobb?>!Ss9y_?wClM=*k0xxKb)dmv$%( zBp-T|wF2(*L0lR`^9tJwuFaw2TPs&QY+Q_hjsL-`^!#LBZe{mF8pAOF%9ACfr>*M! z5KL14O5^Q32$e3U7m&9-f~%%wdXX0#UKzPTYtD)YlhdbE6}PxTX`IutmE|)J;ZT3z zkB>T(CznOHpW0gWK<Vb!!u67n} z+L6^<$6$v)#zEK|3TP%vH*#Et#}2@N#Q4y>9f0Q;xWH--c2zt5%N&9oTBm{H(-r$s z%VTDrMe#!SnRRX(cpE1M)@%76c0_!}rmPVY3z~E}htpexY;Q-4%-h|^tj7;LE_+Hp zE}I$Y9P0F3$7M6t=FH(w#z$+T<%pWsb4Op$4|h6~J?w0b=7zjiyR?U0R^=C3yzMdV zb}rmjqh6e_2TEl1{)>)Yx-H7f=(bGjDQQ)!kT>F&yorJa3fvUX@(ng&-}LpS^YlvO zA0atyS8v4`nT)xeIP?d)6^tqefoM<5t(3_`&h6kP{35ZG{1_i(~P^P!T}sN`fEy}@s;-?fN7Pq>rz18M@h66<;M}+ zdy3FL0?uU=hHap$1>|7Z;0_|V*}+~k)A*@<{SABlyuE&IV8QObcIZ?4wyCaF=LN4l zo!WUM=)JX` z?n3T;YfaZK^ZN}p#6Q^O=yv3NXfYxFp~FaFVN>@Wgt_teZ&06d5J1U?5j@BR z=Whs$YxLQTk=tJ=6F~?cJS&4PEuyktlfALwG3Kv=~^}1 zT@8oEoNZe)T>?BNo=|j;g9gAZ0CuWV*UDzv&uCvoOEyIUO~Gi=lkvV7c3kjz;bA#5ERI!U!t~;PH?Be?jM}SsHM;f(7tr@)xUGX|- z%b}gl6Z4~Xu^@B83dY^SK|4a{R&&mD7t)Kw;uR%ISc%fDX0Ivg5X*3JX@yuRt{Jq6 zYlljdUc)yjrUtP}T%T(!2X&LLxIwHQ%mY+HuKJK(1B0}!4&zvjzo<3H zxoZ;_FyQ@!h#2#vU3BFE7Q;nY`gK?AkhgMVhc17lV?l~}j7r&8US1_MXd)RCT$*?$O^|KXGoBpT9_bcS%bXiPYIXs|~=D8w*iObA4n0t1KkBcYYt zJ6)fIi$gnbZXT}S_DP)80lk?(s?rlhL;}3A3y=i@0(e)ALV@XK9hw9sf_j5aOyMF# z_yiIYsrJZ^D+0){N+*RvA&*jL=K4%!khH77?7H;TB(V>-3QS|CbDYvOh-f^1K{jAa9y7)R8REHhB%e}*V@`;3&3qta-azo2OL zmBX#fvYB3|IIZJ0GX{G`tq=YCG9fZ2YwzaT`ngBH=b7%Do_Jo-UDLe)AZ$1nq_WR{ zy^j%N`M;n*ul!#Tt}u6)kkE#|+k*&na|dkQPZi~4QFUfVW2jVjEihoiylU8}S?!L+ z8mCU5KqIO_LtaAsUXw=6{W`AuVSP#6Cw`CFGfMWp`t)qgkG8$F?VWWuw(NPO^Y=Qx z_q6JCRq5tmv%C3ZX}xw|LH1o>Hg?gdCnhA_%oSPN3^BoTP}scUeufS~y|*FxZ#J{9 zWM;y71rG`Q@X1?s%>(iTgw5Zq4F+mEYO_V;+NN46fz*419(*F+?1UV`*L!4IRX|53 z)%B~k1C|)6saCmqv9{w>Eh#Uu<@4Ip-`bq~!eTthep*{&UR&Dj&sEK6sxjVC|n7Riqj8+>p(73&d)>;T}&oB~gi0uHr_m#a!6Y zD=5k~ID=}c2z`8TL$DurfS%u#x%&{=^a)0sB>YTvx=i(cvN(>P5>3#$7{d*zJ-B=p zw?nJKIwJ*%n50a?$|+!|IY#%z`a?MJ+7HbM(FyFF?75+9Q0aC~Aohr&KZ2q!qyJG4 z!;;zsClCr1L12Gp7p{iw9)N!d?rRALaISI!(gx`S(-t3#((NN)^krt9Own|~hjLQ6 z?Boo7y7T2jlxkHk*2Ik~tXxdR`bx5bl`YCA`6nnK{|yC%RnvBM!gPeXlrB&we}t*x zWBK^5-buo|AQdOb!j(u){=dk@*wf3Hb*RLPIcL$-fu%wh?j$LxnYJz!ubVwNH}Q@s zRkRK6i8klu!b^oS=ND}oz9?Qpis1$vi7Z}sqp0SSqMB`5?dG49@!}QbVU_8eVqX zaGgxyzv`27HFJl4(1gf4j_W7hJ(>~+=c`YC;yQ_}QwLMd;7wP_JmKVplD!MAy;Fyl ziZ)Lj{=!~-W!H=+RekW|wIAohclHGDMVRM>w~3?VzMt~;E!o#z-8Ji3=Je#ZtO-r`onS@Dgv4z?WjLK5s&g<^$>)!4BaO~rT4<_FoVes_xcoiTlapqf=Ij7n34}ZUrb3Mtk zDSW@Er27%m`y0y?bY}vMN+iqM;IvVirmH!?Y z1TYsda-^8z-mqWWh686z9!clv)al`x7j-&K%_j?2Zb*PZ(wBS-K^80w0v6N|7^Lq2 z7^c)l!10Izhebi0zZMYo3{xlHePHvoS)*W@8(I{UlQC&CyG8idYP^VzK=wVuUjaki z$|2aXDC|^*z(i*W(|P&!NTV=Hj`^ls^ zWPykJqeH-IgMEq#@(TD0y& zfdG>_Gky;looYrd9)?FzmMor2uez#ktt_2j(OKeAreo9w9-RMbh{$F5!J0?Wpy^L> zOG&0C923lS>Lw!_XQ0<0)81dN&0%;~WZKP0x4C>9pr7FBAQ$|zvTXiZyTb-tuZWqZ zM@y^5C;~Creol$W(i7@AV4Pl1ukG&;Ajp``;^0Bj(Rm)%*waB5@J7Fn{D1Lt8jn75 zkh0(|ZSdhZGiLBiBrP5f{r@w-9^gO%P9LYOBO`&x*vLrQ1{2t^PB02g0s#kbF{aqH zi7Oxuk7)vT&<}GUF&T|PNa4{++6YRWEu^GPWc-nx_{LW6WfYm>e(G?}w9oP{Z%=LT zE|z$2+6rD6f1&UvPS;I)@#UsVO*8S?&X+GN*sG_ye(EU1=aj2{&UdZm2Pfwar3$@& zI`AK!_>(6-wS5C$W*oEKuN`{z&>Lsper#dWBMVjAQ|or53U_{J{44u=_D^j`s8&{wA@3d9D``hi6^N?L;BVmZd;HoRh5z77?1rGZ5zbN+K5v22RTL}G+9^k!; zOHtQkCn*=H7OEN4gQ#?H1sE7^z$6FC|BV7#7>d)_3lt+!R3?F%UHzooWU-%qGI~WM zl%3*chdSjyq@Pbw@Dc^DBS>4xa*Aam|1l-~kb<`<_%jOrmIC4dne@%rE}4$?u=#{L z+Xz{#v0O~_KRaLxVD(k6w%s6riIB8cUXOD4kBhy5E`TZF`CF!)yy^CNp5yaB=knNp z1)p<8pL6!lIoIc$<8!Wr{Z|IA$60jw$xBaO4qpn-o=!D&EfjX&C_FM>c;sV5`==bp zQL*NgCtrN>mGFz<)W(j5@?9yeWI3NJaZfpyZCptyUUq|d_p*`WU3UxV!sWYmT<3e& zMHjK&-Ou9^vAgBC3F>Yik4qZvdU2e3`4O(9kDqehwcz;XT{})5-rbGU8Oyk)A;0i) z$8#O2^5z9c%am=YY+Z^gzH5R1>D?+goh=XZ#Ai)_d77~;*(zo$!C9qBo9Q?4nJJfd z$yN#`tzzF7^lRU8iQQ~juB1XwvhR&3m0HupiXm^|47gHctW}F`M==yH+O=HbK*6`WI9!rt5Y*zE&=GltP*Dl zFjRWK4rzexQp!y7-{6Z4Q-#Y14P3=q%;H@O?1gs)Xq=ay!e$wlLuC6o1c g4u0q0CErXPUHmt@_2s68g6hvq0@!-fT80&H~~5ki$sKxa)+b5T%<@jMR~}><&;Nrb`H~rbeH6bw{^_r?Z*nXW5o?+!@g@ z3}}{QRrFfYm7F5IcNr!!c3v9Q?4_Ca;*zY{4%RJ6(Iu^5+GAqQ)(V!C2W8ULtfotz zT+Who!I!(aDcv3N;noyRrPGQI{!wf#oyGy+Sp~mEt0MXbTFbQ0)9UVK zw^@K;l%bVZRs#V>@e2~vMYJ9*o0X&ny-_+)9LbSWU_SjWh%&odsIZu@$t3>PTeX9_Wtdv;mZbaiyk4d4SV6yc(N8i7WHNDNvMDAReqEOKWG;?&E$%3S z`oBcT!Ob-;PiaZ2;Y- zFClmuqUiV^E8{YkV(C+G*r>~sLlPQZ0>i3%Spx*CW}E-}B&u%Kni{jM-q=pThg7(Q zZ3ti!?n{Dk*mkrD<`0ymIMl#t*DBv5Z*Gi4B>U9pb7Wvi}nmW^{Jj)EhJkT(?7!tIpyDW<9EDrxM` z<+TCB?l&A=?Zeo>r0I~0=E;h>%2@qSWwU+P%pBHK(r|3>)Bpr4L)9t_{!@c45%UuU z144oyFnxK1r`{nvbq;Q%1B_`=;Gs|s1ydSt@G2J~vjC_?ROVZR_7|Zww+3zukkEm- z_0dW7v(3L}UkO}ToM6fU)D?Sj?eVoIA3XlxS?BJrI(Of+Z;js=FLgZXdeAl7u<3Jo zf}e{tO$c+%t@n@IIZ`?^Ir4RLY~t|Ts+RkE?(8WYn__2HZC~#9Prfs=suTL5##<+@ zpO}lRDe;d24+4{GrkZA2yXPY7OGA&&J~%sh`Lmvx_8-YF&HZx#N^lAHRRwn0$Bg$4{Kc&eXZjSI>05J-zkdOmpw^_MUkvP_7HE ztN%L+h8yPnX!W-8I@H)&T0Pwmoeo6*^|w0U_~)w-3U7Eg{w%uxX>>oh>{)2b)6kZm z+s``pJ?-50yEA2u3H39t5G%BQ7ilRqO}zhApsg%G_utkQaQ%me*}ee!f=~2uZC~tc z0QwJ{K3^7o6#0PX?7x8S#E23JH6vkx!fAds)cZW_cO7@~!Km+61U?%|~%S)GN+ z>@d~hmIMn1a+qo)JeYO`)2SFoc$(`F4xSF-ayo>1Os%TK`O1Z*0nv@=bgLG zneaTVZrXPbeKc04K3Y@vKRNZr_fT!g=f=7^Ahx$-NKJRKm~w>aJ=N` z zaRMYE^&Yj{LPEjNq(bJZJ>Xe+ft7hruQvwzVb?L=OR8kN`LupnH?HaufMUid6d=po zE782|B4FKbUs5Xu;93%24w7d$UKXGJ&^X#$tLK2$w0S7Tx&P3c3OKDLEbY!H9cXE(1|S-_|wU z-c@4m?VjEcpIsGy5eVNLy;=XfA@V|Oy48KX`?g)`y?1p+j1~`lTUQU$(~-@SLsK1} zoS8g2T_6AT;BU_T>fE0K2dM-fyt(<-wj0~-43?TpBR^~X`25rlX2l(|eEfM`$h~?b zkWN!8AQRmO%g03gHZ-pFSfW%fty~yBNGWP8m7%cUm#bX_k1h4`~iFn z_^Ds56jT5=3^UJ*48PEdn9w(<@f#$5?}KEwycY=#Pa|Drjt#NJ!1p4&ka8>HLlfh( n+}b(b|I;HM9=Serd(-`{J6)xod)+hP=-0e7&mn%DyY7DgboA&+ literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/mining.cpython-314.pyc b/bridge/__pycache__/mining.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99508eb9f2dba23bb9a96652ebc7da6a36a53df5 GIT binary patch literal 25980 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/modules3p.cpython-314.pyc b/bridge/__pycache__/modules3p.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0831475aa2b3c69e9c032e486b44bead28c9801f GIT binary patch literal 29900 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/netsec.cpython-314.pyc b/bridge/__pycache__/netsec.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a018007ab7163887431ef37e4f549a2caafe8db GIT binary patch literal 21956 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 atOTX%@jqE+@33&6T1q>r&7W5B2>%Zr;+07N literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/packages.cpython-314.pyc b/bridge/__pycache__/packages.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..288ac3c9cf2a13701592992776221f39f74c3428 GIT binary patch literal 76209 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/policy.cpython-314.pyc b/bridge/__pycache__/policy.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef211d3f7021f30127beba500fb11a9f8f869500 GIT binary patch literal 78778 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%0DPuoB;iB>Gz%*tp#1 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%0AW7)7kqyvO#uV^5LRlDpKq>^;qFOLW z{|s61pNsxigpja!{-L3OH$2+J@s1BUEBo*Kkjws%vwg_fKjiX1;mzyug;+=o|`g~#iTw#4Ox8WY=fl`q7@t3Ho$80iJRHWJ?YV5zvjtFo^)AH zHjzYzb{eyAfNH_uWT6ATb{7oxIcL>^L5XM0xi>BtvgdL=+B9_hS~p>NQUY|oSi%_` zljHaF#R~@WA9Q}B^P+F6`fBav+IZ8O^+{*tFAM@ykA{+8FCKAmmfXi60X}{q59hge z-t4>8d#5(xJC?{jKGF3leiQ;bi4Ly3l9a27_0K2ES`&uiPj&R$Xk<}=Fqd*GKZEjK Ty{*H|{mkv%uV+qZ_4@w{31&^v literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/remotefs.cpython-314.pyc b/bridge/__pycache__/remotefs.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3315c591c7cdaf5e508abec597043faf51c36a95 GIT binary patch literal 20087 zcmd6PdvFxjxo7vhUz&&B4^2Vtsdy@^fD!UaYwY$DsTXly>36l;fyY6mnD*Km+p_2IS zAN%`Gch8K30DE_no3?f4>(k$PeCK@Ud!2LG<}Pq>cn)-b>xFlBaom5W7yWT-z=swC z$IWmem*mcJB7cle^6b};G_YS|(#U>INfUkz$IQLvq`8)GjmIp#)}*zT6HTI7w1`&G z2FUK`MTh7VT^$awKy-^9(JT7ILa_+>#bSwAiu^LMT&xf)#VT==Sk3Zl#9HJF;%2c< ztQQ-^MsW-Bo5W_Z1^HXWZOCsG+eE(@K>l`dhuGfX@SBr1u|wP`?hSNYtf|?Z;L-o88*O(Y`WPKO|Lfe1l+);AnK_X0)(JfJrF z;~xkoj`p8uYxnOE02BFOHToHmQPWYCWx&V+BS9VxjYrzzG$xVcrMPrHuisQ&t!g`g zqiRu9axxy5BdiLwk~NGRnjBBICFA1}DFnKJwYHWCD$BZZI1)LkRl>TG2uZ|ra2tqn~y_Xm3h+KDBwYUH@YN}ftY zVgvC>X*fdlVDL~JH93x4PK-x~qsj3p;mEUHCr)=C=~fv$%XJumKE31GFrJS{SQl;Q zCZprYXsi_sCWOKh(HOdceDrcE4)*>GcrN@IAsm7Pi0wl)YabNSRy3|Jbfwqv` z77istjI|<=1>l=xbQnuwZFxZeO;QMqK&v{A83prFPbXzsX2a(b(PSI3eX|^);eilJ zj8Be6V=YwEA=HX>z#bYvTE~+KO#%tchfW^q>pmnrDI5x448?{~^U07jHBPG*LNJas z5*>b^KYbccbw}m%!XasR42xE3X%+fT4Q3Z@Adh<nxI(*oL)~gtm*dbTUn( z>M}u^jOl8Uh`JaJIpoQ62`NrXU6a>X%0vd%*JtF(aQrh6)sgXWl6tCIJU*bU(?m#? zp=AFB7y>H^Yz5Wcl$55LgwH~Y>TAd^Cqj_oa-8);TUeTI70~iTA}N!!7vkD-q+WsU z@$=E7FoNl4-=tAL<{}LH!mqA$XrPIBI65*VgrMExF-LPKOzHe8f70z@#h%#-rx~T79HoVWR}H)h4EN4*%rkR3!}c@rjGB;U#VMAz=Gjc*O>B z7D+}YB7lvDVpEEVI7l&dA)R)s8ckQE(J#Ven|2a{ADtPEB&Ul4;FAF5u*44=VPx8- ztG#KjZhWya(Rg68A4VUEpH9s4Fjl?LHlS)o68%DVl8wXq;C4;eeH>ap&UAe zaBO7FSH+&CNwFW*)#|h>t5MrVtM zzcqm7QhjYtgvdnIDgVf+=VQ%Jmon-nM&tngG{oVN(dlBHUJV%&JQ0{2-GEjN;o+3( z&8f9NoX)j)ibb_66pLzgOgnXRf(Y!b1%X8>M%x6$dzLzfmI+BTy@?U0W(4w)8MhW5 zR;`~rb7s0!C!3~OE#W8bg~Ow9?-b-ASXce_aH8{CTT8JVf!<*j6Dk(M@nKo9>6VXT z(@m(Tr2qsLCoYc2?HYq*DRkxMPS-IS^%?>?pchgp%`>!`4-a&=b+o7q4ey8u)eET% zottEhR{itCsnsza%ggH!6(ek+X>qOTwvV)gCb<~=cq>dez1F<)D;9Dp!lCIw-SA-Q zoQyiy6q>J+Z}#Nb+L#4ghPD-hI+2W_#1i$vqxjFeiVxoNlr?!w+)IBj;Ufg2WJfe+5(jY z^G>EV>y*L=m5bsU8Vbcg9EAGNkW>x4N&Ly=YR_=L<9NRHE+yCMSLtV=fxUf*uN)(W z0D6cJMoc?^87|lH{%p4iO?@_lSlw|Kx#Mu$-{$*T42ne_gON9`n3-SO!b=qVV13^r zZ33v6hsHt>dG&x+y-M%0QzY(&8m zATr1`;g_B;R`{m85!UlZfxQVKuzD`XD*Yz4On!>+5ic5ooZl$ozq4l1v`540x8&og zaDsn^e*z#_&fFt40GjrYf!#*rw=o-k@NJ{w9)<>7y_WF;ABXY4dO^frMPt7ewXS=Dye>moNqm{a85bA05Zb^)zx^!W1<1d)DJ{ zoM_Q|b_tvz1ryewc`fx%ZRWUVchOL8%4k3jbt_O`?gC{FDSJ&-6k(8k0yfC}xT@Ca`D_+enT_V-Z=g!=y<@$WD;iNIM7}nm|SvhqxpbQTX!;Kcw&%Wg4?BTU75(T~wZ-taKcr-bvj+VNCN^0BBv6 ze7Q5@@y*(E>uPRfKAbwa)b)ej@Alq2{kNxn*3gxB)GD zuDf4x|J*Cgnlgo@*Zr^fQ$@>#jaRI*{A}obr|Zg&OnJrJjxQg(Yvp{KX@wTfoP2P3 zl8j=@Q)IpTzgeES1-WkVL9t3SgOKsG(xly#P-Bl;XRqSBOr=O)mh(aWE=y^p(c6uN z8}d6{smpKq)%+YqD8ins!1>>7f#oFqD43cgI>~FuY7_p6SjRT4mY8gEkRUE8sLBvyP=`_P^ol^5^~&O z)Y)L5s@->mvB81ZKdY?8&g6|^L{LB?-lf_lMwnuZ#*(n`%8DVJlzNe=3PCNxl@)^O_RJ7y!@x@s;IS3$WQ!5T zMaEk`-?mu3)V?%%^IZC{m>xWx_5{>7tg!_GP<&=J5Mg`>MfY_ucVT-1gP| z)K`~kPYu7dC*68@+1E9D_)barLi3xgUvGWgzu5k>%C_4T`)^h3U#>W?Tyk)>XVt>l z+;inC){2a;@`@#6_ss2IvDapNRqD&$6?;|2SI%D2MS&H2fZ=`MtDLoDT*Z*(k<`Fq z^HNWG|B3fT($3Rq)9K&etKfW93rEwQhI<@u_x-}#f=kGe3ZpNQmMYPf)fhzq zPILzObG!)2jIBYHkI6uAtuUxtTo@NZZ6#2N?5 zzJD|li(F1f2b8)Ybvt)R+obUCACF_BP(I+#;(QAazk&QqfkNb+fy5|n!Z$$RvLd~rrr*@18DnGd})esjln;&1X_=l^EUADI0A zLQw<%bw>lQ7@}dt6bns6NSjSW#}Ua+#3d-6NojoANAWyFxpuVg!N&D=|Bg<@sYQTK z!xdGGh=D2&3X(-f`!PF;6&sI{m<$Cx7N5Wt-DpH{Y8t$k)R`UI5>$O8tk@!#5v77B z+hS&+4Cc@(#!zgEX&-b7zB6nAGd7nI+A*Gsh9&YvrAbOIQbHpqO(9XNY9D09hz>|E zQkF|=cW8_nEu0QGNa?FUXVUo%reZTs2XC4BW(MXg^Wnv^rOUsrYrJ-3 zzW&E9SSXdI0ENPgy2%DM_w%>xSX?>%$;AYAh?pV7tVF8RuR03vlq?v zu2vIVLuFrFttD9C?8S3~tD6a~Bb+0v^#pT;W=l>#>i!0a2Bsgk19+Thd_s ze!R%p`@qab&P;sCT@J~$u2uS3=w@%ZJ_46L**^Xoyv~q6qW3;8?zoTFrB4`+Kk3^u zSq&{_qmvuO&-$%eJ9$63cqX&?$)jV>8L}tX!)$)D+EO*NbUl}~`XSNda!-pzq7Weh zWkb;kk`zNj5J)6iEUM&}Lij9w1_``T8p6EDs5DOBC}AU}nqR91qq*dcr)cibmoMG+ zbf!I>3!SO(a@DrmRoib>ZNFW$=T_C8oBVQBXWG{J`#Y|pYtN^h0?a;hiQ*}S*=H_M z&Au=Ap5U%EJi+~)?~vR0ZUK+XQqhiRQdq zqizL?mb_e3HrILvR*?Dx%=MtZ7JmtFs0JDGAvj#*Ofl^*!Q+SLrkNVD=C2*rjzKBz ztPk5oC&d((=2fyc>GLRy$gubDp{}Qn^mPx3M~)sF7!;pl3Ih5p5>ssYF`gE)!bha* z)Ea+Iv1jXL9gvBBrgBuL&N)009@5T*NZ-IW#wX;}&2YbJ-M{R4@>c8q)P-xF6#sK? z9pIVXwCBlRY-(8c9(k>I?!sd8x1CF$z17@(-8biZt#{^F+I!>|m37PRgReEuJ-ujq z>-^Glx3(O(dSUj$Yt1u9)9!;G*b3)*Gq$pYqWNcEug=)Y7wYGuulqB$(goxE(bruW zTj90dRi}mIs>N*i!*8ve_rM<%?~y+!?t_ejuM{74nEu9d*kk&E1=*!Kkxq7DSMvaEivzMP%?1i`A>f9_#IIP!orP2GZ;Jh4)AOmi{%8 ze4|e(7#fMj!n%zseG}hV&o=`==(3=Cmd`j{vrm6z=Um5E_hpKTU+TSU=G--REeQPQ z=zsuV53xU^16A?$putB?!$5|?0vv_9Qp1cvj+`Lknw&Dsi4?|5&!EbWe5chQl70}X zQvjFI9I&M;y#;8^Y&qD1R0AyEq6!FsBHq}%vz5#ZFWV|-4j}}b@s_2lS{DZvkEAQw z)1HpBt>ccfa(>6MvpQ|6&Jn5;M0%D@+gVoEqZb3L5n!ngHf3lbu_u?C^TgN1A#$5C zYAh}uQ!Q``N=T2JN*=wHTYyPZS3NgbQlrH6=?M&jJXjxi=BH4*q@;_&z`}o z0uGob4KV)-62^lVfAu%YXH7x3VvvRrPE}94_OOjngjlEPWP`d}6BfvU(~hD=aU@#R zwbOKf3@6a(93351&^$Wz5IE526u8iwtEGi)OQ{=B(znq`G^z$d6^pus%Ut}v7U%k% zDI6fDlLo_aoFXSDK-y2qcc}_Dg_%(r$8d4rHmvx1aCovWp6r4053^vcYQr)eWMa*# zo1DC)7~vGNzyobkscPJj+n|#E4)wEzbRPiQ^UZjR=Z5E>NJSQ(P49Uw?Rh?JdtTkL z%KtEy_C(XR=&HeE-hIbadbRJRzDz;+{Fbzo30YV(P-JvSx~zUbuewmCM&ZH}|X*L0hdl>Q?S z7?m9WK8|WDnH!zIkn+8eTy{33O$|A+bp`ilF>$qPCk{t|Ond_!2*S@o!-9OHYyR>Z z&|G-UQGgL(&p*$^nP@{w`VZ*AgA-;`Ck)?zjPH!Nk3U}{^Pv>~MtIp-pElL!sQt5= zuPtlmtBGc&>DmCzSJT4ajrtpMs`(8#$9Tvtxm99wN5{)=mu=NzSPw=}9zwB<6sQ63Y-mWx_+NNfVp23U{9V6iGUB=kgM3Zr95h~mSI1|#MeEWsi(B< zvhK-_l1HorZB>IFx=}jl*=S6~>Hw!Js|~-K#2Wp(So@GVYV&Y}hu{d0X=n47ELFD%@ihiw6tVMrK@`Ski6~ zO9!2KoDZ48IKM1lB)`Px$U)3`uLi6!~Q+@0rQCpjOAp6M|aMQR2rLuQ4)Kc1O z?xGb?viBrZ6#cdXw)NP>D`4n%3eY??tz97?SFo*(&Wgt1tI-8g{Sdu|mwz2VXq#~4 z3}1<6S&j0N1u7wUz)4OdiivKQNwg>=;#E4)m~BDwP&SFwX+zt@^rpV-X?*og+87Sj z<7z1zKkewFJ-aapUssBRFe=kN0sboau-PE5V%0$AlTH^4bo>byoN@CtG=lv~VaG0c zx`a)DHsY#}3LM3%ImkF@9J)lFHM=dSSjHluaqO+|2Ne^pg@hFgu60g?5{fN0IWYuS zh94}4vpIle#he(W3@f1|Mr9n53SAn+UTtSzGzHrGm=`R42Lk{vB0GfB1#4&BDAAgv z&F1*Hw2P1nRR7{rfOAJcrGHPa->2kzl#qwbd~KW!#V{#mIt?wWM?^iuV7Ts%c~;Lv zd2?Y?+y#h++aJ1tEd3?b`$bA#q~uFT6bnwNp2Im)6YgwXRF9RK=oYICP58i0uj;IO z$*R^?#SmkXe*`WwYW^MKDl^UAz^s^#;pK4|Y*qg;zVTbk4yArg4%7OW(SDZDO;;Q+9H=lp)`PB8K=EHA} zy*8G*yi~Ycv-5V%-di<$Ze_~x^(J)0U`l$NX8Z&&ZWRlR#@>PMTGtGh9Pn+h>} zzRLNIH#=YJOhtZH)w){ZEOxJQ&I0!;wuuYpc4871jo)#BKvPwwWX`t7TZ_N25;cEoWUNrhZuh8ZD+$RC(fuD z%=;fK{6xC4lL9FFe~SRheu|&$|EGIfIdAc8PyH=VJ)Lap;xon7^U2h6OU55KzU#QT z>u1{!rHc;#)ODE7yLIs&$$P-R@0M2fnzt3iF#@o z_ZA0Emy&+2U=yDj+4+p&P z@2RZmwetxS2*W1MKPZ=@P`7*O-(jhLpfv4JVEdFTt=4rlWXEEo$n$0{cWi7Y+Nb9% zj{EL`6ryKct2ipg+UR9%kd9+dZo~I1zxNvY0BeU)$mdfC`wN?}x&4*gEIp)W6vtQV z&-zA>?3?*d*f-MNpQLY=KVjdpep=3_eB`)U|Ac)j`h??V`xEx9g z_v-6O|HW#i`-v{;2HKYX0SVnh#AYp>X2UAe&JO;Npm!3psdH&Ts=^Fn^ zk^hdZ;N{Vm-M{d7KXABbFMOp52feM1+31S3j6Q|0zVOlu3stXIFJ4%2?^v<5-`&Ew z3RW9AN5P!!<=Q(Ho8|{!uSh+;P(2%-+ws-W#ly44T)E0r*Xy-Qz7==Jif!jzflAg= zN$blsk11J^>Uh0oiC=NIuh=^7R#M3dDrtGS`Y|QTQ}ubhEvAx1RMNg;uXs$+s?@-8 zMa$CW75B~++pfE?#0pjmsH}U%{+JH0RJ1JCFIV`NFicOZ*gEgx@=w7%GfuUsLpa|A zgJ4NsilpoJrz@UZb{|-=9mJqB6{XmQhG?pWhB|+PIpX^IT56GI~qh79)5FJ|mDX|4^dCKz!UTV2L>DT`A$_XPNP$&|4PskV%LbDBN_sU~B)kVW#% zHP4@1gb7$Z|6<18l(sczY@1LbV>_3{DZ+h+g2g0Crra5O8{NPp9Mq=O(}hbehBW70 zJ1_Hf-N(S`xac2ywYCpsN8qsB*c9;HqY<-v7bb*4U{z9cOzhWzuN%2X0?+u sxn`$Vj1?J^^{;xr(0gTYuKs%SE6wxmueL51)c)Kg+%<{9 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/sensors.cpython-314.pyc b/bridge/__pycache__/sensors.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33cc556550a6fdc480551c7b226f6b190f2fa87c GIT binary patch literal 12517 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 literal 0 HcmV?d00001 diff --git a/bridge/__pycache__/themes.cpython-314.pyc b/bridge/__pycache__/themes.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ad0a845f0c587db21c680afaf69d71175280570 GIT binary patch literal 28763 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 CCf7{> literal 0 HcmV?d00001 diff --git a/bridge/integrity.py b/bridge/integrity.py index 2959ca3..75c7360 100755 --- a/bridge/integrity.py +++ b/bridge/integrity.py @@ -20,11 +20,17 @@ HARDENING_RE = re.compile(r"Hardening index\s*:\s*(\d+)") def score() -> int | None: - """Return the latest hardening index, or None if lynis hasn't run.""" + """Return the latest hardening index, or None if lynis hasn't run. + + Catches OSError (not just FileNotFoundError) — on hosts where lynis + ran as root, /var/log/lynis.log is root-only readable and an + unprivileged session gets PermissionError; that must degrade to + None (the honest "no score for us" state), never crash the bridge. + """ try: with open("/var/log/lynis.log", encoding="utf-8") as f: log = f.read() - except FileNotFoundError: + except OSError: return None m = HARDENING_RE.search(log) return int(m.group(1)) if m else None diff --git a/bridge/kata.py b/bridge/kata.py index 52a3545..6ee7538 100755 --- a/bridge/kata.py +++ b/bridge/kata.py @@ -29,10 +29,25 @@ fabricated records: pxe-status real PXE/TFTP status: systemctl is-active dnsmasq + test -d /srv/tftp + ls /srv/tftp/pxelinux.cfg/. - qcrows-list list QCrows kernel bundles in - /usr/share/sysdeck/kata/qcrows/. (qcrows-export - and qcrows-initrd-regen are operator binaries the - host runs directly — the bridge does not wrap them.) + qcrows-list list QCrows images in /usr/share/sysdeck/kata/qcrows/. + Format-aware per the cockpit-kata master spec + (qcrows-spec.md v0.2.0): each .qcrows/.qcrows.gz/ + .tar.gz entry is opened IN MEMORY and its + metadata.toml + menu.toml are parsed, surfacing + {image, kernel, rootfs, hypervisors, menu} per + bundle. Legacy non-QCrows tarballs degrade + gracefully to stat-only entries (qcrows: false). + qcrows-inspect detailed single-image view: full metadata, menu, + member listing (name/size/mode), hash-file presence. + qcrows-verify in-memory verification mirroring cockpit-kata's + qcrows-verify: required files, kernel binary + magic (bzImage "HdrS" @0x202 / ELF magic), kernel + config + required Kata options (warn), initrd + (warn), metadata format_version + hypervisors, + and a full sha256sum -c style hash walk. + Returns {ok, passed, failed, warnings, checks[]}. + (qcrows-export and qcrows-initrd-regen remain + operator binaries the bridge does not wrap.) KEY DESIGN DECISIONS (Kata 3.x reality): - kata-runtime list/inspect were REMOVED in 3.x. Do not call them. @@ -69,6 +84,8 @@ Usage: python3 /usr/lib/sysdeck/bridge/kata.py check python3 /usr/lib/sysdeck/bridge/kata.py pxe-status python3 /usr/lib/sysdeck/bridge/kata.py qcrows-list + python3 /usr/lib/sysdeck/bridge/kata.py qcrows-inspect + python3 /usr/lib/sysdeck/bridge/kata.py qcrows-verify """ import json @@ -572,17 +589,213 @@ def cmd_pxe_status(_args: list[str]) -> dict[str, Any]: } +# ── QCrows format support (cockpit-kata master spec v0.2.0) ──────── +# +# QCrows (cue-crows) is the in-house self-describing VM container image +# format for Kata Containers, master-implemented in cockpit-kata +# (qcrows-spec.md + qcrows-pack / qcrows-verify / qcrows-inspect). +# SysDeck is a *consumer*: it reads the real archives from +# /usr/share/sysdeck/kata/qcrows/ in memory (no extraction to disk — +# nothing executable is ever materialized from an image here) and +# mirrors the master tools' verification semantics. + +QCROWS_FORMAT_VERSION = "0.2.0" +QCROWS_MAX_MEMBERS = 10_000 # tar-bomb guard (header count) +QCROWS_MAX_TEXT_MEMBER_BYTES = 1 << 20 # 1 MiB cap on parsed text members + +# Required Kata kernel options (qcrows-verify warns when absent). +QCROWS_REQUIRED_KATA_OPTS = ( + "CONFIG_VSOCKETS", "CONFIG_VIRTIO", "CONFIG_VIRTIO_PCI", + "CONFIG_DEVTMPFS", "CONFIG_DEVTMPFS_MOUNT", +) + +_QCROWS_REQUIRED_FILES = ("metadata.toml", "menu.toml", "hashes.sha256") + + +def _qcrows_member_names(tf: Any) -> dict[str, Any]: + """Map normalized member name → TarInfo for a QCrows archive. + + Members are stored "./"-prefixed by qcrows-pack; normalize both + spellings. Raises ValueError on tar-bomb-sized header counts. + """ + members = tf.getmembers() + if len(members) > QCROWS_MAX_MEMBERS: + raise ValueError(f"too many tar members ({len(members)})") + out: dict[str, Any] = {} + for m in members: + if not m.isfile(): + continue + name = m.name + if name.startswith("./"): + name = name[2:] + out[name] = m + return out + + +def _qcrows_read_member(tf: Any, info: Any) -> bytes: + """Read one member's bytes with the text-member size cap.""" + if info.size > QCROWS_MAX_TEXT_MEMBER_BYTES: + raise ValueError(f"member {info.name!r} exceeds size cap") + fh = tf.extractfile(info) + if fh is None: + return b"" + return fh.read() + + +def _qcrows_parse_toml(text: str) -> dict[str, Any]: + """Parse the flat QCrows TOML shape into a nested dict. + + Supports exactly what qcrows-pack emits: ``[ section ]`` headers + (dotted sections become nested dicts), ``key = "str"``, + ``key = true/false``, ``key = 123``, ``key = [ "a", "b" ]``. + Unknown lines and # comments are skipped. Section-aware by + design — cockpit-kata's qcrows-inspect greps first-matches, which + mis-attributes kernel fields to initrd/rootfs rows; this parser + does not. + """ + root: dict[str, Any] = {} + current: dict[str, Any] = root + for raw in text.splitlines(): + line = raw.strip() + if not line or line.startswith("#"): + continue + if line.startswith("[") and line.endswith("]"): + section = line[1:-1].strip().strip('"') + current = root + for part in section.split("."): + part = part.strip().strip('"') + current = current.setdefault(part, {}) + continue + if "=" not in line: + continue + key, _, value = line.partition("=") + key = key.strip().strip('"') + value = value.strip() + # Strip trailing comments outside quotes (qcrows-pack emits + # none, but hand-edited metadata may carry them). + if value.startswith('"'): + end = value.find('"', 1) + current[key] = value[1:end] if end > 0 else value[1:] + elif value.startswith("["): + try: + current[key] = json.loads(value.replace("'", '"')) + except ValueError: + current[key] = [ + v.strip().strip('"') + for v in value.strip("[]").split(",") if v.strip() + ] + elif value in ("true", "false"): + current[key] = value == "true" + else: + try: + current[key] = int(value) + except ValueError: + current[key] = value + return root + + +def _qcrows_kernel_magic_ok(blob: bytes) -> tuple[bool, str]: + """Classify a kernel binary by magic — the in-memory equivalent of + qcrows-verify's `file | grep (ELF|Linux.*boot)` check. + + Returns (ok, kind) where kind is "elf" | "bzimage" | "unknown". + """ + if blob[:4] == b"\x7fELF": + return True, "elf" + if len(blob) >= 0x206 and blob[0x202:0x206] == b"HdrS": + return True, "bzimage" + return False, "unknown" + + +def _qcrows_image_info(path: Path) -> dict[str, Any]: + """Read one QCrows archive's self-description, in memory. + + Returns {qcrows: bool, format_version, image, kernel, rootfs, + initrd, hypervisors, menu, members, error?}. Non-QCrows tarballs + (no metadata.toml) return qcrows: false; unreadable archives + return qcrows: false with an error note — never a raise. + """ + import tarfile + info: dict[str, Any] = {"qcrows": False} + try: + with tarfile.open(path, "r:*") as tf: + members = _qcrows_member_names(tf) + info["members"] = len(members) + if "metadata.toml" not in members: + info["error"] = "no metadata.toml (not a QCrows image)" + return info + meta_text = _qcrows_read_member( + tf, members["metadata.toml"], + ).decode("utf-8", errors="replace") + meta = _qcrows_parse_toml(meta_text) + info["qcrows"] = True + info["format_version"] = meta.get("qcrows", {}).get( + "format_version", + ) + image = meta.get("image", {}) + info["image"] = { + k: image.get(k) + for k in ("name", "version", "description", "arch", + "os", "created_at") + } + info["hypervisors"] = image.get( + "compatibility", {}, + ).get("hypervisors", []) + info["kernel"] = meta.get("kernel", {}) + info["rootfs"] = meta.get("rootfs", {}) + info["initrd"] = meta.get("initrd", {}) + info["has_boot_params"] = "boot-params.conf" in members + info["has_kernel_config"] = "kernel/config" in members + kernel_fmt = "vmlinux" if ( + info["kernel"].get("format") == "vmlinux" + or "kernel/vmlinux" in members + ) else "vmlinuz" + info["kernel_binary_present"] = ( + f"kernel/{kernel_fmt}" in members + ) + if "menu.toml" in members: + menu = _qcrows_parse_toml(_qcrows_read_member( + tf, members["menu.toml"], + ).decode("utf-8", errors="replace")) + info["menu"] = { + "label": menu.get("menu", {}).get("label"), + "category": menu.get("menu", {}).get("category"), + } + else: + info["menu"] = {} + except (tarfile.TarError, ValueError, OSError) as exc: + info["qcrows"] = False + info["members"] = 0 + info["error"] = _sanitize_output(str(exc), 200) + return info + + +def _qcrows_resolve(args: list[str]) -> Path | None: + """Resolve a user-supplied bundle filename safely under QCROWS_DIR. + + Filename validation + realpath containment — the same hardening + the qcrows-list path applies. Returns None (and the caller + reports the error) on any traversal / invalid name. + """ + if not args or not _validate_filename(args[0]): + return None + return _resolve_path_under_base(str(QCROWS_DIR / args[0]), QCROWS_DIR) + + # ── Subcommand: qcrows-list ──────────────────────────────────────── # -# QCrows kernel bundles are the kata kernel/module compilation -# surface; the listing reads the real filesystem. +# Format-aware per the cockpit-kata master spec: every archive in the +# bundle dir is opened in memory and its self-description surfaced. +# Legacy non-QCrows tarballs degrade to stat-only entries. def cmd_qcrows_list(_args: list[str]) -> list[dict[str, Any]]: - """List QCrows kernel bundles in /usr/share/sysdeck/kata/qcrows/. + """List QCrows images in /usr/share/sysdeck/kata/qcrows/. - Each entry: {filename, path, size_bytes, mtime}. - Returns [] if the directory doesn't exist (empty state, NOT mock). + Each entry: {filename, path, size_bytes, size_mb, mtime, qcrows, + format_version?, image?, kernel?, rootfs?, hypervisors?, menu?, + error?}. Returns [] if the directory doesn't exist (empty state, + NOT mock). """ if not QCROWS_DIR.is_dir(): return [] @@ -591,32 +804,227 @@ def cmd_qcrows_list(_args: list[str]) -> list[dict[str, Any]]: for entry in sorted(QCROWS_DIR.iterdir()): if not entry.is_file(): continue - if not entry.name.endswith((".qcrows", ".tar.gz", ".tgz")): + if not entry.name.endswith((".qcrows", ".qcrows.gz", ".tar.gz", ".tgz")): continue stat = entry.stat() - bundles.append({ + record: dict[str, Any] = { "filename": entry.name, "path": str(entry), "size_bytes": stat.st_size, "size_mb": round(stat.st_size / (1024 * 1024), 2), "mtime": stat.st_mtime, - }) + } + record.update(_qcrows_image_info(entry)) + bundles.append(record) except (PermissionError, OSError): pass return bundles +# ── Subcommand: qcrows-inspect ───────────────────────────────────── + + +def cmd_qcrows_inspect(args: list[str]) -> dict[str, Any]: + """Detailed view of one QCrows image in the bundle directory. + + Returns the qcrows-list record plus the full member listing + (name, size, mode) and build provenance. {error: ...} on an + invalid filename, traversal attempt, or unreadable archive. + """ + resolved = _qcrows_resolve(args) + if resolved is None or not resolved.is_file(): + return {"error": f"bundle not found under {QCROWS_DIR}: {args[0] if args else ''!r}"} + import tarfile + result = _qcrows_image_info(resolved) + result["filename"] = resolved.name + result["path"] = str(resolved) + try: + with tarfile.open(resolved, "r:*") as tf: + members = _qcrows_member_names(tf) + result["members_list"] = [ + {"name": name, "size": m.size, "mode": oct(m.mode)} + for name, m in sorted(members.items()) + ] + if "build.toml" in members: + build = _qcrows_parse_toml(_qcrows_read_member( + tf, members["build.toml"], + ).decode("utf-8", errors="replace")) + result["build"] = build.get("build", {}) + except (tarfile.TarError, ValueError, OSError) as exc: + result["error"] = _sanitize_output(str(exc), 200) + return result + + +# ── Subcommand: qcrows-verify ────────────────────────────────────── +# +# In-memory mirror of cockpit-kata's qcrows-verify: nothing is +# extracted to disk, no `file` subprocess is spawned (kernel magic is +# checked on bytes), and the hash walk streams members. + + +def cmd_qcrows_verify(args: list[str]) -> dict[str, Any]: + """Verify one QCrows image against the master spec's checks. + + Checks (mirroring qcrows-verify): + 1. required files (metadata.toml, menu.toml, hashes.sha256) + 2. rootfs present (rootfs.tar.*) + 3. kernel binary present + magic (bzImage/ELF) + 4. kernel/config present + required Kata options (warn only) + 5. initrd present (warn only) + 6. metadata format_version + hypervisors declared + 7. every hashes.sha256 entry matches the member bytes + + Returns {ok, passed, failed, warnings, checks: [{name, passed, + detail}]} or {error: ...} for bad filenames / unreadable archives. + """ + import hashlib + import tarfile + + resolved = _qcrows_resolve(args) + if resolved is None or not resolved.is_file(): + return {"error": f"bundle not found under {QCROWS_DIR}: {args[0] if args else ''!r}"} + + checks: list[dict[str, Any]] = [] + warnings: list[str] = [] + + def check(name: str, passed: bool, detail: str) -> None: + checks.append({"name": name, "passed": passed, "detail": detail}) + + try: + with tarfile.open(resolved, "r:*") as tf: + members = _qcrows_member_names(tf) + + # 1. required files + for req in _QCROWS_REQUIRED_FILES: + check(f"{req} present", req in members, + "found" if req in members else "missing (required)") + # 2. rootfs + rootfs = next( + (n for n in members if n.startswith("rootfs.tar")), None, + ) + check("rootfs found", rootfs is not None, + rootfs or "no rootfs.tar.* member") + # 3. kernel binary + magic + kernel_member = next( + (n for n in ("kernel/vmlinuz", "kernel/vmlinux") + if n in members), None, + ) + magic_kind = "unknown" + if kernel_member: + # bzImage magic "HdrS" sits at 0x202 — read past it. + blob = tf.extractfile(members[kernel_member]).read(0x206 + 4) + ok_magic, magic_kind = _qcrows_kernel_magic_ok(blob) + check("kernel binary format valid", ok_magic, + f"{kernel_member} ({magic_kind})") + else: + check("kernel binary found", False, + "kernel/vmlinuz|vmlinux missing (required in v0.2+)") + # 4. kernel config + Kata options (config presence is a hard + # check; option shortfalls are WARNINGS only — mirroring + # qcrows-verify, which still exits 0 on them) + if "kernel/config" in members: + check("kernel/config found", True, "kernel/config") + cfg_text = _qcrows_read_member( + tf, members["kernel/config"], + ).decode("utf-8", errors="replace") + missing = [ + opt for opt in QCROWS_REQUIRED_KATA_OPTS + if f"{opt}=y" not in cfg_text + ] + if missing: + warnings.append( + "required Kata options missing: " + ", ".join(missing), + ) + else: + check("kernel/config found", False, + "kernel/config missing (required in v0.2+)") + # 5. initrd (warn) + has_initrd = any( + n in members for n in ( + "initrd.img", "initrd.cpio.gz", "initrd.cpio.lz4", + "initrd.cpio.xz", "initrd.cramfs", + ) + ) + if not has_initrd: + warnings.append( + "no initrd found (one of initrd/cramfs is recommended)", + ) + # 6. metadata fields + if "metadata.toml" in members: + meta = _qcrows_parse_toml(_qcrows_read_member( + tf, members["metadata.toml"], + ).decode("utf-8", errors="replace")) + fmt_ver = meta.get("qcrows", {}).get("format_version") + check("metadata format_version", fmt_ver is not None, + str(fmt_ver or "missing")) + hypers = meta.get("image", {}).get( + "compatibility", {}, + ).get("hypervisors", []) + check("hypervisor compatibility declared", bool(hypers), + ", ".join(map(str, hypers)) or "not declared") + # 7. hash walk (sha256sum -c semantics, in memory) + if "hashes.sha256" in members: + hash_text = _qcrows_read_member( + tf, members["hashes.sha256"], + ).decode("utf-8", errors="replace") + passed_n = 0 + failed: list[str] = [] + for line in hash_text.splitlines(): + line = line.strip() + if not line or line.startswith("#"): + continue + m = re.match(r"^([0-9a-f]{64})[ *]{2}(.+)$", line) + if not m: + failed.append(f"unparseable line: {line[:60]}") + continue + expect, rel = m.group(1), m.group(2).strip() + rel = rel[2:] if rel.startswith("./") else rel + if rel not in members: + failed.append(f"{rel}: no such member") + continue + h = hashlib.sha256() + fh = tf.extractfile(members[rel]) + for chunk in iter( + lambda: fh.read(1024 * 1024), b"", + ): + h.update(chunk) + if h.hexdigest() != expect: + failed.append(f"{rel}: checksum mismatch") + else: + passed_n += 1 + check("SHA-256 checksums", not failed, + f"{passed_n} verified" if not failed else + "; ".join(failed[:5])) + else: + check("SHA-256 checksums", False, + "hashes.sha256 missing — cannot verify integrity") + except (tarfile.TarError, ValueError, OSError) as exc: + return {"error": _sanitize_output(str(exc), 200)} + + passed = sum(1 for c in checks if c["passed"]) + failed = len(checks) - passed + return { + "ok": failed == 0, + "passed": passed, + "failed": failed, + "warnings": warnings, + "checks": checks, + } + + # ── Dispatch table ───────────────────────────────────────────────── COMMANDS = { - "list": cmd_list, - "inspect": cmd_inspect, - "metrics": cmd_metrics, - "summary": cmd_summary, - "version": cmd_version, - "check": cmd_check, - "pxe-status": cmd_pxe_status, - "qcrows-list": cmd_qcrows_list, + "list": cmd_list, + "inspect": cmd_inspect, + "metrics": cmd_metrics, + "summary": cmd_summary, + "version": cmd_version, + "check": cmd_check, + "pxe-status": cmd_pxe_status, + "qcrows-list": cmd_qcrows_list, + "qcrows-inspect": cmd_qcrows_inspect, + "qcrows-verify": cmd_qcrows_verify, } diff --git a/bridge/modules/__pycache__/__init__.cpython-314.pyc b/bridge/modules/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf335779ac2e02e0fed41ce57df10a9443ebc902 GIT binary patch literal 374 zcmXv~O-lnY5Z%A2X2;#wY!Z@LbUpcZ#DCPQ7jFvv z17_Jemzg)b_jtV1!vmhgnan<)f8ze?!2huAvFRx9$s(a-!H$#B;O(0)+b~19f-|`E zswfd|ZP929eA-ZD{TSxxv2I~%3iQDmIH`zS7-v}_ZAcB$i1T|#%9>n5h1#KqAiZ)F zQh2Bk=1X|&t)*6I2%3Naq?IeDC=D)uG4NzPuWcZ(QJ!~Z0Se_&l5Wp|Dhvp99}MtS zMPgJyUX~uqEuE^Icyu#RH=2~w2v;}PK-TJz^1BgR?+H;@Da1#z=?YmN^|7+8aVCT^ hiiAjAyWYR(zZ1V3sa=7gEAMxQF}4}(v7sME_y@rvb0Po$ literal 0 HcmV?d00001 diff --git a/compat/compat-manifest.json b/compat/compat-manifest.json index 3f96f98..80b6311 100755 --- a/compat/compat-manifest.json +++ b/compat/compat-manifest.json @@ -1,6 +1,6 @@ { "_comment": "Compatibility Manifest — sysdeck v0.1.3", - "version": "0.4.5", + "version": "0.4.6", "suite_requires": { "cockpit": ">=239", "python": ">=3.9" }, "modules": { "containers": { diff --git a/packaging/PKGBUILD b/packaging/PKGBUILD index c0e224a..068cbc9 100755 --- a/packaging/PKGBUILD +++ b/packaging/PKGBUILD @@ -3,7 +3,7 @@ # Upstream: https://dcos.net pkgname=sysdeck -pkgver=0.4.5 +pkgver=0.4.6 pkgrel=1 pkgdesc="Unified operations surface for Linux infrastructure — the Cockpit plugin edition: 27 domain modules plus the Python bridge (the standalone web console ships in the master tarball)" arch=('any') diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 4b3ffe9..f172fdb 100755 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,15 @@ +sysdeck (0.4.6-1) unstable; urgency=medium + + * QCrows format-aware Kata bridge: qcrows-list parses metadata.toml + + menu.toml in memory; new qcrows-inspect / qcrows-verify subcommands + mirror cockpit-kata's master verification (kernel magic, config, + sha256 hash walk) without extracting to disk. Kata panel enriched + with image metadata + Verify/Inspect actions. + * integrity.score() returns None on PermissionError (root-only + /var/log/lynis.log no longer crashes unprivileged sessions). + + -- Jeremy Anderson Sun, 27 Sep 2026 01:13:57 +0000 + sysdeck (0.4.5-1) unstable; urgency=medium * PRODUCTION-HARDENING RELEASE — full MoE QA pass (web designers, diff --git a/packaging/setup.py b/packaging/setup.py index ebae114..8754e49 100755 --- a/packaging/setup.py +++ b/packaging/setup.py @@ -24,7 +24,7 @@ import shutil import subprocess from setuptools import setup -VERSION = "0.4.5" +VERSION = "0.4.6" PACKAGE = "sysdeck" # The repository root (setup.py lives in packaging/). diff --git a/packaging/sysdeck.spec b/packaging/sysdeck.spec index a532630..37ddd3d 100755 --- a/packaging/sysdeck.spec +++ b/packaging/sysdeck.spec @@ -7,7 +7,7 @@ # Debian/Ubuntu users: see packaging/debian/ Name: sysdeck -Version: 0.4.5 +Version: 0.4.6 Release: 1%{?dist} Summary: Unified operations surface for Linux infrastructure @@ -92,6 +92,16 @@ if [ $1 -eq 0 ]; then fi %changelog +* Sun Sep 27 2026 Jeremy Anderson - 0.4.6-1 +- v0.4.6: QCrows format-aware Kata bridge. qcrows-list now parses + metadata.toml + menu.toml from .qcrows archives in memory (image + name/version/arch, kernel version/format, hypervisors, menu label); + new qcrows-inspect + qcrows-verify subcommands mirror cockpit-kata's + master checks (required files, kernel magic, config + Kata options, + full sha256sum hash walk) with nothing extracted to disk. Kata panel + shows the metadata and gains per-image Verify/Inspect actions. + integrity.score() degrades to None on PermissionError (root-only + lynis.log no longer crashes unprivileged sessions). * Thu Sep 17 2026 Jeremy Anderson - 0.4.5-1 - v0.4.5 production-hardening release: full MoE QA pass. Makefile web-dev splice fixed; reproducible dist + clean-tree release gate; diff --git a/plugins/sysdeck-kata/kata.js b/plugins/sysdeck-kata/kata.js index c158d0e..702b063 100644 --- a/plugins/sysdeck-kata/kata.js +++ b/plugins/sysdeck-kata/kata.js @@ -272,42 +272,80 @@ function renderQcrowsCard(qcrows) { return `
-

QCrows Kernel Bundles (0)

+

QCrows VM Container Images (0)

- No QCrows kernel bundles found at + No QCrows images found at /usr/share/sysdeck/kata/qcrows/. This is the real empty state — not mock data.

- QCrows bundles are pre-built kata kernel + initrd + - rootfs images. Build one with: + QCrows (.qcrows, spec v0.2) is the self-describing + VM container image format — rootfs + initrd + kernel + + Cockpit menu metadata in one verifiable archive. + Build one with: +

+
qcrows-pack --rootfs rootfs.tar.gz --kernel vmlinuz --kernel-config .config \\
+  --name alpine-3.20-kata -o alpine-3.20-kata.qcrows
+

+ ai-lsc can export the active tool stack directly as a + .qcrows image (Container Stacks → Export → QCrows).

-
qcrows-export --kernel /path/to/vmlinuz --initrd /path/to/initrd \\
-  --rootfs /path/to/rootfs --name alpine-3.20-kata
`; } const totalSize = qcrows.reduce((sum, q) => sum + (q.size_bytes || 0), 0); const totalMb = (totalSize / (1024 * 1024)).toFixed(1); - const rows = qcrows.map((q) => ` - - ${escapeHtml(q.filename)} - ${q.size_mb} MB - ${new Date(q.mtime * 1000).toISOString().split('T')[0]} - - `).join(''); + const rows = qcrows.map((q) => { + // Format-aware rows (spec v0.2 metadata); legacy non-QCrows + // tarballs degrade to the stat-only columns. + const isQcrows = q.qcrows === true; + const image = q.image || {}; + const kernel = q.kernel || {}; + const displayName = isQcrows + ? `${image.name || '?'} ${image.version || ''}`.trim() + : '(not a QCrows archive)'; + const kernelCell = isQcrows + ? `${kernel.version || '?'} · ${kernel.format || '?'}${q.kernel_binary_present === false ? ' ⚠ missing' : ''}` + : '—'; + const hyperCell = isQcrows && Array.isArray(q.hypervisors) + ? q.hypervisors.join(', ') + : '—'; + return ` + + +
${escapeHtml(displayName)}
+
${escapeHtml(q.filename)}
+ + ${q.size_mb} MB + ${escapeHtml(kernelCell)} + ${escapeHtml(image.arch || '—')} + ${escapeHtml(hyperCell)} + ${new Date(q.mtime * 1000).toISOString().split('T')[0]} + + + + + + `; + }).join(''); return `
-

QCrows Kernel Bundles (${qcrows.length}, ${totalMb} MB total)

+

QCrows VM Container Images (${qcrows.length}, ${totalMb} MB total)

- + ${rows}
FilenameSizeModified
ImageSizeKernelArchHypervisorsModifiedActions
+

+ Verify runs the cockpit-kata master checks in memory (hashes, + kernel magic + config, metadata); Inspect shows the full + archive detail. Non-QCrows tarballs in the directory are + listed but not verifiable. +

`; } @@ -393,6 +431,46 @@ function wireEvents(panel, { bridge, EventBus }) { const card = panel.querySelector('#kata-metrics-card'); if (card) card.style.display = 'none'; }); + + // QCrows image actions — Verify (in-memory master checks) and + // Inspect (full archive detail). Output goes to the shared + // operation-output card; every bridge value is rendered as text. + panel.querySelectorAll('.btn-qcrows-verify').forEach((btn) => { + btn.addEventListener('click', async () => { + const filename = btn.dataset.filename; + output(`Verifying ${filename}…`); + try { + const r = await bridge.kata.qcrowsVerify(filename); + if (r && r.error) { + output(`Verify error: ${r.error}`, true); + return; + } + const lines = r.checks.map((c) => + ` ${c.passed ? 'PASS' : 'FAIL'}: ${c.name} — ${c.detail}`, + ); + const warns = (r.warnings || []).map((w) => ` WARN: ${w}`); + output([ + `${r.ok ? '✔ VERIFIED' : '✘ FAILED'} — ${filename} (${r.passed} passed, ${r.failed} failed)`, + ...lines, + ...warns, + ].join('\n'), !r.ok); + } catch (err) { + output(`Verify error: ${err.message || err}`, true); + } + }); + }); + panel.querySelectorAll('.btn-qcrows-inspect').forEach((btn) => { + btn.addEventListener('click', async () => { + const filename = btn.dataset.filename; + output(`Inspecting ${filename}…`); + try { + const r = await bridge.kata.qcrowsInspect(filename); + output(JSON.stringify(r, null, 2), Boolean(r && r.error)); + } catch (err) { + output(`Inspect error: ${err.message || err}`, true); + } + }); + }); } // ── Utilities ─────────────────────────────────────────────────────── diff --git a/shared/bridge.js b/shared/bridge.js index 8d3e7ac..fb587ac 100644 --- a/shared/bridge.js +++ b/shared/bridge.js @@ -506,7 +506,12 @@ export const bridge = { // /metrics?sandbox= + filesystem /run/vc/sbs/, /run/kata/ // - summary/version/check → kata-runtime version/env --json/check // - pxeStatus → systemctl is-active dnsmasq + real /srv/tftp probes - // - qcrowsList → filesystem /usr/share/sysdeck/kata/qcrows/ + // - qcrowsList → filesystem /usr/share/sysdeck/kata/qcrows/ — since + // the cockpit-kata master spec v0.2 this is FORMAT-AWARE: each + // archive is parsed in memory (metadata.toml + menu.toml), so + // the panel shows image name/version/arch/kernel/hypervisors. + // - qcrowsInspect/qcrowsVerify → single-image detail + in-memory + // verification mirroring cockpit-kata's qcrows-verify. // Read-only queries do NOT pass { superuser: 'try' }. kata: { list: () => bridgeCmd("kata", ["list"]), @@ -516,7 +521,9 @@ export const bridge = { version: () => bridgeCmd("kata", ["version"]), check: () => bridgeCmd("kata", ["check"]), pxeStatus: () => bridgeCmd("kata", ["pxe-status"]), - qcrowsList: () => bridgeCmd("kata", ["qcrows-list"]), + qcrowsList: () => bridgeCmd("kata", ["qcrows-list"]), + qcrowsInspect: (filename) => bridgeCmd("kata", ["qcrows-inspect", filename]), + qcrowsVerify: (filename) => bridgeCmd("kata", ["qcrows-verify", filename]), }, // v0.0.39: Monitoring module — shared tabbed Prometheus + Grafana panel. diff --git a/tests/__pycache__/__init__.cpython-314.pyc b/tests/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e4576fe6a92e4240cf3d3d5b1dea4113119c5b8 GIT binary patch literal 171 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 literal 0 HcmV?d00001 diff --git a/tests/test_bridge_parsers.py b/tests/test_bridge_parsers.py index 70e6ee6..70b67c8 100755 --- a/tests/test_bridge_parsers.py +++ b/tests/test_bridge_parsers.py @@ -834,10 +834,273 @@ class TestKataBridgeProduction(unittest.TestCase): def test_kata_bridge_dispatch_table_has_all_subcommands(self): expected = {"list", "inspect", "metrics", "summary", "version", - "check", "pxe-status", "qcrows-list"} + "check", "pxe-status", "qcrows-list", + "qcrows-inspect", "qcrows-verify"} self.assertEqual(set(self.kata.COMMANDS.keys()), expected) +# ── QCrows format-aware bridge tests (cockpit-kata master spec) ──── +# +# The bridge must be a real QCrows CONSUMER: parse metadata.toml / +# menu.toml from archives in memory, mirror the master qcrows-verify +# checks, and reject tampered bundles. These tests build synthetic +# .qcrows archives with the same layout qcrows-pack produces. + + +def _build_qcrows(dest, *, kernel_fmt="vmlinuz", tamper_rootfs=False, + omit_metadata=False, kata_opts=True): + """Write a synthetic spec-v0.2 .qcrows archive at *dest*. + + Mirrors qcrows-pack's layout: ./-prefixed members, metadata.toml, + menu.toml, hashes.sha256 (sha256sum format), rootfs.tar.gz, kernel/ + binary+config, boot-params.conf. The kernel blob carries a real + bzImage magic ("HdrS" @ 0x202). Returns the archive path. + """ + import hashlib + import io + import tarfile + + kernel = bytearray(b"\x00" * 0x400) + kernel[0x202:0x206] = b"HdrS" + kernel[0x206:0x208] = (1).to_bytes(2, "little") # boot sector setup + config_lines = ["# synthetic config"] + if kata_opts: + config_lines += [ + "CONFIG_VSOCKETS=y", "CONFIG_VIRTIO=y", + "CONFIG_VIRTIO_PCI=y", "CONFIG_DEVTMPFS=y", + "CONFIG_DEVTMPFS_MOUNT=y", + ] + config = ("\n".join(config_lines) + "\n").encode() + + metadata = f"""[ qcrows ] +format_version = "0.2.0" + +[ image ] +name = "synthetic-test" +version = "1.0.0" +description = "unit-test image" +arch = "x86_64" +os = "linux" +created_at = "2026-09-26T00:00:00Z" + +[ image.compatibility ] +hypervisors = [ "qemu", "cloud-hypervisor" ] +kata_runtime_min = "2.5" + +[ kernel ] +version = "6.6.32" +included = true +path = "kernel/{kernel_fmt}" +format = "{kernel_fmt}" +config_path = "kernel/config" +size_mb = 0 + +[ initrd ] +included = false +type = "" +path = "" + +[ rootfs ] +type = "tar-gzip" +path = "rootfs.tar.gz" +size_mb = 1 + +[ boot_params ] +included = true +path = "boot-params.conf" +""".encode() + menu = b"""[ menu ] +label = "Synthetic Test" +category = "custom" + +[ menu.actions ] +import = true +""" + rootfs_buf = io.BytesIO() + with tarfile.open(fileobj=rootfs_buf, mode="w:gz") as rtf: + info = tarfile.TarInfo("opt/ai-lsc/stack.json") + payload = b'{"tools": ["ollama"]}' + info.size = len(payload) + rtf.addfile(info, io.BytesIO(payload)) + rootfs = rootfs_buf.getvalue() + # Tampering swaps the archived bytes AFTER the hashes are computed + # from the originals — that's what "integrity violation" means: + # hashes.sha256 no longer describes the shipped payload. + archived_rootfs = ( + rootfs[:-1] + bytes([rootfs[-1] ^ 0xFF]) + if tamper_rootfs else rootfs + ) + + members = [ + ("rootfs.tar.gz", rootfs), + ("kernel/" + kernel_fmt, bytes(kernel)), + ("kernel/config", config), + ("boot-params.conf", b"console=ttyS0\n"), + ("menu.toml", menu), + ] + if not omit_metadata: + members.append(("metadata.toml", metadata)) + + hash_lines = [] + for name, data in sorted(members): + hash_lines.append( + f"{hashlib.sha256(data).hexdigest()} ./{name}", + ) + members.append(("hashes.sha256", ("\n".join(hash_lines) + "\n").encode())) + # Swap in the tampered payload for the archive write only. + members = [ + (name, archived_rootfs if name == "rootfs.tar.gz" else data) + for name, data in members + ] + + with tarfile.open(dest, "w:gz") as tf: + for name, data in sorted(members, key=lambda x: x[0]): + info = tarfile.TarInfo("./" + name) + info.size = len(data) + tf.addfile(info, io.BytesIO(data)) + return dest + + +class TestQcrowsFormatBridge(unittest.TestCase): + """Verify the format-aware QCrows consumer in bridge/kata.py.""" + + def setUp(self): + import kata + self.kata = kata + self._tmp = tempfile.TemporaryDirectory() + self.addCleanup(self._tmp.cleanup) + self.qcdir = Path(self._tmp.name) + self._orig_dir = kata.QCROWS_DIR + kata.QCROWS_DIR = self.qcdir + self.addCleanup(setattr, kata, "QCROWS_DIR", self._orig_dir) + + def test_list_parses_metadata_and_menu(self): + _build_qcrows(self.qcdir / "test.qcrows") + result = self.kata.cmd_qcrows_list([]) + self.assertEqual(len(result), 1) + entry = result[0] + self.assertTrue(entry["qcrows"]) + self.assertEqual(entry["format_version"], "0.2.0") + self.assertEqual(entry["image"]["name"], "synthetic-test") + self.assertEqual(entry["kernel"]["version"], "6.6.32") + self.assertEqual(entry["hypervisors"], ["qemu", "cloud-hypervisor"]) + self.assertEqual(entry["menu"]["label"], "Synthetic Test") + self.assertTrue(entry["kernel_binary_present"]) + self.assertTrue(entry["has_kernel_config"]) + + def test_list_degrades_legacy_tarball_gracefully(self): + import tarfile + with tarfile.open(self.qcdir / "legacy.tgz", "w:gz") as tf: + info = tarfile.TarInfo("readme") + info.size = 3 + tf.addfile(info, __import__("io").BytesIO(b"abc")) + entry = self.kata.cmd_qcrows_list([])[0] + self.assertFalse(entry["qcrows"]) + self.assertIn("error", entry) + + def test_verify_passes_on_valid_image(self): + _build_qcrows(self.qcdir / "good.qcrows") + v = self.kata.cmd_qcrows_verify(["good.qcrows"]) + self.assertTrue(v["ok"], v) + self.assertEqual(v["failed"], 0) + names = {c["name"] for c in v["checks"]} + self.assertIn("kernel binary format valid", names) + self.assertIn("SHA-256 checksums", names) + + def test_verify_detects_tampered_payload(self): + _build_qcrows(self.qcdir / "bad.qcrows", tamper_rootfs=True) + v = self.kata.cmd_qcrows_verify(["bad.qcrows"]) + self.assertFalse(v["ok"]) + failed = [c["name"] for c in v["checks"] if not c["passed"]] + self.assertIn("SHA-256 checksums", failed) + + def test_verify_fails_when_kernel_missing(self): + # v0.2 requires a kernel — a metadata-only archive must fail. + import hashlib + import io + import tarfile + metadata = b'[ qcrows ]\nformat_version = "0.2.0"\n' + members = [("metadata.toml", metadata), ("menu.toml", b"[ menu ]\n")] + hash_lines = [ + f"{hashlib.sha256(d).hexdigest()} ./{n}" + for n, d in members + ] + members.append(( + "hashes.sha256", + ("\n".join(hash_lines) + "\n").encode(), + )) + with tarfile.open(self.qcdir / "nokernel.qcrows", "w:gz") as tf: + for name, data in members: + info = tarfile.TarInfo("./" + name) + info.size = len(data) + tf.addfile(info, io.BytesIO(data)) + v = self.kata.cmd_qcrows_verify(["nokernel.qcrows"]) + self.assertFalse(v["ok"]) + failed = [c["name"] for c in v["checks"] if not c["passed"]] + self.assertIn("kernel binary found", failed) + + def test_verify_warns_on_missing_kata_options_but_passes(self): + # Master semantics: option shortfalls are WARNINGS, not failures. + _build_qcrows(self.qcdir / "noopts.qcrows", kata_opts=False) + v = self.kata.cmd_qcrows_verify(["noopts.qcrows"]) + self.assertTrue(v["ok"], v) + self.assertTrue(any("Kata options" in w for w in v["warnings"])) + + def test_inspect_returns_member_listing(self): + _build_qcrows(self.qcdir / "img.qcrows") + r = self.kata.cmd_qcrows_inspect(["img.qcrows"]) + self.assertTrue(r["qcrows"]) + names = {m["name"] for m in r["members_list"]} + self.assertIn("kernel/vmlinuz", names) + self.assertIn("rootfs.tar.gz", names) + + def test_verify_rejects_traversal_and_bad_names(self): + for bad in ["../evil", "/etc/passwd", "a" * 65, "x;rm -rf"]: + self.assertIn("error", self.kata.cmd_qcrows_verify([bad])) + self.assertIn("error", self.kata.cmd_qcrows_verify([])) + self.assertIn( + "error", self.kata.cmd_qcrows_inspect(["../evil"]), + ) + self.assertIn( + "error", self.kata.cmd_qcrows_verify(["missing.qcrows"]), + ) + + def test_toml_parser_is_section_aware(self): + text = """[ kernel ] +version = "6.6.32" +included = true +size_mb = 3 + +[ rootfs ] +type = "tar-gzip" +size_mb = 42 + +[ image.compatibility ] +hypervisors = [ "qemu", "firecracker" ] +""" + parsed = self.kata._qcrows_parse_toml(text) + self.assertEqual(parsed["kernel"]["version"], "6.6.32") + self.assertIs(parsed["kernel"]["included"], True) + self.assertEqual(parsed["kernel"]["size_mb"], 3) + self.assertEqual(parsed["rootfs"]["size_mb"], 42) + self.assertEqual( + parsed["image"]["compatibility"]["hypervisors"], + ["qemu", "firecracker"], + ) + + def test_kernel_magic_classification(self): + bz = bytearray(b"\x00" * 0x206) + bz[0x202:0x206] = b"HdrS" + ok, kind = self.kata._qcrows_kernel_magic_ok(bytes(bz)) + self.assertTrue(ok) + self.assertEqual(kind, "bzimage") + ok, kind = self.kata._qcrows_kernel_magic_ok(b"\x7fELF" + b"\x00" * 8) + self.assertTrue(ok) + self.assertEqual(kind, "elf") + ok, kind = self.kata._qcrows_kernel_magic_ok(b"not a kernel") + self.assertFalse(ok) + + # ── v0.0.39 Monitoring module tests (Prometheus + Grafana) ────────── @@ -1914,8 +2177,15 @@ class TestFirewallV047ManifestsAndMetainfo(unittest.TestCase): ) def test_version_sync_all_surfaces_report_020(self): - # Every release surface must report v0.4.5 (production hardening). - v = "0.4.5" + # Every release surface must report the Makefile's VERSION — + # the single source of truth. (v0.4.6: the hardcoded literal + # was replaced with the Makefile value so every future bump + # keeps this test green when the surfaces move together.) + import re as _re + makefile = (self.root / "Makefile").read_text() + m = _re.search(r"^VERSION\s*:=\s*(\S+)", makefile, _re.M) + self.assertIsNotNone(m, "Makefile VERSION not found") + v = m.group(1) files_to_check = [ "Makefile", "bridge/__init__.py", diff --git a/worklog.md b/worklog.md index 0795251..32bc1a4 100755 --- a/worklog.md +++ b/worklog.md @@ -1,5 +1,32 @@ # SysDeck - Work Log +--- +Task ID: 48 +Agent: Main Orchestrator (v0.4.6 QCrows format-aware Kata bridge) +Task: Per user directive: "lets now update SysDeck to be sure it also uses qcrows the same way" — align SysDeck with the real QCrows VM container image format (cockpit-kata master implementation, qcrows-spec.md v0.2.0), the same format AI-LSC now exports. The bridge must be a real format consumer, not a filename lister. + +Work Log: +- FORMAT-AWARE qcrows-list (bridge/kata.py): every .qcrows / .qcrows.gz / .tar.gz / .tgz in /usr/share/sysdeck/kata/qcrows/ is opened in memory (tarfile r:* — nothing extracted to disk, nothing executable materialized) and its metadata.toml + menu.toml parsed by a new section-aware mini-TOML parser (_qcrows_parse_toml — [ section ] headers, dotted sections, strings/bools/ints/arrays; being section-aware deliberately fixes the first-match grepping quirk in cockpit-kata's own qcrows-inspect, which reports kernel size_mb on the rootfs row). Each list entry now carries qcrows, format_version, image{name,version,description,arch,created_at}, kernel{version,format,path,...}, rootfs, initrd, hypervisors, menu{label,category}, kernel_binary_present, has_kernel_config, has_boot_params, members. Legacy non-QCrows tarballs degrade gracefully to stat-only entries (qcrows:false + error note). Added .qcrows.gz to the extension filter. +- NEW SUBCOMMAND qcrows-inspect : single-image detail — full metadata record plus the sorted member listing (name/size/mode) and build.toml provenance. +- NEW SUBCOMMAND qcrows-verify : in-memory verification mirroring cockpit-kata's master qcrows-verify checks: (1) required files metadata.toml/menu.toml/hashes.sha256, (2) rootfs.tar.* present, (3) kernel binary present + magic classification (bzImage "HdrS" @0x202 / ELF \x7fELF — the no-subprocess equivalent of the master's `file | grep (ELF|Linux.*boot)`), (4) kernel/config present (hard check) + the five required Kata options CONFIG_VSOCKETS/VIRTIO/VIRTIO_PCI/DEVTMPFS/DEVTMPFS_MOUNT (WARNINGS only — matches master exit-code semantics where option shortfalls never fail), (5) initrd presence (warn), (6) metadata format_version + hypervisors declared, (7) full sha256sum -c style hash walk streaming members in 1 MiB chunks. Returns {ok, passed, failed, warnings, checks[]}. +- SECURITY POSTURE (unchanged gates, new surface): filenames validated with _validate_filename; paths resolved with _resolve_path_under_base realpath containment under QCROWS_DIR; tar-bomb guards (10,000 member cap, 1 MiB cap on parsed text members); output sanitized via _sanitize_output; traversal/oversize/garbage names rejected with {error: ...} (tested). +- BRIDGE CLIENT (shared/bridge.js): kata surface gains qcrowsInspect(filename) + qcrowsVerify(filename) proxying to the new subcommands; header comment updated to document format-aware listing. +- KATA PANEL (plugins/sysdeck-kata/kata.js): QCrows card renamed to "QCrows VM Container Images" with enriched rows — image name+version (filename as secondary line), kernel version · format (+ missing-binary marker), arch, hypervisors, size, modified — plus per-row Verify and Inspect buttons. Verify renders a PASS/FAIL/WARN check list (green/red via the existing output card, textContent only — no innerHTML on bridge data); Inspect dumps the full JSON detail. Empty-state text updated to the qcrows-pack invocation and notes AI-LSC can export the stack directly as .qcrows. Legacy rows show "(not a QCrows archive)" and disable Verify. +- VERSION-SYNC TEST HARDENING: test_version_sync_all_surfaces_report_020 hardcoded the 0.4.5 literal and failed on every bump; it now derives the expected version from the Makefile's own VERSION line (single source of truth), so it stays green whenever the surfaces move together and red when they drift. +- TESTS (tests/test_bridge_parsers.py): dispatch-set assertion updated for the two new subcommands; new TestQcrowsFormatBridge class (11 tests) with a _build_qcrows() synthetic archive builder that mirrors qcrows-pack's layout (./-prefixed members, sha256sum-format hashes, real bzImage magic): list parses metadata/menu; legacy tarball degrades; verify passes on valid image; detects tampered payload (hashes computed BEFORE the byte-flip — that is what an integrity violation means); fails when kernel missing; warns-but-passes on missing Kata options; inspect returns member listing; traversal/bad-name/missing-file rejection; TOML parser section-awareness; kernel magic classification (bzimage/elf/unknown — boundary fixed to len>=0x206). +- BUG FIX (adjacent, found by the suite in this environment): bridge/integrity.py score() caught only FileNotFoundError; on hosts where lynis ran as root, /var/log/lynis.log is root-only (-rw-r-----) and unprivileged sessions crashed with PermissionError. Now catches OSError and degrades to None (the honest "no score for us" state). +- CROSS-PRODUCER VALIDATION: bridge exercised against real images from BOTH producers — an AI-LSC stack export (.qcrows) and a bundle from cockpit-kata's own qcrows-pack (.qcrows.gz). Both parse (image name/kernel/hypervisors/menu correct) and both verify ok with identical warning sets; a tampered copy fails exactly the SHA-256 check. +- VERSION SYNC: bumped 0.4.5 → 0.4.6 across all 9 release surfaces: Makefile VERSION, bridge/__init__.py __version__, packaging/setup.py VERSION, packaging/PKGBUILD pkgver, packaging/sysdeck.spec Version + prepended %changelog entry, packaging/debian/changelog prepended entry, compat/compat-manifest.json version, README.md badge + Version line, BLOG.md prepended v0.4.6 section. + +GUARDS: +- make check: all build-time guards pass — manifest consistency, metainfo consistency, Makefile tab indentation, cockpit import patterns, bridge invocation patterns, bridge.js↔Python subcommand cross-check (the two new qcrows calls verified against kata.py COMMANDS), version sync (all surfaces 0.4.6). +- All 277 unit tests pass (266 prior + 11 new QCrows tests). +- bridge/kata.py + bridge/integrity.py pass py_compile; kata.js + bridge.js pass node --check (ESM). +- CLI smoke: `python3 bridge/kata.py qcrows-list` returns [] on hosts without /usr/share/sysdeck/kata/qcrows (real empty state, exit 0). + +Stage Summary: +- v0.4.6 makes SysDeck a first-class QCrows consumer with the same format understanding as the producer side: format-aware listing (metadata.toml + menu.toml parsed in memory), single-image inspection, and master-mirroring verification (kernel magic, config, full hash walk) — all under the bridge's existing security gates, nothing extracted to disk. The Kata panel surfaces the metadata with Verify/Inspect actions. Verified against real images from both producers (ai-lsc exporter + cockpit-kata qcrows-pack) plus synthetic tamper/kernel-missing/security cases in the suite. Adjacent robustness fix: integrity.score() degrades to None on PermissionError. All 9 release surfaces report 0.4.6; all make-check guards pass; 277/277 tests pass. + --- Task ID: 47 Agent: Main Orchestrator (v0.0.47 logic-flaw fixes)