mirror of
https://github.com/kenzok8/small-package.git
synced 2026-02-07 23:27:13 +08:00
update 2023-04-02 09:22:12
This commit is contained in:
@@ -10,12 +10,12 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=haproxy
|
PKG_NAME:=haproxy
|
||||||
PKG_VERSION:=2.6.11
|
PKG_VERSION:=2.6.12
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://www.haproxy.org/download/2.6/src
|
PKG_SOURCE_URL:=https://www.haproxy.org/download/2.6/src
|
||||||
PKG_HASH:=e0bc430ac407747b077bc88ee6922b4616fa55a9e0f3ec84438dfb055eb9a715
|
PKG_HASH:=58f9edb26bf3288f4b502658399281cc5d6478468bd178eafe579c8f41895854
|
||||||
|
|
||||||
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
|
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
|
||||||
Christian Lachner <gladiac@gmail.com>
|
Christian Lachner <gladiac@gmail.com>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
CLONEURL=https://git.haproxy.org/git/haproxy-2.6.git
|
CLONEURL=https://git.haproxy.org/git/haproxy-2.6.git
|
||||||
BASE_TAG=v2.6.11
|
BASE_TAG=v2.6.12
|
||||||
TMP_REPODIR=tmprepo
|
TMP_REPODIR=tmprepo
|
||||||
PATCHESDIR=patches
|
PATCHESDIR=patches
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-homeproxy
|
PKG_NAME:=luci-app-homeproxy
|
||||||
PKG_VERSION:=usertesting-0328
|
PKG_VERSION:=dev-230402
|
||||||
|
|
||||||
LUCI_TITLE:=The modern ImmortalWrt proxy platform for ARM64/AMD64
|
LUCI_TITLE:=The modern ImmortalWrt proxy platform for ARM64/AMD64
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
@@ -18,7 +18,12 @@ LUCI_DEPENDS:= \
|
|||||||
define Package/luci-app-homeproxy/conffiles
|
define Package/luci-app-homeproxy/conffiles
|
||||||
/etc/config/homeproxy
|
/etc/config/homeproxy
|
||||||
/etc/homeproxy/certs/
|
/etc/homeproxy/certs/
|
||||||
/etc/homeproxy/resources/
|
/etc/homeproxy/resources/geoip.db
|
||||||
|
/etc/homeproxy/resources/geoip.ver
|
||||||
|
/etc/homeproxy/resources/geosite.db
|
||||||
|
/etc/homeproxy/resources/geosite.ver
|
||||||
|
/etc/homeproxy/resources/direct_list.txt
|
||||||
|
/etc/homeproxy/resources/proxy_list.txt
|
||||||
endef
|
endef
|
||||||
|
|
||||||
include $(TOPDIR)/feeds/luci/luci.mk
|
include $(TOPDIR)/feeds/luci/luci.mk
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
'require view';
|
'require view';
|
||||||
|
|
||||||
'require homeproxy as hp';
|
'require homeproxy as hp';
|
||||||
|
'require tools.firewall as fwtool';
|
||||||
'require tools.widgets as widgets';
|
'require tools.widgets as widgets';
|
||||||
|
|
||||||
var callServiceList = rpc.declare({
|
var callServiceList = rpc.declare({
|
||||||
@@ -217,6 +218,7 @@ return view.extend({
|
|||||||
|
|
||||||
o = s.taboption('routing', form.ListValue, 'proxy_mode', _('Proxy mode'));
|
o = s.taboption('routing', form.ListValue, 'proxy_mode', _('Proxy mode'));
|
||||||
o.value('redirect', _('Redirect TCP'));
|
o.value('redirect', _('Redirect TCP'));
|
||||||
|
if (features.hp_has_tproxy)
|
||||||
o.value('redirect_tproxy', _('Redirect TCP + TProxy UDP'));
|
o.value('redirect_tproxy', _('Redirect TCP + TProxy UDP'));
|
||||||
if (features.hp_has_tun) {
|
if (features.hp_has_tun) {
|
||||||
o.value('redirect_tun', _('Redirect TCP + Tun UDP'));
|
o.value('redirect_tun', _('Redirect TCP + Tun UDP'));
|
||||||
@@ -824,20 +826,6 @@ return view.extend({
|
|||||||
/* LAN IP policy start */
|
/* LAN IP policy start */
|
||||||
ss.tab('lan_ip_policy', _('LAN IP Policy'));
|
ss.tab('lan_ip_policy', _('LAN IP Policy'));
|
||||||
|
|
||||||
var ipaddrs = {}, ip6addrs = {};
|
|
||||||
Object.keys(hosts).forEach(function(mac) {
|
|
||||||
var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4);
|
|
||||||
|
|
||||||
for (var i = 0; i < addrs.length; i++)
|
|
||||||
ipaddrs[addrs[i]] = hosts[mac].name || mac;
|
|
||||||
});
|
|
||||||
Object.keys(hosts).forEach(function(mac) {
|
|
||||||
var addrs = L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6);
|
|
||||||
|
|
||||||
for (var i = 0; i < addrs.length; i++)
|
|
||||||
ip6addrs[addrs[i]] = hosts[mac].name || mac;
|
|
||||||
});
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.ListValue, 'lan_proxy_mode', _('Proxy filter mode'));
|
so = ss.taboption('lan_ip_policy', form.ListValue, 'lan_proxy_mode', _('Proxy filter mode'));
|
||||||
so.value('disabled', _('Disable'));
|
so.value('disabled', _('Disable'));
|
||||||
so.value('listed_only', _('Proxy listed only'));
|
so.value('listed_only', _('Proxy listed only'));
|
||||||
@@ -845,62 +833,39 @@ return view.extend({
|
|||||||
so.default = 'disabled';
|
so.default = 'disabled';
|
||||||
so.rmempty = false;
|
so.rmempty = false;
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_direct_ipv4_ips', _('Direct IPv4 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv4_ips', _('Direct IPv4 IP-s'), null, 'ipv4', hosts, true);
|
||||||
so.datatype = 'or(ip4addr, cidr4)';
|
|
||||||
so.depends('lan_proxy_mode', 'except_listed');
|
so.depends('lan_proxy_mode', 'except_listed');
|
||||||
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
|
|
||||||
so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
|
|
||||||
});
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_direct_ipv6_ips', _('Direct IPv6 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv6_ips', _('Direct IPv6 IP-s'), null, 'ipv6', hosts, true);
|
||||||
so.datatype = 'or(ip6addr, cidr6)';
|
so.depends({'lan_proxy_mode': 'except_listed', 'homeproxy.config.ipv6_support': '1'});
|
||||||
|
|
||||||
|
so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_direct_mac_addrs', _('Direct MAC-s'), null, hosts);
|
||||||
so.depends('lan_proxy_mode', 'except_listed');
|
so.depends('lan_proxy_mode', 'except_listed');
|
||||||
L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) {
|
|
||||||
so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6]));
|
|
||||||
});
|
|
||||||
so.depends('homeproxy.config.ipv6_support', '1');
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_proxy_ipv4_ips', _('Proxy IPv4 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv4_ips', _('Proxy IPv4 IP-s'), null, 'ipv4', hosts, true);
|
||||||
so.datatype = 'or(ip4addr, cidr4)';
|
|
||||||
so.depends('lan_proxy_mode', 'listed_only');
|
so.depends('lan_proxy_mode', 'listed_only');
|
||||||
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
|
|
||||||
so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
|
|
||||||
});
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_proxy_ipv6_ips', _('Proxy IPv6 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv6_ips', _('Proxy IPv6 IP-s'), null, 'ipv6', hosts, true);
|
||||||
so.datatype = 'or(ip6addr, cidr6)';
|
so.depends({'lan_proxy_mode': 'listed_only', 'homeproxy.config.ipv6_support': '1'});
|
||||||
|
|
||||||
|
so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_proxy_mac_addrs', _('Proxy MAC-s'), null, hosts);
|
||||||
so.depends('lan_proxy_mode', 'listed_only');
|
so.depends('lan_proxy_mode', 'listed_only');
|
||||||
L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) {
|
|
||||||
so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6]));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv4_ips', _('Gaming mode IPv4 IP-s'), null, 'ipv4', hosts, true);
|
||||||
});
|
|
||||||
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv6_ips', _('Gaming mode IPv6 IP-s'), null, 'ipv6', hosts, true);
|
||||||
so.depends('homeproxy.config.ipv6_support', '1');
|
so.depends('homeproxy.config.ipv6_support', '1');
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_gaming_mode_ipv4_ips', _('Gaming mode IPv4 IP-s'));
|
so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_gaming_mode_mac_addrs', _('Gaming mode MAC-s'), null, hosts);
|
||||||
so.datatype = 'or(ip4addr, cidr4)';
|
|
||||||
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
|
|
||||||
so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
|
|
||||||
});
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_gaming_mode_ipv6_ips', _('Gaming mode IPv6 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv4_ips', _('Global proxy IPv4 IP-s'), null, 'ipv4', hosts, true);
|
||||||
so.datatype = 'or(ip6addr, cidr6)';
|
|
||||||
L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) {
|
|
||||||
so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6]));
|
|
||||||
});
|
|
||||||
so.depends('homeproxy.config.ipv6_support', '1');
|
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_global_proxy_ipv4_ips', _('Global proxy IPv4 IP-s'));
|
|
||||||
so.datatype = 'or(ip4addr, cidr4)';
|
|
||||||
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
|
|
||||||
so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
|
|
||||||
});
|
|
||||||
so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true});
|
so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true});
|
||||||
|
|
||||||
so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_global_proxy_ipv6_ips', _('Global proxy IPv6 IP-s'));
|
so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv6_ips', _('Global proxy IPv6 IP-s'), null, 'ipv6', hosts, true);
|
||||||
so.datatype = 'or(ip6addr, cidr6)';
|
|
||||||
L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) {
|
|
||||||
so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6]));
|
|
||||||
});
|
|
||||||
so.depends({'homeproxy.config.routing_mode': /^((?!custom).)+$/, 'homeproxy.config.ipv6_support': '1'});
|
so.depends({'homeproxy.config.routing_mode': /^((?!custom).)+$/, 'homeproxy.config.ipv6_support': '1'});
|
||||||
|
|
||||||
|
so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_global_proxy_mac_addrs', _('Global proxy MAC-s'), null, hosts);
|
||||||
|
so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true});
|
||||||
/* LAN IP policy end */
|
/* LAN IP policy end */
|
||||||
|
|
||||||
/* WAN IP policy start */
|
/* WAN IP policy start */
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ return view.extend({
|
|||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
s = m.section(form.GridSection, 'server');
|
s = m.section(form.GridSection, 'server', _('Server settings'));
|
||||||
s.addremove = true;
|
s.addremove = true;
|
||||||
s.rowcolors = true;
|
s.rowcolors = true;
|
||||||
s.sortable = true;
|
s.sortable = true;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
'require fs';
|
'require fs';
|
||||||
'require poll';
|
'require poll';
|
||||||
'require rpc';
|
'require rpc';
|
||||||
|
'require uci';
|
||||||
'require ui';
|
'require ui';
|
||||||
'require view';
|
'require view';
|
||||||
|
|
||||||
@@ -74,7 +75,8 @@ function getResVersion(self, type) {
|
|||||||
}, [ _('Check update') ]),
|
}, [ _('Check update') ]),
|
||||||
' ',
|
' ',
|
||||||
E('strong', { 'style': (res.error ? 'color:red' : 'color:green') },
|
E('strong', { 'style': (res.error ? 'color:red' : 'color:green') },
|
||||||
[ res.error ? 'not found' : res.version ]),
|
[ res.error ? 'not found' : res.version ]
|
||||||
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
self.default = spanTemp;
|
self.default = spanTemp;
|
||||||
@@ -144,14 +146,22 @@ function getRuntimeLog(name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
render: function() {
|
load: function() {
|
||||||
|
return Promise.all([
|
||||||
|
uci.load('homeproxy')
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function(data) {
|
||||||
var m, s, o;
|
var m, s, o;
|
||||||
|
var routing_mode = uci.get(data[0], 'config', 'routing_mode') || 'bypass_mainland_china';
|
||||||
|
|
||||||
m = new form.Map('homeproxy');
|
m = new form.Map('homeproxy');
|
||||||
|
|
||||||
s = m.section(form.NamedSection, 'config', 'homeproxy', _('Resources management'));
|
s = m.section(form.NamedSection, 'config', 'homeproxy', _('Resources management'));
|
||||||
s.anonymous = true;
|
s.anonymous = true;
|
||||||
|
|
||||||
|
if (routing_mode === 'custom') {
|
||||||
o = s.option(form.DummyValue, '_geoip_version', _('GeoIP version'));
|
o = s.option(form.DummyValue, '_geoip_version', _('GeoIP version'));
|
||||||
o.cfgvalue = function() { return getResVersion(this, 'geoip') };
|
o.cfgvalue = function() { return getResVersion(this, 'geoip') };
|
||||||
o.rawhtml = true;
|
o.rawhtml = true;
|
||||||
@@ -159,6 +169,7 @@ return view.extend({
|
|||||||
o = s.option(form.DummyValue, '_geosite_version', _('GeoSite version'));
|
o = s.option(form.DummyValue, '_geosite_version', _('GeoSite version'));
|
||||||
o.cfgvalue = function() { return getResVersion(this, 'geosite') };
|
o.cfgvalue = function() { return getResVersion(this, 'geosite') };
|
||||||
o.rawhtml = true;
|
o.rawhtml = true;
|
||||||
|
}
|
||||||
|
|
||||||
o = s.option(form.DummyValue, '_china_ip4_version', _('China IPv4 list version'));
|
o = s.option(form.DummyValue, '_china_ip4_version', _('China IPv4 list version'));
|
||||||
o.cfgvalue = function() { return getResVersion(this, 'china_ip4') };
|
o.cfgvalue = function() { return getResVersion(this, 'china_ip4') };
|
||||||
@@ -168,14 +179,14 @@ return view.extend({
|
|||||||
o.cfgvalue = function() { return getResVersion(this, 'china_ip6') };
|
o.cfgvalue = function() { return getResVersion(this, 'china_ip6') };
|
||||||
o.rawhtml = true;
|
o.rawhtml = true;
|
||||||
|
|
||||||
o = s.option(form.DummyValue, '_gfw_list_version', _('GFW list version'));
|
|
||||||
o.cfgvalue = function() { return getResVersion(this, 'gfw_list') };
|
|
||||||
o.rawhtml = true;
|
|
||||||
|
|
||||||
o = s.option(form.DummyValue, '_china_list_version', _('China list version'));
|
o = s.option(form.DummyValue, '_china_list_version', _('China list version'));
|
||||||
o.cfgvalue = function() { return getResVersion(this, 'china_list') };
|
o.cfgvalue = function() { return getResVersion(this, 'china_list') };
|
||||||
o.rawhtml = true;
|
o.rawhtml = true;
|
||||||
|
|
||||||
|
o = s.option(form.DummyValue, '_gfw_list_version', _('GFW list version'));
|
||||||
|
o.cfgvalue = function() { return getResVersion(this, 'gfw_list') };
|
||||||
|
o.rawhtml = true;
|
||||||
|
|
||||||
o = s.option(form.DummyValue, '_homeproxy_logview');
|
o = s.option(form.DummyValue, '_homeproxy_logview');
|
||||||
o.render = L.bind(getRuntimeLog, this, 'HomeProxy');
|
o.render = L.bind(getRuntimeLog, this, 'HomeProxy');
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -5,12 +5,29 @@
|
|||||||
|
|
||||||
import { readfile } from 'fs';
|
import { readfile } from 'fs';
|
||||||
import { cursor } from 'uci';
|
import { cursor } from 'uci';
|
||||||
|
import { isEmpty } from '/etc/homeproxy/scripts/homeproxy.uc';
|
||||||
|
|
||||||
function array_to_nftstr(array) {
|
const fw4 = require('fw4');
|
||||||
|
|
||||||
|
function array_to_nftarr(array) {
|
||||||
if (type(array) !== 'array')
|
if (type(array) !== 'array')
|
||||||
return array;
|
return null;
|
||||||
|
|
||||||
return join(', ', array);
|
return `{ ${join(', ', uniq(array))} }`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolve_ipv6(str) {
|
||||||
|
if (isEmpty(str))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
let ipv6 = fw4.parse_subnet(str)?.[0];
|
||||||
|
if (!ipv6 || ipv6.family !== 6)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (ipv6.bits > -1)
|
||||||
|
return `${ipv6.addr}/${ipv6.bits}`;
|
||||||
|
else
|
||||||
|
return `& ${ipv6.mask} == ${ipv6.addr}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Misc config */
|
/* Misc config */
|
||||||
@@ -62,7 +79,7 @@ const control_options = [
|
|||||||
"lan_direct_mac_addrs", "lan_direct_ipv4_ips", "lan_direct_ipv6_ips",
|
"lan_direct_mac_addrs", "lan_direct_ipv4_ips", "lan_direct_ipv6_ips",
|
||||||
"lan_proxy_mac_addrs", "lan_proxy_ipv4_ips", "lan_proxy_ipv6_ips",
|
"lan_proxy_mac_addrs", "lan_proxy_ipv4_ips", "lan_proxy_ipv6_ips",
|
||||||
"lan_gaming_mode_mac_addrs", "lan_gaming_mode_ipv4_ips", "lan_gaming_mode_ipv6_ips",
|
"lan_gaming_mode_mac_addrs", "lan_gaming_mode_ipv4_ips", "lan_gaming_mode_ipv6_ips",
|
||||||
"lan_global_proxy_ipv4_ips", "lan_global_proxy_ipv6_ips",
|
"lan_global_proxy_mac_addrs", "lan_global_proxy_ipv4_ips", "lan_global_proxy_ipv6_ips",
|
||||||
"wan_proxy_ipv4_ips", "wan_proxy_ipv6_ips",
|
"wan_proxy_ipv4_ips", "wan_proxy_ipv6_ips",
|
||||||
"wan_direct_ipv4_ips", "wan_direct_ipv6_ips"
|
"wan_direct_ipv4_ips", "wan_direct_ipv6_ips"
|
||||||
];
|
];
|
||||||
@@ -160,91 +177,6 @@ set homeproxy_mainland_addr_v6 {
|
|||||||
{% endif /* ipv6_support */ %}
|
{% endif /* ipv6_support */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
{# LAN ACL addresses #}
|
|
||||||
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
|
||||||
set homeproxy_lan_proxy_addr_v4 {
|
|
||||||
type ipv4_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_proxy_ipv4_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_proxy_ipv4_ips) }} }
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
set homeproxy_lan_proxy_addr_v6 {
|
|
||||||
type ipv6_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_proxy_ipv6_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_proxy_ipv6_ips) }} }
|
|
||||||
{% endif /* lan_proxy_ipv6_ips */ %}
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
}
|
|
||||||
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
|
||||||
set homeproxy_lan_direct_addr_v4 {
|
|
||||||
type ipv4_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_direct_ipv4_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_direct_ipv4_ips) }} }
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
set homeproxy_lan_direct_addr_v6 {
|
|
||||||
type ipv6_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_direct_ipv6_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_direct_ipv6_ips) }} }
|
|
||||||
{% endif /* lan_direct_ipv6_ips */ %}
|
|
||||||
}
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% endif /* lan_proxy_mode */ %}
|
|
||||||
|
|
||||||
set homeproxy_lan_gaming_addr_v4 {
|
|
||||||
type ipv4_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_gaming_mode_ipv4_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_gaming_mode_ipv4_ips) }} }
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
set homeproxy_lan_gaming_addr_v6 {
|
|
||||||
type ipv6_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_gaming_mode_ipv6_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_gaming_mode_ipv6_ips) }} }
|
|
||||||
{% endif /* lan_gaming_mode_ipv6_ips */ %}
|
|
||||||
}
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
|
|
||||||
{% if (routing_mode !== 'custom'): %}
|
|
||||||
set homeproxy_lan_global_proxy_addr_v4 {
|
|
||||||
type ipv4_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_global_proxy_ipv4_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_global_proxy_ipv4_ips) }} }
|
|
||||||
{% endif /* lan_global_proxy_ipv4_ips */ %}
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
set homeproxy_lan_global_proxy_addr_v6 {
|
|
||||||
type ipv6_addr
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (control_info.lan_global_proxy_ipv6_ips): %}
|
|
||||||
elements = { {{ join(', ', control_info.lan_global_proxy_ipv6_ips) }} }
|
|
||||||
{% endif /* lan_global_proxy_ipv6_ips */ %}
|
|
||||||
}
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% endif /* routing_mode */ %}
|
|
||||||
|
|
||||||
{# WAN ACL addresses #}
|
{# WAN ACL addresses #}
|
||||||
set homeproxy_wan_proxy_addr_v4 {
|
set homeproxy_wan_proxy_addr_v4 {
|
||||||
type ipv4_addr
|
type ipv4_addr
|
||||||
@@ -297,6 +229,10 @@ set homeproxy_routing_port {
|
|||||||
|
|
||||||
{# TCP redirect #}
|
{# TCP redirect #}
|
||||||
{% if (match(proxy_mode, /redirect/)): %}
|
{% if (match(proxy_mode, /redirect/)): %}
|
||||||
|
chain homeproxy_redirect_proxy {
|
||||||
|
meta l4proto tcp counter redirect to :{{ redirect_port }}
|
||||||
|
}
|
||||||
|
|
||||||
chain homeproxy_redirect_proxy_port {
|
chain homeproxy_redirect_proxy_port {
|
||||||
{% if (routing_port !== 'all'): %}
|
{% if (routing_port !== 'all'): %}
|
||||||
tcp dport != @homeproxy_routing_port counter return
|
tcp dport != @homeproxy_routing_port counter return
|
||||||
@@ -304,25 +240,42 @@ chain homeproxy_redirect_proxy_port {
|
|||||||
goto homeproxy_redirect_proxy
|
goto homeproxy_redirect_proxy
|
||||||
}
|
}
|
||||||
|
|
||||||
chain homeproxy_redirect_proxy {
|
chain homeproxy_redirect_lanac {
|
||||||
meta l4proto tcp counter redirect to :{{ redirect_port }}
|
{% if (control_info.listen_interfaces): %}
|
||||||
|
meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return
|
||||||
|
{% endif %}
|
||||||
|
meta mark {{ self_mark }} counter return
|
||||||
|
|
||||||
|
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
||||||
|
{% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %}
|
||||||
|
ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_redirect
|
||||||
|
{% endif /* lan_proxy_ipv4_ips */ %}
|
||||||
|
{% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect
|
||||||
|
{% endfor /* lan_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_redirect
|
||||||
|
{% endif /* lan_proxy_mac_addrs */ %}
|
||||||
|
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
||||||
|
{% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %}
|
||||||
|
ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return
|
||||||
|
{% endif /* lan_direct_ipv4_ips */ %}
|
||||||
|
{% for (let ipv6 in control_info.lan_direct_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter return
|
||||||
|
{% endfor /* lan_direct_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_direct_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return
|
||||||
|
{% endif /* lan_direct_mac_addrs */ %}
|
||||||
|
{% endif /* lan_proxy_mode */ %}
|
||||||
|
|
||||||
|
{% if (control_info.lan_proxy_mode !== 'listed_only'): %}
|
||||||
|
counter goto homeproxy_redirect
|
||||||
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain homeproxy_redirect {
|
chain homeproxy_redirect {
|
||||||
meta mark {{ self_mark }} counter return
|
meta mark {{ self_mark }} counter return
|
||||||
|
|
||||||
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
|
||||||
ip saddr != @homeproxy_lan_proxy_addr_v4 counter return
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
|
||||||
ip saddr @homeproxy_lan_direct_addr_v4 counter return
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
ip6 saddr @homeproxy_lan_direct_addr_v6 counter return
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% endif /* lan_proxy_mode */ %}
|
|
||||||
|
|
||||||
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port
|
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port
|
||||||
{% if (ipv6_support === '1'): %}
|
{% if (ipv6_support === '1'): %}
|
||||||
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port
|
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port
|
||||||
@@ -334,10 +287,15 @@ chain homeproxy_redirect {
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if (routing_mode !== 'custom'): %}
|
{% if (routing_mode !== 'custom'): %}
|
||||||
ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port
|
{% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_redirect
|
||||||
ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port
|
{% endif /* lan_global_proxy_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect
|
||||||
|
{% endfor /* lan_global_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_redirect
|
||||||
|
{% endif /* lan_global_proxy_mac_addrs */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
ip daddr @homeproxy_wan_direct_addr_v4 counter return
|
ip daddr @homeproxy_wan_direct_addr_v4 counter return
|
||||||
@@ -362,41 +320,31 @@ chain homeproxy_redirect {
|
|||||||
{% endif /* ipv6_support */ %}
|
{% endif /* ipv6_support */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
ip saddr @homeproxy_lan_gaming_addr_v4 counter goto homeproxy_redirect_proxy
|
{% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_redirect_proxy
|
||||||
ip6 saddr @homeproxy_lan_gaming_addr_v6 counter goto homeproxy_redirect_proxy
|
{% endif /* lan_gaming_mode_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect_proxy
|
||||||
|
{% endfor /* lan_gaming_mode_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_redirect_proxy
|
||||||
|
{% endif /* lan_gaming_mode_mac_addrs */ %}
|
||||||
|
|
||||||
counter goto homeproxy_redirect_proxy_port
|
counter goto homeproxy_redirect_proxy_port
|
||||||
}
|
}
|
||||||
|
|
||||||
chain homeproxy_dstnat_redir {
|
|
||||||
{% if (control_info.listen_interfaces): %}
|
|
||||||
meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }} } counter return
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
goto homeproxy_redirect
|
|
||||||
}
|
|
||||||
|
|
||||||
chain homeproxy_output_redir {
|
chain homeproxy_output_redir {
|
||||||
type nat hook output priority filter -105; policy accept
|
type nat hook output priority filter -105; policy accept
|
||||||
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect
|
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect
|
||||||
}
|
}
|
||||||
|
|
||||||
chain dstnat {
|
chain dstnat {
|
||||||
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_dstnat_redir
|
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect_lanac
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# UDP tproxy #}
|
{# UDP tproxy #}
|
||||||
{% if (match(proxy_mode, /tproxy/) && (outbound_udp_node !== 'nil' || routing_mode === 'custom')): %}
|
{% if (match(proxy_mode, /tproxy/) && (outbound_udp_node !== 'nil' || routing_mode === 'custom')): %}
|
||||||
chain homeproxy_mangle_tproxy_port {
|
|
||||||
{% if (routing_port !== 'all'): %}
|
|
||||||
udp dport != @homeproxy_routing_port counter return
|
|
||||||
{% endif %}
|
|
||||||
goto homeproxy_mangle_tproxy
|
|
||||||
}
|
|
||||||
|
|
||||||
chain homeproxy_mangle_tproxy {
|
chain homeproxy_mangle_tproxy {
|
||||||
meta l4proto udp mark set {{ tproxy_mark }} tproxy ip to 127.0.0.1:{{ tproxy_port }} counter accept
|
meta l4proto udp mark set {{ tproxy_mark }} tproxy ip to 127.0.0.1:{{ tproxy_port }} counter accept
|
||||||
{% if (ipv6_support === '1'): %}
|
{% if (ipv6_support === '1'): %}
|
||||||
@@ -404,6 +352,13 @@ chain homeproxy_mangle_tproxy {
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chain homeproxy_mangle_tproxy_port {
|
||||||
|
{% if (routing_port !== 'all'): %}
|
||||||
|
udp dport != @homeproxy_routing_port counter return
|
||||||
|
{% endif %}
|
||||||
|
goto homeproxy_mangle_tproxy
|
||||||
|
}
|
||||||
|
|
||||||
chain homeproxy_mangle_mark {
|
chain homeproxy_mangle_mark {
|
||||||
{% if (routing_port !== 'all'): %}
|
{% if (routing_port !== 'all'): %}
|
||||||
udp dport != @homeproxy_routing_port counter return
|
udp dport != @homeproxy_routing_port counter return
|
||||||
@@ -411,25 +366,40 @@ chain homeproxy_mangle_mark {
|
|||||||
meta l4proto udp mark set {{ tproxy_mark }} counter accept
|
meta l4proto udp mark set {{ tproxy_mark }} counter accept
|
||||||
}
|
}
|
||||||
|
|
||||||
chain homeproxy_mangle_prerouting {
|
chain homeproxy_mangle_lanac {
|
||||||
{% if (control_info.listen_interfaces): %}
|
{% if (control_info.listen_interfaces): %}
|
||||||
meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }}, lo } counter return
|
meta iifname != {{ array_to_nftarr(split(join(' ', control_info.listen_interfaces) + ' lo', ' ')) }} counter return
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
meta mark {{ self_mark }} counter return
|
meta mark {{ self_mark }} counter return
|
||||||
|
|
||||||
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
||||||
ip saddr != @homeproxy_lan_proxy_addr_v4 counter return
|
{% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_prerouting
|
||||||
ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return
|
{% endif /* lan_proxy_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_prerouting
|
||||||
|
{% endfor /* lan_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_prerouting
|
||||||
|
{% endif /* lan_proxy_mac_addrs */ %}
|
||||||
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
||||||
ip saddr @homeproxy_lan_direct_addr_v4 counter return
|
{% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return
|
||||||
ip6 saddr @homeproxy_lan_direct_addr_v6 counter return
|
{% endif /* lan_direct_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_direct_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter return
|
||||||
|
{% endfor /* lan_direct_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_direct_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return
|
||||||
|
{% endif /* lan_direct_mac_addrs */ %}
|
||||||
{% endif /* lan_proxy_mode */ %}
|
{% endif /* lan_proxy_mode */ %}
|
||||||
|
|
||||||
|
{% if (control_info.lan_proxy_mode !== 'listed_only'): %}
|
||||||
|
counter goto homeproxy_mangle_prerouting
|
||||||
|
{% endif %}
|
||||||
|
}
|
||||||
|
|
||||||
|
chain homeproxy_mangle_prerouting {
|
||||||
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port
|
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port
|
||||||
{% if (ipv6_support === '1'): %}
|
{% if (ipv6_support === '1'): %}
|
||||||
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port
|
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port
|
||||||
@@ -441,10 +411,15 @@ chain homeproxy_mangle_prerouting {
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if (routing_mode !== 'custom'): %}
|
{% if (routing_mode !== 'custom'): %}
|
||||||
ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port
|
{% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tproxy_port
|
||||||
ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port
|
{% endif /* lan_global_proxy_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy_port
|
||||||
|
{% endfor /* lan_global_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tproxy_port
|
||||||
|
{% endif /* lan_global_proxy_mac_addrs */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
ip daddr @homeproxy_wan_direct_addr_v4 counter return
|
ip daddr @homeproxy_wan_direct_addr_v4 counter return
|
||||||
@@ -473,10 +448,15 @@ chain homeproxy_mangle_prerouting {
|
|||||||
{% endif /* ipv6_support */ %}
|
{% endif /* ipv6_support */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
ip saddr @homeproxy_lan_gaming_addr_v4 counter goto homeproxy_mangle_tproxy
|
{% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_mangle_tproxy
|
||||||
ip6 saddr @homeproxy_lan_gaming_addr_v6 counter goto homeproxy_mangle_tproxy
|
{% endif /* lan_gaming_mode_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy
|
||||||
|
{% endfor /* lan_gaming_mode_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_mangle_tproxy
|
||||||
|
{% endif /* lan_gaming_mode_mac_addrs */ %}
|
||||||
|
|
||||||
counter goto homeproxy_mangle_tproxy_port
|
counter goto homeproxy_mangle_tproxy_port
|
||||||
}
|
}
|
||||||
@@ -520,7 +500,7 @@ chain homeproxy_mangle_output {
|
|||||||
}
|
}
|
||||||
|
|
||||||
chain mangle_prerouting {
|
chain mangle_prerouting {
|
||||||
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_prerouting
|
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_lanac
|
||||||
}
|
}
|
||||||
|
|
||||||
chain mangle_output {
|
chain mangle_output {
|
||||||
@@ -530,11 +510,38 @@ chain mangle_output {
|
|||||||
|
|
||||||
{# TUN #}
|
{# TUN #}
|
||||||
{% if (match(proxy_mode, /tun/)): %}
|
{% if (match(proxy_mode, /tun/)): %}
|
||||||
chain homeproxy_mangle_prerouting_tun {
|
chain homeproxy_mangle_lanac {
|
||||||
|
iifname {{ tun_name }} counter return
|
||||||
|
|
||||||
{% if (control_info.listen_interfaces): %}
|
{% if (control_info.listen_interfaces): %}
|
||||||
meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }} } counter return
|
meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
||||||
|
{% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %}
|
||||||
|
ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun
|
||||||
|
{% endif /* lan_proxy_ipv4_ips */ %}
|
||||||
|
{% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun
|
||||||
|
{% endfor /* lan_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun
|
||||||
|
{% endif /* lan_proxy_mac_addrs */ %}
|
||||||
|
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
||||||
|
{% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %}
|
||||||
|
ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return
|
||||||
|
{% endif /* lan_direct_ipv4_ips */ %}
|
||||||
|
{% for (let ipv6 in control_info.lan_direct_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter return
|
||||||
|
{% endfor /* lan_direct_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_direct_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return
|
||||||
|
{% endif /* lan_direct_mac_addrs */ %}
|
||||||
|
{% endif /* lan_proxy_mode */ %}
|
||||||
|
|
||||||
|
{% if (control_info.lan_proxy_mode !== 'listed_only'): %}
|
||||||
|
counter goto homeproxy_mangle_tun
|
||||||
{% endif %}
|
{% endif %}
|
||||||
jump homeproxy_mangle_tun
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain homeproxy_mangle_tun_mark {
|
chain homeproxy_mangle_tun_mark {
|
||||||
@@ -551,18 +558,6 @@ chain homeproxy_mangle_tun_mark {
|
|||||||
chain homeproxy_mangle_tun {
|
chain homeproxy_mangle_tun {
|
||||||
iifname {{ tun_name }} counter return
|
iifname {{ tun_name }} counter return
|
||||||
|
|
||||||
{% if (control_info.lan_proxy_mode === 'listed_only'): %}
|
|
||||||
ip saddr != @homeproxy_lan_proxy_addr_v4 counter return
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% elif (control_info.lan_proxy_mode === 'except_listed'): %}
|
|
||||||
ip saddr @homeproxy_lan_direct_addr_v4 counter return
|
|
||||||
{% if (ipv6_support === '1'): %}
|
|
||||||
ip6 saddr @homeproxy_lan_direct_addr_v6 counter return
|
|
||||||
{% endif /* ipv6_support */ %}
|
|
||||||
{% endif /* lan_proxy_mode */ %}
|
|
||||||
|
|
||||||
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark
|
ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark
|
||||||
{% if (ipv6_support === '1'): %}
|
{% if (ipv6_support === '1'): %}
|
||||||
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark
|
ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark
|
||||||
@@ -574,17 +569,22 @@ chain homeproxy_mangle_tun {
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if (routing_mode !== 'custom'): %}
|
{% if (routing_mode !== 'custom'): %}
|
||||||
ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark
|
{% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun_mark
|
||||||
ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark
|
{% endif /* lan_global_proxy_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun_mark
|
||||||
|
{% endfor /* lan_global_proxy_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun_mark
|
||||||
|
{% endif /* lan_global_proxy_mac_addrs */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
{% if (control_info.wan_direct_ipv4_ips): %}
|
{% if (control_info.wan_direct_ipv4_ips): %}
|
||||||
ip daddr { {{ array_to_nftstr(control_info.wan_direct_ipv4_ips) }} } counter return
|
ip daddr {{ array_to_nftarr(control_info.wan_direct_ipv4_ips) }} counter return
|
||||||
{% endif /* wan_direct_ipv4_ips */ %}
|
{% endif /* wan_direct_ipv4_ips */ %}
|
||||||
{% if (control_info.wan_direct_ipv6_ips): %}
|
{% if (control_info.wan_direct_ipv6_ips): %}
|
||||||
ip6 daddr { {{ array_to_nftstr(control_info.wan_direct_ipv6_ips) }} } counter return
|
ip6 daddr {{ array_to_nftarr(control_info.wan_direct_ipv6_ips) }} counter return
|
||||||
{% endif /* wan_direct_ipv6_ips */ %}
|
{% endif /* wan_direct_ipv6_ips */ %}
|
||||||
|
|
||||||
{% if (routing_mode === 'gfwlist'): %}
|
{% if (routing_mode === 'gfwlist'): %}
|
||||||
@@ -608,16 +608,21 @@ chain homeproxy_mangle_tun {
|
|||||||
{% endif /* ipv6_support */ %}
|
{% endif /* ipv6_support */ %}
|
||||||
{% endif /* routing_mode */ %}
|
{% endif /* routing_mode */ %}
|
||||||
|
|
||||||
ip saddr @homeproxy_lan_gaming_addr_v4 counter mark set {{ tun_mark }}
|
{% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %}
|
||||||
{% if (ipv6_support === '1'): %}
|
ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter mark set {{ tun_mark }}
|
||||||
ip6 saddr @homeproxy_lan_gaming_addr_v6 counter mark set {{ tun_mark }}
|
{% endif /* lan_gaming_mode_ipv4_ips */ %}
|
||||||
{% endif /* ipv6_support */ %}
|
{% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %}
|
||||||
|
ip6 saddr {{ resolve_ipv6(ipv6) }} counter mark set {{ tun_mark }}
|
||||||
|
{% endfor /* lan_gaming_mode_ipv6_ips */ %}
|
||||||
|
{% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %}
|
||||||
|
ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter mark set {{ tun_mark }}
|
||||||
|
{% endif /* lan_gaming_mode_mac_addrs */ %}
|
||||||
|
|
||||||
counter goto homeproxy_mangle_tun_mark
|
counter goto homeproxy_mangle_tun_mark
|
||||||
}
|
}
|
||||||
|
|
||||||
chain mangle_prerouting {
|
chain mangle_prerouting {
|
||||||
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_prerouting_tun
|
meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_lanac
|
||||||
}
|
}
|
||||||
|
|
||||||
chain mangle_output {
|
chain mangle_output {
|
||||||
|
|||||||
@@ -609,24 +609,8 @@ if (!isEmpty(main_node) || !isEmpty(default_outbound))
|
|||||||
default_interface: default_interface
|
default_interface: default_interface
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Routing rules */
|
||||||
if (!isEmpty(main_node)) {
|
if (!isEmpty(main_node)) {
|
||||||
/* Routing rules */
|
|
||||||
/* LAN ACL */
|
|
||||||
if (length(lan_proxy_ips)) {
|
|
||||||
if (dedicated_udp_node) {
|
|
||||||
push(config.route.rules, {
|
|
||||||
source_ip_cidr: lan_proxy_ips,
|
|
||||||
network: 'udp',
|
|
||||||
outbound: 'main-udp-out'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
push(config.route.rules, {
|
|
||||||
source_ip_cidr: lan_proxy_ips,
|
|
||||||
outbound: 'main-out'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Direct list */
|
/* Direct list */
|
||||||
if (length(direct_domain_list))
|
if (length(direct_domain_list))
|
||||||
push(config.route.rules, {
|
push(config.route.rules, {
|
||||||
|
|||||||
@@ -133,7 +133,6 @@ start_service() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
utpl -S "$HP_DIR/scripts/firewall_post.ut" > "$RUN_DIR/fw4_post.nft"
|
utpl -S "$HP_DIR/scripts/firewall_post.ut" > "$RUN_DIR/fw4_post.nft"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
utpl -S "$HP_DIR/scripts/firewall_pre.ut" > "$RUN_DIR/fw4_pre.nft"
|
utpl -S "$HP_DIR/scripts/firewall_pre.ut" > "$RUN_DIR/fw4_pre.nft"
|
||||||
@@ -191,22 +190,18 @@ stop_service() {
|
|||||||
|
|
||||||
# Nftables rules
|
# Nftables rules
|
||||||
for i in "homeproxy_dstnat_redir" "homeproxy_output_redir" \
|
for i in "homeproxy_dstnat_redir" "homeproxy_output_redir" \
|
||||||
"homeproxy_redirect" "homeproxy_redirect_proxy_port" \
|
"homeproxy_redirect" "homeproxy_redirect_proxy" \
|
||||||
"homeproxy_redirect_proxy" "homeproxy_mangle_prerouting" \
|
"homeproxy_redirect_proxy_port" "homeproxy_redirect_lanac" \
|
||||||
"homeproxy_mangle_output" "homeproxy_mangle_tproxy_port" \
|
"homeproxy_mangle_prerouting" "homeproxy_mangle_output" \
|
||||||
"homeproxy_mangle_tproxy" "homeproxy_mangle_mark" \
|
"homeproxy_mangle_tproxy" "homeproxy_mangle_tproxy_port" \
|
||||||
"homeproxy_mangle_tun" "homeproxy_mangle_tun_mark" \
|
"homeproxy_mangle_tproxy_lanac" "homeproxy_mangle_mark" \
|
||||||
"homeproxy_mangle_prerouting_tun"; do
|
"homeproxy_mangle_tun" "homeproxy_mangle_tun_mark"; do
|
||||||
nft flush chain inet fw4 "$i"
|
nft flush chain inet fw4 "$i"
|
||||||
nft delete chain inet fw4 "$i"
|
nft delete chain inet fw4 "$i"
|
||||||
done 2>"/dev/null"
|
done 2>"/dev/null"
|
||||||
for i in "homeproxy_local_addr_v4" "homeproxy_local_addr_v6" \
|
for i in "homeproxy_local_addr_v4" "homeproxy_local_addr_v6" \
|
||||||
"homeproxy_gfw_list_v4" "homeproxy_gfw_list_v6" \
|
"homeproxy_gfw_list_v4" "homeproxy_gfw_list_v6" \
|
||||||
"homeproxy_mainland_addr_v4" "homeproxy_mainland_addr_v6" \
|
"homeproxy_mainland_addr_v4" "homeproxy_mainland_addr_v6" \
|
||||||
"homeproxy_lan_proxy_addr_v4" "homeproxy_lan_proxy_addr_v6" \
|
|
||||||
"homeproxy_lan_direct_addr_v4" "homeproxy_lan_direct_addr_v6" \
|
|
||||||
"homeproxy_lan_gaming_addr_v4" "homeproxy_lan_gaming_addr_v6" \
|
|
||||||
"homeproxy_lan_global_proxy_addr_v4" "homeproxy_lan_global_proxy_addr_v6" \
|
|
||||||
"homeproxy_wan_proxy_addr_v4" "homeproxy_wan_proxy_addr_v6" \
|
"homeproxy_wan_proxy_addr_v4" "homeproxy_wan_proxy_addr_v6" \
|
||||||
"homeproxy_wan_direct_addr_v4" "homeproxy_wan_direct_addr_v6" \
|
"homeproxy_wan_direct_addr_v4" "homeproxy_wan_direct_addr_v6" \
|
||||||
"homeproxy_routing_port"; do
|
"homeproxy_routing_port"; do
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ const methods = {
|
|||||||
fd.close();
|
fd.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
features.hp_has_tproxy = access('/etc/modules.d/nft-tproxy');
|
||||||
features.hp_has_tun = access('/etc/modules.d/30-tun');
|
features.hp_has_tun = access('/etc/modules.d/30-tun');
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
|
|||||||
@@ -643,6 +643,7 @@
|
|||||||
10000tc.com
|
10000tc.com
|
||||||
10000yao.com
|
10000yao.com
|
||||||
10001wan.com
|
10001wan.com
|
||||||
|
100024.xyz
|
||||||
1000360.com
|
1000360.com
|
||||||
10006.info
|
10006.info
|
||||||
1000ci.net
|
1000ci.net
|
||||||
@@ -1770,6 +1771,7 @@
|
|||||||
1kuang.com
|
1kuang.com
|
||||||
1kx.me
|
1kx.me
|
||||||
1kxun.com
|
1kxun.com
|
||||||
|
1kyx.com
|
||||||
1lan.tv
|
1lan.tv
|
||||||
1lewen.com
|
1lewen.com
|
||||||
1look.tv
|
1look.tv
|
||||||
@@ -3207,6 +3209,7 @@
|
|||||||
3t769up6.com
|
3t769up6.com
|
||||||
3tilabs.com
|
3tilabs.com
|
||||||
3u.com
|
3u.com
|
||||||
|
3unshine.com
|
||||||
3uol.com
|
3uol.com
|
||||||
3us.com
|
3us.com
|
||||||
3uww.cc
|
3uww.cc
|
||||||
@@ -12292,6 +12295,7 @@ can.tv
|
|||||||
canaan-creative.com
|
canaan-creative.com
|
||||||
canasy.com
|
canasy.com
|
||||||
cancda.net
|
cancda.net
|
||||||
|
cancer361.com
|
||||||
candou.com
|
candou.com
|
||||||
candylab.net
|
candylab.net
|
||||||
candypay.com
|
candypay.com
|
||||||
@@ -17120,6 +17124,7 @@ d.cg
|
|||||||
d03jd.com
|
d03jd.com
|
||||||
d1222.com
|
d1222.com
|
||||||
d17.cc
|
d17.cc
|
||||||
|
d1999.com
|
||||||
d1cm.com
|
d1cm.com
|
||||||
d1com.com
|
d1com.com
|
||||||
d1dengju.com
|
d1dengju.com
|
||||||
@@ -18380,6 +18385,7 @@ digitalvolvo.com
|
|||||||
digitalwuhan.com
|
digitalwuhan.com
|
||||||
digitalwuhan.net
|
digitalwuhan.net
|
||||||
digitlink.net
|
digitlink.net
|
||||||
|
digitocero.com
|
||||||
digitser.net
|
digitser.net
|
||||||
digiwin.com
|
digiwin.com
|
||||||
digiwork.com
|
digiwork.com
|
||||||
@@ -18902,6 +18908,7 @@ dongcaibaoxian.com
|
|||||||
dongchaba.com
|
dongchaba.com
|
||||||
dongchedi.com
|
dongchedi.com
|
||||||
dongchediapp.com
|
dongchediapp.com
|
||||||
|
dongcheng1.com
|
||||||
dongcheng120.com
|
dongcheng120.com
|
||||||
dongchenghotels.com
|
dongchenghotels.com
|
||||||
dongdao.net
|
dongdao.net
|
||||||
@@ -19158,6 +19165,7 @@ dpcyjt.com
|
|||||||
dper.com
|
dper.com
|
||||||
dpevmh.com
|
dpevmh.com
|
||||||
dpfile.com
|
dpfile.com
|
||||||
|
dplayerjsvideo.com
|
||||||
dplayersvideostatic.com
|
dplayersvideostatic.com
|
||||||
dplor.com
|
dplor.com
|
||||||
dplord.com
|
dplord.com
|
||||||
@@ -23912,6 +23920,7 @@ gohong.com
|
|||||||
gohugo.org
|
gohugo.org
|
||||||
going-link.com
|
going-link.com
|
||||||
gojiaju.com
|
gojiaju.com
|
||||||
|
gokaigai.com
|
||||||
goke.com
|
goke.com
|
||||||
gokols.com
|
gokols.com
|
||||||
gokuai.com
|
gokuai.com
|
||||||
@@ -33822,6 +33831,7 @@ kikoplay.fun
|
|||||||
kiku.vip
|
kiku.vip
|
||||||
kililife.com
|
kililife.com
|
||||||
killdb.com
|
killdb.com
|
||||||
|
kiloai.com
|
||||||
kimiss.com
|
kimiss.com
|
||||||
kimiss.net
|
kimiss.net
|
||||||
kimiter.com
|
kimiter.com
|
||||||
@@ -36447,6 +36457,7 @@ lnrcu.com
|
|||||||
lnrsks.com
|
lnrsks.com
|
||||||
lnsent.com
|
lnsent.com
|
||||||
lnsgczb.com
|
lnsgczb.com
|
||||||
|
lnsyrjwz.com
|
||||||
lntenghui.com
|
lntenghui.com
|
||||||
lntvu.com
|
lntvu.com
|
||||||
lntycp.com
|
lntycp.com
|
||||||
@@ -36666,7 +36677,6 @@ looyuoms.com
|
|||||||
looyush.com
|
looyush.com
|
||||||
lopetech.net
|
lopetech.net
|
||||||
lopkino.com
|
lopkino.com
|
||||||
lopopoo.com
|
|
||||||
lopss.com
|
lopss.com
|
||||||
lorefree.com
|
lorefree.com
|
||||||
losking.com
|
losking.com
|
||||||
@@ -37177,6 +37187,7 @@ lxxm.com
|
|||||||
lxybaike.com
|
lxybaike.com
|
||||||
lxyes.com
|
lxyes.com
|
||||||
lxyl539.com
|
lxyl539.com
|
||||||
|
lxyllawfirm.com
|
||||||
ly-sky.com
|
ly-sky.com
|
||||||
ly.com
|
ly.com
|
||||||
ly200-cdn.com
|
ly200-cdn.com
|
||||||
@@ -41263,6 +41274,7 @@ okad.com
|
|||||||
okada-china.com
|
okada-china.com
|
||||||
okaoyan.com
|
okaoyan.com
|
||||||
okayapi.com
|
okayapi.com
|
||||||
|
okaybio.com
|
||||||
okbao.com
|
okbao.com
|
||||||
okbase.net
|
okbase.net
|
||||||
okbiao.com
|
okbiao.com
|
||||||
@@ -41927,6 +41939,7 @@ palace-international.com
|
|||||||
palanceli.com
|
palanceli.com
|
||||||
palm-h.com
|
palm-h.com
|
||||||
palmestore.com
|
palmestore.com
|
||||||
|
palmfungames.com
|
||||||
palmjoys.com
|
palmjoys.com
|
||||||
palmtrends.com
|
palmtrends.com
|
||||||
palmyou.com
|
palmyou.com
|
||||||
@@ -42755,6 +42768,7 @@ plcloud.com
|
|||||||
plcsq.com
|
plcsq.com
|
||||||
plesk-cn.com
|
plesk-cn.com
|
||||||
plexjiasuqi.com
|
plexjiasuqi.com
|
||||||
|
plexpt.com
|
||||||
plob.org
|
plob.org
|
||||||
plotcup.com
|
plotcup.com
|
||||||
plqdf.com
|
plqdf.com
|
||||||
@@ -50680,7 +50694,6 @@ tapas.net
|
|||||||
tapdata.net
|
tapdata.net
|
||||||
tapdb.com
|
tapdb.com
|
||||||
tapdb.net
|
tapdb.net
|
||||||
tapechat.net
|
|
||||||
tapenjoy.com
|
tapenjoy.com
|
||||||
tapimg.com
|
tapimg.com
|
||||||
tapotiexie.com
|
tapotiexie.com
|
||||||
@@ -51808,7 +51821,6 @@ tokenglish.com
|
|||||||
tokensky.net
|
tokensky.net
|
||||||
tokenworld.pro
|
tokenworld.pro
|
||||||
tokimekiclub.org
|
tokimekiclub.org
|
||||||
toktok-mall.com
|
|
||||||
tol24.com
|
tol24.com
|
||||||
tom.cat
|
tom.cat
|
||||||
tom.com
|
tom.com
|
||||||
@@ -54523,6 +54535,7 @@ wandongli.com
|
|||||||
wandouip.com
|
wandouip.com
|
||||||
wandoujia.com
|
wandoujia.com
|
||||||
waneziyuan.com
|
waneziyuan.com
|
||||||
|
wanfangche.com
|
||||||
wanfangdata.com
|
wanfangdata.com
|
||||||
wanfangqikan.com
|
wanfangqikan.com
|
||||||
wanfangs.com
|
wanfangs.com
|
||||||
@@ -55013,6 +55026,7 @@ wefinger.club
|
|||||||
wefitos.com
|
wefitos.com
|
||||||
wefunol.com
|
wefunol.com
|
||||||
wegame.com
|
wegame.com
|
||||||
|
wegameapi.com
|
||||||
wegamedeveloper.com
|
wegamedeveloper.com
|
||||||
wegameplus.com
|
wegameplus.com
|
||||||
wegamex.com.hk
|
wegamex.com.hk
|
||||||
@@ -57613,6 +57627,7 @@ xiangqu.com
|
|||||||
xiangrikui.co
|
xiangrikui.co
|
||||||
xiangrikui.com
|
xiangrikui.com
|
||||||
xiangrikuijianzhan.com
|
xiangrikuijianzhan.com
|
||||||
|
xiangruizulin.com
|
||||||
xiangshang360.com
|
xiangshang360.com
|
||||||
xiangshangban.com
|
xiangshangban.com
|
||||||
xiangshanpark.com
|
xiangshanpark.com
|
||||||
@@ -57918,6 +57933,7 @@ xiaotee.com
|
|||||||
xiaoten.com
|
xiaoten.com
|
||||||
xiaotengyouxi.com
|
xiaotengyouxi.com
|
||||||
xiaotiancai.com
|
xiaotiancai.com
|
||||||
|
xiaotud.com
|
||||||
xiaotut.com
|
xiaotut.com
|
||||||
xiaotuzhan.com
|
xiaotuzhan.com
|
||||||
xiaou2014.com
|
xiaou2014.com
|
||||||
@@ -60814,6 +60830,7 @@ yjk.com
|
|||||||
yjk.im
|
yjk.im
|
||||||
yjldp.com
|
yjldp.com
|
||||||
yjlin4.com
|
yjlin4.com
|
||||||
|
yjlink.cc
|
||||||
yjnbn.com
|
yjnbn.com
|
||||||
yjopen.com
|
yjopen.com
|
||||||
yjpal.com
|
yjpal.com
|
||||||
@@ -61178,6 +61195,7 @@ youease.net
|
|||||||
youedata.com
|
youedata.com
|
||||||
youeryun.com
|
youeryun.com
|
||||||
youez.com
|
youez.com
|
||||||
|
youfangou.com
|
||||||
youfangzx.com
|
youfangzx.com
|
||||||
youfen666.com
|
youfen666.com
|
||||||
youfh.com
|
youfh.com
|
||||||
@@ -61403,6 +61421,7 @@ youyannet.com
|
|||||||
youyeetoo.com
|
youyeetoo.com
|
||||||
youyegame.com
|
youyegame.com
|
||||||
youyi-game.com
|
youyi-game.com
|
||||||
|
youyigame.com
|
||||||
youyilm.com
|
youyilm.com
|
||||||
youyiqi.com
|
youyiqi.com
|
||||||
youyiqiaogou.com
|
youyiqiaogou.com
|
||||||
@@ -63275,6 +63294,7 @@ zhengyexing.com
|
|||||||
zhengyifeng.com
|
zhengyifeng.com
|
||||||
zhengyinyong.com
|
zhengyinyong.com
|
||||||
zhengyounet.com
|
zhengyounet.com
|
||||||
|
zhengyouyoule.com
|
||||||
zhengzai.tv
|
zhengzai.tv
|
||||||
zhengzhen25.xyz
|
zhengzhen25.xyz
|
||||||
zhengzhen26.xyz
|
zhengzhen26.xyz
|
||||||
|
|||||||
@@ -14272,6 +14272,7 @@ hgsacx.com
|
|||||||
hgseav.com
|
hgseav.com
|
||||||
hgtg022.com
|
hgtg022.com
|
||||||
hgtv
|
hgtv
|
||||||
|
hh-content.com
|
||||||
hh176.net
|
hh176.net
|
||||||
hh2267.com
|
hh2267.com
|
||||||
hh22hh.com
|
hh22hh.com
|
||||||
@@ -17086,6 +17087,7 @@ kinkbook.com
|
|||||||
kinkcult.com
|
kinkcult.com
|
||||||
kinkidt.i-cweb.net
|
kinkidt.i-cweb.net
|
||||||
kinklive.com
|
kinklive.com
|
||||||
|
kinkoid.com
|
||||||
kinkyfamily.com
|
kinkyfamily.com
|
||||||
kinkypeepz.com
|
kinkypeepz.com
|
||||||
kinmen.travel
|
kinmen.travel
|
||||||
@@ -22175,6 +22177,7 @@ pinterest.engineering
|
|||||||
pinterest.id
|
pinterest.id
|
||||||
pinterest.info
|
pinterest.info
|
||||||
pinterest.it
|
pinterest.it
|
||||||
|
pinterest.net
|
||||||
pinterest.pt
|
pinterest.pt
|
||||||
pinterestmail.com
|
pinterestmail.com
|
||||||
pintool.com
|
pintool.com
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ define Download/geoip
|
|||||||
HASH:=1b6beebefa6ee3fb68e824d4664ccd75a21e8831700bb352d3b74d1c298e9793
|
HASH:=1b6beebefa6ee3fb68e824d4664ccd75a21e8831700bb352d3b74d1c298e9793
|
||||||
endef
|
endef
|
||||||
|
|
||||||
GEOSITE_VER:=20230401161112
|
GEOSITE_VER:=20230401170636
|
||||||
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
|
||||||
define Download/geosite
|
define Download/geosite
|
||||||
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
|
||||||
URL_FILE:=dlc.dat
|
URL_FILE:=dlc.dat
|
||||||
FILE:=$(GEOSITE_FILE)
|
FILE:=$(GEOSITE_FILE)
|
||||||
HASH:=d63a3179224f69df6071d0bb8450c2df0bccec431d48b6618a64d284d20fea7b
|
HASH:=c884da813675fba5a15f322905623d5971e0c60ed5f2fbb8a54bfba1b401bc3b
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/v2ray-geodata/template
|
define Package/v2ray-geodata/template
|
||||||
|
|||||||
Reference in New Issue
Block a user