Compare commits

..

6 Commits

Author SHA1 Message Date
remittor
1f885eea16 Bump version to v0.9.20260202 2026-02-02 15:24:27 +03:00
remittor
803c82a036 ipset: Update zapret-hosts-user-exclude.txt 2026-02-02 14:14:38 +03:00
remittor
865d21d802 diag: Add check googlevideo.com 2026-02-02 12:38:28 +03:00
remittor
bbb1aadfef luci: Fix func execAndRead 2026-02-01 13:05:00 +03:00
remittor
1f784b5773 executor: Fix error "XHR request timed out" 2026-01-31 21:27:45 +03:00
remittor
d85c80504f makefile: use UPX for packing nfqws2 2026-01-31 20:57:34 +03:00
6 changed files with 123 additions and 39 deletions

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-zapret2 PKG_NAME:=luci-app-zapret2
PKG_VERSION:=0.9.20260131 PKG_VERSION:=0.9.20260202
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_MAINTAINER:=remittor <https://github.com/remittor> PKG_MAINTAINER:=remittor <https://github.com/remittor>

View File

@@ -783,47 +783,78 @@ return baseclass.extend({
const logFile = log; // file for reading: '/tmp/zapret_pkg_install.log' const logFile = log; // file for reading: '/tmp/zapret_pkg_install.log'
const rcFile = logFile + '.rc'; const rcFile = logFile + '.rc';
try { try {
await fs.exec('/bin/busybox', [ 'rm', '-f', logFile + '*' ], null); await fs.exec('/bin/busybox', [ 'rm', '-f', logFile ], null);
appendLog('Output file cleared!'); await fs.exec('/bin/busybox', [ 'rm', '-f', rcFile ], null);
//appendLog('Output file cleared!');
} catch (e) { } catch (e) {
return callback.call(ctx, 500, 'ERROR: Failed to clear output file'); return callback.call(ctx, 500, 'ERROR: Failed to clear output file');
} }
let processStarted = false; let execRetCode = -1;
let opt_list = [ logFile ]; let opt_list = [ logFile ];
try { try {
opt_list.push(...cmd); opt_list.push(...cmd);
//console.log('script-exec.sh ... '+JSON.stringify(opt_list)); //console.log('script-exec.sh ... '+JSON.stringify(opt_list));
let proc = new Promise((resolve) => { fs.exec(this.appDir+'/script-exec.sh', opt_list, null)
fs.exec(this.appDir+'/script-exec.sh', opt_list, null) .then( (res) => {
.then (() => { resolve(); }) if (execRetCode < 0) {
.catch(() => { resolve(); }); execRetCode = res.code;
fixLogEnd();
if (res.code == 0) {
appendLog('Process started....');
} else {
if (res.stdout) appendLog(res.stdout);
appendLog('ERROR: process not executed! ret_code = '+res.code);
}
}
}).catch( (e) => {
console.log('ERROR: execAndRead: process not exec: '+e.message);
execRetCode = -100;
}); });
} catch (e) { } catch (e) {
return callback.call(ctx, 520, 'ERROR: Failed on execute process: ' + e.message); return callback.call(ctx, 520, 'ERROR: Failed on execute process: ' + e.message);
} }
let lastLen = 0; let lastLen = 0;
let retCode = -1; let retCode = -2; // rc file not found
return await new Promise(async (resolve, reject) => { return await new Promise(async (resolve, reject) => {
let ticks = 0; let ticks = 0;
async function epoll() async function epoll()
{ {
ticks += 1; ticks += 1;
try { try {
if (retCode < 0) {
let rc = await fs.exec('/bin/cat', [ rcFile ], null);
if (rc.code != 0) {
if (ticks >= 2) {
console.log('ERROR: execAndRead: '+JSON.stringify(opt_list));
fixLogEnd();
resolve(callback.call(ctx, 542, 'ERROR: Failed on read process rc-file: code = ' + rc.code));
return;
}
console.log('WARN: execAndRead: read rc-file res.code = '+rc.code);
}
if (rc.code == 0) {
if (rc.stdout) {
retCode = parseInt(rc.stdout.trim(), 10);
} else {
retCode = -1; // rc file exists, but empty
}
}
if (retCode <= -2) {
setTimeout(epoll, 500);
return; // skip first step with error
}
}
let res = await fs.exec('/bin/cat', [ logFile ], null); let res = await fs.exec('/bin/cat', [ logFile ], null);
if (res.code != 0) { if (res.code != 0) {
if (ticks > 1) { fixLogEnd();
console.log('ERROR: execAndRead: '+JSON.stringify(opt_list)); resolve(callback.call(ctx, 546, 'ERROR: Failed on read process log: code = ' + res.code));
resolve(callback.call(ctx, 541, 'ERROR: Failed on read process log: code = ' + res.code)); return;
return;
}
setTimeout(epoll, 500);
return; // skip first step with error
} }
if (!processStarted) { if (execRetCode < 0) {
execRetCode = 9999;
appendLog('Process started...'); appendLog('Process started...');
processStarted = true;
} }
if (res.stdout && res.stdout.length > lastLen) { if (res.code == 0 && res.stdout && res.stdout.length > lastLen) {
let log = res.stdout.slice(lastLen); let log = res.stdout.slice(lastLen);
hide_rows.forEach(re => { hide_rows.forEach(re => {
log = log.replace(re, ''); log = log.replace(re, '');
@@ -831,17 +862,6 @@ return baseclass.extend({
appendLog(log, ''); appendLog(log, '');
lastLen = res.stdout.length; lastLen = res.stdout.length;
} }
if (retCode < 0) {
let rc = await fs.exec('/bin/cat', [ rcFile ], null);
if (rc.code != 0) {
fixLogEnd();
resolve(callback.call(ctx, 545, 'ERROR: cannot read file "' + rcFile + '"'));
return;
}
if (rc.stdout) {
retCode = parseInt(rc.stdout.trim(), 10);
}
}
if (retCode >= 0) { if (retCode >= 0) {
fixLogEnd(); fixLogEnd();
if (retCode == 0 && res.stdout) { if (retCode == 0 && res.stdout) {

View File

@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=zapret2 PKG_NAME:=zapret2
PKG_VERSION:=0.9.20260131 PKG_VERSION:=0.9.20260202
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=bol-van PKG_MAINTAINER:=bol-van
@@ -14,8 +14,8 @@ PKG_LICENSE_FILES:=docs/LICENSE.txt
PKG_SOURCE_URL:=https://github.com/bol-van/zapret2.git PKG_SOURCE_URL:=https://github.com/bol-van/zapret2.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=a531da39fd7cf9d4c5c9c6fcf33d76b1d930c0d5 PKG_SOURCE_VERSION:=739c24cdf3575c406da02af59e1e9fdf006882cf
PKG_SOURCE_DATE:=2026-01-31 PKG_SOURCE_DATE:=2026-02-02
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
#PKG_SOURCE_URL:=https://github.com/bol-van/zapret2/archive/refs/tags/v$(PKG_VERSION).tar.gz? #PKG_SOURCE_URL:=https://github.com/bol-van/zapret2/archive/refs/tags/v$(PKG_VERSION).tar.gz?
@@ -53,6 +53,19 @@ else
LUA_LIBRARY:=-L$(STAGING_DIR)/usr/lib -llua$(LUA_VER) LUA_LIBRARY:=-L$(STAGING_DIR)/usr/lib -llua$(LUA_VER)
endif endif
UPX_VER:=5.1.0
UPX_URL:=https://github.com/upx/upx/releases/download/v$(UPX_VER)
UPX_URL_FILE:=upx-$(UPX_VER)-amd64_linux.tar.xz
UPX_TAR:=$(PKG_NAME)-$(UPX_URL_FILE)
UPX_DIR:=$(PKG_BUILD_DIR)/upx
UPX_BIN:=$(UPX_DIR)/upx
ifneq ($(filter mips64,$(ARCH)),)
USE_UPX := 0
else
USE_UPX := 1
endif
#TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS) #TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS)
#TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS) #TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
@@ -80,6 +93,14 @@ endef
$(eval $(call Download,$(PKG_NAME)-luajit)) $(eval $(call Download,$(PKG_NAME)-luajit))
endif endif
define Download/$(PKG_NAME)-upx
FILE:=$(UPX_TAR)
URL:=$(UPX_URL)
URL_FILE:=$(UPX_URL_FILE)
HASH:=skip
endef
$(eval $(call Download,$(PKG_NAME)-upx))
define Build/Prepare define Build/Prepare
$(Build/Prepare/Default) $(Build/Prepare/Default)
rm -f $(PKG_BUILD_DIR)/$(MAKE_PATH)/nfqws2 rm -f $(PKG_BUILD_DIR)/$(MAKE_PATH)/nfqws2
@@ -97,6 +118,9 @@ define Build/Prepare
tar -xzf "$(DL_DIR)/$(LUAJIT_TGZ)" --strip-components=1 -C "$(LUASRC_DIR)" ; \ tar -xzf "$(DL_DIR)/$(LUAJIT_TGZ)" --strip-components=1 -C "$(LUASRC_DIR)" ; \
rm -rf $(LUAOUT_DIR) ; \ rm -rf $(LUAOUT_DIR) ; \
fi fi
rm -rf $(UPX_DIR)
mkdir -p $(UPX_DIR)
tar -xf "$(DL_DIR)/$(UPX_TAR)" --strip-components=1 -C "$(UPX_DIR)"
endef endef
#define Build/Configure #define Build/Configure
@@ -135,6 +159,16 @@ define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) $(TARGET_CONFIGURE_OPTS) LUA_JIT=$(LUA_JIT) LUA_CFLAGS="$(LUA_INCLUDE)" LUA_LIB="$(LUA_LIBRARY)" $(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) $(TARGET_CONFIGURE_OPTS) LUA_JIT=$(LUA_JIT) LUA_CFLAGS="$(LUA_INCLUDE)" LUA_LIB="$(LUA_LIBRARY)"
$(MAKE) -C $(PKG_BUILD_DIR)/ip2net $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(PKG_BUILD_DIR)/ip2net $(TARGET_CONFIGURE_OPTS)
$(MAKE) -C $(PKG_BUILD_DIR)/mdig $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(PKG_BUILD_DIR)/mdig $(TARGET_CONFIGURE_OPTS)
ifeq ($(USE_UPX),1)
@if [ -x "$(UPX_BIN)" ]; then \
echo "Packing nfqws2 with UPX"; \
$(UPX_BIN) --best --lzma $(PKG_BUILD_DIR)/$(MAKE_PATH)/nfqws2; \
else \
echo "WARNING: UPX not found, skipping packing"; \
fi
else
@echo "Skipping UPX for $(ARCH)"
endif
endef endef
ZAPRET_DIR := /opt/zapret2 ZAPRET_DIR := /opt/zapret2

View File

@@ -106,6 +106,7 @@ if [ "$opt_sites" = true ]; then
lkfl2.nalog.ru | | | https://lkfl2.nalog.ru/lkfl/static/assets/main-desktop-1920-CvJsHANg.jpg lkfl2.nalog.ru | | | https://lkfl2.nalog.ru/lkfl/static/assets/main-desktop-1920-CvJsHANg.jpg
rutube.ru | @ | 40000 | https://static.rutube.ru/static/wdp/fonts/Semibold/OpenSans-Semibold.woff2?20231026 rutube.ru | @ | 40000 | https://static.rutube.ru/static/wdp/fonts/Semibold/OpenSans-Semibold.woff2?20231026
youtube.com | @# | 300000 | https://youtube.com youtube.com | @# | 300000 | https://youtube.com
googlevideo.com | | 210000 | https://redirector.googlevideo.com/report_mapping
instagram.com | @# | 300000 | https://instagram.com instagram.com | @# | 300000 | https://instagram.com
rutracker.org | @# | 80000 | https://rutracker.org rutracker.org | @# | 80000 | https://rutracker.org
nnmclub.to | @# | 120000 | https://nnmclub.to nnmclub.to | @# | 120000 | https://nnmclub.to

View File

@@ -19,6 +19,10 @@ ottai.com
ipstream.one ipstream.one
vkusvill.ru vkusvill.ru
kinopoisk.ru kinopoisk.ru
vk.ru
vk.com
yandex.ru
ya.ru
#################################### Epicgames #################################### Epicgames
easy.ac easy.ac
fab.com fab.com
@@ -323,4 +327,14 @@ windowsupdate.com
microsoftonline.com microsoftonline.com
microsoftonline-p.com microsoftonline-p.com
minecraftservices.com minecraftservices.com
#################################### Arknights: Endfield
skport.com
hg-cdn.com
helpshift.com
gryphline.com
#################################### Samsung
samsungosp.com
samsungqbe.com
amazontrust.com
samsungcloudsolution.com
#################################### ####################################

View File

@@ -1,22 +1,37 @@
#!/bin/sh #!/bin/sh
# Copyright (c) 2024 remittor # Copyright (c) 2024 remittor
PID_FILE=/tmp/zapret-script-exec.pid PID_FILE=/tmp/zapret-script-exec.pid
[ -f $PID_FILE ] && exit 70 if [ -f $PID_FILE ]; then
echo "ERROR: file $PID_FILE already exists!" | awk 'NR==1'
exit 70
fi
LOG_FILE=$1 LOG_FILE=$1
RC_FILE=$1.rc RC_FILE=$1.rc
SH_FILE=$2 SH_FILE=$2
shift 2 shift 2
[ ! -f $SH_FILE ] && exit 71 if [ ! -e $SH_FILE ]; then
: > $LOG_FILE echo "ERROR: script $SH_FILE not found!" | awk 'NR==1'
: > $RC_FILE exit 71
fi
if [ ! -x $SH_FILE ]; then
echo "ERROR: script $SH_FILE not Found!" | awk 'NR==1'
exit 72
fi
start-stop-daemon -S -b -p $PID_FILE -x /bin/sh -- -c ' start-stop-daemon -S -b -p $PID_FILE -x /bin/sh -- -c '
LOG_FILE=$1 LOG_FILE=$1
RC_FILE=$2 RC_FILE=$2
SH_FILE=$3 SH_FILE=$3
shift 3 shift 3
sh $SH_FILE "$@" > $LOG_FILE 2>&1 printf "" > $LOG_FILE
printf "" > $RC_FILE
$SH_FILE "$@" >> $LOG_FILE 2>&1
RET_CODE=$? RET_CODE=$?
sleep 1
echo $RET_CODE > $RC_FILE echo $RET_CODE > $RC_FILE
' sh $LOG_FILE $RC_FILE $SH_FILE "$@" ' sh $LOG_FILE $RC_FILE $SH_FILE "$@"
RET_CODE=$?
if [ $RET_CODE != 0 ]; then
echo "ERROR: script $SH_FILE not executed! ret_code = $RET_CODE" | awk 'NR==1'
exit $RET_CODE
fi
echo "Script $SH_FILE running..." | awk 'NR==1'
exit 0 exit 0