• v26.2.25.2 9e86e81283

    v26.2.25.2 Stable

    kerem released this 2026-02-25 21:14:21 +03:00 | 130 commits to main since this release

    📅 Originally published on GitHub: Wed, 25 Feb 2026 18:15:41 GMT
    🏷️ Git tag created: Wed, 25 Feb 2026 18:14:21 GMT

    🚀 v26.2.25.2 — WAN IP Göstergesi & CGNAT Tespiti

    Sürüm Tipi: Minor Feature
    Odak: Banner ve Menu 14'te WAN IP adresi gösterimi, CGNAT/NAT/Public renk ayrımı

    Yeni Özellikler

    • Ana menü banner'ında WAN IP eklendi:
      • IPv4 adresi WAN satırına | IP [CGNAT] formatında eklendi
      • IPv6 adresi de varsa | 2a02::1 olarak eklendi
      • CGNAT → sarı [CGNAT], Double NAT → turuncu [NAT], Public → yeşil (etiketsiz)
    • Menu 14 — WAN IP satırları eklendi (Ag & DNS bölümü):
      • WAN IPv4 adresi — IP + renk etiketi (CGNAT / NAT / Public)
      • WAN IPv6 adresi — varsa gösterilir
    • IP sınıflandırma fonksiyonu eklendi (zkm_classify_ip):
      • 100.64.0.0/10 → CGNAT
      • 10.x, 192.168.x, 172.16-31.x → Private/NAT
      • Diğer → Public

    ⚙️ Notlar

    • IP tespiti ip addr show ile yapılır — dış sorgu yok, banner yavaşlamaz
    • Alt-shell renk uyumu için \033[...] hardcoded escape kullanıldı (CLAUDE.md kuralı)
    • IPv6 sadece link-local olmayan (fe80:: hariç) adresler gösterilir

    🚀 v26.2.25.2 — WAN IP Display & CGNAT Detection

    Release Type: Minor Feature
    Focus: WAN IP address display in banner and Menu 14, CGNAT/NAT/Public color distinction

    New Features

    • Main menu banner — WAN IP added:
      • IPv4 address appended to WAN line as | IP [CGNAT]
      • IPv6 address shown if available as | 2a02::1
      • CGNAT → yellow [CGNAT], Double NAT → orange [NAT], Public → green (no label)
    • Menu 14 — WAN IP lines added (Network & DNS section):
      • WAN IPv4 address — IP + color label (CGNAT / NAT / Public)
      • WAN IPv6 address — shown if present
    • IP classification function added (zkm_classify_ip):
      • 100.64.0.0/10 → CGNAT
      • 10.x, 192.168.x, 172.16-31.x → Private/NAT
      • Other → Public

    ⚙️ Notes

    • IP detection uses ip addr show — no external queries, banner stays fast
    • Hardcoded \033[...] escape codes used for subshell color compatibility (per CLAUDE.md)
    • IPv6 shows only non-link-local addresses (fe80:: excluded)
    Downloads
  • v26.2.25.1 8c865e35db

    v26.2.25.1 Stable

    kerem released this 2026-02-25 15:35:24 +03:00 | 131 commits to main since this release

    📅 Originally published on GitHub: Wed, 25 Feb 2026 12:36:16 GMT
    🏷️ Git tag created: Wed, 25 Feb 2026 12:35:24 GMT

    🚀 v26.2.25.1 — Bildirim İkonları & Menu 14 İyileştirmeleri

    Sürüm Tipi: Minor Feature
    Odak: Telegram bildirim ikonları tamamlandı, Menu 14 sağlık skoru renklendi, SHA256 durum satırları eklendi

    Yeni Özellikler

    • Menu 14 — SHA256 dosya bütünlüğü satırları eklendi (Servisler bölümü):
      • KZM dosya butunlugu (SHA256) — Menu 10 sonucu state dosyasından okur; PASS / WARN / INFO
      • Zapret surum durumu — Menu 6 sonucu state dosyasından okur; PASS / WARN / INFO
      • State dosyası yoksa hangi menüye gidileceğini belirtir
    • Menu 14 — Sağlık skoru satırı renklendi ve sadeleştirildi:
      • Skor ve [MUKEMMEL / COK IYI / IYI / ORTA / KOTU] etiketi skora göre yeşil / turuncu / kırmızı
      • (16/17 OK) sayacı da aynı renkle vurgulandı
      • Gereksiz tekrar eden rating_txt kaldırıldı

    İyileştirmeler

    • Telegram — KeenDNS bildirimleri ikonlandı:
      • Domain satırına 🔗, durum satırına ☁️ (cloud) veya 🌐 (dogrudan) veya 🚫 (fail) eklendi
      • Tüm KeenDNS şablonları etkilendi: BACK, LOST, CGN_BACK, CGN_LOST, FAIL
    • Telegram — KZM otomatik güncelleme başarısız bildirimi ikonlandı:
      • , ⚠️, 📦, 🔖, 🆕, 🔗 ikonları eklendi; KZM AUTO OK ile tutarlı hale getirildi

    ⚙️ Notlar

    • SHA256 state dosyaları /tmp/ içinde tutulur; reboot sonrası sıfırlanır
    • Menu 14'teki SHA256 satırları mevcut add_line sistemine dokunulmadan eklendi
    • Sağlık skoru eşikleri: 9.5+ Mükemmel, 8.5+ Çok İyi, 7.0+ İyi, 5.0+ Orta, altı Kötü

    🚀 v26.2.25.1 — Notification Icons & Menu 14 Improvements

    Release Type: Minor Feature
    Focus: Telegram notification icons completed, Menu 14 health score colorized, SHA256 status lines added

    New Features

    • Menu 14 — SHA256 file integrity lines added (Services section):
      • KZM file integrity (SHA256) — reads Menu 10 result from state file; PASS / WARN / INFO
      • Zapret version status — reads Menu 6 result from state file; PASS / WARN / INFO
      • When state file is missing, indicates which menu to run
    • Menu 14 — Health score line colorized and simplified:
      • Score and [EXCELLENT / GREAT / GOOD / OK / BAD] label colored green / orange / red by score
      • (16/17 OK) counter highlighted in same color
      • Redundant duplicate rating_txt removed

    Improvements

    • Telegram — KeenDNS notifications now have icons:
      • 🔗 on domain line, ☁️ (cloud) or 🌐 (direct) or 🚫 (fail) on status line
      • All KeenDNS templates updated: BACK, LOST, CGN_BACK, CGN_LOST, FAIL
    • Telegram — KZM auto-update failed notification now has icons:
      • Added , ⚠️, 📦, 🔖, 🆕, 🔗; consistent with KZM AUTO OK format

    ⚙️ Notes

    • SHA256 state files stored in /tmp/; cleared on reboot
    • Menu 14 SHA256 lines added without touching existing add_line system
    • Health score thresholds: 9.5+ Excellent, 8.5+ Great, 7.0+ Good, 5.0+ OK, below Bad
    Downloads
  • v26.2.25 283928bafe

    v26.2.25 Stable

    kerem released this 2026-02-25 09:49:22 +03:00 | 132 commits to main since this release

    📅 Originally published on GitHub: Wed, 25 Feb 2026 06:50:27 GMT
    🏷️ Git tag created: Wed, 25 Feb 2026 06:49:22 GMT

    🚀 v26.2.25 — SHA256 Durum Göstergesi & UI Düzeltmeleri

    Sürüm Tipi: Minor Feature
    Odak: Banner SHA256 renk göstergesi, UI hizalama iyileştirmeleri, Telegram bildirim düzeltmesi

    Yeni Özellikler

    • Ana menü banner'ında SHA256 durum rengi eklendi:
      • KZM Surum → Menu 10 çalıştırılınca SHA256 doğrulaması PASS ise yeşil, aksi halde turuncu
      • Zapret Surum → Menu 6 versiyon kontrolü güncel ise yeşil, aksi halde turuncu
      • Durum /tmp/zkm_sha256_kzm.state ve /tmp/zkm_sha256_zapret.state dosyalarında saklanır; reboot sonrası sıfırlanır

    İyileştirmeler

    • Menu 14 (Sağlık Kontrolu) tüm satırları 1 boşluk girintili hale getirildi
    • Menu 6 ve Menu 10 çerçeve içi satırlarında PASS/WARN/INFO etiketleri Guncel/Kurulu ile aynı hizaya getirildi (%-10s: formatı)
    • SHA256 uyuşmazlık mesajındaki gereksiz HATA: öneki kaldırıldı; mesaj rengi CLR_ORANGE yapıldı
    • SHA256 WARN satırındaki GitHub/Kurulu hash satırları da hizalı formata getirildi

    🐛 Hata Düzeltmeleri

    • Zapret güncelleme Telegram bildiriminde 🕒 Zaman satırının iki kez görünmesi düzeltildi (%TIME% placeholder şablondan kaldırıldı, footer zaten ekliyor)

    ⚙️ Notlar

    • KZM SHA256 yeşil görmek için Menu 10'u çalıştır; GitHub'daki SHA256SUMS ile eşleşince kalıcı olarak yeşil olur
    • Zapret SHA256 yeşil görmek için Menu 6'yı çalıştır; versiyon güncel ise yeşil olur
    • Reboot sonrası state dosyaları /tmp/ sıfırlandığından her iki sürüm turuncu başlar

    🚀 v26.2.25 — SHA256 Status Indicator & UI Fixes

    Release Type: Minor Feature
    Focus: Banner SHA256 color indicator, UI alignment improvements, Telegram notification fix

    New Features

    • SHA256 status color in main menu banner added:
      • KZM Version → green if Menu 10 SHA256 verification passes, orange otherwise
      • Zapret Version → green if Menu 6 version check is up-to-date, orange otherwise
      • State stored in /tmp/zkm_sha256_kzm.state and /tmp/zkm_sha256_zapret.state; resets on reboot

    Improvements

    • Menu 14 (Health Check) all lines indented by 1 space
    • Menu 6 and Menu 10 PASS/WARN/INFO labels inside dashes blocks aligned with Current/Installed format (%-10s: format)
    • Removed redundant HATA: / ERROR: prefix from SHA256 mismatch message; color changed to CLR_ORANGE
    • SHA256 mismatch GitHub/Kurulu hash lines also aligned with consistent format

    🐛 Bug Fixes

    • Fixed duplicate 🕒 Zaman line in Zapret update Telegram notification (%TIME% placeholder removed from template; footer already adds it)

    ⚙️ Notes

    • To see KZM SHA256 green: run Menu 10; turns green when hash matches GitHub SHA256SUMS
    • To see Zapret SHA256 green: run Menu 6; turns green when version is up-to-date
    • After reboot, both versions start orange as /tmp/ state files are cleared
    Downloads
  • v26.2.24 ab5338387d

    v26.2.24 Stable

    kerem released this 2026-02-24 15:30:18 +03:00 | 142 commits to main since this release

    📅 Originally published on GitHub: Tue, 24 Feb 2026 12:33:41 GMT
    🏷️ Git tag created: Tue, 24 Feb 2026 12:30:18 GMT

    🚀 v26.2.24 — Zapret Yerinde Guncelleme & SHA256 Dogrulama

    Surum Tipi: Major Feature
    Odak: Zapret'i kaldirmadan guncelleme + SHA256 guvenlik dogrulamasi + surum ekrani iyilestirmeleri

    Yeni Ozellikler

    • Zapret Yerinde Guncelleme (Menu 6)

      • Zapret artik kaldirmadan, ayarlar ve hostlist'e dokunmadan guncellenebiliyor
      • Yalnizca binaries/ dizini ve install_bin.sh guncelleniyor; config, hostlist, wan_if korunuyor
      • Guncelleme sonrasinda Zapret otomatik yeniden baslatiliyor
      • Guncelleme sonrasinda nfqws --version ciktisi ile binary dogrulamasi yapiliyor
    • SHA256 Dogrulamasi — Zapret Guncellemesi (Menu 6)

      • Guncelleme oncesi GitHub API'den asset digest aliniyor
      • Indirilen arsiv sha256sum ile karsilastiriliyor; eslesmezse kurulum iptal ediliyor
      • Basarili dogrulamada PASS, basarisizda FAIL ile bildirim
    • SHA256 Dogrulamasi — KZM Guncellemesi (Menu 10)

      • GitHub Actions workflow eklendi: her release'te SHA256SUMS otomatik olusturuluyor
      • Menu 10 acildiginda SHA256SUMS indirilerek kurulu dosyayla karsilastiriliyor
      • Dogrulama sonucu PASS / WARN / INFO olarak gosteriliyor
    • Binary Surum Bilgisi (Menu 6)

      • Latest / Installed satirlari altina nfqws --version ciktisi INFO olarak eklendi
      • Guncelleme sonrasinda da ayni bilgi gosteriliyor (kurulum dogrulamasi)
    • Gelistirici Build Tespiti (Menu 10)

      • Kurulu surum GitHub'dan daha yeniyse INFO: Kurulu surum GitHub surununden daha yeni (gelistirici build) mesaji gosteriliyor

    Iyilestirmeler

    • Dinamik Renk Sistemi (Menu 6 & Menu 10)

      • Eski: Latest daima yesil, Installed daima sari (yaniltici)
      • Yeni: Daha yeni olan taraf yesil, daha eski olan sari; surum esitse ikisi de yesil
    • Menu 10 Modern Stile Getirildi

      • check_manager_update() fonksiyonu check_remote_update() ile ayni UI standartlarina getirildi
      • Hardcoded \033[...] renk kodlari kaldirildi, CLR_* degiskenleri kullaniliyor
      • read -r -p yerine printf + read -r kullaniliyor (BusyBox ash uyumu)

    ⚙️ Notlar

    • Zapret guncellemesi yalnizca binary'leri degistirir; mevcut config, hostlist ve WAN ayarlari korunur
    • GitHub Actions workflow reponun .github/workflows/release-checksum.yml yoluna eklenmeli
    • Mevcut kurulumlar guvenle guncellenebilir

    🚀 v26.2.24 — Zapret In-Place Update & SHA256 Verification

    Release Type: Major Feature
    Focus: Update Zapret without reinstalling + SHA256 security verification + version screen improvements

    New Features

    • Zapret In-Place Update (Menu 6)

      • Zapret can now be updated without uninstalling — config, hostlist, and WAN settings are preserved
      • Only binaries/ directory and install_bin.sh are replaced
      • Zapret automatically restarts after update
      • nfqws --version output shown after update for binary verification
    • SHA256 Verification — Zapret Update (Menu 6)

      • GitHub API asset digest fetched before downloading update
      • Downloaded archive verified with sha256sum; installation aborted on mismatch
      • PASS on success, FAIL on mismatch
    • SHA256 Verification — KZM Update (Menu 10)

      • GitHub Actions workflow added: SHA256SUMS auto-generated on every release
      • Menu 10 downloads SHA256SUMS from GitHub and compares with installed file
      • Verification result shown as PASS / WARN / INFO
    • Binary Version Info (Menu 6)

      • nfqws --version output shown as INFO below Latest / Installed lines
      • Also displayed after successful update (install verification)
    • Developer Build Detection (Menu 10)

      • If installed version is newer than GitHub release: INFO: Installed version is newer than GitHub release (developer build)

    Improvements

    • Dynamic Color System (Menu 6 & Menu 10)

      • Before: Latest always green, Installed always yellow (misleading)
      • After: Newer side is green, older side is yellow; equal versions both green
    • Menu 10 Modernized

      • check_manager_update() rewritten to match check_remote_update() UI standards
      • Hardcoded \033[...] color codes replaced with CLR_* variables
      • read -r -p replaced with printf + read -r (BusyBox ash compatibility)

    ⚙️ Notes

    • Zapret update only replaces binaries; existing config, hostlist and WAN settings are preserved
    • GitHub Actions workflow must be placed at .github/workflows/release-checksum.yml in the repo
    • Existing installations can be safely updated
    Downloads
  • v26.2.23 d333c4751a

    v26.2.23 Stable

    kerem released this 2026-02-23 12:54:42 +03:00 | 144 commits to main since this release

    📅 Originally published on GitHub: Mon, 23 Feb 2026 09:56:19 GMT
    🏷️ Git tag created: Mon, 23 Feb 2026 09:54:42 GMT

    🚀 v26.2.23 — Yedekleme Kapsamı Genişletildi + UI Düzeltmeleri

    Sürüm Tipi: Major Feature + Fix
    Odak: Zapret/KZM yedekleme kapsamının tamamlanması ve kullanıcı arayüzü tutarlılığı

    Yeni Özellikler

    • Menu 8 yeniden adlandırıldı: "Zapret / KZM Yedekle / Geri Yukle" olarak güncellendi
    • Zapret/KZM Yedekleme kapsamı genişletildi — Seçenek 4 artık aşağıdakileri de kapsar:
      • dpi_profile, dpi_profile_origin, dpi_profile_params, blockcheck_auto_params — DPI profil dosyaları
      • scope_mode — Global/Akıllı kapsam ayarı
      • /opt/etc/healthmon.conf — HealthMon yapılandırması
      • /opt/etc/telegram.conf — Telegram bot ayarları
    • Geri Yükleme alt menüsüne Seçenek 6 eklendi: "KZM Ayarlarini Geri Yukle (HealthMon + Telegram)"
    • Geri Yükleme kapsam eşleşmesi tamamlandı:
      • Kapsam 2 (DPI): dpi_profile_origin, dpi_profile_params, blockcheck_auto_params restore edilir
      • Kapsam 3 (Hostlist): scope_mode + ipset/ dizini restore edilir (phantom path'ler kaldırıldı)
    • ipset/ glob genişletildizapret-hosts-*.txt yerine ipset/*.txt (nozapret.txt + gelecek dosyalar dahil)

    İyileştirmeler

    • Geri yükleme yedek listesinde c) ve 0) seçenekleri öncesine boş satır eklendi — yanlışlıkla basımın önüne geçildi
    • Sarı renk (CLR_YELLOW) temizliği — semantik renk skalası dışında kalan tüm kullanımlar turuncuya (CLR_ORANGE) çevrildi:
      • WAN seçim ekranı başlığı
      • IPSET liste label'ları
      • No Zapret üyeleri label'ları
      • Telegram yapılandırılmamış uyarısı
      • DPI profili Not: uyarısı
    • Sistem Sağlığı Monitörü — bölüm başlıkları ([AYARLAR], [ESIKLER], [ZAPRET], [SIMDI]) artık ana menüyle aynı renkte (CLR_CYAN)
    • Sağlık Kontrolü — bölüm başlıkları (Ag & DNS, Sistem, Servisler) CLR_CYAN olarak güncellendi
    • Sistem Sağlığı Monitörü hizalama — kolon genişliği 18→22 karaktere yükseltildi, tüm etiketler aynı hizaya getirildi
    • Calisiyor satırı diğer hm_kv satırlarıyla aynı indent'e hizalandı (2 boşluk eklendi)

    🐛 Hata Düzeltmeleri

    • DPI profili ekranında Not: Not: şeklinde çift başlık çıkması düzeltildi
    • Geri yükleme Kapsam 3 (Hostlist): var olmayan hostlist, autohostlist, hostlists path'leri kaldırıldı — hostlist dosyaları artık gerçekten restore ediliyor
    • Geri yükleme Kapsam 4: ipset_modeipset_clients_mode dosya adı düzeltildi

    ⚙️ Notlar

    • Mevcut kurulumlar güvenle güncellenebilir
    • Eski zapret_settings_*.tar.gz arşivleri (yeni dosyalar olmadan alınmış) Kapsam 1 (Tam) ile geri yüklenebilir; eksik dosyalar || true ile sessizce atlanır
    • CLR_YELLOW artık yalnızca WARN etiketi, hostlist modu skalası ve KeenDNS durum skalası için kullanılır

    🚀 v26.2.23 — Backup Scope Completed + UI Fixes

    Release Type: Major Feature + Fix
    Focus: Complete Zapret/KZM backup coverage and UI consistency improvements

    New Features

    • Menu 8 renamed: Now "Zapret / KZM Backup / Restore"
    • Zapret/KZM Backup scope expanded — Option 4 now includes:
      • dpi_profile, dpi_profile_origin, dpi_profile_params, blockcheck_auto_params — DPI profile files
      • scope_mode — Global/Smart scope setting
      • /opt/etc/healthmon.conf — HealthMon configuration
      • /opt/etc/telegram.conf — Telegram bot settings
    • Option 6 added to restore submenu: "Restore KZM Settings (HealthMon + Telegram)"
    • Restore scope mapping completed:
      • Scope 2 (DPI): restores dpi_profile_origin, dpi_profile_params, blockcheck_auto_params
      • Scope 3 (Hostlist): restores scope_mode + ipset/ directory (phantom paths removed)
    • ipset/ glob expanded — from zapret-hosts-*.txt to ipset/*.txt (includes nozapret.txt and future files)

    Improvements

    • Blank line added before c) and 0) in backup file list — prevents accidental selection
    • CLR_YELLOW cleanup — all non-semantic uses replaced with CLR_ORANGE:
      • WAN selection screen title
      • IPSET list labels
      • No Zapret member labels
      • Telegram not configured warning
      • DPI profile Note: warning
    • System Health Monitor — section headers ([SETTINGS], [THRESHOLDS], [ZAPRET], [NOW]) now match main menu color (CLR_CYAN)
    • Health Check — section headers (Network & DNS, System, Services) updated to CLR_CYAN
    • System Health Monitor alignment — column width increased from 18→22 characters, all labels now properly aligned
    • Running row indented to match other hm_kv rows (2 spaces added)

    🐛 Bug Fixes

    • DPI profile screen no longer shows Note: Note: double prefix
    • Restore Scope 3 (Hostlist): removed non-existent hostlist, autohostlist, hostlists paths — hostlist files now actually restored
    • Restore Scope 4: fixed filename ipset_modeipset_clients_mode

    ⚙️ Notes

    • Existing installations can be safely updated
    • Older zapret_settings_*.tar.gz archives (taken before new files were added) can still be restored using Scope 1 (Full); missing files are silently skipped with || true
    • CLR_YELLOW is now reserved exclusively for WARN label, hostlist mode scale, and KeenDNS status scale
    Downloads
  • v26.2.21 7067ae8160

    v26.2.21 Stable

    kerem released this 2026-02-21 13:12:39 +03:00 | 145 commits to main since this release

    📅 Originally published on GitHub: Sat, 21 Feb 2026 10:14:06 GMT
    🏷️ Git tag created: Sat, 21 Feb 2026 10:12:39 GMT

    🚀 v26.2.21 — Zamanli Yeniden Baslat (Cron)

    Surum Tipi: Major Feature
    Odak: Cron tabanli zamanli router yeniden baslatma yonetimi

    Yeni Ozellikler

    • Ana menuye R kisayolu eklendi — Zamanli Yeniden Baslat menusu
      • Gunluk yeniden baslat — saat ve dakika girilerek her gun belirtilen saatte reboot
      • Haftalik yeniden baslat — saat, dakika ve gun girilerek haftada bir reboot
      • Mevcut zamanlamayi goster — aktif zamanlama varsa saat ve gun bilgisi gosterilir
      • Zamanlamayi sil — onay alinarak cron job kaldırilir
    • Ana menu banner'ina zamanlama satirı eklendi — zamanlama aktifse KeenDNS satirinin altında Tekrar Baslat etiketi ve turuncu saat goruntulenir
      • Gunluk: 03:30
      • Haftalik: 03:30 (Pzt)
    • Zamanlama crontab komutu uzerinden yonetilir — # KZM_REBOOT etiketiyle isaretlenir, diger cron job'lara dokunulmaz
    • crond servisi calismiyorsa menu acilisinda WARN mesaji gosterilir
    • Router saatinin dogru ayarli olmasi gerektigi konusunda kullaniciya uyari verilir

    Iyilestirmeler

    • Haftalik zamanlama gosteriminde gun numarasinin yani sira gun adi gosteriliyor (ornek: 1 Pazartesi)
    • Saat ve gun adi turuncu+bold ile vurgulanıyor
    • Ana menu prompt guncellendi: (0-16, B, L, R, U)
    • Gecersiz secim mesaji T() fonksiyonuna alindi, TR/EN destegi eklendi

    ⚙️ Notlar

    • Bu ozellik Entware kurulu tum Keenetic modellerinde calisir
    • LD_LIBRARY_PATH= ndmc -c "system reboot" komutu ile router yeniden baslatilir
    • Zamanlama reboot sonrasinda da korunur (crontab kalicidir)
    • crond ilk yuklemeden sonra bir sonraki tam dakikada job'u isler — eklenen dakika degil bir sonraki dakika tetiklenir
    • Mevcut kurulumlar guvenle guncellenebilir

    🚀 v26.2.21 — Scheduled Reboot (Cron)

    Release Type: Major Feature
    Focus: Cron-based scheduled router reboot management

    New Features

    • R shortcut added to main menu — Scheduled Reboot menu
      • Daily reboot — reboots every day at a specified time
      • Weekly reboot — reboots once a week on a specified day and time
      • Show current schedule — displays active schedule with time and day info
      • Delete schedule — removes the cron job with confirmation
    • Schedule info added to main menu banner — when active, a Sched.Reboot label with orange time is shown below the KeenDNS line
      • Daily: 03:30
      • Weekly: 03:30 (Mon)
    • Schedule is managed via the crontab command — tagged with # KZM_REBOOT, other cron jobs are not affected
    • WARN message shown on menu open if crond service is not running
    • User is warned to ensure router time is correctly set

    Improvements

    • Weekly schedule display now shows day name alongside day number (e.g. 1 Monday)
    • Time and day name highlighted in orange+bold
    • Main menu prompt updated: (0-16, B, L, R, U)
    • Invalid choice message moved to T() function with TR/EN support

    ⚙️ Notes

    • This feature works on all Keenetic models with Entware installed
    • Router is rebooted via LD_LIBRARY_PATH= ndmc -c "system reboot"
    • Schedule persists after reboot (crontab is permanent)
    • crond processes jobs on the next full minute after loading — the added minute itself is not triggered, the following minute is
    • Existing installations can be safely updated
    Downloads
  • v26.2.20.1 7e079ea67e

    v26.2.20.1 Stable

    kerem released this 2026-02-20 21:12:54 +03:00 | 146 commits to main since this release

    📅 Originally published on GitHub: Fri, 20 Feb 2026 18:14:01 GMT
    🏷️ Git tag created: Fri, 20 Feb 2026 18:12:54 GMT

    🚀 v26.2.20.1 — IPSet Menu Yeniden Duzenleme & Guvenlik

    Surum Tipi: Minor Feature / Fix
    Odak: IPSet istemci menusu yeniden duzenlendi, toplu IP girisi dogrulamasi eklendi, CLI kisayollari genisletildi

    Yeni Ozellikler

    • kzm ve KZM CLI kisayollari eklendikeenetic-zapret ve keenetic ile birlikte artik kzm veya KZM yazarak da script baslatilabilir
      • Her iki kisayol da ensure_cli_shortcut tarafindan otomatik olusturulur (yoksa)
      • KZM tam kaldirma sirasinda bu kisayollar da temizlenir

    Iyilestirmeler

    • IPSet istemci menusu yeniden duzenlendi — "Mevcut IP Listesini Goster" secenegi 1 numaraya alindi
      • Liste goruntuleme her zaman 1. sirada kalacak, ileriki eklemelerden etkilenmeyecek
      • Yeni siralama: 1=Liste Goster, 2=Tum Aga Uygula, 3=Secili IP'lere Uygula, 4=Tek IP Ekle, 5=Tek IP Sil, 6=No Zapret Yonetimi
    • Toplu IP girisi dogrulamasi eklendi — Gecersiz formattaki satirlar (ornegin 192.168.1.1; rm -rf /opt) dosyaya yazilmadan filtrelenir
      • Sadece x.x.x.x formatindaki IPv4 adresleri kabul edilir
      • Kac satirin atildigini kullaniciya bildirir
      • Private IP aralikları (10.x, 172.x, 192.168.x) engellenmez

    ⚙️ Notlar

    • IPSet menu numaralari degistigi icin aliskanliklari olan kullanicilar yeni siraya alismalidir
    • kzm/KZM kisayollari mevcut kurulumda bir kez keenetic-zapret calistirildiktan sonra otomatik olusur
    • Mevcut kurulumlar guvenle guncellenebilir, hicbir yapilandirma dosyasina dokunulmaz

    🚀 v26.2.20.1 — IPSet Menu Reorder & Security

    Release Type: Minor Feature / Fix
    Focus: IPSet client menu reordered, bulk IP input validation added, CLI shortcuts expanded

    New Features

    • kzm and KZM CLI shortcuts added — script can now be launched by typing kzm or KZM in addition to keenetic-zapret and keenetic
      • Both shortcuts are created automatically by ensure_cli_shortcut (if not present)
      • Removed during full KZM uninstall

    Improvements

    • IPSet client menu reordered — "Show Current IP List" moved to position 1
      • List view will always stay at position 1, unaffected by future additions
      • New order: 1=Show List, 2=Apply to Whole Network, 3=Apply to Selected IPs, 4=Add Single IP, 5=Remove Single IP, 6=No Zapret Management
    • Bulk IP input validation added — lines with invalid format (e.g. 192.168.1.1; rm -rf /opt) are filtered before writing to file
      • Only x.x.x.x format IPv4 addresses accepted
      • Reports how many lines were skipped
      • Private IP ranges (10.x, 172.x, 192.168.x) are not blocked

    ⚙️ Notes

    • IPSet menu numbers have changed; users familiar with the old layout should note the new order
    • kzm/KZM shortcuts are created automatically after running keenetic-zapret once on existing installations
    • Existing installations can be safely updated, no configuration files are modified
    Downloads
  • v26.2.20 c0fc6f27f1

    v26.2.20 Stable

    kerem released this 2026-02-20 10:20:47 +03:00 | 147 commits to main since this release

    📅 Originally published on GitHub: Fri, 20 Feb 2026 07:22:31 GMT
    🏷️ Git tag created: Fri, 20 Feb 2026 07:20:47 GMT

    🚀 v26.2.20 — Dil Desteği Genişletme, Backup Limiti ve Log Yönetimi

    Sürüm Tipi: Major Feature
    Odak: T() çeviri sistemine alınmayan 20+ hardcoded mesaj düzeltildi, otomatik backup limiti ve log rotation eklendi

    Yeni Özellikler

    • Backup limiti — Script güncellemelerinde artık en fazla 3 .bak_* dosyası tutulur, eskiler otomatik silinir
    • Autohostlist log rotation — HealthMon daemon döngüsüne /opt/zapret/nfqws_autohostlist.log boyut kontrolü eklendi; 1MB üzerinde son 500 satıra truncate edilir

    İyileştirmeler

    • start_zapret, stop_zapret, restart_zapret fonksiyonlarındaki tüm mesajlar T() sistemine alındı — dil değişimi artık bu ekranlarda da çalışıyor
    • install_zapret ve uninstall_zapret fonksiyonlarındaki tüm mesajlar T() sistemine alındı
    • configure_zapret_ipv6_support, manage_ipset_clients fonksiyonları çeviri sistemine dahil edildi
    • update_kernel_module_config, allow_firewall, disable_total_packet, keenetic_compatibility, fix_keenetic_udp, add_auto_start_zapret fonksiyonları çeviri sistemine dahil edildi
    • uninstall_zapret içindeki [[ =~ ]] bash operatörü POSIX uyumlu [ != ] ile değiştirildi
    • uninstall_zapret içindeki read -r -p "...\n..." prompt BusyBox ash uyumlu tek satıra dönüştürüldü
    • Backup limit kodundaki xargs rm BusyBox ash uyumlu while read döngüsüne dönüştürüldü

    ⚙️ Notlar

    • Eklenen 70+ TXT_* anahtarının tamamı _TR + _EN çiftiyle tanımlandı; --self-test ile doğrulandı
    • Lock uyarısı (T() henüz tanımlı değilken çalışan satır) kasıtlı olarak plain echo olarak bırakıldı

    🚀 v26.2.20 — Language Support Expansion, Backup Limit & Log Management

    Release Type: Major Feature
    Focus: 20+ hardcoded messages migrated to T() translation system, auto backup limit and log rotation added

    New Features

    • Backup limit — Script updates now keep at most 3 .bak_* files; oldest are automatically removed
    • Autohostlist log rotation — HealthMon daemon loop now monitors /opt/zapret/nfqws_autohostlist.log; truncates to last 500 lines when exceeding 1MB

    Improvements

    • All messages in start_zapret, stop_zapret, restart_zapret migrated to T() — language switching now works on these screens
    • All messages in install_zapret and uninstall_zapret migrated to T()
    • configure_zapret_ipv6_support, manage_ipset_clients integrated into translation system
    • update_kernel_module_config, allow_firewall, disable_total_packet, keenetic_compatibility, fix_keenetic_udp, add_auto_start_zapret integrated into translation system
    • [[ =~ ]] bash operator in uninstall_zapret replaced with POSIX-compliant [ != ]
    • Multi-line read -r -p prompt in uninstall_zapret converted to BusyBox ash compatible single line
    • xargs rm in backup limit code replaced with BusyBox ash compatible while read loop

    ⚙️ Notes

    • All 70+ new TXT_* keys defined with _TR + _EN pairs; verified with --self-test
    • Lock warning line (executed before T() is defined) intentionally kept as plain echo
    Downloads
  • v26.2.19 1ed3e2681d

    v26.2.19 Stable

    kerem released this 2026-02-19 13:17:07 +03:00 | 150 commits to main since this release

    📅 Originally published on GitHub: Thu, 19 Feb 2026 10:18:42 GMT
    🏷️ Git tag created: Thu, 19 Feb 2026 10:17:07 GMT

    🚀 v26.2.19 — NFQUEUE Watchdog & Bileşen Kontrol Düzeltmeleri

    Sürüm Tipi: Fix + Minor Feature
    Odak: NFQUEUE kuyruk izleme ve kurulum öncesi bileşen doğrulama iyileştirmeleri

    Yeni Özellikler

    • NFQUEUE Kuyruk Uzunluğu Watchdog HealthMon'a eklendi:
      • /proc/net/netfilter/nfnetlink_queue üzerinden gerçek zamanlı kuyruk dolulugu izlenir
      • HM_QLEN_WARN_TH eşiğini aşan her döngü sayılır; HM_QLEN_CRIT_TURNS art arda aşımda Zapret otomatik yeniden başlatılır
      • Telegram bildirimi: WARN ve CRIT durumları için ayrı mesajlar gönderilir
      • HM_QLEN_WATCHDOG=0 ile devre dışı bırakılabilir

    İyileştirmeler

    • check_keenetic_components fonksiyonu kurulum ve başlama öncesi çağrılır; eksik kritik bileşenlerde işlem iptal edilir
    • Bileşen eksikliği mesajındaki (UTF-8 bullet) karakterleri ASCII - ile değiştirildi — terminal bozuk karakter gösteriyordu
    • Keenetic Web UI yol yönlendirmesindeki (UTF-8 ok) karakteri > ile değiştirildi
    • install_zapret() ve start_zapret() içindeki fazladan read -p çağrıları kaldırıldı — bileşen hatası sonrası çift "Enter'a basın" mesajı çıkıyordu

    🐛 Hata Düzeltmeleri

    • Bileşen kontrol ekranı sonrası arka arkaya iki Enter bekleme isteği çıkıyordu; tek noktaya indirgendi

    ⚙️ Notlar

    • HM_QLEN_WARN_TH ve HM_QLEN_CRIT_TURNS değerleri healthmon.conf üzerinden ayarlanabilir
    • Mevcut kurulumlar güvenle güncellenebilir

    🚀 v26.2.19 — NFQUEUE Watchdog & Component Check Fixes

    Release Type: Fix + Minor Feature
    Focus: NFQUEUE queue monitoring and pre-install component validation improvements

    New Features

    • NFQUEUE Queue Length Watchdog added to HealthMon:
      • Real-time queue fill monitoring via /proc/net/netfilter/nfnetlink_queue
      • Each loop where queue exceeds HM_QLEN_WARN_TH is counted; Zapret auto-restarts after HM_QLEN_CRIT_TURNS consecutive breaches
      • Telegram notifications: separate messages for WARN and CRIT states
      • Can be disabled with HM_QLEN_WATCHDOG=0

    Improvements

    • check_keenetic_components is now called before install and start operations; missing critical components abort the action
    • (UTF-8 bullet) characters in the missing component message replaced with ASCII - — terminal was displaying garbled characters
    • (UTF-8 arrow) in Keenetic Web UI path guidance replaced with >
    • Redundant read -p calls removed from install_zapret() and start_zapret() — double "Press Enter" prompt was appearing after component failure

    🐛 Bug Fixes

    • Two consecutive Enter prompts were shown after component check failure; consolidated to a single prompt

    ⚙️ Notes

    • HM_QLEN_WARN_TH and HM_QLEN_CRIT_TURNS are configurable via healthmon.conf
    • Existing installations can be safely updated
    Downloads
  • v26.2.16 8c0d88cc02

    v26.2.16 Stable

    kerem released this 2026-02-16 11:47:29 +03:00 | 152 commits to main since this release

    📅 Originally published on GitHub: Mon, 16 Feb 2026 08:49:31 GMT
    🏷️ Git tag created: Mon, 16 Feb 2026 08:47:29 GMT

    🚀 v26.2.16 — No Zapret (Muafiyet) Yönetimi

    Sürüm Tipi: Major Feature
    Odak: IPSET Muafiyet Yönetimi + Çakışma Koruması

    Yeni Özellikler

    • Menu 12 altına No Zapret (Muafiyet) Yönetimi alt menüsü eklendi (Seçenek 6):
      • Muafiyet listesini görüntüleme — dosya ve aktif ipset üyelerini listeler
      • IP ekleme — No Zapret listesine ve ipset'e ekler, iptables RETURN kuralı uygular
      • IP silme — listeden, ipset'ten ve iptables kuralından kaldırır
      • Listeyi temizleme — onay alarak tüm muafiyetleri sıfırlar
    • No Zapret ve zapret_clients listeleri arasında çift yönlü çakışma koruması eklendi:
      • No Zapret'e IP eklendiğinde → zapret_clients listesinden otomatik çıkarılır
      • zapret_clients'a IP eklendiğinde (tekli veya toplu) → No Zapret listesinden otomatik çıkarılır
    • "Mevcut IP Listesini Göster" ekranına No Zapret üyeleri bölümü eklendi (hem Seçili IP hem Tüm Ağ modunda görünür)

    İyileştirmeler

    • "Seçili IP'lere Uygula" ekranında mevcut liste ve tek IP ekleme uyarısı gösteriliyor
    • Mod göstergesi (Mod: Seçili IP / Mod: Tüm Ağ) altına boşluk eklendi
    • No Zapret menü başlığı ile açıklama satırı arasına boşluk eklendi

    ⚙️ Notlar

    • No Zapret; IPTV kutuları, akıllı TV'ler gibi Zapret işleminden etkilenmemesi gereken cihazlar için tasarlanmıştır
    • zapret_clients whitelist yaklaşımına alternatif olarak kullanılabilir (tüm ağa uygula, sadece şunları muaf tut)
    • Mevcut kurulumlar güvenle güncellenebilir

    🚀 v26.2.16 — No Zapret (Exemption) Management

    Release Type: Major Feature
    Focus: IPSET Exemption Management + Conflict Protection

    New Features

    • No Zapret (Exemption) Management sub-menu added under Menu 12 (Option 6):
      • Show exemption list — lists file contents and active ipset members
      • Add IP — adds to No Zapret list and ipset, applies iptables RETURN rule
      • Remove IP — removes from list, ipset and iptables rule
      • Clear list — resets all exemptions with confirmation
    • Two-way conflict protection between No Zapret and zapret_clients lists:
      • Adding IP to No Zapret → automatically removed from zapret_clients
      • Adding IP to zapret_clients (single or bulk) → automatically removed from No Zapret
    • No Zapret members section added to "Show Current IP List" screen (visible in both Selected IPs and Whole Network modes)

    Improvements

    • "Apply to Selected IPs" screen now shows current list and single-IP add warning
    • Blank line added below mode indicator (Mode: Selected IPs / Mode: Whole network)
    • Blank line added between No Zapret menu title and description

    ⚙️ Notes

    • No Zapret is designed for devices that should bypass Zapret processing (e.g. IPTV boxes, smart TVs)
    • Can be used as an alternative to the zapret_clients whitelist approach (apply to all, exempt specific IPs)
    • Existing installations can be safely updated
    Downloads