3x-ui/internal/sub
Duxxie 380aff4d82
Add remote routing URL support (#6168)
* Add remote routing URL support

* Harden remote routing refresh

* fix(sub): harden remote routing fetch and accept Mihomo src rule flag

Remote routing bytes reach the YAML/JSON parsers from goroutines that run
outside Gin's recovery, so a parser panic on crafted input would take down
the whole panel. Contain it in fetch() (a panic now degrades to a failed
refresh that keeps the last-good value and releases the in-flight slot)
and start the refresh, cache-load and startup-warm goroutines through
common.GoRecover like the other background workers.

The route-graph validator only skipped a trailing no-resolve flag, so a
valid Mihomo rule like IP-CIDR,x,DIRECT,no-resolve,src was rejected as an
unknown target; skip both option flags.

Also deduplicate the HTTPS-source classification into
common.ParseRemoteRoutingURL so the save-time validator and the resolver
can never drift (internal/sub imports internal/web/service, so the copy
existed only to avoid the import cycle), move the test-only
mergeRemoteClashRulesYAML helper into the test file, and trim oversized
comment blocks.

---------

Co-authored-by: Duxxie <yelloduxx@users.noreply.github.com>
Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
2026-08-18 16:02:11 +02:00
..
build_urls_test.go fix: resolve a batch of open bug-tagged issues (traffic accounting, share strategy, sub address, CPU) (#5477) 2026-06-22 00:22:28 +02:00
characterization_test.go fix(sub): restore client email in panel copy/QR link remark (#5532) 2026-06-24 15:25:41 +02:00
clash_external.go refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
clash_service.go Add remote routing URL support (#6168) 2026-08-18 16:02:11 +02:00
clash_service_test.go feat(inbound): DisableFlow — opt an inbound out of auto XTLS Vision (#5689) (#5698) 2026-08-15 23:09:16 +02:00
clash_yaml.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
clash_yaml_test.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
controller.go Add remote routing URL support (#6168) 2026-08-18 16:02:11 +02:00
controller_test.go feat(sub): add raw subscription download actions (#6017) 2026-07-21 15:52:33 +02:00
default.json
dist.go feat(sub): add raw subscription download actions (#6017) 2026-07-21 15:52:33 +02:00
endpoint.go fix(sub): carry a host's Final Mask into raw share links 2026-07-07 15:05:23 +02:00
endpoint_test.go fix(sub): carry a host's Final Mask into raw share links 2026-07-07 15:05:23 +02:00
export_all_links_test.go feat(inbounds): apply remark template to Export all inbound links 2026-06-27 11:22:45 +02:00
external_config.go Add per-client external link controls (#5650) 2026-08-18 13:55:04 +02:00
external_config_test.go Add per-client external link controls (#5650) 2026-08-18 13:55:04 +02:00
external_only_sub_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
external_subscription.go Add per-client external link controls (#5650) 2026-08-18 13:55:04 +02:00
external_subscription_test.go Add per-client external link controls (#5650) 2026-08-18 13:55:04 +02:00
forwarded_trust.go fix(sub): honor trustedProxyCIDRs before forwarded URLs (#6135) 2026-07-29 21:01:59 +02:00
forwarded_trust_test.go chore: refresh dependencies and modernize Go test idioms 2026-07-30 03:14:22 +02:00
host_sub.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
host_sub_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
hwid_controller_test.go feat(sub): add per-client subscription HWID limits (#5802) 2026-08-15 16:50:20 +02:00
info_endpoint_test.go fix(sub): restore the subscription info page for browser visits 2026-08-15 22:11:37 +02:00
json_flow_gate_test.go fix(sub): gate the VLESS flow in JSON subscriptions like raw and Clash links 2026-07-25 00:51:48 +02:00
json_service.go feat(inbound): DisableFlow — opt an inbound out of auto XTLS Vision (#5689) (#5698) 2026-08-15 23:09:16 +02:00
json_service_test.go feat(inbound): DisableFlow — opt an inbound out of auto XTLS Vision (#5689) (#5698) 2026-08-15 23:09:16 +02:00
links.go feat(inbounds): apply remark template to Export all inbound links 2026-06-27 11:22:45 +02:00
links_test.go
mutation_audit_test.go Add per-client external link controls (#5650) 2026-08-18 13:55:04 +02:00
page_data_test.go feat(sub): expose live online status and add ?format=info endpoint 2026-07-23 23:57:29 +02:00
placeholders.go feat(sub): add template variables to subscription metadata (#6163) 2026-08-15 17:38:29 +02:00
placeholders_test.go feat(sub): add template variables to subscription metadata (#6163) 2026-08-15 17:38:29 +02:00
remark_vars.go feat(clients): renew on a calendar day instead of a rolling interval (#6239) 2026-08-18 12:46:00 +02:00
remark_vars_test.go fix(sub): use a fullwidth percent in USAGE_PERCENTAGE (#6174) 2026-08-14 20:13:15 +02:00
remote_routing.go Add remote routing URL support (#6168) 2026-08-18 16:02:11 +02:00
remote_routing_test.go Add remote routing URL support (#6168) 2026-08-18 16:02:11 +02:00
salamander_uri_test.go feat(sub): warn when salamander settings cannot reach the client (#6177) 2026-08-15 18:15:19 +02:00
service.go feat(inbound): DisableFlow — opt an inbound out of auto XTLS Vision (#5689) (#5698) 2026-08-15 23:09:16 +02:00
service_dedup_test.go fix(sub): resolve subscription clients and stats from normalized tables 2026-07-02 16:58:00 +02:00
service_flow_test.go feat(inbound): DisableFlow — opt an inbound out of auto XTLS Vision (#5689) (#5698) 2026-08-15 23:09:16 +02:00
service_mtproto_test.go fix(mtproto): drop the remark fragment from tg proxy deep links 2026-07-06 17:55:35 +02:00
service_orphaned_stats_test.go chore: bump deps and modernize test loops 2026-06-26 00:10:30 +02:00
service_property_test.go
service_sharelink_test.go feat(reality): derive a stable per-client spiderX for shared links 2026-07-02 12:53:08 +02:00
service_sort_test.go feat(hosts): managed Hosts for per-host subscription link overrides (#5409) 2026-06-17 12:06:55 +02:00
service_test.go feat(sub): Add XHTTP session field compatibility in share links and subscriptions (#5929) 2026-07-28 22:15:28 +02:00
service_userinfo_test.go
service_wireguard_test.go fix(wireguard): preserve all Allowed IPs in share link, .conf, and subscription (#6051) 2026-07-21 15:50:16 +02:00
sub.go fix(web): report unexpected HTTP serve failures (#6210) 2026-08-14 19:40:53 +02:00
sub_fetch_test.go feat(sub): expose last subscription fetch time (#6217) 2026-08-15 15:22:11 +02:00
sub_panic_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
sub_scale_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
vless_route.go fix(sub): bake Host VLESS Route into subscription UUIDs 2026-06-29 14:32:23 +02:00
vless_route_sub_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
vless_route_test.go fix(sub): bake Host VLESS Route into subscription UUIDs 2026-06-29 14:32:23 +02:00