feat(notify): unified notification manager + webhooks + shell bell
Ships an end-to-end notification pipeline: ring buffer + persistence,
HTTP CRUD + SSE stream, backend Push() calls at ~20 async/scheduled
sites, Telegram+generic HTTP dispatcher, shell bell icon with sliding
panel, and a Notifications settings section for webhook management.
Backend (Agents U + V):
- New pkg internal/services/notify — cap-500 ring, SSE broadcast via
events.DefaultHub topic "notifications", MarkRead / MarkAllRead /
Delete / Clear + persistence to <dataDir>/notifications.json with
500 ms debounced atomic write.
- Webhook dispatcher: goroutine consumes notify.PushChan, fan-out to
every matching hook. Filters all / errors_only / warn_and_above /
success_and_above. Retry 3× with 1/2/4 s backoff, 10 s per-request
timeout. Telegram POST {chat_id, text=title+body, parse_mode:HTML};
generic POST raw Notification JSON. LastError / LastSuccessAt
stamped per attempt.
- 11 Push sites: feeds.fetch / feeds.error, routing.apply / commit /
rollback, awg.tunnel_up / tunnel_down / handshake_recovered,
update.available / applied / failed, pihole.enabled / disabled /
container_restarted, auth.login / auth.failed (now with client IP
+ User-Agent via new AuthClient meta), backup.import / export,
panic.recovered (server.go recoverer middleware), ipmeta.reload.
Frontend (Agents W + X):
- lib/notifications.ts — module-level singleton store,
useSyncExternalStore hook, refcounted SSE + initial GET, backoff+
jitter reconnect, optimistic UI actions, sonner-toast fallback for
incoming errors when the panel is closed.
- NotifyBell + NotifyPanel — bell now lives in the desktop sidebar
HEADER next to the "NFQWS2" title (was previously footer-only per
user request), still mounted in mobile top bar. Sheet panel groups
by Today / Yesterday / Older, filter chips (All / Errors /
Warnings / Unread), row = colored dot + title (bold if unread) +
2-line body + relative timestamp (Intl.RelativeTimeFormat) + source
badge + hover dismiss X. Panel header pr-12 so the sheet's built-in
close X no longer collides with "Clear all".
- Notifications settings under System — WebhookTable + Add/Edit
Dialog with kind-dependent labels (Telegram bot-token URL + chat_id
vs generic URL), inline validation, Test button hitting the backend
test endpoint.
- All strings routed through dict.ts (en+ru) — 60+ new keys under
notify.*.
Wiring in server.go / app.go: RegisterNotifyAPI +
RegisterNotifyWebhooksAPI + /api/notifications/stream SSE alias +
notify.InitDispatcher on boot.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
pull/168/head
parent
ea5280a24c
commit
f9dd4d9f9b
@ -0,0 +1,2 @@
|
||||
Warning: Permanently added '192.168.31.1' (RSA) to the list of known hosts.
|
||||
snitch PID: 14759 14755 (no - shell script wrapper)
|
||||
@ -0,0 +1,222 @@
|
||||
_MTD_partitions_:
|
||||
0 > addr: 00000000 size: 00100000 ro: 0 name: "0:SBL1"
|
||||
1 > addr: 00100000 size: 00100000 ro: 0 name: "0:SBL1_1"
|
||||
2 > addr: 00200000 size: 00100000 ro: 0 name: "0:MIBIB"
|
||||
3 > addr: 00300000 size: 00080000 ro: 0 name: "0:BOOTCONFIG"
|
||||
4 > addr: 00380000 size: 00080000 ro: 0 name: "0:BOOTCONFIG1"
|
||||
5 > addr: 00400000 size: 00200000 ro: 0 name: "0:QSEE"
|
||||
6 > addr: 00600000 size: 00200000 ro: 0 name: "0:QSEE_1"
|
||||
7 > addr: 00800000 size: 00080000 ro: 0 name: "0:DEVCFG"
|
||||
8 > addr: 00880000 size: 00080000 ro: 0 name: "0:DEVCFG_1"
|
||||
9 > addr: 00900000 size: 00080000 ro: 0 name: "0:APDP"
|
||||
10 > addr: 00980000 size: 00080000 ro: 0 name: "0:APDP_1"
|
||||
11 > addr: 00A00000 size: 00080000 ro: 0 name: "0:TME"
|
||||
12 > addr: 00A80000 size: 00080000 ro: 0 name: "0:TME_1"
|
||||
13 > addr: 00B00000 size: 00080000 ro: 0 name: "0:RPM"
|
||||
14 > addr: 00B80000 size: 00080000 ro: 0 name: "0:RPM_1"
|
||||
15 > addr: 00C00000 size: 00080000 ro: 0 name: "0:CDT"
|
||||
16 > addr: 00C80000 size: 00080000 ro: 0 name: "0:CDT_1"
|
||||
17 > addr: 00D00000 size: 00080000 ro: 0 name: "0:APPSBLENV"
|
||||
18 > addr: 00D80000 size: 00100000 ro: 0 name: "0:APPSBL"
|
||||
19 > addr: 00E80000 size: 00100000 ro: 0 name: "0:APPSBL_1"
|
||||
20 > addr: 00F80000 size: 00100000 ro: 1 name: "0:ART"
|
||||
21 > addr: 01080000 size: 00080000 ro: 0 name: "0:TRAINING"
|
||||
22 > addr: 01100000 size: 00040000 ro: 0 name: "0:LICENSE"
|
||||
23 > addr: 01140000 size: 02800000 ro: 0 name: "rootfs"
|
||||
24 > addr: 03940000 size: 02800000 ro: 0 name: "rootfs_1"
|
||||
25 > addr: 06140000 size: 00080000 ro: 1 name: "bdata"
|
||||
26 > addr: 061C0000 size: 00080000 ro: 0 name: "crash"
|
||||
27 > addr: 06240000 size: 00080000 ro: 0 name: "crash_syslog"
|
||||
28 > addr: 062C0000 size: 01C00000 ro: 0 name: "overlay"
|
||||
29 > addr: 07EC0000 size: 00040000 ro: 0 name: "KF"
|
||||
30 > addr: FFFFFFFF size: 003AB914 ro: 0 name: "kernel"
|
||||
31 > addr: FFFFFFFF size: 02017000 ro: 0 name: "ubi_rootfs"
|
||||
32 > addr: FFFFFFFF size: 01838000 ro: 1 name: "cfg"
|
||||
|
||||
_Base_info_:
|
||||
Linux stamp: Linux XiaoQiang 5.4.164 #0 SMP PREEMPT Tue Jan 27 03:33:27 2026 aarch64 GNU/Linux
|
||||
Linux version: 5.4.164
|
||||
CPU arch: arm64
|
||||
CPU name: ipq95xx
|
||||
SPI rom: False
|
||||
|
||||
_Kernel_command_line_:
|
||||
ubi.mtd=rootfs
|
||||
root=mtd:ubi_rootfs
|
||||
rootfstype=squashfs
|
||||
cnss2.bdf_pci2=0x02
|
||||
cnss2.enable_mlo_support=0
|
||||
rootwait
|
||||
uart_en=1
|
||||
|
||||
_NVRam_params_:
|
||||
CountryCode=CN
|
||||
Router_unconfigured=0
|
||||
SN=44594/14YE00117
|
||||
boot_wait=on
|
||||
bootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs cnss2.bdf_pci2=0x02 cnss2.enable_mlo_support=0 rootwait
|
||||
bootcmd=bootmiwifi
|
||||
bootdelay=3
|
||||
bootmenu_delay=5
|
||||
color=100
|
||||
crash_write_count=2
|
||||
eth1addr=58:ea:1f:78:e1:ac
|
||||
eth2addr=58:ea:1f:78:e1:ad
|
||||
eth3addr=ee:31:75:9a:f3:b2
|
||||
eth4addr=ee:31:75:9a:f3:b2
|
||||
eth5addr=ee:31:75:9a:f3:b2
|
||||
ethaddr=58:ea:1f:4a:2b:bc
|
||||
ethprime=eth1
|
||||
fdt_high=0x48500000
|
||||
fdtcontroladdr=4a4e4004
|
||||
flag_boot_rootfs=0
|
||||
flag_boot_success=1
|
||||
flag_boot_type=2
|
||||
flag_flash_permission=1
|
||||
flag_last_success=0
|
||||
flag_ota_reboot=0
|
||||
flag_show_upgrade_info=1
|
||||
flag_try_sys1_failed=0
|
||||
flag_try_sys2_failed=0
|
||||
flash_type=11
|
||||
fsbootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs cnss2.bdf_pci2=0x02 cnss2.enable_mlo_support=0
|
||||
ipaddr=192.168.31.1
|
||||
machid=8050501
|
||||
mode=Router
|
||||
model=RC06
|
||||
mtdids=nand0=nand0
|
||||
netmask=255.255.255.0
|
||||
no_wifi_dev_times=0
|
||||
rand_key=1v83pS+jQk44UMaY3U8YWrSapXcvNpzz3a2ualPGkDJ1I27tx4Sq7w==
|
||||
rand_nonce=webhbGM9UQcONmqKea3lK7u5gz1B9T6RZ8NlZDTOF5Tv+7+KXOFXYltnvH+H/3aaRNJZoXWhfvg4vmfukKEun1Ehou+nPbpG4scJiiouXd98TiuMXLrkGc8pQLVh4nQK1DqvDnuUx50S4mwQPYwUnd/eEbbMOrcdKP35mniDD9lgUC8ZTT7v5RSfrM2EkQ6E5GUGCLbR+WaKk4JxO+Cc2SWJLbIQGRZfmxPhajukXvldooly3M2Z1wvp7SyPXd4zl82shzDzHZ1zwO9NPGq7RGihrYt029OGfk35TyyV1JlT03e7UN8P8q4vMcJWFFCTQcm7GHxy85TW7JBsMuW3USZ26v7pCiVgI0u3Z1qVUxEVeGuax0sv2QUeHopiFQCFF7DjlzpwvAjmYXM+MXTBLmOdKG0bj0DARrI7vgDPsP8FHZDgxDZX4nimdWw1SkqLFsJ+jE5+r82/QkRXBkBv33epFSPycY0QVAyb8tcqF7/lhrJEeXWqSvp6u2vZqmaRD6YJMJ+r33Zc8Waj4955ATPCtTBTsa6Cz6IQ7EhOm0d77DuBrKmsvv07rsSL47h/dYRXr/phEsAWk7de4QMkVOGG/vL/NdS+7cLHE7udcjqKlujG6K1JmbWdcLG+5xmf0Qe47Ok6Utvpf5xG1ct41J88mvLR7OS5lxi92yMwJ3W/AAO+Qep6NMZjKJOzZTScT4eyqZiQYORv/36gP1L7hoUonULjMg5tFyndy5OTlwmXRWu7Kiln+kGGvm7CFZfhQkNUNoAH9sctGNug43l/APh+xbgCeGRCLFUerRjrSMbuiOJ8A0SOrLm9HVbfozY2X/rj6g/dShtaKx6ihP9TPO0alGfRTktpSZALOgvpNQst/8Wk95eOdRch4PChDxJQpLW4Jjl0X4QpV6y+pRTqQOT8O1t/PjQIbOiFZjjB6WWq6TSxndxsmi+XuAh4pP7xmCYqAu601o03mddyjZ09ONhwNuB4ksfKRjCykm7LwUDctNYnRtm8eM3HG+qfqzjZFLvr7ZF3/XFNRHKAegk2tRuL13val1AbRFzj0EOQL5HgY6UPAPyCqk6uwfWKQtXV01ODxthcRdghtDkIDWdpl5zke/uO3FIEYqJZI3em/Q9GcXILwqIMvCnthW9VqcxJypK7kmnvNziJG0Z2CvKrn5y4Cl9J3npTo6kjPjlQUx5D1bm6/UipamPRCklWsBDXgFpVkPZ8kiPD3uuEiG8E4TqPeL4ZTPkuGXGENn+vUatQ52Dog5iTfIG02vUh7bxDGHtFdCzxwp9oOvs9kodqW5dSLbQOvGsEjibm9iEYYTMW56CfnyNTehR4SzS3tZuOyn2wErBTiAGgpa16GUh8eQ==
|
||||
restore_defaults=0
|
||||
serverip=192.168.31.100
|
||||
soc_version_major=1
|
||||
soc_version_minor=1
|
||||
ssh_en=1
|
||||
stderr=serial@78B1000
|
||||
stdin=serial@78B1000
|
||||
stdout=serial@78B1000
|
||||
telnet_en=0
|
||||
uart_en=1
|
||||
wl0_radio=1
|
||||
wl0_ssid=Xiaomi_5G
|
||||
wl1_radio=1
|
||||
wl1_ssid=Xiaomi
|
||||
wl2_radio=1
|
||||
wl2_ssid=Xiaomi_5G-2
|
||||
|
||||
_RootFS_current_:
|
||||
num = 0
|
||||
mtd_num = None
|
||||
mtd_dev = "None"
|
||||
partition = "rootfs"
|
||||
|
||||
_Version_info_:
|
||||
UBoot: None
|
||||
OpenWrt: unknown
|
||||
Firmware: 1.1.38
|
||||
Channel: release
|
||||
BuildTime: Tue, 27 Jan 2026 04:23:05 +0000
|
||||
Hardware: RC06
|
||||
UBoot(2): 1.0.0
|
||||
|
||||
_Bootloader_info_:
|
||||
0:SBL1:
|
||||
addr: 0x00000000
|
||||
size: 0x00100000
|
||||
image size: 12 bytes
|
||||
type: None
|
||||
0:APPSBL:
|
||||
addr: 0x00D80000
|
||||
size: 0x00100000
|
||||
image size: 177 bytes
|
||||
type: None
|
||||
|
||||
_ENV_info_:
|
||||
0:APPSBLENV:
|
||||
addr: 0x00D00000
|
||||
size: 0x00010000
|
||||
len: 2638 bytes
|
||||
prefix: b'\x8e\xd7\x93\x1d'
|
||||
CountryCode=CN
|
||||
Router_unconfigured=0
|
||||
SN=44594/14YE00117
|
||||
boot_wait=on
|
||||
bootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs cnss2.bdf_pci2=0x02 cnss2.enable_mlo_support=0 rootwait
|
||||
bootcmd=bootmiwifi
|
||||
bootdelay=3
|
||||
bootmenu_delay=5
|
||||
color=100
|
||||
crash_write_count=2
|
||||
eth1addr=58:ea:1f:78:e1:ac
|
||||
eth2addr=58:ea:1f:78:e1:ad
|
||||
eth3addr=ee:31:75:9a:f3:b2
|
||||
eth4addr=ee:31:75:9a:f3:b2
|
||||
eth5addr=ee:31:75:9a:f3:b2
|
||||
ethaddr=58:ea:1f:4a:2b:bc
|
||||
ethprime=eth1
|
||||
fdt_high=0x48500000
|
||||
fdtcontroladdr=4a4e4004
|
||||
flag_boot_rootfs=0
|
||||
flag_boot_success=1
|
||||
flag_boot_type=2
|
||||
flag_flash_permission=1
|
||||
flag_last_success=0
|
||||
flag_ota_reboot=0
|
||||
flag_show_upgrade_info=1
|
||||
flag_try_sys1_failed=0
|
||||
flag_try_sys2_failed=0
|
||||
flash_type=11
|
||||
fsbootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs cnss2.bdf_pci2=0x02 cnss2.enable_mlo_support=0
|
||||
ipaddr=192.168.31.1
|
||||
machid=8050501
|
||||
mode=Router
|
||||
model=RC06
|
||||
mtdids=nand0=nand0
|
||||
netmask=255.255.255.0
|
||||
no_wifi_dev_times=0
|
||||
rand_key=1v83pS+jQk44UMaY3U8YWrSapXcvNpzz3a2ualPGkDJ1I27tx4Sq7w==
|
||||
rand_nonce=webhbGM9UQcONmqKea3lK7u5gz1B9T6RZ8NlZDTOF5Tv+7+KXOFXYltnvH+H/3aaRNJZoXWhfvg4vmfukKEun1Ehou+nPbpG4scJiiouXd98TiuMXLrkGc8pQLVh4nQK1DqvDnuUx50S4mwQPYwUnd/eEbbMOrcdKP35mniDD9lgUC8ZTT7v5RSfrM2EkQ6E5GUGCLbR+WaKk4JxO+Cc2SWJLbIQGRZfmxPhajukXvldooly3M2Z1wvp7SyPXd4zl82shzDzHZ1zwO9NPGq7RGihrYt029OGfk35TyyV1JlT03e7UN8P8q4vMcJWFFCTQcm7GHxy85TW7JBsMuW3USZ26v7pCiVgI0u3Z1qVUxEVeGuax0sv2QUeHopiFQCFF7DjlzpwvAjmYXM+MXTBLmOdKG0bj0DARrI7vgDPsP8FHZDgxDZX4nimdWw1SkqLFsJ+jE5+r82/QkRXBkBv33epFSPycY0QVAyb8tcqF7/lhrJEeXWqSvp6u2vZqmaRD6YJMJ+r33Zc8Waj4955ATPCtTBTsa6Cz6IQ7EhOm0d77DuBrKmsvv07rsSL47h/dYRXr/phEsAWk7de4QMkVOGG/vL/NdS+7cLHE7udcjqKlujG6K1JmbWdcLG+5xmf0Qe47Ok6Utvpf5xG1ct41J88mvLR7OS5lxi92yMwJ3W/AAO+Qep6NMZjKJOzZTScT4eyqZiQYORv/36gP1L7hoUonULjMg5tFyndy5OTlwmXRWu7Kiln+kGGvm7CFZfhQkNUNoAH9sctGNug43l/APh+xbgCeGRCLFUerRjrSMbuiOJ8A0SOrLm9HVbfozY2X/rj6g/dShtaKx6ihP9TPO0alGfRTktpSZALOgvpNQst/8Wk95eOdRch4PChDxJQpLW4Jjl0X4QpV6y+pRTqQOT8O1t/PjQIbOiFZjjB6WWq6TSxndxsmi+XuAh4pP7xmCYqAu601o03mddyjZ09ONhwNuB4ksfKRjCykm7LwUDctNYnRtm8eM3HG+qfqzjZFLvr7ZF3/XFNRHKAegk2tRuL13val1AbRFzj0EOQL5HgY6UPAPyCqk6uwfWKQtXV01ODxthcRdghtDkIDWdpl5zke/uO3FIEYqJZI3em/Q9GcXILwqIMvCnthW9VqcxJypK7kmnvNziJG0Z2CvKrn5y4Cl9J3npTo6kjPjlQUx5D1bm6/UipamPRCklWsBDXgFpVkPZ8kiPD3uuEiG8E4TqPeL4ZTPkuGXGENn+vUatQ52Dog5iTfIG02vUh7bxDGHtFdCzxwp9oOvs9kodqW5dSLbQOvGsEjibm9iEYYTMW56CfnyNTehR4SzS3tZuOyn2wErBTiAGgpa16GUh8eQ==
|
||||
restore_defaults=0
|
||||
serverip=192.168.31.100
|
||||
soc_version_major=1
|
||||
soc_version_minor=1
|
||||
ssh_en=1
|
||||
stderr=serial@78B1000
|
||||
stdin=serial@78B1000
|
||||
stdout=serial@78B1000
|
||||
telnet_en=0
|
||||
uart_en=1
|
||||
wl0_radio=1
|
||||
wl0_ssid=Xiaomi_5G
|
||||
wl1_radio=1
|
||||
wl1_ssid=Xiaomi
|
||||
wl2_radio=1
|
||||
wl2_ssid=Xiaomi_5G-2
|
||||
bdata:
|
||||
addr: 0x06140000
|
||||
size: 0x00010000
|
||||
len: 1688 bytes
|
||||
prefix: b'\xf5\x82\x90P'
|
||||
rand_key=1v83pS+jQk44UMaY3U8YWrSapXcvNpzz3a2ualPGkDJ1I27tx4Sq7w==
|
||||
rand_nonce=webhbGM9UQcONmqKea3lK7u5gz1B9T6RZ8NlZDTOF5Tv+7+KXOFXYltnvH+H/3aaRNJZoXWhfvg4vmfukKEun1Ehou+nPbpG4scJiiouXd98TiuMXLrkGc8pQLVh4nQK1DqvDnuUx50S4mwQPYwUnd/eEbbMOrcdKP35mniDD9lgUC8ZTT7v5RSfrM2EkQ6E5GUGCLbR+WaKk4JxO+Cc2SWJLbIQGRZfmxPhajukXvldooly3M2Z1wvp7SyPXd4zl82shzDzHZ1zwO9NPGq7RGihrYt029OGfk35TyyV1JlT03e7UN8P8q4vMcJWFFCTQcm7GHxy85TW7JBsMuW3USZ26v7pCiVgI0u3Z1qVUxEVeGuax0sv2QUeHopiFQCFF7DjlzpwvAjmYXM+MXTBLmOdKG0bj0DARrI7vgDPsP8FHZDgxDZX4nimdWw1SkqLFsJ+jE5+r82/QkRXBkBv33epFSPycY0QVAyb8tcqF7/lhrJEeXWqSvp6u2vZqmaRD6YJMJ+r33Zc8Waj4955ATPCtTBTsa6Cz6IQ7EhOm0d77DuBrKmsvv07rsSL47h/dYRXr/phEsAWk7de4QMkVOGG/vL/NdS+7cLHE7udcjqKlujG6K1JmbWdcLG+5xmf0Qe47Ok6Utvpf5xG1ct41J88mvLR7OS5lxi92yMwJ3W/AAO+Qep6NMZjKJOzZTScT4eyqZiQYORv/36gP1L7hoUonULjMg5tFyndy5OTlwmXRWu7Kiln+kGGvm7CFZfhQkNUNoAH9sctGNug43l/APh+xbgCeGRCLFUerRjrSMbuiOJ8A0SOrLm9HVbfozY2X/rj6g/dShtaKx6ihP9TPO0alGfRTktpSZALOgvpNQst/8Wk95eOdRch4PChDxJQpLW4Jjl0X4QpV6y+pRTqQOT8O1t/PjQIbOiFZjjB6WWq6TSxndxsmi+XuAh4pP7xmCYqAu601o03mddyjZ09ONhwNuB4ksfKRjCykm7LwUDctNYnRtm8eM3HG+qfqzjZFLvr7ZF3/XFNRHKAegk2tRuL13val1AbRFzj0EOQL5HgY6UPAPyCqk6uwfWKQtXV01ODxthcRdghtDkIDWdpl5zke/uO3FIEYqJZI3em/Q9GcXILwqIMvCnthW9VqcxJypK7kmnvNziJG0Z2CvKrn5y4Cl9J3npTo6kjPjlQUx5D1bm6/UipamPRCklWsBDXgFpVkPZ8kiPD3uuEiG8E4TqPeL4ZTPkuGXGENn+vUatQ52Dog5iTfIG02vUh7bxDGHtFdCzxwp9oOvs9kodqW5dSLbQOvGsEjibm9iEYYTMW56CfnyNTehR4SzS3tZuOyn2wErBTiAGgpa16GUh8eQ==
|
||||
SN=44594/14YE00117
|
||||
color=100
|
||||
CountryCode=CN
|
||||
model=RC06
|
||||
wl1_ssid=rc06_minet_2bbc
|
||||
wl0_ssid=rc06_minet_2bbc
|
||||
wl2_ssid=rc06_minet_2bbc
|
||||
miot_did=7lwIXO/a946Op5P8NBvcoA==
|
||||
miot_key=XtP5ihT1JyTEUg8kPT8QSw==
|
||||
telnet_en=1
|
||||
ssh_en=1
|
||||
uart_en=1
|
||||
boot_wait=on
|
||||
0:SBL1:
|
||||
addr: 0x00060000
|
||||
size: 0x000A0000
|
||||
len: 0 bytes
|
||||
prefix: b'\xd1\xdcK\x84'
|
||||
|
||||
@ -0,0 +1 @@
|
||||
Subproject commit 859aa17f08d341d65e4b3dc04a571d822bb5b9ef
|
||||
@ -0,0 +1,247 @@
|
||||
"routing": {
|
||||
"domainStrategy": "IPIfNonMatch",
|
||||
"rules": [
|
||||
{
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"domain": [
|
||||
"geosite:private"
|
||||
],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"domain": [
|
||||
"domain:happ.su"
|
||||
],
|
||||
"outboundTag": "proxy"
|
||||
},
|
||||
{
|
||||
"domain": [
|
||||
"domain:24h.tv",
|
||||
"domain:calls.okcdn.ru",
|
||||
"domain:ifconfig.me",
|
||||
"domain:api.ipify.org",
|
||||
"domain:checkip.amazonaws.com",
|
||||
"domain:2w.ru",
|
||||
"domain:4c.ru",
|
||||
"domain:5ka.ru",
|
||||
"domain:5post.market",
|
||||
"domain:abr.ru",
|
||||
"domain:afafb.com",
|
||||
"domain:afisha.ru",
|
||||
"domain:amediateka.ru",
|
||||
"domain:applovin.com",
|
||||
"domain:auchan.ru",
|
||||
"domain:av.ru",
|
||||
"domain:avs.io",
|
||||
"domain:avtovokzaly.ru",
|
||||
"domain:bcs-bank.ru",
|
||||
"domain:bcs.ru",
|
||||
"domain:beeline.tv",
|
||||
"domain:blablacar.ru",
|
||||
"domain:boosty.to",
|
||||
"domain:bristol.ru",
|
||||
"domain:broker.ru",
|
||||
"domain:capitalt.ru",
|
||||
"domain:cardsmobile.ru",
|
||||
"domain:cbr.ru",
|
||||
"domain:cdek.ru",
|
||||
"domain:cdn-tinkoff.ru",
|
||||
"domain:cdn-vk.ru",
|
||||
"domain:chizhik.club",
|
||||
"domain:cian.ru",
|
||||
"domain:cikrf.ru",
|
||||
"domain:citydrive.ru",
|
||||
"domain:cplsb.ru",
|
||||
"domain:custody.ru",
|
||||
"domain:data-tscbank.ru",
|
||||
"domain:dbo-dengi.online",
|
||||
"domain:deltacredit.ru",
|
||||
"domain:depository.ru",
|
||||
"domain:detmir.ru",
|
||||
"domain:dixy.ru",
|
||||
"domain:dolyame.ru",
|
||||
"domain:donationalerts.com",
|
||||
"domain:dostaevsky.ru",
|
||||
"domain:e5.ru",
|
||||
"domain:eaptechka.online",
|
||||
"domain:eapteka.ru",
|
||||
"domain:ebs.ru",
|
||||
"domain:edu.ru",
|
||||
"domain:electronicsignature.ru",
|
||||
"domain:emias.info",
|
||||
"domain:enterly.ru",
|
||||
"domain:era-invest.ru",
|
||||
"domain:etna.ai",
|
||||
"domain:etradebook.ru",
|
||||
"domain:fivepost.ru",
|
||||
"domain:fix-price.com",
|
||||
"domain:gainstech.ru",
|
||||
"domain:geobasket.ru",
|
||||
"domain:getsynapse.io",
|
||||
"domain:gorodpay.ru",
|
||||
"domain:gosdolgi.ru",
|
||||
"domain:goskey.ru",
|
||||
"domain:gosuslugi.ru",
|
||||
"domain:gov.ru",
|
||||
"domain:government.ru",
|
||||
"domain:gpb.ru",
|
||||
"domain:grfc.ru",
|
||||
"domain:gu-st.ru",
|
||||
"domain:imgsmail.ru",
|
||||
"domain:ivi.ru",
|
||||
"domain:jfn.su",
|
||||
"domain:kinopoisk.ru",
|
||||
"domain:kinorium.com",
|
||||
"domain:koshelek.app",
|
||||
"domain:krasnoeibeloe.ru",
|
||||
"domain:kremlin.ru",
|
||||
"domain:kuper.ru",
|
||||
"domain:lifestyle-tec.ru",
|
||||
"domain:magnit.ru",
|
||||
"domain:mail.ru",
|
||||
"domain:malotogo.ru",
|
||||
"domain:max-tcs.ru",
|
||||
"domain:max.ru",
|
||||
"domain:megamarket.ru",
|
||||
"domain:megamarket.tech",
|
||||
"domain:memealerts.com",
|
||||
"domain:meteum.ai",
|
||||
"domain:metro-cc.ru",
|
||||
"domain:mfk-t-finance.ru",
|
||||
"domain:mgfoms.ru",
|
||||
"domain:mkb.ru",
|
||||
"domain:mos.ru",
|
||||
"domain:mosreg.ru",
|
||||
"domain:mp.world",
|
||||
"domain:mradx.net",
|
||||
"domain:mtsdengi.ru",
|
||||
"domain:mvk.com",
|
||||
"domain:my-tbank.ru",
|
||||
"domain:myapelsin.ru",
|
||||
"domain:mycdn.me",
|
||||
"domain:myspar.ru",
|
||||
"domain:naydex.net",
|
||||
"domain:neon.click",
|
||||
"domain:nspk.ru",
|
||||
"domain:ocourier.ru",
|
||||
"domain:ok.ru",
|
||||
"domain:okcdn.ru",
|
||||
"domain:okolo.app",
|
||||
"domain:oneme.ru",
|
||||
"domain:onlyjobs.ru",
|
||||
"domain:ostrovok.ru",
|
||||
"domain:otello.ru",
|
||||
"domain:payment.ru",
|
||||
"domain:phoenix-ca.ru",
|
||||
"domain:pochtabank.ru",
|
||||
"domain:premier.one",
|
||||
"domain:private-banking.ru",
|
||||
"domain:prodcontest.com",
|
||||
"domain:psk",
|
||||
"domain:restream-media.net",
|
||||
"domain:rnd.ru",
|
||||
"domain:rrtp.ru",
|
||||
"domain:rshb.ru",
|
||||
"domain:rtbcdn.ru",
|
||||
"domain:russoutdoor.ru",
|
||||
"domain:safeliner.tech",
|
||||
"domain:sage-observability.tech",
|
||||
"domain:samokat.ru",
|
||||
"domain:sbrf.ru",
|
||||
"domain:sgcheck.ru",
|
||||
"domain:smotreshka.tv",
|
||||
"domain:spb.ru",
|
||||
"domain:start.ru",
|
||||
"domain:t.finance",
|
||||
"domain:tamtam.chat",
|
||||
"domain:tb-esim.ru",
|
||||
"domain:tbank-online.com",
|
||||
"domain:tbank.ru",
|
||||
"domain:tconf.ru",
|
||||
"domain:tcsbank.ru",
|
||||
"domain:telega.info",
|
||||
"domain:telega.me",
|
||||
"domain:time-messenger.ru",
|
||||
"domain:tmiaf.ru",
|
||||
"domain:tpension.ru",
|
||||
"domain:travel-tec.ru",
|
||||
"domain:trbcdn.net",
|
||||
"domain:turbopages.org",
|
||||
"domain:tutu.ru",
|
||||
"domain:tvigle.ru",
|
||||
"domain:userapi.com",
|
||||
"domain:vamzakaz.ru",
|
||||
"domain:viju.ru",
|
||||
"domain:vkusnoitochka.ru",
|
||||
"domain:vkusvill.ru",
|
||||
"domain:vsemrabota.ru",
|
||||
"domain:vtb.ru",
|
||||
"domain:vungle.com",
|
||||
"domain:warehouse.domains",
|
||||
"domain:winelab.ru",
|
||||
"domain:wink.ru",
|
||||
"domain:yads.tech",
|
||||
"domain:yccdn.ru",
|
||||
"domain:yektanet.com",
|
||||
"domain:youla-web-static.mrgcdn.ru",
|
||||
"domain:2ip.to",
|
||||
"domain:icloud.com",
|
||||
"regexp:(^|\\.)2gis\\.(ae|am|az|by|com|com.cy|cz|ge|kg|kz|ru|tj|ua|uz)$",
|
||||
"regexp:(^|\\.)alfa[a-z0-9-]*\\.(oavdo.amc|ru|st)$",
|
||||
"regexp:(^|\\.)atomyze\\.(ru|tech)$",
|
||||
"regexp:(^|\\.)aviasales\\.(com|ru)$",
|
||||
"regexp:(^|\\.)avito\\.(ru|st)$",
|
||||
"regexp:(^|\\.)dodo[a-z0-9-]*\\.(com|io|net|ru)$",
|
||||
"regexp:(^|\\.)dzen[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)gazprombank\\.(com|investments|ru)$",
|
||||
"regexp:(^|\\.)it-[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)jivo[a-z0-9-]*\\.(chat|co.in|co.za|com|com.br|com.co|com.pe|com.tr|de|es|ng|ru)$",
|
||||
"regexp:(^|\\.)lenta\\.(com|tech)$",
|
||||
"regexp:(^|\\.)mosmetro\\.(ru|tech)$",
|
||||
"regexp:(^|\\.)o3[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)okko\\.(sport|tv)$",
|
||||
"regexp:(^|\\.)ozon[a-z0-9-]*\\.(by|com|pro|ru)$",
|
||||
"regexp:(^|\\.)ozon\\.(by|com|dev|express|kz|li|ru|tech|tm|travel)$",
|
||||
"regexp:(^|\\.)ozonru\\.(co.il|com|eu|me)$",
|
||||
"regexp:(^|\\.)p(ay|lati)ecom\\.(ru)$",
|
||||
"regexp:(^|\\.)perekrestok\\.(com|ru)$",
|
||||
"regexp:(^|\\.)psb[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)rb(collect|credit)\\.(ru)$",
|
||||
"regexp:(^|\\.)rosban[a-z0-9-]*\\.(com|ru)$",
|
||||
"regexp:(^|\\.)rusfinance[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)rutube[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)rwb[a-z0-9-]*\\.(ru|tech)$",
|
||||
"regexp:(^|\\.)rzd[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)sber[a-z0-9-]*\\.(by|com|pro|ru|tech)$",
|
||||
"regexp:(^|\\.)spasib[a-z0-9-]*\\.(digital|market|ru)$",
|
||||
"regexp:(^|\\.)t-[a-z0-9-]*\\.(by|group|ru|su)$",
|
||||
"regexp:(^|\\.)t-tech\\.(dev|ru|team)$",
|
||||
"regexp:(^|\\.)taxi[a-z0-9-]*\\.(org)$",
|
||||
"regexp:(^|\\.)tink[a-z0-9-]*\\.(ai|com|ru)$",
|
||||
"regexp:(^|\\.)tinsurance[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)tochka[a-z0-9-]*\\.(com)$",
|
||||
"regexp:(^|\\.)vk[^u][a-z0-9-]*\\.(app|com|me|net|ru)$",
|
||||
"regexp:(^|\\.)vk\\.(cc|com|company|design|link|me|ru|team)$",
|
||||
"regexp:(^|\\.)vkuser[a-z0-9-]*\\.(com|net|ru)$",
|
||||
"regexp:(^|\\.)w[aeiou]{0,2}l[a-z0-9-]*\\.(ru)$",
|
||||
"regexp:(^|\\.)wb[a-z0-9-]*\\.(by|net|ru|tech)$",
|
||||
"regexp:(^|\\.)wb\\.(am|kg|kz|ru)$",
|
||||
"regexp:(^|\\.)webvisor\\.(com|org)$",
|
||||
"regexp:(^|\\.)wibes\\.(com|ru)$",
|
||||
"regexp:(^|\\.)wildberries\\.(am|by|co.il|es|eu|ge|kg|kz|lt|ru|tj|tm|uz)$",
|
||||
"regexp:(^|\\.)x5[a-z0-9-]*\\.(net|ru)$",
|
||||
"regexp:(^|\\.)x5\\.(ai|com|digital|group|media|ru|team|tech)$",
|
||||
"regexp:(^|\\.)ya\\.(cc|ru)$",
|
||||
"regexp:(^|\\.)yand[a-z0-9-]*\\.(com|net|org|ru)$",
|
||||
"regexp:(^|\\.)yandex\\.(aero|asia|az|by|cloud|co.il|com|com.am|com.ge|com.ru|com.tr|com.ua|de|ee|eu|fi|fr|jobs|kg|kz|lt|lv|md|mobi|net|org|pl|ru|st|sx|tj|tm|tr|ua|uz)$",
|
||||
"regexp:(^|\\.)yang[a-z0-9-]*\\.(com)$",
|
||||
"regexp:(^|\\.)yango\\.(africa|ao|bh|co.il|com|fi|qa|taxi|tech)$",
|
||||
"regexp:(^|\\.)yast[a-z0-9-]*\\.(net|ru)$",
|
||||
"regexp:(^|\\.)zvuk[a-z0-9-]*\\.(com)$",
|
||||
"regexp:wb\\.(com|ru)$",
|
||||
"regexp:youla\\.(io|ru)$"
|
||||
Loading…
Reference in New Issue