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
..
2026-07-17 00:33:06 +02:00
2026-08-16 14:00:16 +02:00
2026-08-14 20:10:39 +02:00
2026-08-15 15:31:49 +02:00
2026-08-15 15:27:02 +02:00
2026-07-17 00:33:06 +02:00
2026-08-15 16:50:20 +02:00
2026-06-27 12:08:20 +02:00
2026-07-05 02:06:58 +02:00
2026-07-17 00:33:06 +02:00
2026-08-18 12:46:00 +02:00
2026-08-18 12:46:00 +02:00
2026-07-05 21:17:25 +02:00
2026-07-17 00:33:06 +02:00
2026-06-27 15:42:22 +02:00
2026-07-17 00:33:06 +02:00
2026-07-08 20:53:42 +02:00
2026-08-18 15:24:59 +02:00
2026-07-25 00:51:48 +02:00
2026-07-11 22:48:51 +02:00
2026-08-18 13:08:44 +02:00
2026-07-11 22:48:57 +02:00
2026-07-07 15:05:22 +02:00
2026-07-05 20:28:26 +02:00
2026-08-01 15:19:08 +02:00
2026-06-24 13:02:42 +02:00
2026-06-10 15:19:22 +02:00
2026-08-18 13:55:04 +02:00
2026-08-18 13:55:04 +02:00
2026-06-11 12:04:02 +02:00
2026-08-14 19:50:06 +02:00
2026-08-15 16:50:20 +02:00
2026-07-02 09:17:47 +02:00
2026-08-14 19:50:06 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-07-28 13:52:10 +02:00
2026-08-18 13:08:44 +02:00
2026-07-17 00:33:06 +02:00
2026-08-01 15:19:08 +02:00
2026-07-28 22:38:44 +02:00
2026-07-28 22:38:44 +02:00
2026-07-30 02:49:32 +02:00
2026-08-18 12:46:00 +02:00
2026-08-18 13:08:44 +02:00
2026-08-15 16:50:20 +02:00
2026-07-07 12:00:43 +02:00
2026-06-10 15:19:22 +02:00
2026-08-01 15:19:08 +02:00
2026-08-01 15:19:08 +02:00
2026-06-10 15:19:22 +02:00
2026-08-18 13:08:44 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-07-05 20:28:26 +02:00
2026-07-24 22:21:18 +02:00
2026-07-24 22:21:18 +02:00
2026-08-15 16:50:20 +02:00
2026-07-23 15:34:42 +02:00
2026-07-05 20:28:26 +02:00
2026-08-18 15:24:59 +02:00
2026-06-27 15:42:22 +02:00
2026-07-28 14:43:55 +02:00
2026-08-15 17:12:59 +02:00
2026-08-14 19:42:09 +02:00
2026-07-30 03:14:22 +02:00
2026-07-08 23:35:20 +02:00
2026-07-23 18:52:42 +02:00
2026-08-18 15:24:59 +02:00
2026-08-18 12:46:00 +02:00
2026-08-18 11:53:11 +02:00
2026-08-14 19:42:09 +02:00
2026-08-14 19:42:09 +02:00
2026-06-10 15:19:22 +02:00
2026-08-02 12:32:45 +02:00
2026-07-23 15:34:42 +02:00
2026-07-02 16:24:18 +02:00
2026-08-15 23:09:16 +02:00
2026-08-18 11:48:40 +02:00
2026-08-15 23:09:16 +02:00
2026-08-14 19:42:09 +02:00
2026-07-08 22:12:28 +02:00
2026-08-01 15:19:08 +02:00
2026-07-17 00:33:06 +02:00
2026-07-28 13:14:06 +02:00
2026-06-24 13:02:42 +02:00
2026-08-15 23:09:16 +02:00
2026-06-27 13:50:06 +02:00
2026-07-21 15:57:55 +02:00
2026-08-14 20:10:39 +02:00
2026-08-15 23:09:16 +02:00
2026-07-07 01:13:24 +02:00
2026-07-07 01:13:24 +02:00
2026-08-01 15:19:08 +02:00
2026-07-06 17:55:57 +02:00
2026-07-17 00:33:06 +02:00
2026-08-01 15:19:08 +02:00
2026-06-22 20:20:55 +02:00
2026-07-02 13:37:06 +02:00
2026-08-14 20:01:35 +02:00
2026-08-16 14:02:50 +02:00
2026-08-18 15:24:59 +02:00
2026-07-03 01:12:32 +02:00
2026-06-11 12:04:02 +02:00
2026-06-11 12:04:02 +02:00
2026-07-08 20:31:00 +02:00
2026-07-08 20:31:00 +02:00
2026-06-12 12:03:22 +02:00
2026-06-27 11:22:45 +02:00
2026-08-15 21:48:24 +02:00
2026-07-05 20:18:59 +02:00
2026-08-14 19:42:09 +02:00
2026-07-27 14:21:56 +02:00
2026-07-28 23:27:09 +02:00
2026-08-18 15:24:59 +02:00
2026-07-09 01:18:30 +02:00
2026-06-12 12:03:22 +02:00
2026-08-18 11:48:40 +02:00
2026-07-17 00:33:06 +02:00
2026-06-26 00:10:30 +02:00
2026-07-25 16:08:09 +02:00
2026-07-07 01:13:24 +02:00
2026-08-15 21:48:24 +02:00
2026-07-08 22:12:28 +02:00
2026-07-02 09:36:07 +02:00
2026-07-07 15:05:23 +02:00
2026-07-02 13:37:06 +02:00
2026-07-23 15:35:11 +02:00
2026-07-23 15:35:11 +02:00
2026-06-20 01:09:53 +02:00
2026-08-18 11:50:09 +02:00
2026-07-11 23:17:57 +02:00
2026-08-15 16:03:42 +02:00
2026-08-15 21:31:31 +02:00
2026-06-16 12:19:33 +02:00
2026-08-15 17:40:35 +02:00
2026-08-01 15:19:08 +02:00
2026-06-22 20:20:55 +02:00
2026-08-01 15:19:08 +02:00
2026-08-14 20:01:35 +02:00
2026-08-14 20:01:35 +02:00
2026-08-15 16:48:50 +02:00
2026-07-08 22:12:28 +02:00
2026-07-23 15:35:11 +02:00
2026-08-15 16:48:50 +02:00
2026-07-23 15:34:42 +02:00
2026-08-14 19:41:24 +02:00
2026-08-14 19:41:24 +02:00
2026-06-27 15:42:22 +02:00
2026-08-18 11:48:40 +02:00
2026-08-18 13:47:59 +02:00
2026-08-18 13:47:59 +02:00
2026-07-17 00:33:06 +02:00
2026-07-08 22:10:54 +02:00
2026-07-12 20:14:22 +02:00
2026-07-12 20:14:22 +02:00
2026-07-06 09:24:18 +02:00
2026-06-24 21:22:42 +02:00
2026-06-20 00:37:35 +02:00
2026-08-18 15:24:59 +02:00
2026-07-14 13:01:40 +02:00
2026-08-14 20:03:54 +02:00
2026-08-15 21:31:31 +02:00
2026-08-14 20:03:54 +02:00
2026-08-15 21:31:31 +02:00
2026-08-18 16:02:11 +02:00
2026-08-15 16:40:22 +02:00
2026-07-28 22:12:52 +02:00
2026-08-18 16:02:11 +02:00
2026-06-17 14:11:35 +02:00
2026-07-12 00:30:47 +02:00
2026-06-10 15:19:22 +02:00
2026-07-05 20:28:26 +02:00
2026-07-17 00:33:06 +02:00
2026-07-02 16:12:46 +02:00
2026-08-14 19:42:09 +02:00
2026-06-10 15:19:22 +02:00
2026-06-17 15:55:47 +02:00
2026-06-10 15:19:22 +02:00
2026-07-02 16:12:46 +02:00
2026-07-27 14:37:57 +02:00
2026-07-21 15:57:34 +02:00
2026-07-02 16:12:46 +02:00
2026-07-29 21:00:29 +02:00
2026-07-23 15:34:42 +02:00
2026-07-23 15:34:42 +02:00
2026-07-17 00:33:06 +02:00
2026-07-23 15:34:42 +02:00
2026-07-23 15:34:42 +02:00
2026-07-17 00:33:06 +02:00
2026-07-17 00:33:06 +02:00
2026-07-21 15:51:46 +02:00
2026-07-29 21:00:29 +02:00
2026-06-15 00:43:49 +02:00
2026-06-28 00:44:38 +02:00
2026-06-23 17:38:16 +02:00
2026-08-15 23:09:16 +02:00