mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-02 20:43:56 +08:00
💋 Sync 2026-10-19 19:21:39
This commit is contained in:
1 parent
67d3c8f8a8
commit
33357e094c
14 files changed
+896
-325
No files matched your search
+2
-2
@@ -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.
Binary file not shown.
@@ -1 +1 @@
|
||||
snapshot
|
||||
both
|
||||
@@ -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']);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -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
@@ -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
@@ -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)?
|
||||
|
||||
@@ -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]]
|
||||
|
||||
Reference in new issue
Block a user