mirror of https://github.com/kenzok8/small.git
update 2025-01-16 12:14:51
This commit is contained in:
parent
beda6dcae2
commit
278fc2c3d1
|
@ -4,6 +4,7 @@ config fchomo 'config'
|
|||
option common_tcpport '20-21,22,53,80,110,143,443,465,853,873,993,995,5222,8080,8443,9418'
|
||||
option common_udpport '20-21,22,53,80,110,143,443,853,993,995,8080,8443,9418'
|
||||
option stun_port '3478,19302'
|
||||
option turn_port '5349'
|
||||
option tun_name 'hmtun0'
|
||||
option tun_addr4 '198.19.0.1/30'
|
||||
option tun_addr6 'fdfe:dcba:9877::1/126'
|
||||
|
@ -19,8 +20,8 @@ config fchomo 'resources'
|
|||
option auto_update '0'
|
||||
|
||||
config fchomo 'routing'
|
||||
option routing_tcpport 'common'
|
||||
option routing_udpport 'common'
|
||||
list routing_tcpport 'common_tcpport'
|
||||
list routing_udpport 'common_udpport'
|
||||
option routing_mode 'bypass_cn'
|
||||
|
||||
config fchomo 'global'
|
||||
|
|
|
@ -4,6 +4,7 @@ config fchomo 'config'
|
|||
option common_tcpport '20-21,22,53,80,110,143,443,465,853,873,993,995,5222,8080,8443,9418'
|
||||
option common_udpport '20-21,22,53,80,110,143,443,853,993,995,8080,8443,9418'
|
||||
option stun_port '3478,19302'
|
||||
option turn_port '5349'
|
||||
option tun_name 'hmtun0'
|
||||
option tun_addr4 '198.19.0.1/30'
|
||||
option tun_addr6 'fdfe:dcba:9877::1/126'
|
||||
|
@ -19,8 +20,8 @@ config fchomo 'resources'
|
|||
option auto_update '0'
|
||||
|
||||
config fchomo 'routing'
|
||||
option routing_tcpport 'common'
|
||||
option routing_udpport 'common'
|
||||
list routing_tcpport 'common_tcpport'
|
||||
list routing_udpport 'common_udpport'
|
||||
|
||||
config fchomo 'global'
|
||||
option mode 'rule'
|
||||
|
|
|
@ -127,6 +127,14 @@ return baseclass.extend({
|
|||
//['relay', _('Relay')], // Deprecated
|
||||
],
|
||||
|
||||
routing_port_type: [
|
||||
['all', _('All ports')],
|
||||
['common_tcpport', _('Common ports only (bypass P2P traffic)')],
|
||||
['common_udpport', _('Common ports only (bypass P2P traffic)')],
|
||||
['stun_port', _('STUN ports')],
|
||||
['turn_port', _('TURN ports')],
|
||||
],
|
||||
|
||||
rules_type: [
|
||||
['DOMAIN'],
|
||||
['DOMAIN-SUFFIX'],
|
||||
|
@ -757,14 +765,24 @@ return baseclass.extend({
|
|||
}
|
||||
};
|
||||
|
||||
if (value && !value.match(/common(_stun)?/)) {
|
||||
let ports = [];
|
||||
for (let i of value.split(',')) {
|
||||
if (!stubValidator.apply('port', i) && !stubValidator.apply('portrange', i))
|
||||
return _('Expecting: %s').format(_('valid port value'));
|
||||
if (ports.includes(i))
|
||||
return _('Port %s alrealy exists!').format(i);
|
||||
ports = ports.concat(i);
|
||||
const arr = value.trim().split(' ');
|
||||
|
||||
if (arr.length === 0 || arr.includes(''))
|
||||
return _('Expecting: %s').format(_('non-empty value'));
|
||||
|
||||
if (arr.length > 1 && arr.includes('all'))
|
||||
return _('Expecting: %s').format(_('If All ports is selected, uncheck others'));
|
||||
|
||||
for (let custom of arr) {
|
||||
if (!hm.routing_port_type.map(e => e[0]).includes(custom)) {
|
||||
let ports = [];
|
||||
for (let i of custom.split(',')) {
|
||||
if (!stubValidator.apply('port', i) && !stubValidator.apply('portrange', i))
|
||||
return _('Expecting: %s').format(_('valid port value'));
|
||||
if (ports.includes(i))
|
||||
return _('Port %s alrealy exists!').format(i);
|
||||
ports = ports.concat(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -697,16 +697,22 @@ return view.extend({
|
|||
so.default = so.disabled;
|
||||
so.modalonly = true;
|
||||
|
||||
// need deprecated
|
||||
so = ss.taboption('field_override', widgets.DeviceSelect, 'interface_name', _('Bind interface'),
|
||||
_('Bind outbound interface.</br>') +
|
||||
_('Priority: Proxy Node > Proxy Group > Global.'));
|
||||
_('Priority: Proxy Node > Proxy Group > Global.') + '</br>' +
|
||||
_('Option will soon be deprecated, please use the same option in proxy node.'));
|
||||
so.multiple = false;
|
||||
so.noaliases = true;
|
||||
so.readonly = true;
|
||||
so.modalonly = true;
|
||||
|
||||
// need deprecated
|
||||
so = ss.taboption('field_override', form.Value, 'routing_mark', _('Routing mark'),
|
||||
_('Priority: Proxy Node > Proxy Group > Global.'));
|
||||
_('Priority: Proxy Node > Proxy Group > Global.') + '</br>' +
|
||||
_('Option will soon be deprecated, please use the same option in proxy node.'));
|
||||
so.datatype = 'uinteger';
|
||||
so.readonly = true;
|
||||
so.modalonly = true;
|
||||
|
||||
/* Health fields */
|
||||
|
|
|
@ -716,18 +716,22 @@ return view.extend({
|
|||
/* Routing control */
|
||||
ss.tab('routing_control', _('Routing Control'));
|
||||
|
||||
so = ss.taboption('routing_control', form.Value, 'routing_tcpport', _('Routing ports') + ' (TCP)',
|
||||
so = ss.taboption('routing_control', form.MultiValue, 'routing_tcpport', _('Routing ports') + ' (TCP)',
|
||||
_('Specify target ports to be proxied. Multiple ports must be separated by commas.'));
|
||||
so.value('', _('All ports'));
|
||||
so.value('common', _('Common ports only (bypass P2P traffic)'));
|
||||
so.value('common_stun', _('Common and STUN ports'));
|
||||
so.create = true;
|
||||
hm.routing_port_type.forEach((res) => {
|
||||
if (res[0] !== 'common_udpport')
|
||||
so.value.apply(so, res);
|
||||
})
|
||||
so.validate = L.bind(hm.validateCommonPort, so);
|
||||
|
||||
so = ss.taboption('routing_control', form.Value, 'routing_udpport', _('Routing ports') + ' (UDP)',
|
||||
so = ss.taboption('routing_control', form.MultiValue, 'routing_udpport', _('Routing ports') + ' (UDP)',
|
||||
_('Specify target ports to be proxied. Multiple ports must be separated by commas.'));
|
||||
so.value('', _('All ports'));
|
||||
so.value('common', _('Common ports only (bypass P2P traffic)'));
|
||||
so.value('common_stun', _('Common and STUN ports'));
|
||||
so.create = true;
|
||||
hm.routing_port_type.forEach((res) => {
|
||||
if (res[0] !== 'common_tcpport')
|
||||
so.value.apply(so, res);
|
||||
})
|
||||
so.validate = L.bind(hm.validateCommonPort, so);
|
||||
|
||||
so = ss.taboption('routing_control', form.ListValue, 'routing_mode', _('Routing mode'),
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -4,6 +4,7 @@ config fchomo 'config'
|
|||
option common_tcpport '20-21,22,53,80,110,143,443,465,853,873,993,995,5222,8080,8443,9418'
|
||||
option common_udpport '20-21,22,53,80,110,143,443,853,993,995,8080,8443,9418'
|
||||
option stun_port '3478,19302'
|
||||
option turn_port '5349'
|
||||
option tun_name 'hmtun0'
|
||||
option tun_addr4 '198.19.0.1/30'
|
||||
option tun_addr6 'fdfe:dcba:9877::1/126'
|
||||
|
@ -19,8 +20,8 @@ config fchomo 'resources'
|
|||
option auto_update '0'
|
||||
|
||||
config fchomo 'routing'
|
||||
option routing_tcpport 'common'
|
||||
option routing_udpport 'common'
|
||||
list routing_tcpport 'common_tcpport'
|
||||
list routing_udpport 'common_udpport'
|
||||
|
||||
config fchomo 'global'
|
||||
option mode 'rule'
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
const common_tcpport = uci.get(cfgname, 'config', 'common_tcpport') || '20-21,22,53,80,110,143,443,465,853,873,993,995,5222,8080,8443,9418',
|
||||
common_udpport = uci.get(cfgname, 'config', 'common_udpport') || '20-21,22,53,80,110,143,443,853,993,995,8080,8443,9418',
|
||||
stun_port = uci.get(cfgname, 'config', 'stun_port') || '3478,19302',
|
||||
turn_port = uci.get(cfgname, 'config', 'turn_port') || '5349',
|
||||
tun_name = uci.get(cfgname, 'config', 'tun_name') || 'hmtun0',
|
||||
self_mark = uci.get(cfgname, 'config', 'self_mark') || '200',
|
||||
tproxy_mark = resolve_mark(uci.get(cfgname, 'config', 'tproxy_mark') || '201'),
|
||||
|
@ -79,22 +80,31 @@
|
|||
|
||||
let client_enabled, routing_tcpport, routing_udpport, routing_mode, routing_domain, routing_dscp_mode, routing_dscp_list;
|
||||
client_enabled = uci.get(cfgname, 'routing', 'client_enabled') || '0',
|
||||
routing_tcpport = uci.get(cfgname, 'routing', 'routing_tcpport') || null;
|
||||
routing_udpport = uci.get(cfgname, 'routing', 'routing_udpport') || null;
|
||||
routing_tcpport = uci.get(cfgname, 'routing', 'routing_tcpport') || [];
|
||||
routing_udpport = uci.get(cfgname, 'routing', 'routing_udpport') || [];
|
||||
routing_mode = uci.get(cfgname, 'routing', 'routing_mode') || null;
|
||||
routing_domain = uci.get(cfgname, 'routing', 'routing_domain') || '0';
|
||||
routing_dscp_mode = uci.get(cfgname, 'routing', 'routing_dscp_mode') || null;
|
||||
routing_dscp_list = uci.get(cfgname, 'routing', 'routing_dscp_list') || null;
|
||||
|
||||
if (routing_tcpport === 'common')
|
||||
routing_tcpport = common_tcpport;
|
||||
else if (routing_tcpport === 'common_stun')
|
||||
routing_tcpport = `${common_tcpport},${stun_port}`;
|
||||
function resolve_routing_port(arr) {
|
||||
if (isEmpty(arr))
|
||||
return null;
|
||||
|
||||
if (routing_udpport === 'common')
|
||||
routing_udpport = common_udpport;
|
||||
else if (routing_udpport === 'common_stun')
|
||||
routing_udpport = `${common_udpport},${stun_port}`;
|
||||
if ('all' in arr)
|
||||
return null;
|
||||
|
||||
return join(',', map(arr, (val) => {
|
||||
if (val === 'common_tcpport') return common_tcpport;
|
||||
if (val === 'common_udpport') return common_udpport;
|
||||
if (val === 'stun_port') return stun_port;
|
||||
if (val === 'turn_port') return turn_port;
|
||||
return val;
|
||||
}));
|
||||
}
|
||||
|
||||
routing_tcpport = resolve_routing_port(routing_tcpport);
|
||||
routing_udpport = resolve_routing_port(routing_udpport);
|
||||
|
||||
if (!routing_mode)
|
||||
routing_domain = '0';
|
||||
|
|
|
@ -49,6 +49,7 @@ const ucisniff = 'sniff',
|
|||
const common_tcpport = uci.get(uciconf, ucifchm, 'common_tcpport') || '20-21,22,53,80,110,143,443,465,853,873,993,995,5222,8080,8443,9418',
|
||||
common_udpport = uci.get(uciconf, ucifchm, 'common_udpport') || '20-21,22,53,80,110,143,443,853,993,995,8080,8443,9418',
|
||||
stun_port = uci.get(uciconf, ucifchm, 'stun_port') || '3478,19302',
|
||||
turn_port = uci.get(uciconf, ucifchm, 'turn_port') || '5349',
|
||||
tun_name = uci.get(uciconf, ucifchm, 'tun_name') || 'hmtun0',
|
||||
tun_addr4 = uci.get(uciconf, ucifchm, 'tun_addr4') || '198.19.0.1/30',
|
||||
tun_addr6 = uci.get(uciconf, ucifchm, 'tun_addr6') || 'fdfe:dcba:9877::1/126',
|
||||
|
@ -72,8 +73,8 @@ const listen_interfaces = uci.get(uciconf, uciroute, 'listen_interfaces') || nul
|
|||
lan_proxy_mac_addrs = uci.get(uciconf, uciroute, 'lan_proxy_mac_addrs') || null,
|
||||
proxy_router = (uci.get(uciconf, uciroute, 'proxy_router') === '0') ? null : true,
|
||||
client_enabled = uci.get(uciconf, uciroute, 'client_enabled') || '0',
|
||||
routing_tcpport = uci.get(uciconf, uciroute, 'routing_tcpport') || null,
|
||||
routing_udpport = uci.get(uciconf, uciroute, 'routing_udpport') || null,
|
||||
routing_tcpport = uci.get(uciconf, uciroute, 'routing_tcpport') || [],
|
||||
routing_udpport = uci.get(uciconf, uciroute, 'routing_udpport') || [],
|
||||
routing_mode = uci.get(uciconf, uciroute, 'routing_mode') || null,
|
||||
routing_domain = strToBool(uci.get(uciconf, uciroute, 'routing_domain')),
|
||||
routing_dscp_mode = uci.get(uciconf, uciroute, 'routing_dscp_mode') || null,
|
||||
|
@ -649,8 +650,8 @@ uci.foreach(uciconf, ucipgrp, (cfg) => {
|
|||
strategy: cfg.strategy,
|
||||
// Override fields
|
||||
"disable-udp": strToBool(cfg.disable_udp) || false,
|
||||
"interface-name": cfg.interface_name,
|
||||
"routing-mark": strToInt(cfg.routing_mark) || null,
|
||||
"interface-name": cfg.interface_name, // need deprecated
|
||||
"routing-mark": strToInt(cfg.routing_mark) || null, // need deprecated
|
||||
// Health fields
|
||||
url: cfg.url,
|
||||
interval: cfg.url ? durationToSecond(cfg.interval) ?? 600 : null,
|
||||
|
|
|
@ -12,4 +12,26 @@ if [ -n "$default_proxy" ]; then
|
|||
EOF
|
||||
fi
|
||||
|
||||
for option in routing_tcpport routing_udpport; do
|
||||
value=$(uci -q get fchomo.routing.$option)
|
||||
if [ -z "$value" ]; then
|
||||
uci -q batch <<-EOF >"/dev/null"
|
||||
delete fchomo.routing.$option
|
||||
add_list fchomo.routing.$option="all"
|
||||
EOF
|
||||
elif [ "$value" = "common" ]; then
|
||||
uci -q batch <<-EOF >"/dev/null"
|
||||
delete fchomo.routing.$option
|
||||
add_list fchomo.routing.$option="${option/routing/common}"
|
||||
EOF
|
||||
elif [ "$value" = "common_stun" ]; then
|
||||
uci -q batch <<-EOF >"/dev/null"
|
||||
delete fchomo.routing.$option
|
||||
add_list fchomo.routing.$option="${option/routing/common}"
|
||||
add_list fchomo.routing.$option="stun_port"
|
||||
EOF
|
||||
fi
|
||||
done
|
||||
commit fchomo
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
|||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git
|
||||
PKG_SOURCE_DATE:=2025-01-07
|
||||
PKG_SOURCE_VERSION:=c7661d7765fb62acbc6571e76f2922083b0b2b04
|
||||
PKG_MIRROR_HASH:=1a306482c459557995dabbef2fa1007d00324095bc59165d939a97074e731c42
|
||||
PKG_SOURCE_DATE:=2025-01-15
|
||||
PKG_SOURCE_VERSION:=192d769f7587f333a3a0798e2f121be441a95c16
|
||||
PKG_MIRROR_HASH:=06654590011c34d5a4ad5aeec0568237c0660f60d611ebbf4b3cd285ac149730
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_MAINTAINER:=Joseph Mory <morytyann@gmail.com>
|
||||
|
@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host
|
|||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16
|
||||
|
||||
PKG_BUILD_VERSION:=alpha-c7661d7
|
||||
PKG_BUILD_VERSION:=alpha-192d769
|
||||
PKG_BUILD_TIME:=$(shell date -u -Iseconds)
|
||||
|
||||
GO_PKG:=github.com/metacubex/mihomo
|
||||
|
|
|
@ -12,13 +12,13 @@ PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
|||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
GEOIP_VER:=202501090053
|
||||
GEOIP_VER:=202501160051
|
||||
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
|
||||
define Download/geoip
|
||||
URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
|
||||
URL_FILE:=geoip.dat
|
||||
FILE:=$(GEOIP_FILE)
|
||||
HASH:=bc7c2a0c8a8265982e58938fc4082db10f8be9cfdb51a98d5093acea7f8bb7f1
|
||||
HASH:=fff7d5834491f2cd0cc9d895405d3b8896b71d60bd1f54f4f11f76441d2619b4
|
||||
endef
|
||||
|
||||
GEOSITE_VER:=20241221105938
|
||||
|
|
Loading…
Reference in New Issue