v1.2.8 tagged cleanly but CI failed compiling mhrv-rs-ui with:
error[E0063]: missing field `youtube_via_relay` in initializer of
`mhrv_rs::config::Config`
When I added the youtube_via_relay field to the main Config struct
in 09f1f5f, I missed the struct-literal construction in src/bin/ui.rs
(FormState::save_to_config) and the ConfigWire serializer.
Fixed here:
- Added youtube_via_relay field to FormState (line 214), read path
(line 291), default path (line 316), and the save path (line 451)
- Added youtube_via_relay field to ConfigWire (line 493) with
skip_serializing_if on false, plus its From impl (line 544)
UI still doesn't expose a checkbox for the toggle — it's config-only
for now, same treatment as normalize_x_graphql. A future PR can add
the checkbox to the Advanced pane.
v1.2.8 tag exists but has no GitHub Release (release job skipped
on failure); v1.2.9 is the clean cut. Same payload as v1.2.8 plus
this fix.
3.8 KiB
• رفع نشت IP واقعی (issue #104): فیلتر هدرهای forwarded در مسیر Apps Script گسترش یافت تا همهٔ هدرهای هویتافشاگر (X-Forwarded-For, X-Real-IP, Forwarded, Via, CF-Connecting-IP, True-Client-IP, Fastly-Client-IP، و ۱۰ مورد دیگر) را قبل از ارسال به Apps Script حذف کند. اگر کاربر پشت یک پروکسی محلی (xray/v2rayNG) یا extension مرورگر باشد که این هدرها را اضافه میکند، IP واقعی از طریق مسیر relay به سرور مقصد نشت نمیکند
• گزینهٔ youtube_via_relay (issue #102): پورت شده از Python بالادست. وقتی فعال شود، ترافیک یوتیوب از مسیر SNI-rewrite خارج میشود و از طریق Apps Script میرود تا فیلتر SafeSearch-on-SNI گوگل دور زده شود. ترید-آف: User-Agent ثابت میشود روی Google-Apps-Script و سهمیهٔ روزانهٔ شما مصرف میشود. پیشفرض خاموش
• رفع دستور scan-sni (PR #97): پاسخهای dns.google با Transfer-Encoding: chunked برمیگردند و قبل از JSON decode باید unchunk شوند. بدون این پچ هیچ دامنهای کشف نمیشد
• اعتبارسنجی TLS در scan-sni (PR #98): درخواست DoH به dns.google از NoVerify به webpki roots سوئیچ شد تا یک on-path MITM نتواند PTRهای جعلی برگرداند و pool SNI را مسموم کند
• رفع کامپایل UI برای youtube_via_relay: اضافه کردن فیلد به FormState و ConfigWire در src/bin/ui.rs که v1.2.8 در CI سقوط کرده بود چون در mhrv-rs-ui فراموش شده بود
• Real-IP leak fix (issue #104): extended the forwarded-headers filter in the Apps Script relay path to strip every identity-revealing header (X-Forwarded-For, X-Real-IP, Forwarded, Via, CF-Connecting-IP, True-Client-IP, Fastly-Client-IP and 10 more) before we ship the request to Apps Script. If a user sits behind a local proxy (xray/v2rayNG) or a browser extension that inserts any of these, the real IP no longer leaks through the relay path to the origin
• youtube_via_relay config toggle (issue #102): ported from upstream Python. When enabled, YouTube traffic opts out of the SNI-rewrite tunnel and goes through Apps Script instead, bypassing Google's SafeSearch-on-SNI filter that sometimes marks normal videos as "restricted." Trade-off: adds the fixed Google-Apps-Script User-Agent and counts YouTube against your daily quota. Off by default
• scan-sni chunked-DoH fix (PR #97): dns.google replies with Transfer-Encoding: chunked; the raw payload was going to serde_json with chunk framing still embedded, so every PTR parse failed and scan-sni discovered nothing. Proper HTTP-body parsing now (chunked + Content-Length), plus unit tests
• scan-sni TLS verification (PR #98): the DoH client to dns.google was using NoVerify — an on-path MITM could forge PTR answers and poison the discovered SNI pool. Switched to the normal webpki root store; the rest of the scan flow is unchanged
• UI build fix for youtube_via_relay: the new config field was added to Config but not propagated to FormState / ConfigWire in src/bin/ui.rs, so v1.2.8's CI failed compiling mhrv-rs-ui with missing field youtube_via_relay in initializer of Config. v1.2.8 tag exists but no Release assets — v1.2.9 is the clean cut.