1. 05 Mar, 2026 1 commit
    • Vitaly Lipatov's avatar
      route-update: improve volatile detection and add IP validation · bd2a6117
      Vitaly Lipatov authored
      Volatile detection:
      - Remove single-record restriction (count<=1) that missed multi-record
        domains like youtube.com with 4 rotating AAAA records
      - Add diff-resolvers check: domain is volatile if local and extra DNS
        return different IPs (catches cached TTL > threshold cases)
      - expand_volatile_subnets now also processes domains with accumulated
        volatile_ips from prior runs, not only current volatile_domains
        (fixes race where cached TTL > threshold causes empty volatile_domains
        but IPs were already collected)
      
      IP validation:
      - Validate resolved IPs with python3 ipaddress before ip-batch loading
      - Filter out invalid entries (e.g. malformed IPv6) with WARNING log
      - Prevents ip-batch failures from corrupting route tables
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      bd2a6117
  2. 04 Mar, 2026 6 commits
  3. 03 Mar, 2026 1 commit
  4. 02 Mar, 2026 6 commits
  5. 28 Feb, 2026 6 commits
  6. 25 Feb, 2026 17 commits
  7. 24 Feb, 2026 3 commits
    • Vitaly Lipatov's avatar
      router: add web UI for managing bypass/direct route lists · 1e73e6e8
      Vitaly Lipatov authored
      Python web API (route-web-api.py) on port 80 for adding domains to
      egw bypass or dgw direct lists. Runs as unprivileged routeweb user,
      list files are picked up by route-update.sh via symlinks.
      
      Features:
      - Add/remove/move domains between bypass and direct lists
      - Auto-remove from other list when adding (mutual exclusion)
      - "No rule" button to remove from input field
      - Active routes section showing all applied rules from route-update
      - Last update timestamp from all-routes.json mtime
      
      route-update.sh: generate_web_json() exports all list entries
      as JSON for the web UI after each run.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      1e73e6e8
    • Vitaly Lipatov's avatar
      router: fix ip rule pref parsing (pref is $1 with colon, not a named field) · f0223740
      Vitaly Lipatov authored
      ip rule show format is "PREF:\tfrom ... lookup TABLE", not "... pref PREF".
      The awk was looking for a "pref"/"priority" field that doesn't exist, so
      old rules were never removed and new prefs were never applied.
      
      Also fix grep -c/-q "lookup TABLE" to use -w (word boundary) to prevent
      "lookup 2" from matching "lookup 200".
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      f0223740
    • Vitaly Lipatov's avatar
      router: decouple ip rule pref from table number, handle moved .list files · 5e7e4541
      Vitaly Lipatov authored
      Pref was calculated as table_number × 10, meaning moving a .list between
      groups didn't change its priority. Now pref is assigned sequentially by
      group/list processing order (base=1000, group_step=100, list_step=10).
      
      Also improves cleanup_state to detect .list files moved between groups —
      only removes old state dir without flushing the shared routing table.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      5e7e4541