💋 Sync 2026-10-19 19:21:39

This commit is contained in:
github-actions[bot] committed 2026-10-19 19:21:39 +08:00
1 parent 67d3c8f8a8
commit 33357e094c
14 files changed
+896 -325

No files matched your search

+2 -2
View File
@@ -5,13 +5,13 @@ PKG_SHORT_SHA:=94b13ae
PKG_COMMIT_DATE:=2026.10.13
PKG_VERSION:=$(PKG_COMMIT_DATE)~$(PKG_SHORT_SHA)
PKG_RELEASE:=14
PKG_RELEASE:=15
PKG_SOURCE:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-alpha-$(PKG_SHORT_SHA)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-alpha-$(PKG_SHORT_SHA)
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-clashoo/releases/download/mihomo-src
PKG_SOURCE_VERSION:=4cc682daee8110a41887b5fb2d5a4b9fb5f6a696
PKG_SOURCE_VERSION:=65acfca73432da9ed3a588d3a8f482654504497f
PKG_HASH:=skip
PKG_BUILD_VERSION:=alpha-$(PKG_SHORT_SHA)
@@ -589,6 +589,7 @@ set clashoo_china6 {
2401:8680:4020::/43,
2401:8680:4040::/42,
2401:8680:4080::/41,
2401:8680:4100::/48,
2401:8680:4103::/48,
2401:8680:4104::/46,
2401:8680:4108::/45,
@@ -775,6 +776,7 @@ set clashoo_china6 {
2401:f860:8a::/47,
2401:f860:8c::/46,
2401:f860:91::/48,
2401:f860:93::/48,
2401:f860:95::/48,
2401:f860:96::/48,
2401:f860:98::/45,
@@ -958,6 +960,8 @@ set clashoo_china6 {
2402:7820::/32,
2402:7d00::/32,
2402:7d80::/32,
2402:7da0::/32,
2402:7e20::/32,
2402:8180::/32,
2402:8300::/32,
2402:8380::/32,
@@ -1253,12 +1257,16 @@ set clashoo_china6 {
2403:6180::/32,
2403:6280::/32,
2403:62c0::/32,
2403:6380::/42,
2403:6380::/44,
2403:6380:20::/44,
2403:6380:33::/48,
2403:6380:34::/46,
2403:6380:38::/45,
2403:6380:41::/48,
2403:6380:44::/46,
2403:6380:48::/45,
2403:6380:50::/44,
2403:6380:70::/44,
2403:6380:60::/43,
2403:6380:80::/41,
2403:6380:100::/40,
2403:6380:200::/39,
@@ -1484,6 +1492,9 @@ set clashoo_china6 {
2404:1e80::/32,
2404:1f40::/32,
2404:21c0::/32,
2404:2280:1000::/36,
2404:2280:2000::/35,
2404:2280:4000::/36,
2404:30c0::/32,
2404:3140::/32,
2404:31c0::/32,
@@ -1765,7 +1776,7 @@ set clashoo_china6 {
2405:84c0:800c::/46,
2405:84c0:8010::/48,
2405:84c0:8019::/48,
2405:84c0:801c::/46,
2405:84c0:801e::/47,
2405:84c0:8020::/47,
2405:84c0:8036::/47,
2405:84c0:8038::/46,
@@ -2221,7 +2232,7 @@ set clashoo_china6 {
2406:840:9103::/48,
2406:840:9104::/46,
2406:840:9108::/45,
2406:840:9112::/47,
2406:840:9113::/48,
2406:840:9114::/46,
2406:840:9118::/45,
2406:840:9120::/43,
@@ -2265,6 +2276,10 @@ set clashoo_china6 {
2406:840:9968::/46,
2406:840:996d::/48,
2406:840:996e::/47,
2406:840:9970::/46,
2406:840:9974::/47,
2406:840:9976::/48,
2406:840:9978::/45,
2406:840:9981::/48,
2406:840:9982::/47,
2406:840:9984::/46,
@@ -2294,6 +2309,7 @@ set clashoo_china6 {
2406:840:e0cc::/47,
2406:840:e0ce::/48,
2406:840:e0d0::/44,
2406:840:e0e4::/48,
2406:840:e0e6::/47,
2406:840:e0e9::/48,
2406:840:e0ea::/47,
@@ -2384,7 +2400,7 @@ set clashoo_china6 {
2406:840:ea00::/40,
2406:840:eb06::/48,
2406:840:eb09::/48,
2406:840:eb0a::/48,
2406:840:eb0a::/47,
2406:840:eb0c::/47,
2406:840:eb0e::/48,
2406:840:eb10::/44,
@@ -2468,6 +2484,10 @@ set clashoo_china6 {
2406:840:f600::/42,
2406:840:f640::/43,
2406:840:f670::/44,
2406:840:f680::/47,
2406:840:f682::/48,
2406:840:f684::/46,
2406:840:f688::/45,
2406:840:f690::/44,
2406:840:f6a0::/43,
2406:840:f6c0::/42,
@@ -2628,6 +2648,7 @@ set clashoo_china6 {
2406:840:fee8::/46,
2406:840:feec::/48,
2406:840:feee::/47,
2406:840:feff::/48,
2406:840:ff00::/40,
2406:880::/32,
2406:8c0::/32,
@@ -2878,7 +2899,7 @@ set clashoo_china6 {
2406:e780::/32,
2406:e8c0::/32,
2406:ea40::/28,
2406:f280::/33,
2406:f280::/32,
2406:f300::/32,
2406:f4c0::/32,
2406:f7c0::/32,
@@ -3036,26 +3057,7 @@ set clashoo_china6 {
2407:fb80::/32,
2407:fc80::/32,
2407:fd80::/32,
2408:4000::/40,
2408:4000:100::/47,
2408:4000:103::/48,
2408:4000:104::/46,
2408:4000:108::/45,
2408:4000:110::/44,
2408:4000:120::/43,
2408:4000:140::/42,
2408:4000:180::/41,
2408:4000:200::/39,
2408:4000:400::/38,
2408:4000:800::/37,
2408:4000:1000::/36,
2408:4000:2000::/35,
2408:4000:4000::/34,
2408:4000:8000::/33,
2408:4001::/32,
2408:4002::/31,
2408:4004::/30,
2408:4008::/29,
2408:4000::/28,
2408:4010::/30,
2408:4014::/31,
2408:4016:1::/48,
@@ -3121,6 +3123,41 @@ set clashoo_china6 {
240a:a000::/20,
240a:c000::/20,
240b:2000::/22,
240b:4000::/31,
240b:4002::/36,
240b:4002:1000::/44,
240b:4002:1011::/48,
240b:4002:1012::/47,
240b:4002:1014::/46,
240b:4002:1018::/45,
240b:4002:1020::/43,
240b:4002:1040::/42,
240b:4002:1080::/41,
240b:4002:1100::/40,
240b:4002:1200::/39,
240b:4002:1400::/38,
240b:4002:1800::/37,
240b:4002:2000::/35,
240b:4002:4000::/34,
240b:4002:8000::/33,
240b:4004::/31,
240b:4006::/48,
240b:4006:1000::/43,
240b:4006:1020::/44,
240b:4006:1100::/45,
240b:4006:110c::/46,
240b:4006:1110::/45,
240b:4006:1118::/46,
240b:4007::/32,
240b:4009::/32,
240b:400b::/32,
240b:400c::/30,
240b:4010:fffe::/47,
240b:4011::/32,
240b:4012::/31,
240b:4014::/30,
240b:4018::/30,
240b:401f::/32,
240b:6000::/20,
240b:8000::/21,
240b:a000::/25,
@@ -3240,7 +3277,7 @@ set clashoo_china6 {
2a04:3e00:400::/38,
2a04:3e00:800::/37,
2a04:3e00:1001::/48,
2a04:3e00:1002::/48,
2a04:3e00:1002::/47,
2a04:3e00:1004::/46,
2a04:3e00:1008::/45,
2a04:3e00:1010::/44,
@@ -3264,12 +3301,10 @@ set clashoo_china6 {
2a04:f580:9010::/48,
2a04:f580:9012::/47,
2a04:f580:9020::/48,
2a04:f580:9030::/48,
2a04:f580:9040::/48,
2a04:f580:9050::/48,
2a04:f580:9060::/48,
2a04:f580:9070::/48,
2a04:f580:9080::/48,
2a04:f580:9210::/48,
2a04:f580:9212::/47,
2a04:f580:9220::/48,
@@ -3318,9 +3353,7 @@ set clashoo_china6 {
2a0a:d681:e200::/39,
2a0a:d681:e400::/38,
2a0a:d681:e800::/37,
2a0a:d681:f000::/37,
2a0a:d681:f800::/38,
2a0a:d681:fe00::/40,
2a0a:d681:f000::/36,
2a0a:d682::/33,
2a0a:d682:8000::/34,
2a0a:d682:c000::/36,
@@ -3340,6 +3373,7 @@ set clashoo_china6 {
2a0a:d685:1f0::/45,
2a0a:d685:1f8::/47,
2a0a:d685:1fa::/48,
2a0a:d685:200::/48,
2a0a:d685:202::/47,
2a0a:d685:204::/46,
2a0a:d685:208::/45,
@@ -3429,7 +3463,10 @@ set clashoo_china6 {
2a13:1802:2000::/35,
2a13:1802:4000::/34,
2a13:1802:8000::/34,
2a13:1802:c000::/44,
2a13:1802:c000::/48,
2a13:1802:c002::/47,
2a13:1802:c004::/46,
2a13:1802:c008::/45,
2a13:1802:c020::/43,
2a13:1802:c040::/42,
2a13:1802:c080::/41,
@@ -64,6 +64,7 @@ set clashoo_china {
5.10.138.0/23,
5.10.140.0/24,
5.10.143.0/24,
5.181.224.0/23,
8.128.4.0/22,
8.128.32.0/19,
8.128.64.0/19,
@@ -91,11 +92,92 @@ set clashoo_china {
8.168.0.0/15,
8.176.0.0/17,
8.176.128.0/19,
8.208.0.0/17,
8.208.128.0/21,
8.208.140.0/22,
8.208.144.0/20,
8.208.160.0/19,
8.208.192.0/18,
8.209.0.0/19,
8.209.36.0/22,
8.209.40.0/21,
8.209.48.0/20,
8.209.64.0/18,
8.209.128.0/18,
8.209.192.0/24,
8.209.194.0/23,
8.209.196.0/22,
8.209.200.0/21,
8.209.208.0/20,
8.209.224.0/19,
8.210.0.0/16,
8.211.0.0/17,
8.211.128.0/18,
8.211.192.0/19,
8.211.224.0/22,
8.211.232.0/21,
8.211.240.0/20,
8.212.0.0/18,
8.212.64.0/20,
8.212.80.0/21,
8.212.88.0/22,
8.212.92.0/24,
8.212.94.0/23,
8.212.96.0/22,
8.212.104.0/21,
8.212.112.0/20,
8.212.128.0/19,
8.212.160.0/20,
8.212.176.0/21,
8.212.188.0/22,
8.212.192.0/18,
8.213.0.0/16,
8.214.0.0/17,
8.214.128.0/19,
8.214.164.0/22,
8.214.168.0/21,
8.214.176.0/20,
8.214.192.0/18,
8.215.0.0/17,
8.215.128.0/19,
8.215.160.0/22,
8.215.168.0/21,
8.215.176.0/20,
8.215.192.0/18,
8.216.0.0/18,
8.216.64.0/21,
8.216.72.0/22,
8.216.80.0/20,
8.216.96.0/19,
8.216.128.0/17,
8.217.0.0/16,
8.218.0.0/15,
8.220.0.0/18,
8.220.64.0/19,
8.220.96.0/20,
8.220.112.0/21,
8.220.120.0/22,
8.220.128.0/19,
8.220.160.0/21,
8.220.172.0/22,
8.220.176.0/20,
8.220.192.0/19,
8.220.224.0/21,
8.220.232.0/22,
8.220.240.0/21,
8.221.0.0/17,
8.221.128.0/20,
8.221.144.0/21,
8.221.156.0/22,
8.221.160.0/19,
8.221.192.0/18,
8.222.0.0/15,
14.0.0.0/21,
14.0.12.0/22,
14.1.0.0/22,
14.1.24.0/22,
14.1.108.0/22,
14.1.112.0/22,
14.16.0.0/12,
14.102.128.0/22,
14.102.180.0/22,
@@ -308,6 +390,80 @@ set clashoo_china {
42.242.0.0/15,
42.244.0.0/14,
42.248.0.0/13,
43.90.0.0/16,
43.92.0.0/15,
43.94.0.0/18,
43.96.0.0/23,
43.96.2.130/32,
43.96.3.0/24,
43.96.4.0/22,
43.96.8.0/22,
43.96.16.130/32,
43.96.18.0/24,
43.96.20.0/22,
43.96.24.0/22,
43.96.32.0/22,
43.96.36.130/32,
43.96.40.0/24,
43.96.42.0/24,
43.96.44.0/23,
43.96.46.0/24,
43.96.48.0/21,
43.96.59.0/24,
43.96.60.0/24,
43.96.62.0/23,
43.96.64.0/21,
43.96.72.0/22,
43.96.77.131/32,
43.96.78.0/24,
43.96.80.0/23,
43.96.85.0/24,
43.96.86.0/24,
43.96.88.0/23,
43.96.90.0/24,
43.96.92.0/22,
43.96.96.0/23,
43.96.100.0/23,
43.96.103.0/24,
43.96.104.0/23,
43.96.107.0/24,
43.96.109.0/24,
43.96.110.0/23,
43.96.112.0/22,
43.96.116.0/24,
43.96.118.0/23,
43.96.120.0/24,
43.96.122.0/24,
43.96.124.0/23,
43.96.126.0/24,
43.97.0.0/17,
43.98.0.0/15,
43.100.0.0/15,
43.102.0.0/17,
43.102.192.0/18,
43.103.0.0/16,
43.104.0.0/14,
43.108.0.0/16,
43.110.0.0/15,
43.112.0.0/15,
43.114.0.0/16,
43.116.0.0/17,
43.116.160.0/24,
43.116.192.0/18,
43.117.0.0/16,
43.118.0.0/17,
43.118.128.0/18,
43.119.0.0/16,
43.120.0.0/15,
43.122.0.0/16,
43.123.0.0/17,
43.123.128.0/18,
43.124.0.0/16,
43.125.0.0/20,
43.125.24.0/21,
43.125.32.0/20,
43.125.48.0/21,
43.126.0.0/17,
43.136.0.0/13,
43.144.0.0/15,
43.148.0.0/14,
@@ -458,7 +614,8 @@ set clashoo_china {
43.242.160.0/21,
43.242.168.0/22,
43.242.180.0/22,
43.242.188.0/22,
43.242.189.0/24,
43.242.190.0/23,
43.242.192.0/21,
43.242.204.0/22,
43.242.216.0/21,
@@ -728,6 +885,7 @@ set clashoo_china {
45.127.128.0/22,
45.127.144.0/21,
45.127.156.0/22,
45.199.179.0/24,
45.248.8.0/22,
45.248.80.0/21,
45.248.96.0/20,
@@ -773,6 +931,7 @@ set clashoo_china {
45.251.160.0/19,
45.251.192.0/19,
45.251.224.0/22,
45.251.248.0/23,
45.252.0.0/21,
45.252.9.0/24,
45.252.10.0/23,
@@ -830,8 +989,166 @@ set clashoo_china {
45.255.224.0/20,
45.255.240.0/21,
45.255.248.0/22,
47.52.0.0/16,
47.56.0.0/16,
47.57.0.0/17,
47.57.128.0/18,
47.57.192.0/22,
47.57.196.0/24,
47.57.198.0/23,
47.57.200.0/21,
47.57.208.0/20,
47.57.224.0/19,
47.74.0.0/15,
47.76.0.0/16,
47.77.0.0/20,
47.77.16.0/21,
47.77.24.0/22,
47.77.32.0/19,
47.77.64.0/19,
47.77.96.0/20,
47.77.112.0/23,
47.77.128.0/17,
47.78.0.0/15,
47.80.0.0/14,
47.84.0.0/16,
47.85.0.0/17,
47.85.128.0/23,
47.85.131.0/24,
47.85.132.0/22,
47.85.136.0/21,
47.85.144.0/20,
47.85.160.0/19,
47.85.192.0/18,
47.86.0.0/16,
47.87.0.0/20,
47.87.16.0/21,
47.87.32.0/19,
47.87.64.0/21,
47.87.72.0/24,
47.87.80.0/20,
47.87.96.0/19,
47.87.128.0/20,
47.87.144.0/21,
47.87.156.0/22,
47.87.160.0/19,
47.87.192.0/18,
47.88.0.0/16,
47.89.0.0/18,
47.89.72.0/21,
47.89.80.0/22,
47.89.84.0/24,
47.89.88.0/23,
47.89.90.0/24,
47.89.92.0/22,
47.89.96.0/20,
47.89.122.0/23,
47.89.124.0/23,
47.89.128.0/17,
47.90.0.0/17,
47.90.128.0/19,
47.90.160.0/21,
47.90.168.0/22,
47.90.176.0/20,
47.90.192.0/18,
47.91.0.0/16,
47.92.0.0/14,
47.96.0.0/11,
47.235.0.0/21,
47.235.8.0/22,
47.235.12.0/23,
47.235.16.0/20,
47.236.0.0/17,
47.236.128.0/18,
47.236.192.0/20,
47.236.208.0/21,
47.236.220.0/22,
47.236.224.0/19,
47.237.0.0/17,
47.237.128.0/18,
47.237.192.0/19,
47.237.224.0/20,
47.237.240.0/21,
47.237.249.0/24,
47.237.250.0/23,
47.237.252.0/22,
47.238.0.0/20,
47.238.16.0/21,
47.238.28.0/22,
47.238.32.0/19,
47.238.64.0/18,
47.238.128.0/17,
47.239.0.0/16,
47.240.0.0/14,
47.244.0.0/16,
47.245.0.0/17,
47.245.128.0/20,
47.245.144.0/21,
47.245.152.0/22,
47.245.160.0/19,
47.245.192.0/20,
47.245.208.0/21,
47.245.216.0/22,
47.245.224.0/19,
47.246.32.0/22,
47.246.66.0/23,
47.246.68.0/23,
47.246.72.0/21,
47.246.82.0/23,
47.246.84.0/22,
47.246.88.0/23,
47.246.91.0/24,
47.246.92.0/23,
47.246.96.0/22,
47.246.101.0/24,
47.246.102.0/23,
47.246.104.0/21,
47.246.120.0/24,
47.246.122.0/23,
47.246.124.0/23,
47.246.128.0/23,
47.246.131.0/24,
47.246.132.0/23,
47.246.135.0/24,
47.246.136.0/21,
47.246.144.0/22,
47.246.150.0/23,
47.246.152.0/22,
47.246.157.0/24,
47.246.158.0/23,
47.246.160.0/23,
47.246.162.0/24,
47.246.164.0/22,
47.246.168.0/21,
47.246.176.0/20,
47.246.192.0/20,
47.246.208.0/23,
47.246.212.0/22,
47.250.0.0/18,
47.250.68.0/22,
47.250.72.0/21,
47.250.80.0/20,
47.250.96.0/21,
47.250.108.0/22,
47.250.112.0/20,
47.250.128.0/17,
47.251.0.0/17,
47.251.132.0/22,
47.251.136.0/21,
47.251.144.0/20,
47.251.160.0/19,
47.251.196.0/22,
47.251.200.0/21,
47.251.208.0/20,
47.251.224.0/19,
47.252.0.0/16,
47.253.0.0/18,
47.253.64.0/19,
47.253.96.0/20,
47.253.112.0/21,
47.253.120.0/22,
47.253.128.0/17,
47.254.0.0/16,
49.4.0.0/17,
49.4.128.0/22,
49.4.160.0/20,
@@ -916,9 +1233,7 @@ set clashoo_china {
59.153.136.0/22,
59.153.152.0/22,
59.153.164.0/22,
59.153.168.0/22,
59.153.173.0/24,
59.153.174.0/23,
59.153.168.0/21,
59.153.176.0/20,
59.153.192.0/22,
59.155.0.0/16,
@@ -971,6 +1286,7 @@ set clashoo_china {
61.232.0.0/14,
61.236.0.0/15,
61.240.0.0/14,
62.182.190.0/23,
62.234.0.0/16,
63.140.0.0/24,
63.140.3.0/24,
@@ -1147,8 +1463,7 @@ set clashoo_china {
103.5.56.0/22,
103.5.152.0/22,
103.5.168.0/22,
103.5.192.0/23,
103.5.194.0/24,
103.5.192.0/22,
103.5.252.0/22,
103.6.76.0/22,
103.6.220.0/22,
@@ -1163,7 +1478,8 @@ set clashoo_china {
103.8.108.0/22,
103.8.156.0/22,
103.8.200.0/21,
103.8.220.0/22,
103.8.221.0/24,
103.8.222.0/23,
103.9.8.0/22,
103.9.24.0/22,
103.9.108.0/22,
@@ -1674,6 +1990,7 @@ set clashoo_china {
103.74.48.0/22,
103.74.56.0/21,
103.74.80.0/22,
103.74.126.0/23,
103.74.148.0/22,
103.74.152.0/21,
103.74.204.0/22,
@@ -1733,7 +2050,7 @@ set clashoo_china {
103.81.120.0/22,
103.81.148.0/22,
103.81.164.0/22,
103.81.184.0/23,
103.81.184.0/22,
103.81.200.0/22,
103.81.232.0/22,
103.82.60.0/22,
@@ -1796,6 +2113,7 @@ set clashoo_china {
103.89.184.0/21,
103.89.192.0/19,
103.89.224.0/21,
103.90.51.0/24,
103.90.52.0/22,
103.90.56.0/23,
103.90.92.0/22,
@@ -3151,7 +3469,8 @@ set clashoo_china {
114.112.240.0/23,
114.112.245.0/24,
114.112.247.0/24,
114.112.248.0/22,
114.112.248.0/23,
114.112.251.0/24,
114.112.252.0/23,
114.113.0.0/17,
114.113.128.0/21,
@@ -3269,6 +3588,7 @@ set clashoo_china {
116.242.0.0/15,
116.244.0.0/14,
116.248.0.0/15,
116.251.64.0/18,
116.252.0.0/15,
116.254.104.0/21,
116.254.128.0/17,
@@ -3308,6 +3628,7 @@ set clashoo_china {
117.120.148.0/22,
117.120.164.0/22,
117.120.184.0/21,
117.120.196.0/22,
117.120.208.0/21,
117.120.216.0/22,
117.120.248.0/21,
@@ -3451,7 +3772,6 @@ set clashoo_china {
119.161.120.0/21,
119.161.128.0/21,
119.161.144.0/21,
119.161.152.0/23,
119.161.160.0/19,
119.161.192.0/18,
119.162.0.0/15,
@@ -3528,8 +3848,7 @@ set clashoo_china {
121.59.102.0/23,
121.59.104.0/23,
121.59.107.0/24,
121.59.108.0/24,
121.59.110.0/23,
121.59.108.0/22,
121.59.112.0/21,
121.59.121.0/24,
121.59.123.0/24,
@@ -3569,8 +3888,7 @@ set clashoo_china {
122.8.68.0/22,
122.8.76.0/22,
122.8.80.0/23,
122.8.112.0/21,
122.8.124.0/22,
122.8.116.0/22,
122.8.192.0/18,
122.9.0.0/16,
122.10.129.0/24,
@@ -3660,15 +3978,13 @@ set clashoo_china {
123.49.128.0/18,
123.49.192.0/23,
123.49.194.0/24,
123.49.197.0/24,
123.49.198.0/23,
123.49.196.0/22,
123.49.200.0/21,
123.49.208.0/20,
123.49.224.0/21,
123.49.232.0/22,
123.49.236.0/24,
123.49.224.0/20,
123.49.240.0/24,
123.49.242.0/23,
123.49.245.0/24,
123.49.248.0/21,
123.50.160.0/19,
123.52.0.0/14,
@@ -3849,6 +4165,15 @@ set clashoo_china {
139.5.212.0/22,
139.5.244.0/22,
139.9.0.0/16,
139.95.0.0/20,
139.95.16.0/22,
139.95.22.0/23,
139.95.24.0/21,
139.95.32.0/21,
139.95.40.0/23,
139.95.64.0/23,
139.95.96.0/22,
139.95.128.0/17,
139.129.0.0/16,
139.148.0.0/16,
139.155.0.0/16,
@@ -3918,7 +4243,8 @@ set clashoo_china {
140.249.0.0/16,
140.250.0.0/16,
140.255.0.0/16,
142.86.192.0/19,
142.86.200.0/21,
142.86.208.0/20,
142.86.224.0/20,
142.86.240.0/21,
142.86.248.0/22,
@@ -3965,9 +4291,23 @@ set clashoo_china {
146.222.94.0/24,
147.78.132.0/24,
147.78.134.0/24,
147.139.0.0/17,
147.139.128.0/18,
147.139.192.0/19,
147.139.224.0/20,
147.139.240.0/21,
147.139.248.0/22,
148.70.0.0/16,
149.41.64.0/18,
149.41.192.0/19,
149.129.0.0/20,
149.129.16.0/21,
149.129.32.0/19,
149.129.64.0/18,
149.129.128.0/19,
149.129.168.0/21,
149.129.176.0/20,
149.129.192.0/18,
150.0.0.0/16,
150.115.0.0/16,
150.121.0.0/16,
@@ -4025,6 +4365,10 @@ set clashoo_china {
156.107.170.0/24,
156.107.179.0/24,
156.107.181.0/24,
156.227.20.0/24,
156.236.12.0/24,
156.236.17.0/24,
156.245.1.0/24,
157.0.0.0/16,
157.10.34.0/23,
157.10.36.0/23,
@@ -4043,7 +4387,7 @@ set clashoo_china {
157.20.194.0/23,
157.20.246.0/23,
157.61.0.0/16,
157.66.42.0/23,
157.66.43.0/24,
157.66.70.0/23,
157.66.88.0/21,
157.66.164.0/23,
@@ -4119,6 +4463,7 @@ set clashoo_china {
160.250.170.0/23,
160.250.214.0/23,
160.250.252.0/23,
161.117.0.0/16,
161.163.0.0/21,
161.163.28.0/23,
161.189.0.0/16,
@@ -4178,7 +4523,6 @@ set clashoo_china {
163.223.32.0/23,
163.223.72.0/23,
163.223.124.0/23,
163.223.217.0/24,
163.223.222.0/23,
163.227.34.0/23,
163.227.40.0/23,
@@ -4206,6 +4550,29 @@ set clashoo_china {
167.189.0.0/16,
167.220.244.0/22,
168.160.0.0/16,
170.33.15.0/24,
170.33.20.0/22,
170.33.24.0/24,
170.33.29.0/24,
170.33.30.0/23,
170.33.32.0/22,
170.33.41.0/24,
170.33.64.0/23,
170.33.66.0/24,
170.33.68.0/23,
170.33.72.0/23,
170.33.76.0/22,
170.33.80.0/22,
170.33.84.0/24,
170.33.104.0/22,
170.33.112.0/23,
170.33.114.0/24,
170.33.129.0/24,
170.33.130.0/23,
170.33.136.0/23,
170.33.138.0/24,
170.33.168.0/23,
170.33.192.0/23,
170.179.0.0/16,
171.8.0.0/13,
171.34.0.0/15,
@@ -4340,7 +4707,6 @@ set clashoo_china {
183.91.52.0/22,
183.91.56.0/24,
183.91.61.0/24,
183.91.63.0/24,
183.91.128.0/22,
183.91.136.0/21,
183.91.144.0/20,
@@ -4384,6 +4750,12 @@ set clashoo_china {
193.119.0.0/19,
194.138.202.0/23,
194.138.245.0/24,
198.11.128.0/20,
198.11.145.0/24,
198.11.146.0/23,
198.11.148.0/22,
198.11.152.0/21,
198.11.160.0/19,
198.175.100.0/22,
198.208.17.0/24,
198.208.19.0/24,
@@ -4754,8 +5126,7 @@ set clashoo_china {
202.143.56.0/21,
202.143.100.0/22,
202.143.104.0/22,
202.144.196.0/23,
202.144.198.0/24,
202.144.196.0/22,
202.146.160.0/20,
202.146.184.0/23,
202.146.186.0/24,
@@ -4795,7 +5166,6 @@ set clashoo_china {
202.164.0.0/20,
202.164.96.0/19,
202.165.176.0/20,
202.165.208.0/21,
202.165.239.0/24,
202.165.240.0/23,
202.165.243.0/24,
@@ -5667,6 +6037,7 @@ set clashoo_china {
203.81.1.0/24,
203.81.2.0/24,
203.81.5.0/24,
203.81.7.0/24,
203.81.16.0/20,
203.81.244.0/22,
203.82.0.0/23,
@@ -5740,17 +6111,7 @@ set clashoo_china {
203.104.32.0/20,
203.105.96.0/19,
203.105.128.0/19,
203.107.0.0/23,
203.107.2.0/24,
203.107.4.0/22,
203.107.8.0/21,
203.107.16.0/20,
203.107.32.0/19,
203.107.69.0/24,
203.107.70.0/23,
203.107.72.0/21,
203.107.80.0/20,
203.107.96.0/19,
203.107.0.0/17,
203.110.160.0/19,
203.110.208.0/20,
203.110.232.0/23,
@@ -5775,8 +6136,7 @@ set clashoo_china {
203.123.58.0/24,
203.128.32.0/19,
203.128.96.0/19,
203.128.225.0/24,
203.128.226.0/23,
203.128.224.0/22,
203.128.228.0/24,
203.128.231.0/24,
203.129.8.0/24,
@@ -5889,6 +6249,7 @@ set clashoo_china {
203.223.16.0/24,
203.223.21.0/24,
203.223.22.0/23,
205.204.96.0/19,
206.109.70.0/23,
206.109.75.0/24,
210.2.0.0/19,
@@ -5944,6 +6305,8 @@ set clashoo_china {
211.144.0.0/14,
211.148.0.0/16,
211.149.0.0/19,
211.149.33.0/24,
211.149.34.0/23,
211.149.48.0/21,
211.149.64.0/21,
211.149.80.0/21,
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
snapshot
both
+1 -1
View File
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-vantage
PKG_VERSION:=1.0.8
PKG_RELEASE:=13
PKG_RELEASE:=14
PKG_LICENSE:=GPL-3.0-or-later
LUCI_TITLE:=Vantage dashboard
@@ -156,6 +156,8 @@ html[data-darkmode="true"] .vt-app {
position: static; z-index: auto; display: block; overflow: visible;
margin: 0; padding: 0; border: 0; border-radius: 0;
background: none; box-shadow: none; color: inherit; text-shadow: none;
width: 100%;
flex-direction: unset;
}
.vt-app :where(header, footer) :where(p, a, span) { line-height: inherit; text-shadow: none; }
.vt-app :where(header) :where(a) { color: inherit; }
@@ -478,8 +480,7 @@ html[data-darkmode="true"] .vt-app {
margin: 2px 0 14px;
}
header::after {
height:0 !important;
height:0 !important;
}
h2, h3{
background-color:transparent;
@@ -2,8 +2,10 @@
'require view';
'require dom';
'require ui';
'require uci';
'require form';
'require rpc';
'require fs';
const callServiceList = rpc.declare({
object: 'service',
@@ -44,27 +46,11 @@ function renderStatus(status) {
])
]);
let serverBadge = status.server
? E('em', {}, [
E('span', { 'style': 'color:green;' }, [
E('strong', {}, _('RUNNING') + ' (PID ' + status.server + ')')
])
])
: E('em', {}, [
E('span', { 'style': 'color:grey;' }, [
E('strong', {}, _('NOT RUNNING'))
])
]);
return E('div', { 'class': 'cbi-map' },
E('fieldset', { 'class': 'cbi-section' }, [
E('p', {}, [
E('strong', {}, _('Client Daemon') + ': '),
clientBadge,
E('span', { 'style': 'margin-left: 20px;' }, [
E('strong', {}, _('Server Daemon') + ': '),
serverBadge
])
clientBadge
])
])
);
@@ -78,7 +64,7 @@ const modeProfiles = [
['manual', _('manual (custom parameters)')]
];
function addCommonAdvancedOptions(s, tabName, isServer) {
function addCommonAdvancedOptions(s, tabName) {
let tab = tabName || 'advanced';
let o;
@@ -89,15 +75,15 @@ function addCommonAdvancedOptions(s, tabName, isServer) {
o.optional = true;
o = s.taboption(tab, form.Value, 'sndwnd', _('Send Window (sndwnd)'),
_('Send window size (number of packets).'));
_('Send window size (number of packets). Default is 4096.'));
o.datatype = 'uinteger';
o.placeholder = isServer ? '4096' : '1024';
o.placeholder = '4096';
o.optional = true;
o = s.taboption(tab, form.Value, 'rcvwnd', _('Receive Window (rcvwnd)'),
_('Receive window size (number of packets).'));
_('Receive window size (number of packets). Default is 4096.'));
o.datatype = 'uinteger';
o.placeholder = isServer ? '1024' : '4096';
o.placeholder = '4096';
o.optional = true;
o = s.taboption(tab, form.Flag, 'fec', _('Enable FEC (fec)'),
@@ -179,31 +165,146 @@ function addCommonAdvancedOptions(s, tabName, isServer) {
o.optional = true;
}
const SERVER_AI_PROMPT = [
'请在当前这台 Linux VPS 服务器上编译并部署 xkcptun 服务端守护进程(作为高速动态网关):',
'',
'### 1. 架构说明',
'- xkcptun 采用统一动态网关模式:服务端监听单个 UDP 端口(默认 9089),客户端透明代理与转发流量均复用此通道。',
'- 源码仓库:https://github.com/liudf0716/xkcptun',
'',
'### 2. 编译与安装步骤',
'1. 安装依赖:',
' - Debian/Ubuntu: apt-get update && apt-get install -y git build-essential cmake libevent-dev pkg-config',
' - CentOS/Rocky/RHEL: yum install -y git gcc gcc-c++ make cmake libevent-devel',
'2. 克隆仓库并编译:',
' git clone https://github.com/liudf0716/xkcptun.git /opt/xkcptun-src',
' cd /opt/xkcptun-src && mkdir -p build && cd build',
' cmake -DCMAKE_BUILD_TYPE=Release .. && make -j$(nproc)',
' cp xkcp_server /usr/local/bin/',
'',
'### 3. 创建服务端配置 (/etc/xkcptun/server.toml)',
'mkdir -p /etc/xkcptun',
'cat << \'EOF\' > /etc/xkcptun/server.toml',
'[global]',
'syslog = true',
'mon_port = 9087',
'',
'[[tunnel]]',
'name = "gateway"',
'local_interface = "0.0.0.0"',
'local_port = 9089',
'key = "YOUR_SHARED_SECRET_KEY" # 请替换为强随机密钥',
'mode = "fast3"',
'mtu = 1350',
'sndwnd = 4096',
'rcvwnd = 4096',
'datashard = 10',
'parityshard = 3',
'fec = 1',
'nodelay = 1',
'interval = 10',
'resend = 2',
'nc = 1',
'lossctrl = 0',
'pacing = 0',
'sockbuf = 16777216',
'keepalive = 10',
'conntimeout = 60',
'EOF',
'',
'### 4. 创建守护服务与启动',
'cat << \'EOF\' > /etc/systemd/system/xkcptun-server.service',
'[Unit]',
'Description=xkcptun High-Speed Server Dynamic Gateway',
'After=network.target',
'',
'[Service]',
'Type=simple',
'User=root',
'ExecStart=/usr/local/bin/xkcp_server -f --syslog -c /etc/xkcptun/server.toml',
'Restart=always',
'RestartSec=3',
'LimitNOFILE=65535',
'',
'[Install]',
'WantedBy=multi-user.target',
'EOF',
'',
'systemctl daemon-reload && systemctl enable --now xkcptun-server',
'sysctl -w net.ipv4.ip_forward=1',
'',
'### 5. 防火墙放行',
'放行 UDP 9089 端口(例如: ufw allow 9089/udp 或 firewall-cmd --add-port=9089/udp --permanent && firewall-cmd --reload)。',
'',
'部署完成后,请告诉我当前服务器公网 IP、UDP 端口以及设置的预共享密钥。'
].join('\n');
function renderPromptTab() {
return E('div', {
'class': 'cbi-section',
'data-tab': 'prompt',
'data-tab-title': _('Server Configuration')
}, [
E('h3', {}, _('Server Deployment AI Prompt')),
E('div', { 'class': 'cbi-section-descr' },
_('Chawrt only functions as the client. Copy this prompt directly to an AI assistant to automatically build and deploy the xkcptun dynamic gateway on your remote VPS.')
),
E('div', { 'style': 'position: relative; margin-top: 15px;' }, [
E('textarea', {
'id': 'xkcptun_server_prompt_area',
'class': 'cbi-input-textarea',
'style': 'width: 100%; height: 260px; font-family: monospace; font-size: 13px; line-height: 1.5; background: #1e1e2e; color: #cdd6f4; border: 1px solid #45475a; border-radius: 6px; padding: 12px; resize: vertical;',
'readonly': 'readonly'
}, [ SERVER_AI_PROMPT ]),
E('div', { 'style': 'margin-top: 10px; display: flex; align-items: center; gap: 15px;' }, [
E('button', {
'class': 'cbi-button cbi-button-action',
'click': function(ev) {
let textarea = document.getElementById('xkcptun_server_prompt_area');
if (!textarea) return;
let copySuccess = function() {
let origText = ev.target.textContent;
ev.target.textContent = '✔ ' + _('Copied to Clipboard!');
ev.target.classList.remove('cbi-button-action');
ev.target.classList.add('cbi-button-positive');
setTimeout(function() {
ev.target.textContent = origText;
ev.target.classList.remove('cbi-button-positive');
ev.target.classList.add('cbi-button-action');
}, 2000);
ui.addNotification(null, E('p', {}, _('Server deployment prompt copied to clipboard!')), 'info');
};
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(textarea.value).then(copySuccess).catch(function() {
textarea.select();
document.execCommand('copy');
copySuccess();
});
} else {
textarea.select();
document.execCommand('copy');
copySuccess();
}
}
}, [ _('📋 Copy Prompt for AI Deployment') ]),
E('span', { 'style': 'color: #888; font-size: 13px;' },
_('Paste this prompt to AI (Claude/ChatGPT/DeepSeek) on your VPS terminal.')
)
])
])
]);
}
return view.extend({
render: function() {
let m, s, o;
m = new form.Map('xkcptun', _('xkcptun'),
_('xkcptun is a high-performance C implementation of kcptun with dynamic destination multi-tunnel unified daemon architecture.'));
m = new form.Map('xkcptun');
m.tabbed = true;
// Status Section
s = m.section(form.NamedSection, '_status');
s.anonymous = true;
s.render = function (section_id) {
let container = E('div', { id: 'service_status' }, _('Collecting status ...'));
L.Poll.add(function () {
return L.resolveDefault(getServiceStatus(), {}).then(function(status) {
let view = document.getElementById('service_status');
if (view) {
dom.content(view, renderStatus(status));
}
});
});
return container;
};
// ===== Client Global Default Settings =====
// ===== Tab 1: Client Global Default Settings =====
s = m.section(form.NamedSection, 'client', 'global', _('Client Global Settings'),
_('Common connection parameters and KCP profile inherited by all client tunnels.'));
s.anonymous = false;
@@ -219,20 +320,21 @@ return view.extend({
o.default = '0';
o.rmempty = false;
o = s.taboption('general', form.Value, 'remote_addr', _('Default Server Address'),
o = s.taboption('general', form.Value, 'remote_addr', _('Server Address'),
_('Remote xkcptun server IP address or domain name.'));
o.datatype = 'host';
o.placeholder = '1.2.3.4';
o.rmempty = false;
o = s.taboption('general', form.Value, 'remote_port', _('Default Server Port'),
o = s.taboption('general', form.Value, 'remote_port', _('Server Port'),
_('Remote xkcptun server UDP listen port.'));
o.datatype = 'port';
o.placeholder = '9089';
o.default = '9089';
o.rmempty = false;
o = s.taboption('general', form.Value, 'key', _('Pre-Shared Key'),
_('Pre-shared key for HMAC-SHA256 dynamic target authentication. Must match the server.'));
_('Pre-shared key for authentication. Must match the server.'));
o.password = true;
o.placeholder = "it's a secret";
o.optional = true;
@@ -244,30 +346,49 @@ return view.extend({
}
o.default = 'fast3';
addCommonAdvancedOptions(s, 'advanced', false);
addCommonAdvancedOptions(s, 'advanced');
// ===== Client Tunnels =====
// ===== Tab 2: Client Tunnels =====
s = m.section(form.GridSection, 'client', _('Client Tunnels'),
_('Configure local client listening ports and dynamic backend target ports. All tunnels share the single unified client daemon.'));
_('Configure local client listening ports and proxy modes. Transparent proxy (redir) handles smart split-routing automatically.'));
s.anonymous = false;
s.addremove = true;
s.sortable = true;
s.nodescriptions = true;
s.addbtntitle = _('Add Client Tunnel');
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Overrides'));
s.handleAdd = function(ev, name) {
let config_name = this.uciconfig || this.map.config;
let section_id = this.map.data.add(config_name, this.sectiontype, name);
this.map.data.set(config_name, section_id, 'proto', 'tcp');
this.map.data.set(config_name, section_id, 'proxy_type', 'redir');
let mapNode = this.getPreviousModalMap();
let prevMap = mapNode ? dom.findClassInstance(mapNode) : this.map;
prevMap.addedSection = section_id;
return this.renderMoreOptionsModal(section_id);
};
// Overview Columns in table
o = s.option(form.Flag, 'enabled', _('Enabled'));
s.tab('general', _('General Settings'));
// --- Table Overview Columns (modalonly = false) ---
o = s.option(form.Flag, 'enabled', _('Enable'));
o.enabled = '1';
o.disabled = '0';
o.default = '1';
o.rmempty = false;
o.editable = true;
o = s.option(form.Value, 'name', _('Tunnel Name'));
o.modalonly = false;
o.placeholder = _('(Auto)');
o = s.option(form.DummyValue, '_proxy_type', _('Proxy Type'));
o.modalonly = false;
o.textvalue = function(section_id) {
let proto = uci.get('xkcptun', section_id, 'proto') || 'tcp';
if (proto === 'udp') return _('Port Forward');
let val = uci.get('xkcptun', section_id, 'proxy_type') || 'redir';
if (val === 'redir') return _('Transparent Proxy (redir)');
if (val === 'socks5') return _('SOCKS5');
return _('Port Forward');
};
o = s.option(form.ListValue, 'proto', _('Protocol'));
o.value('tcp', 'TCP');
@@ -276,19 +397,35 @@ return view.extend({
o.modalonly = false;
o = s.option(form.Value, 'local_port', _('Local Port'));
o.datatype = 'port';
o.placeholder = '12345';
o.modalonly = false;
o.placeholder = '9088';
o = s.option(form.Value, 'target_port', _('Target Port'));
o = s.option(form.DummyValue, '_destination', _('Target / Destination'));
o.modalonly = false;
o.placeholder = '22';
o.textvalue = function(section_id) {
let proto = (this.map && this.map.data ? this.map.data.get('xkcptun', section_id, 'proto') : uci.get('xkcptun', section_id, 'proto')) || 'tcp';
let ptype = (this.map && this.map.data ? this.map.data.get('xkcptun', section_id, 'proxy_type') : uci.get('xkcptun', section_id, 'proxy_type'));
if (proto === 'udp') {
ptype = 'forward';
} else if (!ptype) {
let target = (this.map && this.map.data ? this.map.data.get('xkcptun', section_id, 'target_addr') : uci.get('xkcptun', section_id, 'target_addr'));
ptype = target ? 'forward' : 'redir';
}
if (ptype === 'redir') {
return E('span', { 'style': 'color:#10b981; font-weight:600;' }, _('Dynamic / Smart Route'));
} else if (ptype === 'socks5') {
return E('span', { 'style': 'color:#6366f1; font-weight:600;' }, _('SOCKS5 Proxy'));
} else {
let host = (this.map && this.map.data ? this.map.data.get('xkcptun', section_id, 'target_addr') : uci.get('xkcptun', section_id, 'target_addr')) || '127.0.0.1';
let port = (this.map && this.map.data ? this.map.data.get('xkcptun', section_id, 'target_port') : uci.get('xkcptun', section_id, 'target_port')) || _('(Dynamic/Auto)');
return E('code', {}, host + ':' + port);
}
};
o = s.option(form.Value, 'target_addr', _('Target Host'));
o.modalonly = false;
o.placeholder = '127.0.0.1';
// Modal / Tab: General Settings
o = s.taboption('general', form.Flag, 'enabled', _('Enable Tunnel'));
// --- Modal Dialog Options: General Settings Tab (modalonly = true) ---
o = s.taboption('general', form.Flag, 'enabled', _('Enable Tunnel'),
_('Enable or disable this client tunnel.'));
o.enabled = '1';
o.disabled = '0';
o.default = '1';
@@ -296,214 +433,129 @@ return view.extend({
o.modalonly = true;
o = s.taboption('general', form.Value, 'name', _('Tunnel Name / Alias'),
_('Optional descriptive name for this tunnel (e.g. ssh_tunnel, web_proxy).'));
o.placeholder = 'my_tunnel';
_('Descriptive name for this tunnel (e.g. redir_tunnel, dns_tunnel).'));
o.placeholder = _('(Auto)');
o.optional = true;
o.modalonly = true;
o = s.taboption('general', form.ListValue, 'proto', _('Tunnel Protocol'),
_('Protocol to tunnel: TCP (standard KCP stream) or UDP (direct low-latency datagram forwarding, e.g. for DNS).'));
o.value('tcp', _('TCP (TCP-over-KCP)'));
o.value('udp', _('UDP (Direct UDP Datagram)'));
o = s.taboption('general', form.ListValue, 'proto', _('Protocol'),
_('Protocol to tunnel: TCP (supports Transparent Proxy, Port Forward, SOCKS5) or UDP (Port Forward only, e.g. DNS).'));
o.value('tcp', 'TCP');
o.value('udp', 'UDP');
o.default = 'tcp';
o.rmempty = false;
o.forcewrite = true;
o.modalonly = true;
o = s.taboption('general', form.Value, 'local_interface', _('Local Interface'),
_('Network interface to bind (default: br-lan).'));
o.placeholder = 'br-lan';
o.default = 'br-lan';
// --- Modal Option: Proxy Type for TCP (3 modes available) ---
o = s.taboption('general', form.ListValue, 'proxy_type', _('Proxy Type'),
_('Proxy mode: Transparent Proxy (redir) automatically routes traffic from iptables/nftables/eBPF; Port Forward forwards local port to fixed server port; SOCKS5 provides local SOCKS5 proxy.'));
o.depends('proto', 'tcp');
o.value('redir', _('Transparent Proxy (redir)'));
o.value('forward', _('Port Forward'));
o.value('socks5', _('SOCKS5'));
o.default = 'redir';
o.rmempty = false;
o.forcewrite = true;
o.modalonly = true;
o.write = function(section_id, formvalue) {
return uci.set('xkcptun', section_id, 'proxy_type', formvalue || 'redir');
};
// --- Modal Option: Proxy Type for UDP (Port Forward only) ---
o = s.taboption('general', form.ListValue, '_proxy_type_udp', _('Proxy Type'),
_('UDP protocol in xkcptun only supports fixed-destination Port Forwarding (e.g. DNS tunnel).'));
o.depends('proto', 'udp');
o.value('forward', _('Port Forward (UDP only)'));
o.default = 'forward';
o.rmempty = false;
o.forcewrite = true;
o.modalonly = true;
o.write = function(section_id, formvalue) {
return uci.set('xkcptun', section_id, 'proxy_type', 'forward');
};
o = s.taboption('general', form.Value, 'local_interface', _('Local Interface'),
_('Local network interface to listen on (default: any).'));
o.placeholder = 'any';
o.default = 'any';
o.optional = true;
o.modalonly = true;
o = s.taboption('general', form.Value, 'local_port', _('Local Listen Port'),
_('Local port to listen for incoming application traffic (e.g. 9088).'));
_('Local port on router to listen for traffic (e.g. 12345 for redir, 5353 for DNS).'));
o.datatype = 'port';
o.placeholder = '9088';
o.placeholder = '12345';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'target_port', _('Dynamic Target Port'),
_('Target port on the server to forward traffic to (e.g. 22, 53, 80, 443).'));
o.datatype = 'port';
o.placeholder = '22';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'target_addr', _('Dynamic Target Host'),
_('Target host on the server to connect/forward to (default: 127.0.0.1).'));
o = s.taboption('general', form.Value, 'target_addr', _('Target Host (Port Forward only)'),
_('Destination host on the server side (default: 127.0.0.1). Leave empty for Transparent Proxy.'));
o.datatype = 'host';
o.placeholder = '127.0.0.1';
o.default = '127.0.0.1';
o.optional = true;
o.modalonly = true;
o.depends('proxy_type', 'forward');
o.depends('proto', 'udp');
// Modal / Tab: Advanced Overrides (Optional)
o = s.taboption('advanced', form.Value, 'remote_addr', _('Override Server Address'),
_('Override remote server address for this specific tunnel (defaults to global).'));
o.datatype = 'host';
o.placeholder = _('(Inherit from Global)');
o.optional = true;
o = s.taboption('advanced', form.Value, 'remote_port', _('Override Server Port'),
_('Override remote server port for this specific tunnel (defaults to global).'));
o = s.taboption('general', form.Value, 'target_port', _('Target Port (Port Forward only)'),
_('Destination port on the server side. Leave empty for Transparent Proxy.'));
o.datatype = 'port';
o.placeholder = _('(Inherit from Global)');
o.optional = true;
o = s.taboption('advanced', form.Value, 'key', _('Override Pre-Shared Key'),
_('Override pre-shared authentication key for this specific tunnel (defaults to global).'));
o.password = true;
o.placeholder = _('(Inherit from Global)');
o.optional = true;
// ===== Server Global Settings (Dynamic Gateway) =====
s = m.section(form.NamedSection, 'server', 'global', _('Server Global Settings (Dynamic Gateway)'),
_('Unified xkcptun server dynamic gateway. The server listens on a single UDP port and dynamically routes each client tunnel to its requested backend target.'));
s.anonymous = false;
s.addremove = false;
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
o = s.taboption('general', form.Flag, 'enabled', _('Enable Server Daemon'),
_('Enable unified xkcptun server dynamic gateway daemon.'));
o.enabled = '1';
o.disabled = '0';
o.default = '0';
o.rmempty = false;
o = s.taboption('general', form.Value, 'local_interface', _('Listen Interface'),
_('Network interface to bind (e.g. eth0, br-lan, wan).'));
o.placeholder = 'eth0';
o.default = 'eth0';
o.rmempty = false;
o = s.taboption('general', form.Value, 'local_port', _('Listen Port (UDP)'),
_('UDP port to listen for incoming client KCP connections (default: 9089).'));
o.datatype = 'port';
o.placeholder = '9089';
o.default = '9089';
o.rmempty = false;
o = s.taboption('general', form.Value, 'key', _('Pre-Shared Key'),
_('Pre-shared key for dynamic gateway authentication. Clients must present a valid HMAC token generated with this key.'));
o.password = true;
o.placeholder = "it's a secret";
o.optional = true;
o = s.taboption('general', form.ListValue, 'mode', _('Mode Profile'),
_('KCP performance tuning profile.'));
for (let i = 0; i < modeProfiles.length; i++) {
o.value(modeProfiles[i][0], modeProfiles[i][1]);
}
o.default = 'fast3';
addCommonAdvancedOptions(s, 'advanced', true);
// ===== Server Fallback Tunnels (Optional) =====
s = m.section(form.GridSection, 'server', _('Server Fallback Tunnels (Optional)'),
_('Optional fallback static target rules for legacy clients that do not send dynamic destination headers. Modern dynamic clients do not require any server tunnels configured here.'));
s.anonymous = false;
s.addremove = true;
s.sortable = true;
s.addbtntitle = _('Add Fallback Tunnel');
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
// Overview Columns in table
o = s.option(form.Flag, 'enabled', _('Enabled'));
o.enabled = '1';
o.disabled = '0';
o.default = '1';
o.rmempty = false;
o.editable = true;
o = s.option(form.Value, 'name', _('Tunnel Name'));
o.modalonly = false;
o.placeholder = _('(Auto)');
o = s.option(form.Value, 'local_interface', _('Interface'));
o.modalonly = false;
o.placeholder = 'eth0';
o = s.option(form.Value, 'local_port', _('Listen Port'));
o.modalonly = false;
o.placeholder = '9089';
o = s.option(form.Value, 'remote_addr', _('Fallback Target Host'));
o.modalonly = false;
o.placeholder = '127.0.0.1';
o = s.option(form.Value, 'remote_port', _('Fallback Target Port'));
o.modalonly = false;
o.placeholder = '443';
o = s.option(form.ListValue, 'mode', _('Mode'));
o.modalonly = false;
for (let i = 0; i < modeProfiles.length; i++) {
o.value(modeProfiles[i][0], modeProfiles[i][0]);
}
o = s.option(form.Flag, 'fec', _('FEC'));
o.modalonly = false;
o.default = '1';
o.editable = true;
// Modal / Tab: General Settings
o = s.taboption('general', form.Flag, 'enabled', _('Enable Tunnel'));
o.enabled = '1';
o.disabled = '0';
o.default = '1';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'name', _('Tunnel Name / Alias'),
_('Optional descriptive name for this tunnel (e.g. main_srv).'));
o.placeholder = 'srv_tunnel';
o.placeholder = _('(Dynamic/Auto)');
o.optional = true;
o.modalonly = true;
o.depends('proxy_type', 'forward');
o.depends('proto', 'udp');
o = s.taboption('general', form.Value, 'local_interface', _('Local Interface'),
_('Network interface to bind (e.g. eth0, br-lan, wan).'));
o.placeholder = 'eth0';
o.default = 'eth0';
o.rmempty = false;
o.modalonly = true;
// ===== Tab 3: Server Configuration (AI Prompt) =====
let s_prompt = m.section(form.NamedSection, '_server_prompt', 'prompt', _('Server Configuration'));
s_prompt.load = function() { return Promise.resolve(); };
s_prompt.parse = function() { return Promise.resolve(); };
s_prompt.render = function() {
return Promise.resolve(renderPromptTab());
};
o = s.taboption('general', form.Value, 'local_port', _('Local Listen Port (UDP)'),
_('UDP port to listen for incoming KCP connections from clients.'));
o.datatype = 'port';
o.placeholder = '9089';
o.rmempty = false;
o.modalonly = true;
return m.render().then(function(mapNode) {
let customStyle = E('style', {}, [
'.cbi-tblsection { overflow-x: auto !important; }',
'.cbi-section-table .cbi-section-actions { white-space: nowrap !important; text-align: right !important; min-width: 140px !important; width: 1% !important; }',
'.cbi-section-table .cbi-section-actions > div { display: inline-flex !important; align-items: center !important; justify-content: flex-end !important; gap: 4px !important; }'
]);
o = s.taboption('general', form.Value, 'remote_addr', _('Fallback Target Host'),
_('Default target host if client did not specify a dynamic destination (default: 127.0.0.1).'));
o.datatype = 'host';
o.default = '127.0.0.1';
o.placeholder = '127.0.0.1';
o.rmempty = false;
o.modalonly = true;
document.addEventListener('cbi-tab-active', function() {
window.dispatchEvent(new Event('resize'));
});
o = s.taboption('general', form.Value, 'remote_port', _('Fallback Target Port'),
_('Default target port if client did not specify a dynamic destination (e.g. 443, 22).'));
o.datatype = 'port';
o.placeholder = '443';
o.rmempty = false;
o.modalonly = true;
let statusEl = E('fieldset', { 'class': 'cbi-section', 'style': 'margin-bottom: 15px;' }, [
E('legend', {}, _('Service Status')),
E('div', { 'id': 'service_status' }, _('Collecting status ...'))
]);
o = s.taboption('general', form.ListValue, 'mode', _('Mode Profile'),
_('KCP performance tuning profile.'));
for (let i = 0; i < modeProfiles.length; i++) {
o.value(modeProfiles[i][0], modeProfiles[i][1]);
}
o.default = 'fast3';
o.modalonly = true;
L.Poll.add(function () {
return L.resolveDefault(getServiceStatus(), {}).then(function(status) {
let view = document.getElementById('service_status');
if (view) {
dom.content(view, renderStatus(status));
}
});
});
addCommonAdvancedOptions(s, 'advanced', true);
return E('div', {}, [
customStyle,
E('h2', {}, _('xkcptun')),
E('div', { 'class': 'cbi-map-descr' },
_('xkcptun is a high-performance C implementation of kcptun with dynamic destination multi-tunnel unified daemon architecture.')
),
statusEl,
mapNode
]);
});
},
return m.render();
handleSaveApply: function(ev, mode) {
return this.super('handleSaveApply', [ev, mode]).then(function() {
return fs.exec_direct('/etc/init.d/xkcptun', ['restart']);
});
}
});
+110 -2
View File
@@ -35,7 +35,7 @@ msgid "Server Daemon"
msgstr "服务端守护进程"
msgid "Client Global Settings"
msgstr "客户端全局默认设置"
msgstr "客户端全局配置"
msgid "Common connection parameters and KCP profile inherited by all client tunnels."
msgstr "所有客户端隧道共享继承的公共连接参数及 KCP 性能配置。"
@@ -47,7 +47,7 @@ msgid "Default Server Port"
msgstr "默认服务器端口"
msgid "Client Tunnels"
msgstr "客户端隧道"
msgstr "客户端隧道配置"
msgid "Configure local client listening ports and dynamic backend target ports. All tunnels share the single unified client daemon."
msgstr "配置客户端本地监听端口与远端动态后端目标端口。所有隧道共享单一统一守护进程。"
@@ -427,3 +427,111 @@ msgstr "UDP 套接字接收与发送缓冲区大小,单位字节。默认为 1
msgid "Unified xkcptun server dynamic gateway. The server listens on a single UDP port and dynamically routes each client tunnel to its requested backend target."
msgstr "统一 xkcptun 服务端动态网关。服务端在单个 UDP 端口上监听,并动态将每个客户端隧道路由到其请求的后端目标。"
msgid "Proxy Type"
msgstr "代理类型"
msgid "Transparent Proxy (redir)"
msgstr "透明代理 (redir)"
msgid "Port Forward"
msgstr "端口转发"
msgid "SOCKS5"
msgstr "SOCKS5 代理"
msgid "(Dynamic/Auto)"
msgstr "(动态识别/自动)"
msgid "Configure local client listening ports and proxy modes. Transparent proxy (redir) handles smart split-routing automatically."
msgstr "配置客户端本地监听端口和代理模式。透明代理 (redir) 会自动配合智能分流进行流量转发。"
msgid "Proxy mode: Transparent Proxy (redir) automatically routes traffic from iptables/nftables; Port Forward forwards local port to fixed server port; SOCKS5 provides local SOCKS5 proxy."
msgstr "代理模式:透明代理 (redir) 自动处理来自 iptables/nftables 智能分流的流量;端口转发将本地端口转至固定服务器端口;SOCKS5 提供本地 SOCKS5 代理。"
msgid "Protocol to tunnel: TCP (accelerated KCP stream) or UDP (low-latency datagram forwarding, e.g. DNS)."
msgstr "加速协议:TCP(高速 KCP 流式加速)或 UDP(低延迟直发数据报文,如 DNS)。"
msgid "Local Listen Port"
msgstr "本地监听端口"
msgid "Local port on router to listen for traffic (e.g. 12345 for redir, 5353 for DNS)."
msgstr "路由器上监听流量的本地端口(例如 redir 透明代理使用 12345,DNS 加速使用 5353)。"
msgid "Target Host (Port Forward only)"
msgstr "目标主机(仅限端口转发)"
msgid "Destination host on the server side (default: 127.0.0.1). Leave empty for Transparent Proxy."
msgstr "远端服务器侧的目标主机(默认:127.0.0.1)。透明代理模式下留空。"
msgid "Target Port (Port Forward only)"
msgstr "目标端口(仅限端口转发)"
msgid "Destination port on the server side. Leave empty for Transparent Proxy."
msgstr "远端服务器侧的目标端口。透明代理模式下留空。"
msgid "Pre-shared key for authentication. Must match the server."
msgstr "预共享身份验证密钥。必须与服务器一致。"
msgid "Server Deployment AI Prompt"
msgstr "服务端 AI 部署指令(Prompt)"
msgid "Chawrt only functions as the client. Copy this prompt directly to an AI assistant to automatically build and deploy the xkcptun dynamic gateway on your remote VPS."
msgstr "Chawrt 仅作为加速客户端运行。复制此指令直接发送给 AI 助手(Claude/ChatGPT/DeepSeek 等),即可在远端 Linux VPS 上自动编译并运行 xkcptun 动态加速网关。"
msgid "📋 Copy Prompt for AI Deployment"
msgstr "📋 一键复制 AI 部署指令"
msgid "Copied to Clipboard!"
msgstr "已成功复制到剪贴板!"
msgid "Server deployment prompt copied to clipboard!"
msgstr "服务端部署指令已成功复制到剪贴板!"
msgid "Paste this prompt to AI (Claude/ChatGPT/DeepSeek) on your VPS terminal."
msgstr "在远端 VPS 或 AI 终端中粘贴此指令,让 AI 自主完成编译部署。"
msgid "Server AI Deployment"
msgstr "服务端 AI 部署指令"
msgid "Server Configuration"
msgstr "服务端配置"
msgid "Service Status"
msgstr "服务运行状态"
msgid "Dynamic / Smart Route"
msgstr "动态智能分流"
msgid "Target / Destination"
msgstr "目标后端"
msgid "Enable or disable this client tunnel."
msgstr "启用或禁用此客户端隧道。"
msgid "Local network interface to listen on (default: any)."
msgstr "本地监听的网络接口(默认:any 全部网络接口)。"
msgid "Port Forward (UDP only)"
msgstr "端口转发 (仅支持 UDP)"
msgid "UDP protocol in xkcptun only supports fixed-destination Port Forwarding (e.g. DNS tunnel)."
msgstr "xkcptun 的 UDP 协议仅支持固定目标的端口转发模式(如 DNS 隧道加速)。"
msgid "Descriptive name for this tunnel (e.g. redir_tunnel, dns_tunnel)."
msgstr "此隧道的可选描述名称(例如 redir_tunnel、dns_tunnel)。"
msgid "Protocol to tunnel: TCP (supports Transparent Proxy, Port Forward, SOCKS5) or UDP (Port Forward only, e.g. DNS)."
msgstr "隧道传输协议:TCP(支持透明代理、端口转发、SOCKS5)或 UDP(仅支持端口转发,如 DNS 加速)。"
msgid "Proxy mode: Transparent Proxy (redir) automatically routes traffic from iptables/nftables/eBPF; Port Forward forwards local port to fixed server port; SOCKS5 provides local SOCKS5 proxy."
msgstr "代理类型:透明代理(redir)通过 iptables/nftables/eBPF 自动分流;端口转发将本地端口直接映射到远端固定服务;SOCKS5 提供标准本地 SOCKS5 代理。"
msgid "Receive window size (number of packets). Default is 4096."
msgstr "接收窗口大小(数据包数量)。默认值为 4096。"
msgid "Send window size (number of packets). Default is 4096."
msgstr "发送窗口大小(数据包数量)。默认值为 4096。"
msgid "SOCKS5 Proxy"
msgstr "SOCKS5 代理"
+2 -2
View File
@@ -14,8 +14,8 @@ MISE_HASH_x86_64:=3832f39c325e343f81fe3d92b2447c5d1a5eea1bc85092bb7b6c2580622264
MISE_HASH_aarch64:=06186cfbfe947049b21d58575fb0ea800cc26ed1375f20f4b678cb3a9d679437
PKG_NAME:=mise
PKG_VERSION:=2026.10.14
PKG_RELEASE:=38
PKG_VERSION:=2026.10.15
PKG_RELEASE:=39
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION)-linux-$(MISE_ARCH)-musl.tar.gz
PKG_SOURCE_URL:=https://github.com/jdx/mise/releases/download/v$(PKG_VERSION)/
PKG_HASH:=skip
+1 -1
View File
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=xkcptun
PKG_VERSION:=1.09.561
PKG_RELEASE:=5
PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/liudf0716/xkcptun/tar.gz/$(PKG_VERSION)?
+10
View File
@@ -56,6 +56,16 @@ append_toml_tunnel() {
[ "${enabled:-1}" -eq 1 ] || return 1
[ -n "$local_port" ] || return 1
if [ "$proto" = "udp" ]; then
proxy_type="forward"
elif [ -z "$proxy_type" ]; then
if [ -n "$target_port" ]; then
proxy_type="forward"
else
proxy_type="redir"
fi
fi
cat << EOF >> "$outfile"
[[tunnel]]