mirror of
https://github.com/remittor/zapret-openwrt.git
synced 2025-12-31 11:56:02 +03:00
config: Add new options to reset settings dialog (choice of NFQWS strategy)
This commit is contained in:
@@ -48,6 +48,7 @@ return view.extend({
|
|||||||
tools.getSvcInfo(), // svc_info
|
tools.getSvcInfo(), // svc_info
|
||||||
fs.exec('/bin/busybox', [ 'ps' ]), // process list
|
fs.exec('/bin/busybox', [ 'ps' ]), // process list
|
||||||
fs.exec(tools.packager.path, tools.packager.args), // installed packages
|
fs.exec(tools.packager.path, tools.packager.args), // installed packages
|
||||||
|
tools.getStratList(), // nfqws strategy list
|
||||||
uci.load(tools.appName), // config
|
uci.load(tools.appName), // config
|
||||||
]).catch(e => {
|
]).catch(e => {
|
||||||
ui.addNotification(null, E('p', _('Unable to execute or read contents')
|
ui.addNotification(null, E('p', _('Unable to execute or read contents')
|
||||||
@@ -71,6 +72,7 @@ return view.extend({
|
|||||||
let svc_info = status_array[2]; // stdout: JSON as text
|
let svc_info = status_array[2]; // stdout: JSON as text
|
||||||
let proc_list = status_array[3]; // stdout: multiline text
|
let proc_list = status_array[3]; // stdout: multiline text
|
||||||
let pkg_list = status_array[4]; // stdout: installed packages
|
let pkg_list = status_array[4]; // stdout: installed packages
|
||||||
|
this.nfqws_strat_list = status_array[5]; // array of strat names
|
||||||
|
|
||||||
//console.log('svc_en: ' + svc_en.code);
|
//console.log('svc_en: ' + svc_en.code);
|
||||||
svc_en = (svc_en.code == 0) ? true : false;
|
svc_en = (svc_en.code == 0) ? true : false;
|
||||||
@@ -147,7 +149,7 @@ return view.extend({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
serviceActionEx: function(action, button, hide_modal = false) {
|
serviceActionEx: function(action, button, args = [ ], hide_modal = false) {
|
||||||
if (button) {
|
if (button) {
|
||||||
let elem = document.getElementById(button);
|
let elem = document.getElementById(button);
|
||||||
this.disableButtons(true, elem);
|
this.disableButtons(true, elem);
|
||||||
@@ -164,7 +166,7 @@ return view.extend({
|
|||||||
}
|
}
|
||||||
else if (action == 'reset') {
|
else if (action == 'reset') {
|
||||||
exec_cmd = tools.defaultCfgPath;
|
exec_cmd = tools.defaultCfgPath;
|
||||||
exec_arg = [ 'sync' ]; // restore config + sync configs
|
exec_arg = args; // (reset_ipset)(sync) ==> restore all configs + sync config
|
||||||
errmsg = _('Unable to run restore-def-cfg.sh script.');
|
errmsg = _('Unable to run restore-def-cfg.sh script.');
|
||||||
action = null;
|
action = null;
|
||||||
} else {
|
} else {
|
||||||
@@ -228,6 +230,33 @@ return view.extend({
|
|||||||
|
|
||||||
dialogResetCfg: function(ev) {
|
dialogResetCfg: function(ev) {
|
||||||
ev.target.blur();
|
ev.target.blur();
|
||||||
|
|
||||||
|
let reset_base = E('label', [
|
||||||
|
E('input', { type: 'checkbox', id: 'cfg_reset_base', checked: true }),
|
||||||
|
' ', _('Restore all base settings')
|
||||||
|
]);
|
||||||
|
|
||||||
|
let reset_ipset = E('label', [
|
||||||
|
E('input', { type: 'checkbox', id: 'cfg_reset_ipset', checked: true }),
|
||||||
|
' ', _('Restore ipset configs')
|
||||||
|
]);
|
||||||
|
|
||||||
|
let set_autohostlist = E('label', [
|
||||||
|
E('input', { type: 'checkbox', id: 'cfg_autohostlist', checked: true }),
|
||||||
|
' ', _('Set AutoHostList mode')
|
||||||
|
]);
|
||||||
|
|
||||||
|
let strat_list = [ ];
|
||||||
|
strat_list.push( E('option', { value: 'strat__skip__' }, [ '-' ] ) );
|
||||||
|
for (let id = 0; id < this.nfqws_strat_list.length; id++) {
|
||||||
|
let strat = '' + this.nfqws_strat_list[id];
|
||||||
|
strat_list.push( E('option', { value: 'strat_' + id }, [ strat ] ) );
|
||||||
|
}
|
||||||
|
let nfqws_strat = E('label', [
|
||||||
|
_('NFQWS_OPT strategy: '),
|
||||||
|
E('select', { id: 'cfg_nfqws_strat' }, strat_list)
|
||||||
|
]);
|
||||||
|
|
||||||
let cancel_button = E('button', {
|
let cancel_button = E('button', {
|
||||||
'class': btn_style_neutral,
|
'class': btn_style_neutral,
|
||||||
'click': ui.hideModal,
|
'click': ui.hideModal,
|
||||||
@@ -238,12 +267,35 @@ return view.extend({
|
|||||||
}, _('Reset settings'));
|
}, _('Reset settings'));
|
||||||
resetcfg_btn.onclick = ui.createHandlerFn(this, () => {
|
resetcfg_btn.onclick = ui.createHandlerFn(this, () => {
|
||||||
//cancel_button.disabled = true;
|
//cancel_button.disabled = true;
|
||||||
return this.serviceActionEx('reset', resetcfg_btn, true);
|
let opt_flags = '';
|
||||||
|
if (document.getElementById('cfg_reset_base').checked == false) {
|
||||||
|
opt_flags += '(skip_base)';
|
||||||
|
};
|
||||||
|
if (document.getElementById('cfg_reset_ipset').checked) {
|
||||||
|
opt_flags += '(reset_ipset)';
|
||||||
|
};
|
||||||
|
if (document.getElementById('cfg_autohostlist').checked) {
|
||||||
|
opt_flags += '(set_mode_autohostlist)';
|
||||||
|
};
|
||||||
|
//console.log('RESET: opt_flags = ' + opt_flags);
|
||||||
|
let sel_strat = document.getElementById('cfg_nfqws_strat');
|
||||||
|
let opt_strat = sel_strat.options[sel_strat.selectedIndex].text;
|
||||||
|
//console.log('RESET: strat = ' + opt_strat);
|
||||||
|
opt_flags += '(sync)';
|
||||||
|
let args = [ opt_flags, opt_strat ];
|
||||||
|
return this.serviceActionEx('reset', resetcfg_btn, args, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
ui.showModal(_('Reset settings to default'), [
|
ui.showModal(_('Reset settings to default'), [
|
||||||
E('div', { 'class': 'cbi-section' }, [
|
E('div', { 'class': 'cbi-section' }, [
|
||||||
E('p', _('All settings will be reset to default. Continue?')),
|
reset_base,
|
||||||
|
E('br'), E('br'),
|
||||||
|
reset_ipset,
|
||||||
|
E('br'), E('br'),
|
||||||
|
set_autohostlist,
|
||||||
|
E('br'), E('br'),
|
||||||
|
nfqws_strat,
|
||||||
|
E('br'), E('br')
|
||||||
]),
|
]),
|
||||||
E('div', { 'class': 'right' }, [
|
E('div', { 'class': 'right' }, [
|
||||||
cancel_button,
|
cancel_button,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ return baseclass.extend({
|
|||||||
appName : 'zapret',
|
appName : 'zapret',
|
||||||
execPath : '/etc/init.d/zapret',
|
execPath : '/etc/init.d/zapret',
|
||||||
syncCfgPath : '/opt/zapret/sync_config.sh',
|
syncCfgPath : '/opt/zapret/sync_config.sh',
|
||||||
|
defCfgPath : '/opt/zapret/def-cfg.sh',
|
||||||
defaultCfgPath : '/opt/zapret/restore-def-cfg.sh',
|
defaultCfgPath : '/opt/zapret/restore-def-cfg.sh',
|
||||||
|
|
||||||
hostsGoogleFN : '/opt/zapret/ipset/zapret-hosts-google.txt',
|
hostsGoogleFN : '/opt/zapret/ipset/zapret-hosts-google.txt',
|
||||||
@@ -139,6 +140,20 @@ return baseclass.extend({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getStratList: function() {
|
||||||
|
this.init_consts();
|
||||||
|
let exec_cmd = '/bin/busybox';
|
||||||
|
let exec_arg = [ 'awk', '-F', '"', '/if \\[ "\\$strat" = "/ {print $4}', this.defCfgPath ];
|
||||||
|
return fs.exec(exec_cmd, exec_arg).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
return this.getWordsArray(res.stdout);
|
||||||
|
}
|
||||||
|
return [ ];
|
||||||
|
}).catch(e => {
|
||||||
|
ui.addNotification(null, E('p', _('Failed to get strat list: %s').format(e)));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
handleServiceAction: function(name, action) {
|
handleServiceAction: function(name, action) {
|
||||||
return this.callInitAction(name, action).then(success => {
|
return this.callInitAction(name, action).then(success => {
|
||||||
if (!success) {
|
if (!success) {
|
||||||
@@ -154,6 +169,12 @@ return baseclass.extend({
|
|||||||
return (v && typeof(v) === 'string') ? v.trim().replace(/\r?\n/g, '') : v;
|
return (v && typeof(v) === 'string') ? v.trim().replace(/\r?\n/g, '') : v;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getWordsArray: function (text, { trim = true, removeEmpty = true } = {}) {
|
||||||
|
const rawLines = text.split(/\n/);
|
||||||
|
const processed = trim ? rawLines.map(line => line.trim()) : rawLines.slice();
|
||||||
|
return removeEmpty ? processed.filter(line => line.length > 0) : processed;
|
||||||
|
},
|
||||||
|
|
||||||
decode_pkg_list: function(pkg_list) {
|
decode_pkg_list: function(pkg_list) {
|
||||||
let pkg_dict = { };
|
let pkg_dict = { };
|
||||||
let lines = pkg_list.trim().split('\n');
|
let lines = pkg_list.trim().split('\n');
|
||||||
@@ -448,9 +469,12 @@ return baseclass.extend({
|
|||||||
if (typeof(value) === 'string') {
|
if (typeof(value) === 'string') {
|
||||||
value = value.trim();
|
value = value.trim();
|
||||||
if (this.multiline == 2) {
|
if (this.multiline == 2) {
|
||||||
value = value.replace(/\n\t\t\t--/g, "\n--");
|
value = value.replace(/\n\t/g, "\n");
|
||||||
value = value.replace(/\n\t\t--/g, "\n--");
|
value = value.replace(/\n\t/g, "\n");
|
||||||
value = value.replace(/\n\t--/g, "\n--");
|
value = value.replace(/\n\t/g, "\n");
|
||||||
|
value = value.replace(/\n\t/g, "\n");
|
||||||
|
value = value.replace(/\n\t/g, "\n");
|
||||||
|
value = value.replace(/\n\t/g, "\n");
|
||||||
value = value.replace(/\n --/g, "\n--");
|
value = value.replace(/\n --/g, "\n--");
|
||||||
value = value.replace(/\n --/g, "\n--");
|
value = value.replace(/\n --/g, "\n--");
|
||||||
value = value.replace(/ --/g, "\n--");
|
value = value.replace(/ --/g, "\n--");
|
||||||
|
|||||||
@@ -108,12 +108,14 @@ function restore_all_ipset_cfg
|
|||||||
|
|
||||||
function create_default_cfg
|
function create_default_cfg
|
||||||
{
|
{
|
||||||
local cfgname=${1:-$ZAPRET_CFG_NAME}
|
local opt_flags=${1:--}
|
||||||
|
local opt_strat=$2
|
||||||
|
local cfgname=${3:-$ZAPRET_CFG_NAME}
|
||||||
local cfgfile=/etc/config/$cfgname
|
local cfgfile=/etc/config/$cfgname
|
||||||
rm -f $cfgfile
|
rm -f $cfgfile
|
||||||
touch $cfgfile
|
touch $cfgfile
|
||||||
uci set $cfgname.config=main
|
uci set $cfgname.config=main
|
||||||
set_cfg_default_values $cfgname
|
set_cfg_default_values "$opt_flags" "$opt_strat" $cfgname
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +130,7 @@ function merge_cfg_with_def_values
|
|||||||
local cfg_sec_name="$( uci -q get $ZAPRET_CFG_NAME.config )"
|
local cfg_sec_name="$( uci -q get $ZAPRET_CFG_NAME.config )"
|
||||||
[ -z "$cfg_sec_name" ] && create_default_cfg
|
[ -z "$cfg_sec_name" ] && create_default_cfg
|
||||||
|
|
||||||
create_default_cfg "$NEWCFGNAME"
|
create_default_cfg "-" "" "$NEWCFGNAME"
|
||||||
[ ! -f "$NEWCFGFILE" ] && return 1
|
[ ! -f "$NEWCFGFILE" ] && return 1
|
||||||
|
|
||||||
uci -m -f $cfgfile import "$NEWCFGNAME"
|
uci -m -f $cfgfile import "$NEWCFGNAME"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copyright (c) 2024 remittor
|
# Copyright (c) 2024 remittor
|
||||||
|
|
||||||
function set_cfg_default_values
|
function set_cfg_reset_values
|
||||||
{
|
{
|
||||||
local cfgname=${1:-$ZAPRET_CFG_NAME}
|
local cfgname=${1:-$ZAPRET_CFG_NAME}
|
||||||
local TAB="$( echo -n -e '\t' )"
|
local TAB="$( echo -n -e '\t' )"
|
||||||
@@ -38,31 +38,250 @@ function set_cfg_default_values
|
|||||||
set $cfgname.config.NFQWS_UDP_PKT_IN='0'
|
set $cfgname.config.NFQWS_UDP_PKT_IN='0'
|
||||||
set $cfgname.config.NFQWS_PORTS_TCP_KEEPALIVE='0'
|
set $cfgname.config.NFQWS_PORTS_TCP_KEEPALIVE='0'
|
||||||
set $cfgname.config.NFQWS_PORTS_UDP_KEEPALIVE='0'
|
set $cfgname.config.NFQWS_PORTS_UDP_KEEPALIVE='0'
|
||||||
set $cfgname.config.NFQWS_OPT="
|
|
||||||
--filter-tcp=443
|
|
||||||
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
|
||||||
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
|
||||||
--hostlist-exclude-domains=openwrt.org
|
|
||||||
--dpi-desync=fake,fakeddisorder
|
|
||||||
--dpi-desync-split-pos=10,midsld
|
|
||||||
--dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
|
||||||
--dpi-desync-fake-tls-mod=rnd,dupsid,sni=fonts.google.com
|
|
||||||
--dpi-desync-fake-tls=0x0F0F0F0F
|
|
||||||
--dpi-desync-fake-tls-mod=none
|
|
||||||
--dpi-desync-fakedsplit-pattern=/opt/zapret/files/fake/tls_clienthello_vk_com.bin
|
|
||||||
--dpi-desync-split-seqovl=336
|
|
||||||
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_gosuslugi_ru.bin
|
|
||||||
--dpi-desync-fooling=badseq,badsum
|
|
||||||
--dpi-desync-badseq-increment=0
|
|
||||||
--new
|
|
||||||
--filter-udp=443
|
|
||||||
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
|
||||||
--dpi-desync=fake
|
|
||||||
--dpi-desync-repeats=6
|
|
||||||
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
|
||||||
"
|
|
||||||
# save changes
|
# save changes
|
||||||
commit $cfgname
|
commit $cfgname
|
||||||
EOF
|
EOF
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clear_nfqws_strat
|
||||||
|
{
|
||||||
|
local cfgname=${1:-$ZAPRET_CFG_NAME}
|
||||||
|
local TAB="$( echo -n -e '\t' )"
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.MODE_FILTER='hostlist'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT='$TAB'
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_cfg_nfqws_strat
|
||||||
|
{
|
||||||
|
local strat=${1:--}
|
||||||
|
local cfgname=${2:-$ZAPRET_CFG_NAME}
|
||||||
|
local TAB="$( echo -n -e '\t' )"
|
||||||
|
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.MODE_FILTER='hostlist'
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
if [ "$strat" = "empty" ]; then
|
||||||
|
clear_nfqws_strat $cfgname
|
||||||
|
fi
|
||||||
|
if [ "$strat" = "v1_by_StressOzz" ]; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT="
|
||||||
|
# Strategy $strat
|
||||||
|
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
||||||
|
--hostlist-auto=/opt/zapret/ipset/zapret-hosts-auto.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake,multidisorder
|
||||||
|
--dpi-desync-split-seqovl=681
|
||||||
|
--dpi-desync-split-pos=1
|
||||||
|
--dpi-desync-fooling=badseq
|
||||||
|
--dpi-desync-badseq-increment=10000000
|
||||||
|
--dpi-desync-repeats=2
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
||||||
|
--dpi-desync-fake-tls-mod=rnd,dupsid,sni=fonts.google.com
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-udp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake
|
||||||
|
--dpi-desync-repeats=6
|
||||||
|
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
||||||
|
"
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ "$strat" = "v2_by_StressOzz" ]; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT="
|
||||||
|
# Strategy $strat
|
||||||
|
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
||||||
|
--hostlist-auto=/opt/zapret/ipset/zapret-hosts-auto.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--dpi-desync=fake,fakeddisorder
|
||||||
|
--dpi-desync-split-pos=10,midsld
|
||||||
|
--dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
||||||
|
--dpi-desync-fake-tls-mod=rnd,dupsid,sni=fonts.google.com
|
||||||
|
--dpi-desync-fake-tls=0x0F0F0F0F
|
||||||
|
--dpi-desync-fake-tls-mod=none
|
||||||
|
--dpi-desync-fakedsplit-pattern=/opt/zapret/files/fake/tls_clienthello_vk_com.bin
|
||||||
|
--dpi-desync-split-seqovl=336
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_gosuslugi_ru.bin
|
||||||
|
--dpi-desync-fooling=badseq,badsum
|
||||||
|
--dpi-desync-badseq-increment=0
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-udp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake
|
||||||
|
--dpi-desync-repeats=6
|
||||||
|
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
||||||
|
"
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ "$strat" = "v3_by_StressOzz" ]; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT="
|
||||||
|
# Strategy $strat
|
||||||
|
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
||||||
|
--hostlist-auto=/opt/zapret/ipset/zapret-hosts-auto.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--dpi-desync=fake,fakeddisorder
|
||||||
|
--dpi-desync-split-pos=10,midsld
|
||||||
|
--dpi-desync-fake-tls=/opt/zapret/files/fake/t2.bin
|
||||||
|
--dpi-desync-fake-tls-mod=rnd,dupsid,sni=m.ok.ru
|
||||||
|
--dpi-desync-fake-tls=0x0F0F0F0F
|
||||||
|
--dpi-desync-fake-tls-mod=none
|
||||||
|
--dpi-desync-fakedsplit-pattern=/opt/zapret/files/fake/tls_clienthello_vk_com.bin
|
||||||
|
--dpi-desync-split-seqovl=336
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_gosuslugi_ru.bin
|
||||||
|
--dpi-desync-fooling=badseq,badsum
|
||||||
|
--dpi-desync-badseq-increment=0
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-udp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake
|
||||||
|
--dpi-desync-repeats=6
|
||||||
|
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
||||||
|
"
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ "$strat" = "v4_by_StressOzz" ]; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT="
|
||||||
|
# Strategy $strat
|
||||||
|
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--dpi-desync=fake,multisplit
|
||||||
|
--dpi-desync-split-pos=2,sld
|
||||||
|
--dpi-desync-fake-tls=0x0F0F0F0F
|
||||||
|
--dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
||||||
|
--dpi-desync-fake-tls-mod=rnd,dupsid,sni=google.com
|
||||||
|
--dpi-desync-split-seqovl=2108
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
||||||
|
--dpi-desync-fooling=badseq
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
||||||
|
--hostlist-auto=/opt/zapret/ipset/zapret-hosts-auto.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--dpi-desync-any-protocol=1
|
||||||
|
--dpi-desync-cutoff=n5
|
||||||
|
--dpi-desync=multisplit
|
||||||
|
--dpi-desync-split-seqovl=582
|
||||||
|
--dpi-desync-split-pos=1
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/4pda.bin
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-udp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake
|
||||||
|
--dpi-desync-repeats=6
|
||||||
|
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
||||||
|
"
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
if [ "$strat" = "v5_by_StressOzz" ]; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.NFQWS_PORTS_TCP='80,443'
|
||||||
|
set $cfgname.config.NFQWS_PORTS_UDP='443'
|
||||||
|
set $cfgname.config.NFQWS_OPT="
|
||||||
|
# Strategy $strat
|
||||||
|
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--ip-id=zero
|
||||||
|
--dpi-desync=multisplit
|
||||||
|
--dpi-desync-split-seqovl=681
|
||||||
|
--dpi-desync-split-pos=1
|
||||||
|
--dpi-desync-split-seqovl-pattern=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-tcp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-user.txt
|
||||||
|
--hostlist-auto=/opt/zapret/ipset/zapret-hosts-auto.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--hostlist-exclude-domains=openwrt.org
|
||||||
|
--dpi-desync=fake,fakeddisorder
|
||||||
|
--dpi-desync-split-pos=10,midsld
|
||||||
|
--dpi-desync-fake-tls=/opt/zapret/files/fake/max.bin
|
||||||
|
--dpi-desync-fake-tls-mod=rnd,dupsid
|
||||||
|
--dpi-desync-fake-tls=0x0F0F0F0F
|
||||||
|
--dpi-desync-fake-tls-mod=none
|
||||||
|
--dpi-desync-fakedsplit-pattern=/opt/zapret/files/fake/tls_clienthello_vk_com.bin
|
||||||
|
--dpi-desync-fooling=badseq,badsum
|
||||||
|
--dpi-desync-badseq-increment=0
|
||||||
|
|
||||||
|
--new
|
||||||
|
--filter-udp=443
|
||||||
|
--hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
|
||||||
|
--hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
|
||||||
|
--dpi-desync=fake
|
||||||
|
--dpi-desync-repeats=6
|
||||||
|
--dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin
|
||||||
|
"
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_cfg_default_values
|
||||||
|
{
|
||||||
|
local opt_flags=${1:--}
|
||||||
|
local opt_strat=${2:-v2_by_StressOzz}
|
||||||
|
local cfgname=${3:-$ZAPRET_CFG_NAME}
|
||||||
|
|
||||||
|
if ! echo "$opt_flags" | grep -q "(skip_base)"; then
|
||||||
|
set_cfg_reset_values $cfgname
|
||||||
|
fi
|
||||||
|
if [ "$opt_strat" != "-" ]; then
|
||||||
|
set_cfg_nfqws_strat "$opt_strat" $cfgname
|
||||||
|
fi
|
||||||
|
if echo "$opt_flags" | grep -q "(set_mode_autohostlist)"; then
|
||||||
|
uci batch <<-EOF
|
||||||
|
set $cfgname.config.MODE_FILTER='autohostlist'
|
||||||
|
commit $cfgname
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,15 +5,29 @@
|
|||||||
|
|
||||||
cfg_run_on_boot="$( uci -q get zapret.config.run_on_boot )"
|
cfg_run_on_boot="$( uci -q get zapret.config.run_on_boot )"
|
||||||
|
|
||||||
restore_all_ipset_cfg
|
opt_flags=${1:--}
|
||||||
create_default_cfg
|
opt_strat=$2
|
||||||
|
|
||||||
|
if echo "$opt_flags" | grep -q "(reset_ipset)"; then
|
||||||
|
restore_all_ipset_cfg
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_default_cfg "$opt_flags" "$opt_strat"
|
||||||
|
|
||||||
if [ "$cfg_run_on_boot" = "1" ]; then
|
if [ "$cfg_run_on_boot" = "1" ]; then
|
||||||
uci set zapret.config.run_on_boot=1
|
uci set zapret.config.run_on_boot=1
|
||||||
uci commit
|
uci commit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$1" = "sync" ]; then
|
ZAPRET_SYNC_CONFIG=0
|
||||||
|
if [ "$opt_flags" = "sync" ]; then
|
||||||
|
ZAPRET_SYNC_CONFIG=1
|
||||||
|
fi
|
||||||
|
if echo "$opt_flags" | grep -q "(sync)"; then
|
||||||
|
ZAPRET_SYNC_CONFIG=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ZAPRET_SYNC_CONFIG" = "1" ]; then
|
||||||
# renew main config
|
# renew main config
|
||||||
/opt/zapret/sync_config.sh
|
/opt/zapret/sync_config.sh
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user