Compare commits

...

78 Commits

Author SHA1 Message Date
7941f12c63 Bump version to v71.20250918
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-09-18 15:17:37 +03:00
81f4b493f6 Add FILTER_MARK support 2025-09-18 15:17:18 +03:00
bd2e62c8a6 Bump version to v71.20250708
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-07-08 11:55:41 +03:00
caa82938c1 ipset: Update zapret-hosts-google.txt 2025-07-08 11:54:28 +03:00
b1fd577bd1 config: Update default config (v71) 2025-07-08 11:46:05 +03:00
e8fc868226 Bump version to v71.20250607
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-06-07 22:06:10 +03:00
2670ff2985 build: Exclude arch arm_cortex-a7_neon-vfpv4 for SNAPSHOT 2025-06-07 22:05:49 +03:00
dda8f254a0 comfunc: MiniFix in init_before_start 2025-06-07 15:17:18 +03:00
62401bbad5 Bump version to v70.20250505
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-05-05 15:26:18 +03:00
c31fab4aaf config: Add new param FILTER_TTL_EXPIRED_ICMP
Source: dc1dc5c876
2025-05-05 15:26:17 +03:00
d56cd06281 luci: Fix access to files into custom.d dir 2025-05-05 15:26:17 +03:00
5f681a372a install: Patch luci header.ut for force update browser-cache
Aux info: https://github.com/openwrt/luci/pull/7725
2025-05-05 15:26:17 +03:00
d9d339e157 comfunc: Fix stdout into func adapt_for_sed 2025-05-05 15:26:17 +03:00
dfbd77bb91 install: Check service running before stop 2025-04-27 20:30:01 +03:00
aa4adc0c50 Bump version to v70.20250419
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-04-19 17:59:55 +03:00
919c91a6c7 luci: Fix get service info on OpenWrt 21.02 2025-04-19 17:59:31 +03:00
da2cf34f9f config: Remove comment-line from NFQWS_OPT on sync 2025-04-19 17:58:52 +03:00
6b1825387f luci: Add link to help page for NFQWS_OPT 2025-04-19 14:36:58 +03:00
ca2b1378c6 luci: Fix view multiline for NFQWS_OPT 2025-04-19 14:36:58 +03:00
d0b03e60b6 config: Fix process empty value for NFQWS_PORTS_xxx_KEEPALIVE 2025-04-18 14:07:00 +03:00
d4fb54c2c0 Bump version to v70.20250405
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-04-05 12:03:52 +03:00
5a7676c6f5 luci: Update link to discord custom script 2025-04-04 19:51:38 +03:00
60865aa602 ipset: Add file "zapret-hosts-user.txt" 2025-03-31 20:08:32 +03:00
f6dd684b62 comfunc: Delete auto preset "abra-cadabra.com" 2025-03-31 20:03:09 +03:00
fee8520332 Revert "build: Exclude arch arm_cortex-a7_neon-vfpv4"
This reverts commit f912f30944.
2025-03-28 21:21:25 +03:00
d317bcf541 Bump version to v70.20250323
Some checks failed
build / build (arm_cortex-a8_vfpv3, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-24.10, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-03-23 12:43:45 +03:00
1d27f12791 luci: Fix version check for v24.10 release pkg 2025-03-23 12:43:27 +03:00
f912f30944 build: Exclude arch arm_cortex-a7_neon-vfpv4 2025-03-23 10:39:22 +03:00
2fb9ff7095 build: Remove arch arm_mpcore 2025-03-23 08:48:01 +03:00
8792204b57 build: Add arch aarch64_cortex-a76 2025-03-23 08:41:10 +03:00
59aaa0c3eb build: Using 24.10 branch 2025-03-23 08:39:57 +03:00
f77e985d37 ipset: Add play.google.com into zapret-hosts-user-exclude.txt 2025-02-25 10:47:18 +03:00
fa668eaaff ipset: add localhost to zapret-hosts-user-exclude.txt 2025-02-25 10:46:22 +03:00
6deb6f70fb init: Fix empty zapret-hosts-user.txt on start daemons 2025-02-25 10:41:38 +03:00
d234b5f762 Bump version to v70.20250213
Some checks failed
build / build (arm_cortex-a8_vfpv3, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-02-13 08:49:40 +03:00
7a36045383 luci: Fix initialization L.sysFeatures 2025-02-13 08:48:47 +03:00
55036bc03c init: Add cron task for removing huge log-files 2025-02-12 20:36:43 +03:00
f2e6b6fc7e luci: Rename blacklist to HostList 2025-02-12 20:27:37 +03:00
e2313c9096 luci: Add human readable messages (dmnlog) 2025-02-11 21:21:49 +03:00
a2fe8816f1 init: Fix ipset permissions on restart 2025-02-11 19:12:03 +03:00
71794ca7e0 readme: Update badges (add actual version) 2025-02-11 10:10:48 +03:00
cded72542e Bump version to v70.20250210
Some checks failed
build / build (arm_cortex-a8_vfpv3, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-23.05, ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-02-10 21:03:36 +03:00
31522f53d7 config: Fix bug (add option DAEMON_LOG_FILE for sync) 2025-02-10 21:03:03 +03:00
794f86a34c luci: Fix refresh textarea with logs 2025-02-10 19:50:03 +03:00
2529444929 luci: Use fs.read_direct instead fs.exec_direct 2025-02-10 15:00:12 +03:00
8ef98e1bcd luci: Transfer option DISABLE_CUSTOM to tab custom.d 2025-02-10 14:56:52 +03:00
57cfc5af29 install: Fix file permissions 2025-02-10 14:03:22 +03:00
8e783c4bd6 init: Fix bug (remove log on each start) 2025-02-10 09:51:56 +03:00
f7114167eb init: Remove logs on start and restart 2025-02-09 20:55:44 +03:00
adab5d93c5 luci: Add log viewer 2025-02-09 20:42:51 +03:00
41df444327 config: Add new option DAEMON_LOG_ENABLE 2025-02-09 13:28:59 +03:00
c187d544e3 build: Add init step 2025-02-09 11:59:21 +03:00
c524434b43 build: Add option TEST_BUILD 2025-02-09 11:35:01 +03:00
b73f7e93d6 build: Disable JS minification 2025-02-09 09:57:53 +03:00
4c224634c1 config: Add new option WS_USER 2025-02-08 16:13:02 +03:00
82fafaa6fe config: Add new option DISABLE_CUSTOM 2025-02-05 20:14:11 +03:00
768ebb6241 readme: Add new badges 2025-01-31 12:52:45 +03:00
0891e9d2fa github: Cleanup build script 2025-01-17 11:30:08 +03:00
fbb1239606 readme: Add download counter for latest release 2025-01-17 11:26:36 +03:00
88d82932c9 Bump version to v70.20250116
Some checks failed
build / build (arm_cortex-a8_vfpv3, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, SNAPSHOT, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / build (x86_64, openwrt-23.05, ${{ github.event.inputs.fake_build == 'true' }}) (push) Has been cancelled
build / release (push) Has been cancelled
2025-01-16 19:57:33 +03:00
d169c51a11 github: Global changes 2025-01-16 19:57:22 +03:00
474baa09aa readme: Add download counter 2025-01-16 14:27:41 +03:00
b9621559c3 luci: Add support custom.d scripts 2025-01-14 09:14:14 +03:00
e0fd21187b Bump version to v70-20250109
Some checks failed
build / build (arm_cortex-a9, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05) (push) Has been cancelled
build / build (x86_64, SNAPSHOT) (push) Has been cancelled
build / build (x86_64, openwrt-23.05) (push) Has been cancelled
build / release (23.05) (push) Has been cancelled
build / release (SNAPSHOT) (push) Has been cancelled
2025-01-09 12:33:23 +03:00
47822364d5 luci: Forced use busybox ps 2024-12-13 21:32:55 +03:00
72d1ac6d7a Bump version to v69-20241206
Some checks failed
build / build (arm_cortex-a9, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05) (push) Has been cancelled
build / build (x86_64, SNAPSHOT) (push) Has been cancelled
build / build (x86_64, openwrt-23.05) (push) Has been cancelled
build / release (23.05) (push) Has been cancelled
build / release (SNAPSHOT) (push) Has been cancelled
2024-12-06 21:27:16 +03:00
b1c289c397 github: Exclude arch arm_cortex-a9_vfpv3-d16 2024-12-06 21:26:50 +03:00
ce1563dc7d Bump version to v69-20241123
Some checks failed
build / build (arm_cortex-a9, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05) (push) Has been cancelled
build / build (x86_64, SNAPSHOT) (push) Has been cancelled
build / build (x86_64, openwrt-23.05) (push) Has been cancelled
build / release (23.05) (push) Has been cancelled
build / release (SNAPSHOT) (push) Has been cancelled
2024-11-23 20:44:17 +03:00
566f3376ae readme: Add about of tool 2024-11-21 18:11:40 +03:00
e377c7aa4d Bump version to v69-20241121
Some checks failed
build / build (arm_cortex-a9, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_neon, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, SNAPSHOT) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05) (push) Has been cancelled
build / build (arm_fa526, SNAPSHOT) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05) (push) Has been cancelled
build / build (arm_xscale, SNAPSHOT) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05) (push) Has been cancelled
build / build (mips64_octeonplus, SNAPSHOT) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05) (push) Has been cancelled
build / build (mips_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mips_4kec, SNAPSHOT) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05) (push) Has been cancelled
build / build (mips_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc_24kf, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_74kc, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_mips32, SNAPSHOT) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05) (push) Has been cancelled
build / build (x86_64, SNAPSHOT) (push) Has been cancelled
build / build (x86_64, openwrt-23.05) (push) Has been cancelled
build / release (23.05) (push) Has been cancelled
build / release (SNAPSHOT) (push) Has been cancelled
2024-11-21 18:10:59 +03:00
a36853921e github: Add support SNAPSHOT branch 2024-11-21 18:10:27 +03:00
bddb0f395d readme: Add donation address 2024-11-21 12:17:18 +03:00
9719c11a58 luci: Adapt code for APK support 2024-11-21 10:39:54 +03:00
51fc9739d8 config: Skip run_on_boot option on restore default uci-config 2024-11-20 22:08:40 +03:00
5f584bcf58 config: Renew default config (v69)
Source: https://github.com/bol-van/zapret-win-bundle/blob/master/zapret-winws/preset_russia.cmd
2024-11-19 21:09:36 +03:00
cedb032eee Bump version to v69-20241118
Some checks failed
build / check (push) Has been cancelled
build / build (aarch64_cortex-a53, openwrt-23.05) (push) Has been cancelled
build / build (aarch64_cortex-a72, openwrt-23.05) (push) Has been cancelled
build / build (aarch64_generic, openwrt-23.05) (push) Has been cancelled
build / build (arm_arm1176jzf-s_vfp, openwrt-23.05) (push) Has been cancelled
build / build (arm_arm926ej-s, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a15_neon-vfpv4, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a5_vfpv4, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a7, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a7_neon-vfpv4, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a7_vfpv4, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a8_vfpv3, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_neon, openwrt-23.05) (push) Has been cancelled
build / build (arm_cortex-a9_vfpv3-d16, openwrt-23.05) (push) Has been cancelled
build / build (arm_fa526, openwrt-23.05) (push) Has been cancelled
build / build (arm_mpcore, openwrt-23.05) (push) Has been cancelled
build / build (arm_xscale, openwrt-23.05) (push) Has been cancelled
build / build (mips64_octeonplus, openwrt-23.05) (push) Has been cancelled
build / build (mips_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mips_4kec, openwrt-23.05) (push) Has been cancelled
build / build (mips_mips32, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_24kc_24kf, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_74kc, openwrt-23.05) (push) Has been cancelled
build / build (mipsel_mips32, openwrt-23.05) (push) Has been cancelled
build / build (x86_64, openwrt-23.05) (push) Has been cancelled
build / release (23.05) (push) Has been cancelled
2024-11-18 16:55:09 +03:00
8ea92829c8 init: Log enabled status only on boot 2024-11-17 13:40:54 +03:00
cdbd9c80e0 install: Enable service when upgrade package 2024-11-17 13:39:45 +03:00
24 changed files with 1019 additions and 155 deletions

31
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,31 @@
# These are supported funding model platforms
# Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github:
# Replace with a single Patreon username
patreon:
# Replace with a single Open Collective username
open_collective:
# Replace with a single Ko-fi username
ko_fi:
# Replace with a single Tidelift platform-name/package-name e.g., npm/babel
tidelift:
# Replace with a single Community Bridge project-name e.g., cloud-foundry
community_bridge:
# Replace with a single Liberapay username
liberapay:
# Replace with a single IssueHunt username
issuehunt:
# Replace with a single Otechie username
otechie:
# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: ['https://github.com/remittor/donate']

View File

@ -2,10 +2,48 @@ name: build
on: on:
workflow_dispatch: workflow_dispatch:
inputs:
test_build:
description: 'Test build'
required: false
default: 'false'
type: choice
options:
- true
- false
fake_build:
description: 'Fake build'
required: false
default: 'false'
type: choice
options:
- true
- false
max_speed:
description: 'Build with max speed'
required: false
default: 'true'
type: choice
options:
- true
- false
push: push:
tags: tags:
- v[0-9]+* - v[0-9]+*
env:
TEST_BUILD: ${{ github.event.inputs.test_build == 'true' }}
FAKE_BUILD: ${{ github.event.inputs.fake_build == 'true' }}
MAX_SPEED: ${{ github.event.inputs.max_speed != 'false' }}
TAG_SUFFIX: ${{ github.event.inputs.fake_build == 'true' && '-fake' || github.event.inputs.test_build == 'true' && '-test' || '' }}
REPO_URL: https://github.com/remittor/zapret-openwrt
REPO_LNK: remittor/zapret-openwrt
REPO_BRANCH: master
BUILD_ROOT: ${{ github.workspace }}/builder
BUILD_DATE: unknown
REPO_DATE: unknown
LUCI_ARCH: aarch64_cortex-a53
jobs: jobs:
check: check:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -15,38 +53,45 @@ jobs:
sha: ${{ steps.gh.outputs.sha }} sha: ${{ steps.gh.outputs.sha }}
url: ${{ steps.gh.outputs.url }} url: ${{ steps.gh.outputs.url }}
message: ${{ steps.gh.outputs.message }} message: ${{ steps.gh.outputs.message }}
build_date: ${{ steps.gh.outputs.build_date }}
fw_date: ${{ steps.gh.outputs.fw_date }}
is_active: ${{ steps.activity.outputs.is_active }} is_active: ${{ steps.activity.outputs.is_active }}
test_build: ${{ env.TEST_BUILD }}
fake_build: ${{ env.FAKE_BUILD }}
steps: steps:
- name: Get repo data via GH API - name: Get repo data via GH API
id: gh id: gh
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: 'remittor/zapret-openwrt'
run: | run: |
echo "Tag name from GITHUB_REF_NAME: $GITHUB_REF_NAME" echo "Tag name from GITHUB_REF_NAME: $GITHUB_REF_NAME"
echo "Tag name from github.ref_name: ${{ github.ref_name }}" echo "Tag name from github.ref_name: ${{ github.ref_name }}"
BRANCH=$(gh api repos/$REPO --jq '.default_branch') BRANCH=$(gh api repos/$REPO_LNK --jq '.default_branch')
DATE=$(gh api repos/$REPO/commits/$BRANCH --jq '.commit.committer.date') REPO_DATE=$(gh api repos/$REPO_LNK/commits/$BRANCH --jq '.commit.committer.date')
BUILD_DATE=$( date --utc +'%Y%m%d' )
FW_DATE=$( date --utc +'%Y-%m-%d' )
{ {
echo "tag=$GITHUB_REF_NAME" echo "tag=$GITHUB_REF_NAME"
echo "date=$(date --utc -d $DATE +%Y%m%d)" echo "date=$(date --utc -d $REPO_DATE +%Y%m%d)"
echo "sha=$(gh api repos/$REPO/commits/$BRANCH --jq '.sha[0:7]')" echo "sha=$(gh api repos/$REPO_LNK/commits/$BRANCH --jq '.sha[0:7]')"
echo "url=$(gh api repos/$REPO/commits/$BRANCH --jq '.html_url')" echo "url=$(gh api repos/$REPO_LNK/commits/$BRANCH --jq '.html_url')"
echo "message<<EOF" echo "message<<EOF"
gh api repos/$REPO/commits/$BRANCH --jq '.commit.message' gh api repos/$REPO_LNK/commits/$BRANCH --jq '.commit.message'
echo EOF echo EOF
echo "build_date=$BUILD_DATE"
echo "fw_date=$FW_DATE"
} >> $GITHUB_OUTPUT } >> $GITHUB_OUTPUT
echo "DATE=$DATE" >> $GITHUB_ENV echo "REPO_DATE=$REPO_DATE" >> $GITHUB_ENV
- name: Check for repo activity - name: Check for repo activity
id: activity id: activity
env: env:
DATE: ${{ env.DATE }} REPO_DATE: ${{ env.REPO_DATE }}
URL: ${{ steps.gh.outputs.url }} URL: ${{ steps.gh.outputs.url }}
run: | run: |
TIMESTAMP=$(date --utc -d $DATE +%s) TIMESTAMP=$(date --utc -d $REPO_DATE +%s)
DAYS=$(( ( $(date --utc +%s) - $TIMESTAMP ) / 86400 )) DAYS=$(( ( $(date --utc +%s) - $TIMESTAMP ) / 86400 ))
echo "Repository activity: $(date --utc -d $DATE)" echo "Repository activity: $(date --utc -d $REPO_DATE)"
echo "Commit: $URL" echo "Commit: $URL"
if [ "${{ github.event_name }}" != "schedule" ]; then if [ "${{ github.event_name }}" != "schedule" ]; then
is_active=true is_active=true
@ -65,11 +110,11 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
#branch: [ openwrt-22.03, openwrt-23.05 ] branch: [ openwrt-24.10, SNAPSHOT ]
branch: [ openwrt-23.05 ]
arch: arch:
- aarch64_cortex-a53 - aarch64_cortex-a53
- aarch64_cortex-a72 - aarch64_cortex-a72
- aarch64_cortex-a76
- aarch64_generic - aarch64_generic
- arm_arm1176jzf-s_vfp - arm_arm1176jzf-s_vfp
- arm_arm926ej-s - arm_arm926ej-s
@ -83,7 +128,6 @@ jobs:
- arm_cortex-a9_neon - arm_cortex-a9_neon
- arm_cortex-a9_vfpv3-d16 - arm_cortex-a9_vfpv3-d16
- arm_fa526 - arm_fa526
- arm_mpcore
- arm_xscale - arm_xscale
- mips64_octeonplus - mips64_octeonplus
- mips_24kc - mips_24kc
@ -94,146 +138,215 @@ jobs:
- mipsel_74kc - mipsel_74kc
- mipsel_mips32 - mipsel_mips32
- x86_64 - x86_64
#include: isTestOrFake:
# - branch: SNAPSHOT - ${{ needs.check.outputs.test_build == 'true' || needs.check.outputs.fake_build == 'true' }}
# arch: x86_64 exclude:
#exclude: - branch: SNAPSHOT
# - branch: openwrt-22.03 arch: arm_cortex-a9_vfpv3-d16
# arch: arm_fa526 - branch: SNAPSHOT
# - branch: openwrt-22.03 arch: arm_cortex-a7_neon-vfpv4
# arch: arm_mpcore - { isTestOrFake: true }
include:
- branch: openwrt-24.10
arch: x86_64
- branch: openwrt-24.10
arch: aarch64_cortex-a53
- branch: SNAPSHOT
arch: aarch64_cortex-a53
container: container:
image: openwrt/sdk:${{ matrix.arch }}-${{ matrix.branch }} image: openwrt/sdk:${{ matrix.arch }}-${{ matrix.branch }}
options: --user root options: --user root
outputs:
pkgver: ${{ steps.build.outputs.pkgver }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
repository: 'remittor/zapret-openwrt' repository: ${{ env.REPO_LNK }}
path: zapret-openwrt path: zapret-openwrt
- name: Setup OpenWrt SDK - name: Setup OpenWrt SDK
if: ${{ matrix.branch == 'openwrt-23.05' || matrix.branch == 'SNAPSHOT' }}
working-directory: /builder working-directory: /builder
env:
BRANCH: ${{ matrix.branch }}
shell: bash shell: bash
run: | run: |
# gpg --verbose --recv-keys 0x1D53D1877742E911 # gpg --verbose --recv-keys 0x1D53D1877742E911
gpg --verbose --import <(wget -qO- 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/0x1D53D1877742E911.asc') gpg --verbose --import <(wget -qO- 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/0x1D53D1877742E911.asc')
# disable check signatures
sed -i 's/gpg --/#gpg --/g' setup.sh
# disable cleanup keys
sed -r -i 's/^rm.+//' setup.sh sed -r -i 's/^rm.+//' setup.sh
./setup.sh ./setup.sh
ls -lh ls -lh
if [ "$BRANCH" = "openwrt-24.10" ]; then
echo "PKGTYPE=ipk" >> $GITHUB_ENV
else
echo "PKGTYPE=apk" >> $GITHUB_ENV
fi
- name: Setup ccache - name: Setup ccache
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: ${{ matrix.branch == 'openwrt-19.07' && '/home/build/openwrt/.ccache' || '/builder/.ccache' }} path: '/builder/.ccache'
key: ccache-${{ matrix.arch }}-${{ matrix.branch }}-${{ github.run_id }} key: ccache-${{ matrix.arch }}-${{ matrix.branch }}-${{ github.run_id }}
restore-keys: | restore-keys: |
ccache-${{ matrix.arch }}-${{ matrix.branch }}- ccache-${{ matrix.arch }}-${{ matrix.branch }}-
- name: Build packages - name: Init packages
id: build id: init
working-directory: ${{ matrix.branch == 'openwrt-19.07' && '/home/build/openwrt' || '/builder' }} working-directory: '/builder'
env: env:
DATE: ${{ needs.check.outputs.date }} FAKE_BUILD: ${{ env.FAKE_BUILD == 'true' || ( env.TEST_BUILD == 'true' && matrix.branch == 'SNAPSHOT' ) }}
SHA: ${{ needs.check.outputs.sha }} BUILD_DATE: ${{ needs.check.outputs.build_date }}
ARCH: ${{ matrix.arch }} ARCH: ${{ matrix.arch }}
BRANCH: ${{ matrix.branch }} BRANCH: ${{ matrix.branch }}
SIGN_KEY: ${{ secrets.SIGN_PRIVATE_KEY }} SIGN_KEY: ${{ secrets.SIGN_PRIVATE_KEY }}
CCACHE_DIR: ${{ matrix.branch == 'openwrt-19.07' && '/home/build/openwrt/.ccache' || '/builder/.ccache' }} CCACHE_DIR: '/builder/.ccache'
shell: bash shell: bash
run: | run: |
#export PKG_VERSION=$(date --utc -d $DATE +%Y%m%d) PKGDIR=$GITHUB_WORKSPACE/zapret-openwrt
#find $GITHUB_WORKSPACE/zapret-openwrt -type d -path '*/package/zapret' -exec cp -vr {} ./package \; MKFN=$PKGDIR/luci-app-zapret/Makefile
cp -vr $GITHUB_WORKSPACE/zapret-openwrt ./package/zapret-openwrt/ PKGVER=$( grep -s '^PKG_VERSION:=.*' $MKFN | cut -d'=' -f2 )
echo "PKG_VERSION = $PKGVER"
cp -vr $PKGDIR ./package/zapret-openwrt/
mv feeds.conf.default feeds.conf mv feeds.conf.default feeds.conf
sed -i -e 's|base.*\.git|base https://github.com/openwrt/openwrt.git|' feeds.conf sed -i -e 's|base.*\.git|base https://github.com/openwrt/openwrt.git|' feeds.conf
sed -i -e 's|packages.*\.git|packages https://github.com/openwrt/packages.git|' feeds.conf sed -i -e 's|packages.*\.git|packages https://github.com/openwrt/packages.git|' feeds.conf
sed -i -e 's|luci.*\.git|luci https://github.com/openwrt/luci.git|' feeds.conf sed -i -e 's|luci.*\.git|luci https://github.com/openwrt/luci.git|' feeds.conf
mkdir -p ./logs
./scripts/feeds update base packages luci if [ "$FAKE_BUILD" = "false" ]; then
./scripts/feeds install -a ./scripts/feeds update base packages luci
./scripts/feeds install -a
fi
echo "FAKE_BUILD=$FAKE_BUILD" >> $GITHUB_ENV
echo "PKGVER=$PKGVER" >> $GITHUB_ENV
echo "pkgver=$PKGVER" >> $GITHUB_OUTPUT
echo "status=success" >> $GITHUB_OUTPUT
- name: Build packages
id: build
if: steps.init.outputs.status == 'success'
working-directory: '/builder'
env:
BUILD_DATE: ${{ needs.check.outputs.build_date }}
ARCH: ${{ matrix.arch }}
BRANCH: ${{ matrix.branch }}
SIGN_KEY: ${{ secrets.SIGN_PRIVATE_KEY }}
CCACHE_DIR: '/builder/.ccache'
shell: bash
run: |
MAKE_JOBS=$(($(nproc)+1))
echo "$MAKE_JOBS thread compile"
make defconfig if [ "$FAKE_BUILD" = "false" ]; then
echo "------------- .config BEG -------------------" make defconfig
cat .config sed -i 's/CONFIG_LUCI_JSMIN=y/CONFIG_LUCI_JSMIN=n/g' .config
echo "------------- .config END -------------------" echo "------------- .config BEG -------------------"
cat .config
echo "------------- .config END -------------------"
if [ "$ARCH" = "$LUCI_ARCH" ]; then
PKGLIST=`echo package/zapret-openwrt/{zapret,zapret-tpws,zapret-mdig,zapret-ip2net,luci-app-zapret}/compile`
else
PKGLIST=`echo package/zapret-openwrt/{zapret,zapret-tpws,zapret-mdig,zapret-ip2net}/compile`
fi
if [ "$MAX_SPEED" = "false" ]; then
make $PKGLIST V=s CONFIG_CCACHE=1 BUILD_LOG=1
else
make -j$MAKE_JOBS $PKGLIST CONFIG_CCACHE=1
fi
else
OUT_DIR=./bin/packages/dev_x/base
mkdir -p $OUT_DIR
touch $OUT_DIR/zapret_$PKGVER-$ARCH.$PKGTYPE
touch $OUT_DIR/luci-app-zapret_$PKGVER-all.$PKGTYPE
fi
PKGLIST=`echo package/zapret-openwrt/{zapret,zapret-tpws,zapret-mdig,zapret-ip2net,luci-app-zapret}/compile` find ./bin/packages/*/base -type f ! -regex ".*\(zapret\).*\.[ai]pk$" -delete
make $PKGLIST V=s CONFIG_CCACHE=1 BUILD_LOG=1
find ./bin/packages/*/base -type f ! -regex ".*\(zapret\).*\.ipk$" -delete
#echo ">>>>>>> build a repository index to make the output directory usable as local OPKG source" #echo ">>>>>>> build a repository index to make the output directory usable as local OPKG source"
#ln -s `which usign` staging_dir/host/bin/usign #ln -s `which usign` staging_dir/host/bin/usign
#echo "$SIGN_KEY" | base64 -d > key-build #echo "$SIGN_KEY" | base64 -d > key-build
#make package/index #make package/index
tar -C ./bin/packages/*/base -cvf $GITHUB_WORKSPACE/ipk-$BRANCH-$ARCH.tar --transform "s|^\./|${BRANCH/openwrt-}/$ARCH/|" --show-transformed-names . OUTDIR=$GITHUB_WORKSPACE/$PKGTYPE-$ARCH
mkdir -p $OUTDIR
cp -R ./bin/packages/*/base/. $OUTDIR/
./staging_dir/host/bin/ccache --max-size=10M --show-stats ./staging_dir/host/bin/ccache --max-size=10M --show-stats
echo "OUTDIR=$OUTDIR" >> $GITHUB_ENV
echo "pkgver=$PKGVER" >> $GITHUB_OUTPUT
echo "status=success" >> $GITHUB_OUTPUT
- name: Compress build logs - name: Compress build logs
if: always() if: always()
env: env:
ARCH: ${{ matrix.arch }} ARCH: ${{ matrix.arch }}
BRANCH: ${{ matrix.branch }} BRANCH: ${{ matrix.branch }}
LOGS_DIR: ${{ matrix.branch == 'openwrt-19.07' && '/home/build/openwrt/logs' || '/builder/logs' }} LOGS_DIR: '/builder/logs'
run: | run: |
tar -cJvf logs-$BRANCH-$ARCH.tar.xz $LOGS_DIR tar -cJvf logs-$BRANCH-$ARCH.tar.xz $LOGS_DIR
- name: Upload packages - name: Upload packages
if: steps.build.outcome == 'success' if: steps.build.outcome == 'success'
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@main
with: with:
name: ipk-${{ matrix.branch }}-${{ matrix.arch }} path: ${{ env.OUTDIR }}
path: ./**/ipk-${{ matrix.branch }}-${{ matrix.arch }}.tar name: zapret,${{ env.PKGTYPE }},${{ matrix.arch }}
if-no-files-found: error if-no-files-found: error
- name: Upload build logs - name: Upload build logs
if: always() if: always()
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
path: logs-*.tar.xz
name: logs-${{ matrix.branch }}-${{ matrix.arch }} name: logs-${{ matrix.branch }}-${{ matrix.arch }}
path: ./**/logs-*.tar.xz
release: release:
needs: [ check, build ] needs: [ check, build ]
permissions: permissions:
contents: write contents: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
max-parallel: 1
matrix:
#branch: [ '22.03', '23.05' ]
branch: [ '23.05' ]
steps: steps:
- name: Download artifacts - name: Download artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
pattern: ipk-* pattern: zapret,*
- name: Put ipk into zip - name: Put packages into zip
env: env:
BRANCH: ${{ matrix.branch }}
TAG: ${{ needs.check.outputs.tag }} TAG: ${{ needs.check.outputs.tag }}
DATE: ${{ needs.check.outputs.date }} DATE: ${{ needs.check.outputs.date }}
BUILD_DATE: ${{ needs.check.outputs.build_date }}
PKGVER: ${{ needs.build.outputs.pkgver }}
run: | run: |
echo "------------- DIR BEG -------------------"
ls -la
echo "------------- DIR END -------------------"
mkdir -p sorted
find . -maxdepth 1 -type d -name "zapret,ipk,*" -exec sh -c 'mkdir -p sorted/$(basename "{}" | cut -d, -f3)' \;
find . -maxdepth 1 -type d -name "zapret,apk,*" -exec sh -c 'mkdir -p sorted/$(basename "{}" | cut -d, -f3)/apk' \;
find . -maxdepth 1 -type d -name "zapret,ipk,*" -exec sh -c 'cp -R "{}/." sorted/$(basename "{}" | cut -d, -f3)' \;
find . -maxdepth 1 -type d -name "zapret,apk,*" -exec sh -c 'cp -R "{}/." sorted/$(basename "{}" | cut -d, -f3)/apk' \;
LUCI_IPK=$( find . -type f -path "*/zapret,ipk,*/luci-app-zapret*.ipk" -print | head -n 1 )
LUCI_APK=$( find . -type f -path "*/zapret,apk,*/luci-app-zapret*.apk" -print | head -n 1 )
find ./sorted -mindepth 1 -maxdepth 1 -type d -exec cp -f "$LUCI_IPK" "{}/" \;
find ./sorted -mindepth 2 -maxdepth 2 -type d -name "apk" -exec cp -f "$LUCI_APK" "{}/" \;
mkdir -p public mkdir -p public
find . -name "ipk-openwrt-$BRANCH-*.tar" -exec tar -xvf {} --wildcards '*.ipk' \; find ./sorted -mindepth 1 -maxdepth 1 -type d -exec sh -c '7z a ./public/zapret_v${PKGVER}_$(basename "{}" | cut -d, -f3).zip {}/*' \;
find $BRANCH -mindepth 1 -type d -exec sh -c 'zip -0 ./public/zapret_${TAG}_$(basename {}).zip -j {} {}/*' \;
ls -lh ./public/*.zip ls -lh ./public/*.zip
- name: Upload assets - name: Upload assets
uses: andelf/nightly-release@main uses: andelf/nightly-release@main
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: ${{ matrix.branch }}
TAG: ${{ needs.check.outputs.tag }} TAG: ${{ needs.check.outputs.tag }}
with: with:
prerelease: false prerelease: ${{ env.TEST_BUILD == 'true' || env.FAKE_BUILD == 'true' }}
tag_name: ${{ needs.check.outputs.tag }}-${{ matrix.branch }} tag_name: v${{ needs.build.outputs.pkgver }}${{ env.TAG_SUFFIX }}
name: '${{ needs.check.outputs.tag }} for OpenWrt ${{ matrix.branch }}' name: zapret v${{ needs.build.outputs.pkgver }}
body: | body: |
${{ needs.check.outputs.url }}: ${{ needs.check.outputs.message }} zapret v${{ needs.build.outputs.pkgver }} for OpenWrt
files: ./public/*.zip files: ./public/*.zip

View File

@ -1,11 +1,21 @@
[![build](https://github.com/remittor/zapret-openwrt/actions/workflows/build.yml/badge.svg)](https://github.com/remittor/zapret-openwrt/actions/workflows/build.yml) [![GitHub Release](https://img.shields.io/github/release/remittor/zapret-openwrt)](https://github.com/remittor/zapret-openwrt/releases)
[![Github All Releases](https://img.shields.io/github/downloads/remittor/zapret-openwrt/total.svg)](https://github.com/remittor/zapret-openwrt/releases)
[![Github Latest Release](https://img.shields.io/github/downloads/remittor/zapret-openwrt/latest/total.svg)](https://github.com/remittor/zapret-openwrt/releases)
[![ViewCount](https://views.whatilearened.today/views/github/remittor/zapret-openwrt.svg)](https://github.com/remittor/zapret-openwrt)
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fremittor%2Fzapret-openwrt&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)](https://github.com/remittor/zapret-openwrt/releases)
[![Donations Page](https://github.com/andry81-cache/gh-content-static-cache/raw/master/common/badges/donate/donate.svg)](https://github.com/remittor/donate)
# zapret-openwrt # zapret-openwrt
Zapret is not a VPN! Zapret is an Anti-DPI utility!
[Instructions for installing](https://github.com/remittor/zapret-openwrt/wiki/Installing-zapretopenwrt-package) [Instructions for installing](https://github.com/remittor/zapret-openwrt/wiki/Installing-zapretopenwrt-package)
[Download page](https://github.com/remittor/zapret-openwrt/releases) [Download page](https://github.com/remittor/zapret-openwrt/releases)
Screenshot: ## Screenshots
![image](https://github.com/user-attachments/assets/b79940b3-6a0d-4310-bd58-e461be004397) ![image](https://github.com/user-attachments/assets/b79940b3-6a0d-4310-bd58-e461be004397)
## Donations
[![Donations Page](https://github.com/andry81-cache/gh-content-static-cache/raw/master/common/badges/donate/donate.svg)](https://github.com/remittor/donate)

View File

@ -5,8 +5,9 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-zapret PKG_NAME:=luci-app-zapret
PKG_VERSION:=68-20241115 PKG_VERSION:=71.20250918
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_MAINTAINER:=remittor <https://github.com/remittor>
LUCI_TITLE:=LuCI support for zapret LUCI_TITLE:=LuCI support for zapret
LUCI_DEPENDS:=+zapret LUCI_DEPENDS:=+zapret
@ -19,8 +20,8 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
rm -rf /tmp/luci-modulecache/ rm -rf /tmp/luci-modulecache/
#killall -HUP rpcd 2>/dev/null #killall -HUP rpcd 2>/dev/null
/etc/init.d/rpcd reload /etc/init.d/rpcd reload
/sbin/luci-reload [ -f "/sbin/luci-reload" ] && /sbin/luci-reload
/etc/init.d/uhttpd reload [ -f "/etc/init.d/uhttpd" ] && /etc/init.d/uhttpd reload
fi fi
exit 0 exit 0
endef endef

View File

@ -0,0 +1,200 @@
'use strict';
'require view';
'require fs';
'require form';
'require poll';
'require uci';
'require ui';
'require view.zapret.tools as tools';
return view.extend({
retrieveLog: async function() {
return Promise.all([
L.resolveDefault(fs.stat('/bin/cat'), null),
fs.exec('/usr/bin/find', [ '/tmp', '-maxdepth', '1', '-type', 'f', '-name', 'zapret+*.log' ]),
uci.load(tools.appName),
]).then(function(status_array) {
var filereader = status_array[0] ? status_array[0].path : null;
var log_data = status_array[1]; // stdout: multiline text
if (log_data.code != 0) {
ui.addNotification(null, E('p', _('Unable to get log files') + '(code = ' + log_data.code + ') : retrieveLog()'));
return null;
}
var reason = '';
var uci_cfg = uci.get(tools.appName, 'config');
if (uci_cfg !== null && typeof(uci_cfg) === 'object') {
let flag = uci_cfg.DAEMON_LOG_ENABLE;
if (flag != '1') {
reason = ' (Reason: option DAEMON_LOG_ENABLE = ' + flag + ')';
}
}
if (typeof(log_data.stdout) !== 'string') {
return 'Log files not found.' + reason;
}
var log_list = log_data.stdout.trim().split('\n');
if (log_list.length <= 0) {
return 'Log files not found!' + reason;
}
for (let i = 0; i < log_list.length; i++) {
let logfn = log_list[i].trim();
if (logfn.startsWith('/tmp/') && logfn.endsWith('+main.log')) {
log_list.splice(i, 1);
log_list.unshift(logfn);
break;
}
}
var tasks = [ ];
var logdata = [ ];
for (let i = 0; i < log_list.length; i++) {
let logfn = log_list[i].trim();
if (logfn.startsWith('/tmp/')) {
//console.log('LOG: ' + logfn);
logdata.push( { filename: logfn, data: null, rows: 0 } );
tasks.push( fs.read_direct(logfn) );
}
}
return Promise.all(tasks).then(function(log_array) {
for (let i = 0; i < log_array.length; i++) {
if (log_array[i]) {
logdata[i].data = log_array[i];
logdata[i].rows = tools.getLineCount(log_array[i]) + 1;
}
}
return logdata;
}).catch(function(e) {
ui.addNotification(null, E('p', _('Unable to execute or read contents')
+ ': %s [ %s | %s | %s ]'.format(
e.message, 'retrieveLogData', 'uci.zapret'
)));
return null;
});
}).catch(function(e) {
const [, lineno, colno] = e.stack.match(/(\d+):(\d+)/);
ui.addNotification(null, E('p', _('Unable to execute or read contents')
+ ': %s [ lineno: %s | %s | %s | %s ]'.format(
e.message, lineno, 'retrieveLog', 'uci.zapret'
)));
return null;
});
},
pollLog: async function() {
let logdate_len = -2;
let logdata;
for (let txt_id = 0; txt_id < 10; txt_id++) {
let elem = document.getElementById('dmnlog_' + txt_id);
if (!elem)
break;
if (logdate_len == -2) {
logdata = await this.retrieveLog();
logdate_len = (Array.isArray(logdata)) ? logdata.length : -1;
}
let elem_name = elem.getAttribute("name");
let founded = false;
if (logdate_len > 0) {
for (let log_num = 0; log_num < logdate_len; log_num++) {
if (logdata[log_num].filename == elem_name) {
if (logdata[log_num].data) {
elem.value = logdata[log_num].data;
elem.rows = logdata[log_num].rows;
founded = true;
//console.log('POLL: updated ' + elem_name);
}
break;
}
}
}
if (!founded) {
elem.value = '';
elem.rows = 0;
}
}
},
load: async function() {
poll.add(this.pollLog.bind(this));
return await this.retrieveLog();
},
render: function(logdata) {
if (!logdata) {
return;
}
if (typeof(logdata) === 'string') {
return E('div', {}, [
E('p', {'class': 'cbi-title-field'}, [ logdata ]),
]);
}
if (!Array.isArray(logdata)) {
ui.addNotification(null, E('p', _('Unable to get log files') + ' : render()'));
return;
}
var h2 = E('div', {'class' : 'cbi-title-section'}, [
E('h2', {'class': 'cbi-title-field'}, [ _('Zapret') + ' - ' + _('Log Viewer') ]),
]);
var tabs = E('div', {}, E('div'));
for (let log_num = 0; log_num < logdata.length; log_num++) {
//console.log('REN: ' + logdata[log_num].filename + ' : ' + logdata[log_num].data.length);
var logfn = logdata[log_num].filename;
let filename = logfn.replace(/.*\//, '');
let fname = filename.split('.')[0];
fname = fname.replace(/^(zapret\+)/, '');
let fn = fname.split('+');
let tabNameText = fname.replace(/\+/g, ' ');
let tabname = 'tablog_' + log_num;
var scrollDownButton = null;
var scrollUpButton = null;
scrollDownButton = E('button', {
'id': 'scrollDownButton_' + log_num,
'class': 'cbi-button cbi-button-neutral'
}, _('Scroll to tail', 'scroll to bottom (the tail) of the log file')
);
scrollDownButton.addEventListener('click', function() {
scrollUpButton.focus();
});
scrollUpButton = E('button', {
'id' : 'scrollUpButton_' + log_num,
'class': 'cbi-button cbi-button-neutral'
}, _('Scroll to head', 'scroll to top (the head) of the log file')
);
scrollUpButton.addEventListener('click', function() {
scrollDownButton.focus();
});
let log_id = 'dmnlog_' + log_num;
let log_name = logdata[log_num].filename;
let log_text = (logdata[log_num].data) ? logdata[log_num].data : '';
let tab = E('div', { 'data-tab': tabname, 'data-tab-title': tabNameText }, [
E('div', { 'id': 'content_dmnlog_' + log_num }, [
E('div', {'style': 'padding-bottom: 20px'}, [ scrollDownButton ]),
E('textarea', {
'id': log_id,
'name': log_name,
'style': 'font-size:12px',
'readonly': 'readonly',
'wrap': 'off',
'rows': logdata[log_num].rows,
}, [ log_text ]),
E('div', {'style': 'padding-bottom: 20px'}, [ scrollUpButton ]),
]),
]);
tabs.firstElementChild.appendChild(tab);
}
ui.tabs.initTabGroup(tabs.firstElementChild.childNodes);
//this.pollFn = L.bind(this.handleScanRefresh, this);
//poll.add(this.pollFn);
return E('div', { }, [ h2, tabs ]);
},
handleSaveApply: null,
handleSave: null,
handleReset: null
});

View File

@ -45,9 +45,9 @@ return view.extend({
return Promise.all([ return Promise.all([
tools.getInitState(tools.appName), // svc_boot tools.getInitState(tools.appName), // svc_boot
fs.exec(tools.execPath, [ 'enabled' ]), // svc_en fs.exec(tools.execPath, [ 'enabled' ]), // svc_en
fs.exec(tools.execPath, [ 'info' ]), // svc_info tools.getSvcInfo(), // svc_info
fs.exec('/bin/ps'), // process list fs.exec('/bin/busybox', [ 'ps' ]), // process list
fs.exec('/bin/opkg', [ 'list-installed', '*zapret*' ]), // installed packages fs.exec(tools.packager.path, tools.packager.args), // installed packages
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')
@ -72,10 +72,10 @@ return view.extend({
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
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;
if (svc_info.code != 0) { if (typeof(svc_info) !== 'object') {
ui.addNotification(null, E('p', _('Unable to read the service info') + ': setAppStatus()')); ui.addNotification(null, E('p', _('Unable to read the service info') + ': setAppStatus()'));
this.disableButtons(true, -1, elems); this.disableButtons(true, -1, elems);
return; return;
@ -254,7 +254,12 @@ return view.extend({
}, },
load: function() { load: function() {
return this.getAppStatus(); var _this = this;
return Promise.all([
L.resolveDefault(fs.stat('/bin/cat'), null),
]).then(function(data) {
return _this.getAppStatus();
});
}, },
render: function(status_array) { render: function(status_array) {
@ -326,7 +331,7 @@ return view.extend({
let btn_update = create_btn('btn_update', btn_style_action, _('Update')); let btn_update = create_btn('btn_update', btn_style_action, _('Update'));
btn_update.onclick = ui.createHandlerFn(this, () => { this.appAction('update', 'btn_update') }); btn_update.onclick = ui.createHandlerFn(this, () => { this.appAction('update', 'btn_update') });
layout_append(_('Update blacklist'), null, [ btn_update ] ); layout_append(_('Update HostLists'), null, [ btn_update ] );
let btn_reset = create_btn('btn_reset', btn_style_action, _('Reset settings')); let btn_reset = create_btn('btn_reset', btn_style_action, _('Reset settings'));
btn_reset.onclick = L.bind(this.dialogResetCfg, this); btn_reset.onclick = L.bind(this.dialogResetCfg, this);

View File

@ -86,21 +86,36 @@ return view.extend({
o.rmempty = false; o.rmempty = false;
o.default = 0; o.default = 0;
o = s.taboption(tabname, form.Flag, 'FILTER_TTL_EXPIRED_ICMP', 'FILTER_TTL_EXPIRED_ICMP');
o.rmempty = false;
o.default = 1;
o = s.taboption(tabname, form.ListValue, 'MODE_FILTER', _('MODE_FILTER')); o = s.taboption(tabname, form.ListValue, 'MODE_FILTER', _('MODE_FILTER'));
//o.value('none', 'none'); //o.value('none', 'none');
//o.value('ipset', 'ipset'); //o.value('ipset', 'ipset');
o.value('hostlist', 'hostlist'); o.value('hostlist', 'hostlist');
o.value('autohostlist', 'autohostlist'); o.value('autohostlist', 'autohostlist');
o = s.taboption(tabname, form.Value, 'WS_USER', _('WS_USER'));
o.rmempty = false;
o.datatype = 'string';
o = s.taboption(tabname, form.Flag, 'DAEMON_LOG_ENABLE', _('DAEMON_LOG_ENABLE'));
o.rmempty = false;
o.default = 0;
/* NFQWS_OPT_DESYNC tab */ /* NFQWS_OPT_DESYNC tab */
tabname = 'nfqws_params'; tabname = 'nfqws_params';
s.tab(tabname, _('NFQWS options')); s.tab(tabname, _('NFQWS options'));
let add_delim = function(sec) { let add_delim = function(sec, url = null) {
let o = sec.taboption(tabname, form.DummyValue, '_hr'); let o = sec.taboption(tabname, form.DummyValue, '_hr');
o.rawhtml = true; o.rawhtml = true;
o.default = '<hr style="width: 620px; height: 1px; margin: 1px 0 1px; border-top: 1px solid;">'; o.default = '<hr style="width: 620px; height: 1px; margin: 1px 0 1px; border-top: 1px solid;">';
if (url) {
o.default += '<br/>' + _('Help') + ': <a href=%s>%s</a>'.format(url);
}
}; };
let add_param = function(sec, param, locname = null, rows = 10, multiline = false) { let add_param = function(sec, param, locname = null, rows = 10, multiline = false) {
@ -132,7 +147,11 @@ return view.extend({
val.validate = function(section_id, value) { val.validate = function(section_id, value) {
return (value) ? value.trim() : ""; return (value) ? value.trim() : "";
}; };
btn.onclick = () => new tools.longstrEditDialog('config', param, param, locname, rows, multiline).show(); let desc = locname;
if (multiline == 2) {
desc += '<br/>' + _('Example') + ': <a href=%s>%s</a>'.format(tools.nfqws_opt_url);
}
btn.onclick = () => new tools.longstrEditDialog('config', param, param, desc, rows, multiline).show();
}; };
o = s.taboption(tabname, form.Flag, 'NFQWS_ENABLE', _('NFQWS_ENABLE')); o = s.taboption(tabname, form.Flag, 'NFQWS_ENABLE', _('NFQWS_ENABLE'));
@ -148,6 +167,11 @@ return view.extend({
//o.description = _("nfqws option for DPI desync attack"); //o.description = _("nfqws option for DPI desync attack");
o.rmempty = false; o.rmempty = false;
o.datatype = 'string'; o.datatype = 'string';
o = s.taboption(tabname, form.Value, 'FILTER_MARK', _('FILTER_MARK'));
o.rmempty = false;
o.validate = function(section_id, value) { return true; };
o.write = function(section_id, value) { return form.Value.prototype.write.call(this, section_id, (value == null || value.trim() == '') ? "\t" : value.trim()); };
o = s.taboption(tabname, form.Value, 'NFQWS_PORTS_TCP', _('NFQWS_PORTS_TCP')); o = s.taboption(tabname, form.Value, 'NFQWS_PORTS_TCP', _('NFQWS_PORTS_TCP'));
o.rmempty = false; o.rmempty = false;
@ -181,8 +205,8 @@ return view.extend({
o.rmempty = false; o.rmempty = false;
o.datatype = 'uinteger'; o.datatype = 'uinteger';
add_delim(s); add_delim(s, tools.nfqws_opt_url);
add_param(s, 'NFQWS_OPT', null, 18, 2); add_param(s, 'NFQWS_OPT', null, 21, 2);
/* AutoHostList settings */ /* AutoHostList settings */
@ -229,10 +253,10 @@ return view.extend({
15 15
).show(); ).show();
/* Blacklist settings */ /* HostList settings */
tabname = 'blacklist_tab'; tabname = 'hostlist_tab';
s.tab(tabname, _('Blacklist settings')); s.tab(tabname, _('Host lists'));
o = s.taboption(tabname, form.Button, '_google_entries_btn', _('Google hostname entries')); o = s.taboption(tabname, form.Button, '_google_entries_btn', _('Google hostname entries'));
o.inputtitle = _('Edit'); o.inputtitle = _('Edit');
@ -246,7 +270,7 @@ return view.extend({
15 15
).show(); ).show();
o = s.taboption(tabname, form.Button, '_user_entries_btn', _('User hostname entries')); o = s.taboption(tabname, form.Button, '_user_entries_btn', _('User hostname entries <HOSTLIST>'));
o.inputtitle = _('Edit'); o.inputtitle = _('Edit');
o.inputstyle = 'edit btn'; o.inputstyle = 'edit btn';
o.description = tools.hostsUserFN; o.description = tools.hostsUserFN;
@ -254,7 +278,7 @@ return view.extend({
tools.hostsUserFN, tools.hostsUserFN,
_('User entries'), _('User entries'),
_('One hostname per line.<br />Examples:'), _('One hostname per line.<br />Examples:'),
'<code>domain.net<br />sub.domain.com<br />googlevideo.com</code>', '<code>domain.net<br />sub.domain.com<br />facebook.com</code>',
15 15
).show(); ).show();
@ -266,7 +290,7 @@ return view.extend({
tools.hostsUserExcludeFN, tools.hostsUserExcludeFN,
_('User excluded entries'), _('User excluded entries'),
_('One hostname per line.<br />Examples:'), _('One hostname per line.<br />Examples:'),
'<code>domain.net<br />sub.domain.com<br />googlevideo.com</code>', '<code>domain.net<br />sub.domain.com<br />gosuslugi.ru</code>',
15 15
).show(); ).show();
@ -320,6 +344,29 @@ return view.extend({
o.onclick = () => new tools.fileEditDialog(fn, name, '', '', 15).show(); o.onclick = () => new tools.fileEditDialog(fn, name, '', '', 15).show();
} }
/* custom.d files */
tabname = 'custom_d_tab';
s.tab(tabname, 'custom.d');
o = s.taboption(tabname, form.Flag, 'DISABLE_CUSTOM', _('DISABLE_CUSTOM'));
o.rmempty = false;
o.default = 0;
add_delim(s);
for (let i = 0; i < tools.customdPrefixList.length; i++) {
let num = tools.customdPrefixList[i];
let fn = tools.customdFileFormat.format(num.toString());
let name = _('custom.d script #' + num);
o = s.taboption(tabname, form.Button, '_customd_file%d_btn'.format(num), name);
o.inputtitle = _('Edit');
o.inputstyle = 'edit btn';
o.description = fn;
let desc = (num == tools.discord_num) ? _('Example') + ': <a href=%s>%s</a>'.format(tools.discord_url) : '';
o.onclick = () => new tools.fileEditDialog(fn, name, desc, '', 15).show();
}
let map_promise = m.render(); let map_promise = m.render();
map_promise.then(node => node.classList.add('fade-in')); map_promise.then(node => node.classList.add('fade-in'));
return map_promise; return map_promise;

View File

@ -35,6 +35,7 @@ document.head.append(E('style', {'type': 'text/css'},
`)); `));
return baseclass.extend({ return baseclass.extend({
packager : null,
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',
@ -48,6 +49,11 @@ return baseclass.extend({
iplstUserExcludeFN: '/opt/zapret/ipset/zapret-ip-user-exclude.txt', iplstUserExcludeFN: '/opt/zapret/ipset/zapret-ip-user-exclude.txt',
custFileMax : 4, custFileMax : 4,
custFileTemplate : '/opt/zapret/ipset/cust%s.txt', custFileTemplate : '/opt/zapret/ipset/cust%s.txt',
customdPrefixList : [ 10, 20, 50, 60, 90 ] ,
customdFileFormat : '/opt/zapret/init.d/openwrt/custom.d/%s-script.sh',
discord_num : 50,
discord_url : 'https://github.com/bol-van/zapret/blob/4e8e3a9ed9dbeb1156db68dfaa7b353051c13797/init.d/custom.d.examples.linux/50-discord',
nfqws_opt_url : 'https://github.com/remittor/zapret-openwrt/discussions/168',
autoHostListFN : '/opt/zapret/ipset/zapret-hosts-auto.txt', autoHostListFN : '/opt/zapret/ipset/zapret-hosts-auto.txt',
autoHostListDbgFN : '/opt/zapret/ipset/zapret-hosts-auto-debug.log', autoHostListDbgFN : '/opt/zapret/ipset/zapret-hosts-auto-debug.log',
@ -68,6 +74,13 @@ return baseclass.extend({
running : { code: 4, name: _('Running') , label: this.infoLabelRunning }, running : { code: 4, name: _('Running') , label: this.infoLabelRunning },
}, },
callServiceList: rpc.declare({
object: 'service',
method: 'list',
params: [ 'name', 'verbose' ],
expect: { '': {} }
}),
callInitState: rpc.declare({ callInitState: rpc.declare({
object: 'luci', object: 'luci',
method: 'getInitList', method: 'getInitList',
@ -82,7 +95,35 @@ return baseclass.extend({
expect: { result: false } expect: { result: false }
}), }),
init_consts: function() {
if (!this.packager) {
this.packager = { };
if (L.hasSystemFeature('apk')) {
this.packager.name = 'apk';
this.packager.path = '/usr/bin/apk';
this.packager.args = [ 'list', '-I', '*zapret*' ];
} else {
this.packager.name = 'opkg';
this.packager.path = '/bin/opkg';
this.packager.args = [ 'list-installed', '*zapret*' ];
}
//console.log('PACKAGER: ' + this.packager.name);
}
},
getSvcInfo: function(svc_name = null) {
this.init_consts();
let name = (svc_name) ? svc_name : this.appName;
let verbose = 1;
return this.callServiceList(name, verbose).then(res => {
return res;
}).catch(e => {
ui.addNotification(null, E('p', _('Failed to get %s service info: %s').format(name, e)));
});
},
getInitState: function(name) { getInitState: function(name) {
this.init_consts();
return this.callInitState(name).then(res => { return this.callInitState(name).then(res => {
if (res) { if (res) {
return res[name].enabled ? true : false; return res[name].enabled ? true : false;
@ -114,12 +155,38 @@ return baseclass.extend({
let lines = pkg_list.trim().split('\n'); let lines = pkg_list.trim().split('\n');
for (let i = 0; i < lines.length; i++) { for (let i = 0; i < lines.length; i++) {
let line = lines[i].trim(); let line = lines[i].trim();
if (line.length >= 4) { let name;
let word_list = line.split(' - '); let ver;
let name = word_list[0].trim(); if (this.packager.name == 'apk') {
let ver = word_list[1].trim(); let fullname = line.split(' ')[0];
pkg_dict[name] = ver; let mpos = fullname.lastIndexOf("-");
if (mpos <= 0)
continue;
if (fullname.substring(mpos+1, mpos+2) == 'r') {
// release number
fullname = fullname.substring(0, mpos);
}
mpos = fullname.lastIndexOf("-");
if (mpos <= 0)
continue;
name = fullname.substring(0, mpos).trim();
ver = fullname.substring(mpos+1).trim();
} else {
if (!line.includes(' - '))
continue;
name = line.split(' - ')[0].trim();
ver = line.split(' - ')[1].trim();
let spos = ver.indexOf(" ");
if (spos > 0) {
ver = ver.substring(0, spos);
}
let mpos = ver.lastIndexOf("-");
if (mpos > 0 && ver.substring(mpos+1, mpos+2) == 'r') {
// release number
ver = ver.substring(0, mpos);
}
} }
pkg_dict[name] = ver;
} }
return pkg_dict; return pkg_dict;
}, },
@ -152,9 +219,6 @@ return baseclass.extend({
}, },
"status": this.statusDict.error, "status": this.statusDict.error,
}; };
if (svc_info.code != 0) {
return -1;
}
if (proc_list.code != 0) { if (proc_list.code != 0) {
return -2; return -2;
} }
@ -163,22 +227,10 @@ return baseclass.extend({
if (plist.length < 4) { if (plist.length < 4) {
return -3; return -3;
} }
if (typeof(svc_info.stdout) !== 'string') { if (typeof(svc_info) !== 'object') {
return -4; return -4;
} }
if (svc_info.stdout.length < 3) { let jdata = svc_info;
return -5;
}
let jdata;
try {
jdata = JSON.parse(svc_info.stdout);
} catch (e) {
console.log('Incorrect JSON: ' + svc_info.stdout);
return -6;
}
if (typeof(jdata) !== 'object') {
return -7;
}
if (typeof(jdata.zapret) == 'object') { if (typeof(jdata.zapret) == 'object') {
result.dmn.inited = true; result.dmn.inited = true;
let dmn_list = jdata.zapret.instances; let dmn_list = jdata.zapret.instances;
@ -250,7 +302,7 @@ return baseclass.extend({
</tr> </tr>
<tr class="tr"> <tr class="tr">
<td class="td left" ${td_name_style}> <td class="td left" ${td_name_style}>
${_('Blacklist update mode')}: ${_('HostLists update mode')}:
</td> </td>
<td class="td left"> <td class="td left">
${update_mode} ${update_mode}
@ -265,6 +317,17 @@ return baseclass.extend({
</table>`; </table>`;
return out; return out;
}, },
getLineCount: function(mstr) {
let count = 0;
let c = '\n'.charAt(0);
for (let i = 0; i < mstr.length; ++i) {
if (c === mstr.charAt(i)) {
++count;
}
}
return count;
},
fileEditDialog: baseclass.extend({ fileEditDialog: baseclass.extend({
__init__: function(file, title, desc, aux = null, rows = 10, callback, file_exists = false) { __init__: function(file, title, desc, aux = null, rows = 10, callback, file_exists = false) {
@ -381,6 +444,9 @@ 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\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--");

View File

@ -33,5 +33,14 @@
"type": "view", "type": "view",
"path": "zapret/settings" "path": "zapret/settings"
} }
},
"admin/services/zapret/dmnlog": {
"title": "Log Viewer",
"order": 30,
"action": {
"type": "view",
"path": "zapret/dmnlog"
}
} }
} }

View File

@ -6,22 +6,30 @@
"file": { "file": {
"/opt/zapret/config": [ "read" ], "/opt/zapret/config": [ "read" ],
"/opt/zapret/ipset/*": [ "read" ], "/opt/zapret/ipset/*": [ "read" ],
"/opt/zapret/init.d/openwrt/custom.d/*": [ "read" ],
"/etc/crontabs/root": [ "read" ], "/etc/crontabs/root": [ "read" ],
"/tmp/zapret*": [ "read" ],
"/etc/init.d/zapret*": [ "exec" ], "/etc/init.d/zapret*": [ "exec" ],
"/bin/ps*": [ "exec" ], "/bin/ps*": [ "exec" ],
"/bin/cat*": [ "exec" ],
"/bin/busybox*": [ "exec" ],
"/bin/opkg*": [ "exec" ], "/bin/opkg*": [ "exec" ],
"/usr/bin/apk*": [ "exec" ],
"/usr/bin/find*": [ "exec" ],
"/opt/zapret/restore-def-cfg.sh*": [ "exec" ], "/opt/zapret/restore-def-cfg.sh*": [ "exec" ],
"/opt/zapret/sync_config.sh*": [ "exec" ] "/opt/zapret/sync_config.sh*": [ "exec" ]
}, },
"uci": [ "zapret", "network" ], "uci": [ "zapret", "network" ],
"ubus": { "ubus": {
"luci": [ "getInitList", "setInitAction" ] "luci": [ "getInitList", "setInitAction" ],
"service": [ "list" ]
} }
}, },
"write": { "write": {
"file": { "file": {
"/opt/zapret/config": [ "write" ], "/opt/zapret/config": [ "write" ],
"/opt/zapret/ipset/*.txt": [ "write" ], "/opt/zapret/ipset/*": [ "write" ],
"/opt/zapret/init.d/openwrt/custom.d/*": [ "write" ],
"/etc/crontabs/root": [ "write" ] "/etc/crontabs/root": [ "write" ]
}, },
"uci": [ "zapret" ] "uci": [ "zapret" ]

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=zapret-ip2net PKG_NAME:=zapret-ip2net
PKG_VERSION:=68-20241115 PKG_VERSION:=71.20250918
PKG_MAINTAINER:=bol-van PKG_MAINTAINER:=bol-van
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
@ -9,8 +9,8 @@ PKG_LICENSE_FILES:=docs/LICENSE.txt
PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=41b4c6650b13707654066b5af007d531dd348286 PKG_SOURCE_VERSION:=06e7818240a861809a1981155981fef3f0fc4737
PKG_SOURCE_DATE:=2024-11-10 PKG_SOURCE_DATE:=2025-09-18
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
#PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz? #PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz?

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=zapret-mdig PKG_NAME:=zapret-mdig
PKG_VERSION:=68-20241115 PKG_VERSION:=71.20250918
PKG_MAINTAINER:=bol-van PKG_MAINTAINER:=bol-van
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
@ -9,8 +9,8 @@ PKG_LICENSE_FILES:=docs/LICENSE.txt
PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=41b4c6650b13707654066b5af007d531dd348286 PKG_SOURCE_VERSION:=06e7818240a861809a1981155981fef3f0fc4737
PKG_SOURCE_DATE:=2024-11-10 PKG_SOURCE_DATE:=2025-09-18
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
#PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz? #PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz?

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=zapret-tpws PKG_NAME:=zapret-tpws
PKG_VERSION:=68-20241115 PKG_VERSION:=71.20250918
PKG_MAINTAINER:=bol-van PKG_MAINTAINER:=bol-van
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
@ -9,8 +9,8 @@ PKG_LICENSE_FILES:=docs/LICENSE.txt
PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=41b4c6650b13707654066b5af007d531dd348286 PKG_SOURCE_VERSION:=06e7818240a861809a1981155981fef3f0fc4737
PKG_SOURCE_DATE:=2024-11-10 PKG_SOURCE_DATE:=2025-09-18
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
#PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz? #PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz?

View File

@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=zapret PKG_NAME:=zapret
PKG_VERSION:=68-20241115 PKG_VERSION:=71.20250918
PKG_MAINTAINER:=bol-van PKG_MAINTAINER:=bol-van
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
@ -13,8 +13,8 @@ PKG_LICENSE_FILES:=docs/LICENSE.txt
PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git PKG_SOURCE_URL:=https://github.com/bol-van/zapret.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=41b4c6650b13707654066b5af007d531dd348286 PKG_SOURCE_VERSION:=06e7818240a861809a1981155981fef3f0fc4737
PKG_SOURCE_DATE:=2024-11-10 PKG_SOURCE_DATE:=2025-09-18
#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
#PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz? #PKG_SOURCE_URL:=https://github.com/bol-van/zapret/archive/refs/tags/v$(PKG_VERSION).tar.gz?
@ -69,7 +69,7 @@ define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/opt/zapret/ipset $(INSTALL_DIR) $(1)/opt/zapret/ipset
$(CP) $(PKG_BUILD_DIR)/ipset/* $(1)/opt/zapret/ipset/ $(CP) $(PKG_BUILD_DIR)/ipset/* $(1)/opt/zapret/ipset/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/blockcheck.sh $(1)/opt/zapret/blockcheck.sh $(INSTALL_BIN) $(PKG_BUILD_DIR)/blockcheck.sh $(1)/opt/zapret/blockcheck.sh
$(INSTALL_CONF) $(PKG_BUILD_DIR)/config.default $(1)/opt/zapret/config.default #$(INSTALL_DATA) $(PKG_BUILD_DIR)/config.default $(1)/opt/zapret/config.default
$(INSTALL_DIR) $(1)/opt/zapret/tmp $(INSTALL_DIR) $(1)/opt/zapret/tmp
$(INSTALL_DIR) $(1)/opt/zapret/init.d/openwrt $(INSTALL_DIR) $(1)/opt/zapret/init.d/openwrt
$(CP) $(PKG_BUILD_DIR)/init.d/openwrt/* $(1)/opt/zapret/init.d/openwrt/ $(CP) $(PKG_BUILD_DIR)/init.d/openwrt/* $(1)/opt/zapret/init.d/openwrt/
@ -77,10 +77,10 @@ define Package/$(PKG_NAME)/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/init.d/openwrt/90-zapret $(1)/etc/hotplug.d/iface/90-zapret $(INSTALL_BIN) $(PKG_BUILD_DIR)/init.d/openwrt/90-zapret $(1)/etc/hotplug.d/iface/90-zapret
$(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./init.d.sh $(1)/etc/init.d/zapret $(INSTALL_BIN) ./init.d.sh $(1)/etc/init.d/zapret
$(INSTALL_CONF) ./config.default $(1)/opt/zapret/config.default $(INSTALL_DATA) ./config.default $(1)/opt/zapret/config.default
$(INSTALL_CONF) ./ipset/zapret-hosts-google.txt $(1)/opt/zapret/ipset/zapret-hosts-google.txt $(INSTALL_DATA) ./ipset/zapret-hosts-google.txt $(1)/opt/zapret/ipset/zapret-hosts-google.txt
$(INSTALL_CONF) ./ipset/zapret-hosts-user-exclude.txt $(1)/opt/zapret/ipset/zapret-hosts-user-exclude.txt $(INSTALL_DATA) ./ipset/zapret-hosts-user-exclude.txt $(1)/opt/zapret/ipset/zapret-hosts-user-exclude.txt
$(INSTALL_CONF) ./ipset/zapret-ip-exclude.txt $(1)/opt/zapret/ipset/zapret-ip-exclude.txt $(INSTALL_DATA) ./ipset/zapret-ip-exclude.txt $(1)/opt/zapret/ipset/zapret-ip-exclude.txt
$(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./uci-def-cfg.sh $(1)/etc/uci-defaults/zapret-uci-def-cfg.sh $(INSTALL_BIN) ./uci-def-cfg.sh $(1)/etc/uci-defaults/zapret-uci-def-cfg.sh
$(INSTALL_BIN) ./uci-def-cfg.sh $(1)/opt/zapret/uci-def-cfg.sh $(INSTALL_BIN) ./uci-def-cfg.sh $(1)/opt/zapret/uci-def-cfg.sh
@ -89,6 +89,10 @@ define Package/$(PKG_NAME)/install
$(INSTALL_BIN) ./renew-cfg.sh $(1)/opt/zapret/renew-cfg.sh $(INSTALL_BIN) ./renew-cfg.sh $(1)/opt/zapret/renew-cfg.sh
$(INSTALL_BIN) ./restore-def-cfg.sh $(1)/opt/zapret/restore-def-cfg.sh $(INSTALL_BIN) ./restore-def-cfg.sh $(1)/opt/zapret/restore-def-cfg.sh
$(INSTALL_BIN) ./sync_config.sh $(1)/opt/zapret/sync_config.sh $(INSTALL_BIN) ./sync_config.sh $(1)/opt/zapret/sync_config.sh
# Fix permisions
chmod 644 $(1)/opt/zapret/ipset/*.txt
chmod 644 $(1)/opt/zapret/config.default
chmod 755 $(1)/opt/zapret/*.sh
endef endef
define Package/$(PKG_NAME)/preinst define Package/$(PKG_NAME)/preinst
@ -104,7 +108,9 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
fi fi
if [ "$${PKG_UPGRADE}" = "1" ]; then if [ "$${PKG_UPGRADE}" = "1" ]; then
# stop service if PKG_UPGRADE # stop service if PKG_UPGRADE
[ -x "/etc/init.d/zapret" ] && /etc/init.d/zapret stop >/dev/null 2>&1 if [ -x "/etc/init.d/zapret" ]; then
/etc/init.d/zapret running && /etc/init.d/zapret stop >/dev/null 2>&1
fi
fi fi
if [ ! -f "/opt/zapret/ipset/zapret-hosts-google.txt" ]; then if [ ! -f "/opt/zapret/ipset/zapret-hosts-google.txt" ]; then
if [ -f "/opt/zapret/ipset/zapret-hosts-user.txt" ]; then if [ -f "/opt/zapret/ipset/zapret-hosts-user.txt" ]; then
@ -145,12 +151,6 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
rm -f /etc/uci-defaults/zapret-uci-def-cfg.sh rm -f /etc/uci-defaults/zapret-uci-def-cfg.sh
# copy (sync) all params from uci-config to main config # copy (sync) all params from uci-config to main config
/opt/zapret/sync_config.sh /opt/zapret/sync_config.sh
# check service status
[ "$$( /etc/init.d/zapret status 2>/dev/null )" = "running" ] && ZAPRET_RUNNING=1 || ZAPRET_RUNNING=0
if [ "$${ZAPRET_RUNNING}" = "0" ]; then
ps w | grep '/opt/zapret/nfq/nfqws' | grep -v grep | awk '{print $$1}' | xargs -r kill -9
exit 0
fi
# check main config # check main config
sh -n "$${ZAPRET_CONFIG}" 2>/dev/null || cp -f "$${ZAPRET_CONFIG_DEF}" "$${ZAPRET_CONFIG}" sh -n "$${ZAPRET_CONFIG}" 2>/dev/null || cp -f "$${ZAPRET_CONFIG_DEF}" "$${ZAPRET_CONFIG}"
sh -n "$${ZAPRET_CONFIG}" 2>/dev/null || exit 58 sh -n "$${ZAPRET_CONFIG}" 2>/dev/null || exit 58
@ -188,8 +188,8 @@ if [ -z "$${IPKG_INSTROOT}" ]; then
. "$${ZAPRET_BASE}/common/fwtype.sh" . "$${ZAPRET_BASE}/common/fwtype.sh"
. "$${ZAPRET_BASE}/common/nft.sh" . "$${ZAPRET_BASE}/common/nft.sh"
. "$${ZAPRET_BASE}/common/installer.sh" . "$${ZAPRET_BASE}/common/installer.sh"
/etc/init.d/zapret running && /etc/init.d/zapret stop
/etc/init.d/zapret disable /etc/init.d/zapret disable
/etc/init.d/zapret stop
ps w | grep '/opt/zapret/nfq/nfqws' | grep -v grep | awk '{print $$1}' | xargs -r kill -9 ps w | grep '/opt/zapret/nfq/nfqws' | grep -v grep | awk '{print $$1}' | xargs -r kill -9
remove_openwrt_firewall remove_openwrt_firewall
nft_del_table nft_del_table

View File

@ -17,10 +17,11 @@ ZAPRET_CFG_SEC_NAME="$( uci -q get $ZAPRET_CFG_NAME.config )"
. $ZAPRET_BASE/def-cfg.sh . $ZAPRET_BASE/def-cfg.sh
CRONTAB_FILE="/etc/crontabs/root"
function adapt_for_sed function adapt_for_sed
{ {
local str=$( ( echo $1|sed -r 's/([\$\.\*\/\[\\^])/\\\1/g'|sed 's/[]]/\\]/g' )>&1 ) echo -n "$1" | tr '\r' ' ' | tr '\n' ' ' | tr '\t' ' ' | sed -r 's/([\$\.\*\/\[\\^])/\\\1/g' | sed 's/[]]/\\]/g'
echo "$str"
} }
function is_valid_config function is_valid_config
@ -122,3 +123,69 @@ function merge_cfg_with_def_values
return 0 return 0
} }
function remove_cron_task_logs
{
if [ -f "$CRONTAB_FILE" ]; then
sed -i "/-name 'zapret\*.log' -size +/d" "$CRONTAB_FILE"
fi
}
function insert_cron_task_logs
{
[ ! -f "$CRONTAB_FILE" ] && touch "$CRONTAB_FILE"
[ ! -f "$CRONTAB_FILE" ] && return 1
if ! grep -q -e "-name 'zapret\*\.log' -size \+" "$CRONTAB_FILE"; then
echo "*/2 * * * * /usr/bin/find /tmp -maxdepth 1 -type f -name 'zapret*.log' -size +2600k -exec rm -f {} \;" >> "$CRONTAB_FILE"
/etc/init.d/cron restart 2> /dev/null
fi
return 0
}
function init_before_start
{
local DAEMON_LOG_ENABLE=$1
local HOSTLIST_FN="$ZAPRET_BASE/ipset/zapret-hosts-user.txt"
[ ! -f "$HOSTLIST_FN" ] && touch "$HOSTLIST_FN"
chmod 644 $ZAPRET_BASE/ipset/*.txt
chmod 666 $ZAPRET_BASE/ipset/*.log
rm -f /tmp/zapret*.log
#*/
if [ "$DAEMON_LOG_ENABLE" = "1" ]; then
insert_cron_task_logs
else
remove_cron_task_logs
fi
return 0
}
function patch_luci_header_ut
{
# INFO: https://github.com/openwrt/luci/pull/7725
local header_ut=/usr/share/ucode/luci/template/header.ut
local runtime_uc=/usr/share/ucode/luci/runtime.uc
local newenv
[ ! -f $header_ut ] && return 0
[ ! -f $runtime_uc ] && return 0
if grep -q "pkgs_update_time" $runtime_uc; then
return 0
fi
if grep -q "pkgs_update_time" $header_ut; then
return 0
fi
sed -i "/^import { access/i import { stat } from 'fs';" $runtime_uc
if ! grep -q "{ stat }" $runtime_uc; then
return 1
fi
newenv="self.env.pkgs_update_time = stat('/lib/apk/db/installed')?.mtime ?? stat('/usr/lib/opkg/status')?.mtime ?? 0;"
newenv=`adapt_for_sed "$newenv"`
sed -i "/self.env.include =/i $newenv" $runtime_uc
if ! grep -q "pkgs_update_time" $runtime_uc; then
return 1
fi
sed -i 's/luci.js?v=\(.*\)"><\/script>/luci.js?v=\1-{{ pkgs_update_time }}"><\/script>/g' $header_ut
if ! grep -q "pkgs_update_time" $header_ut; then
return 1
fi
logger -p notice -t ZAPRET "patch_luci_header_ut: OK"
return 0
}

View File

@ -4,6 +4,9 @@
# can help in case /tmp has not enough space # can help in case /tmp has not enough space
#TMPDIR=/opt/zapret/tmp #TMPDIR=/opt/zapret/tmp
# redefine user for zapret daemons. required on Keenetic
WS_USER="daemon"
# override firewall type : iptables,nftables,ipfw # override firewall type : iptables,nftables,ipfw
FWTYPE=nftables FWTYPE=nftables
@ -53,6 +56,13 @@ DESYNC_MARK=0x40000000
DESYNC_MARK_POSTNAT=0x20000000 DESYNC_MARK_POSTNAT=0x20000000
# do not pass outgoing traffic to tpws/nfqws not marked with this bit
# this setting allows to write your own rules to limit traffic that should be fooled
# for example based on source IP or incoming interface name
# no filter if not defined
FILTER_MARK=""
TPWS_SOCKS_ENABLE=0 TPWS_SOCKS_ENABLE=0
# tpws socks listens on this port on localhost and LAN interfaces # tpws socks listens on this port on localhost and LAN interfaces
TPPORT_SOCKS=987 TPPORT_SOCKS=987
@ -87,15 +97,17 @@ NFQWS_UDP_PKT_IN="0"
# normally it's needed only for stateless DPI that matches every packet in a single TCP session # normally it's needed only for stateless DPI that matches every packet in a single TCP session
# typical example are plain HTTP keep alives # typical example are plain HTTP keep alives
# this mode can be very CPU consuming. enable with care ! # this mode can be very CPU consuming. enable with care !
NFQWS_PORTS_TCP_KEEPALIVE=0 NFQWS_PORTS_TCP_KEEPALIVE=""
NFQWS_PORTS_UDP_KEEPALIVE=0 NFQWS_PORTS_UDP_KEEPALIVE=""
# use <HOSTLIST> and <HOSTLIST_NOAUTO> placeholders to engage standard hostlists and autohostlist in ipset dir # use <HOSTLIST> and <HOSTLIST_NOAUTO> placeholders to engage standard hostlists and autohostlist in ipset dir
# hostlist markers are replaced to empty string if MODE_FILTER does not satisfy # hostlist markers are replaced to empty string if MODE_FILTER does not satisfy
# <HOSTLIST_NOAUTO> appends ipset/zapret-hosts-auto.txt as normal list # <HOSTLIST_NOAUTO> appends ipset/zapret-hosts-auto.txt as normal list
NFQWS_OPT="--filter-tcp=80 <HOSTLIST> --dpi-desync=fake,split2 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig --new --filter-tcp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --dpi-desync=fake,split2 --dpi-desync-repeats=11 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --new --filter-udp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --new --filter-udp=443 <HOSTLIST_NOAUTO> --dpi-desync=fake --dpi-desync-repeats=11 --new --filter-tcp=80,443 <HOSTLIST> --dpi-desync=fake,disorder2 --dpi-desync-repeats=6 --dpi-desync-autottl=2 --dpi-desync-fooling=md5sig" NFQWS_OPT="--filter-tcp=80 <HOSTLIST> --dpi-desync=fake,fakedsplit --dpi-desync-autottl=2 --dpi-desync-fooling=badsum --new --filter-tcp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --dpi-desync=fake,multidisorder --dpi-desync-split-pos=1,midsld --dpi-desync-repeats=11 --dpi-desync-fooling=badsum --dpi-desync-fake-tls-mod=rnd,dupsid,sni=www.google.com --new --filter-udp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --new --filter-udp=443 <HOSTLIST_NOAUTO> --dpi-desync=fake --dpi-desync-repeats=11 --new --filter-tcp=443 <HOSTLIST> --dpi-desync=multidisorder --dpi-desync-split-pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1"
DISABLE_CUSTOM=0
# FlowOffload mode : donttouch,none,software,hardware # FlowOffload mode : donttouch,none,software,hardware
FLOWOFFLOAD=none FLOWOFFLOAD=none
@ -131,7 +143,17 @@ DISABLE_IPV4=0
# do not work with ipv6 # do not work with ipv6
DISABLE_IPV6=1 DISABLE_IPV6=1
# drop icmp time exceeded messages for nfqws tampered connections
# in POSTNAT mode this can interfere with default mtr/traceroute in tcp or udp mode. use source port not redirected to nfqws
# set to 0 if you are not expecting connection breakage due to icmp in response to TCP SYN or UDP
FILTER_TTL_EXPIRED_ICMP=1
# select which init script will be used to get ip or host list # select which init script will be used to get ip or host list
# possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh # possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh
# comment if not required # comment if not required
#GETLIST=get_antizapret_domains.sh #GETLIST=get_antizapret_domains.sh
DAEMON_LOG_ENABLE=0
DAEMON_LOG_FILE="/tmp/zapret+<DAEMON_NAME>+<DAEMON_IDNUM>+<DAEMON_CFGNAME>.log"

View File

@ -14,7 +14,12 @@ function set_cfg_default_values
set $cfgname.config.INIT_APPLY_FW='1' set $cfgname.config.INIT_APPLY_FW='1'
set $cfgname.config.DISABLE_IPV4='0' set $cfgname.config.DISABLE_IPV4='0'
set $cfgname.config.DISABLE_IPV6='1' set $cfgname.config.DISABLE_IPV6='1'
set $cfgname.config.FILTER_TTL_EXPIRED_ICMP='1'
set $cfgname.config.MODE_FILTER='hostlist' set $cfgname.config.MODE_FILTER='hostlist'
set $cfgname.config.DISABLE_CUSTOM='0'
set $cfgname.config.WS_USER='daemon'
set $cfgname.config.DAEMON_LOG_ENABLE='0'
set $cfgname.config.DAEMON_LOG_FILE='/tmp/zapret+<DAEMON_NAME>+<DAEMON_IDNUM>+<DAEMON_CFGNAME>.log'
# autohostlist options # autohostlist options
set $cfgname.config.AUTOHOSTLIST_RETRANS_THRESHOLD='3' set $cfgname.config.AUTOHOSTLIST_RETRANS_THRESHOLD='3'
set $cfgname.config.AUTOHOSTLIST_FAIL_THRESHOLD='3' set $cfgname.config.AUTOHOSTLIST_FAIL_THRESHOLD='3'
@ -24,6 +29,7 @@ function set_cfg_default_values
set $cfgname.config.NFQWS_ENABLE='1' set $cfgname.config.NFQWS_ENABLE='1'
set $cfgname.config.DESYNC_MARK='0x40000000' set $cfgname.config.DESYNC_MARK='0x40000000'
set $cfgname.config.DESYNC_MARK_POSTNAT='0x20000000' set $cfgname.config.DESYNC_MARK_POSTNAT='0x20000000'
set $cfgname.config.FILTER_MARK='$TAB'
set $cfgname.config.NFQWS_PORTS_TCP='80,443' set $cfgname.config.NFQWS_PORTS_TCP='80,443'
set $cfgname.config.NFQWS_PORTS_UDP='443' set $cfgname.config.NFQWS_PORTS_UDP='443'
set $cfgname.config.NFQWS_TCP_PKT_OUT='9' set $cfgname.config.NFQWS_TCP_PKT_OUT='9'
@ -34,15 +40,16 @@ function set_cfg_default_values
set $cfgname.config.NFQWS_PORTS_UDP_KEEPALIVE='0' set $cfgname.config.NFQWS_PORTS_UDP_KEEPALIVE='0'
set $cfgname.config.NFQWS_OPT=" set $cfgname.config.NFQWS_OPT="
--filter-tcp=80 <HOSTLIST> --filter-tcp=80 <HOSTLIST>
--dpi-desync=fake,split2 --dpi-desync=fake,fakedsplit
--dpi-desync-autottl=2 --dpi-desync-autottl=2
--dpi-desync-fooling=md5sig --dpi-desync-fooling=badsum
--new --new
--filter-tcp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --filter-tcp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
--dpi-desync=fake,split2 --dpi-desync=fake,multidisorder
--dpi-desync-split-pos=1,midsld
--dpi-desync-repeats=11 --dpi-desync-repeats=11
--dpi-desync-fooling=md5sig --dpi-desync-fooling=badsum
--dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --dpi-desync-fake-tls-mod=rnd,dupsid,sni=www.google.com
--new --new
--filter-udp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt --filter-udp=443 --hostlist=/opt/zapret/ipset/zapret-hosts-google.txt
--dpi-desync=fake --dpi-desync=fake
@ -53,11 +60,9 @@ function set_cfg_default_values
--dpi-desync=fake --dpi-desync=fake
--dpi-desync-repeats=11 --dpi-desync-repeats=11
--new --new
--filter-tcp=80,443 <HOSTLIST> --filter-tcp=443 <HOSTLIST>
--dpi-desync=fake,disorder2 --dpi-desync=multidisorder
--dpi-desync-repeats=6 --dpi-desync-split-pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1
--dpi-desync-autottl=2
--dpi-desync-fooling=md5sig
" "
# save changes # save changes
commit $cfgname commit $cfgname

View File

@ -25,6 +25,7 @@ is_run_on_boot && IS_RUN_ON_BOOT=1 || IS_RUN_ON_BOOT=0
function enable function enable
{ {
local run_on_boot="" local run_on_boot=""
patch_luci_header_ut
if [ "$IS_RUN_ON_BOOT" = "1" ]; then if [ "$IS_RUN_ON_BOOT" = "1" ]; then
if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then
run_on_boot=$( get_run_on_boot_option ) run_on_boot=$( get_run_on_boot_option )
@ -47,7 +48,9 @@ function enabled
if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then
run_on_boot=$( get_run_on_boot_option ) run_on_boot=$( get_run_on_boot_option )
if [ $run_on_boot != 1 ]; then if [ $run_on_boot != 1 ]; then
logger -p notice -t ZAPRET "Service is blocked!" if [ "$IS_RUN_ON_BOOT" = "1" ]; then
logger -p notice -t ZAPRET "Service is blocked!"
fi
return 61 return 61
fi fi
fi fi
@ -57,6 +60,7 @@ function enabled
function boot function boot
{ {
local run_on_boot="" local run_on_boot=""
patch_luci_header_ut
if [ "$IS_RUN_ON_BOOT" = "1" ]; then if [ "$IS_RUN_ON_BOOT" = "1" ]; then
if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then if [ -n "$ZAPRET_CFG_SEC_NAME" ]; then
run_on_boot=$( get_run_on_boot_option ) run_on_boot=$( get_run_on_boot_option )
@ -66,6 +70,18 @@ function boot
fi fi
fi fi
fi fi
init_before_start "$DAEMON_LOG_ENABLE"
/bin/sh /etc/rc.common $ZAPRET_ORIG_INITD start "$@" /bin/sh /etc/rc.common $ZAPRET_ORIG_INITD start "$@"
} }
function start
{
init_before_start "$DAEMON_LOG_ENABLE"
/bin/sh /etc/rc.common $ZAPRET_ORIG_INITD start "$@"
}
function restart
{
init_before_start "$DAEMON_LOG_ENABLE"
/bin/sh /etc/rc.common $ZAPRET_ORIG_INITD restart "$@"
}

View File

@ -11,3 +11,168 @@ youtube-nocookie.com
youtube-ui.l.google.com youtube-ui.l.google.com
yt-video-upload.l.google.com yt-video-upload.l.google.com
wide-youtube.l.google.com wide-youtube.l.google.com
youtu.be
youtube.googleapis.com
yt.be
withyoutube.com
youtubeeducation.com
youtubefanfest.com
youtubegaming.com
youtubekids.com
youtubemobilesupport.com
youtube.ae
youtube.al
youtube.am
youtube.at
youtube.az
youtube.ba
youtube.be
youtube.bg
youtube.bh
youtube.bo
youtube.by
youtube.ca
youtube.cat
youtube.ch
youtube.cl
youtube.co
youtube.co.ae
youtube.co.at
youtube.co.cr
youtube.co.hu
youtube.co.id
youtube.co.il
youtube.co.in
youtube.co.jp
youtube.co.ke
youtube.co.kr
youtube.co.ma
youtube.co.nz
youtube.co.th
youtube.co.tz
youtube.co.ug
youtube.co.uk
youtube.co.ve
youtube.co.za
youtube.co.zw
youtube.com.ar
youtube.com.au
youtube.com.az
youtube.com.bd
youtube.com.bh
youtube.com.bo
youtube.com.br
youtube.com.by
youtube.com.co
youtube.com.do
youtube.com.ec
youtube.com.ee
youtube.com.eg
youtube.com.es
youtube.com.gh
youtube.com.gr
youtube.com.gt
youtube.com.hk
youtube.com.hn
youtube.com.hr
youtube.com.jm
youtube.com.jo
youtube.com.kw
youtube.com.lb
youtube.com.lv
youtube.com.ly
youtube.com.mk
youtube.com.mt
youtube.com.mx
youtube.com.my
youtube.com.ng
youtube.com.ni
youtube.com.om
youtube.com.pa
youtube.com.pe
youtube.com.ph
youtube.com.pk
youtube.com.pt
youtube.com.py
youtube.com.qa
youtube.com.ro
youtube.com.sa
youtube.com.sg
youtube.com.sv
youtube.com.tn
youtube.com.tr
youtube.com.tw
youtube.com.ua
youtube.com.uy
youtube.com.ve
youtube.cr
youtube.cz
youtube.de
youtube.dk
youtube.ee
youtube.es
youtube.fi
youtube.fr
youtube.ge
youtube.gr
youtube.gt
youtube.hk
youtube.hr
youtube.hu
youtube.ie
youtube.in
youtube.iq
youtube.is
youtube.it
youtube.jo
youtube.jp
youtube.kr
youtube.kz
youtube.la
youtube.lk
youtube.lt
youtube.lu
youtube.lv
youtube.ly
youtube.ma
youtube.md
youtube.me
youtube.mk
youtube.mn
youtube.mx
youtube.my
youtube.ng
youtube.ni
youtube.nl
youtube.no
youtube.pa
youtube.pe
youtube.ph
youtube.pk
youtube.pl
youtube.pr
youtube.pt
youtube.qa
youtube.ro
youtube.rs
youtube.ru
youtube.sa
youtube.se
youtube.sg
youtube.si
youtube.sk
youtube.sn
youtube.soy
youtube.sv
youtube.tn
youtube.tv
youtube.ua
youtube.ug
youtube.uy
youtube.vn
youtubego.co.id
youtubego.co.in
youtubego.com
youtubego.com.br
youtubego.id
youtubego.in

View File

@ -1,6 +1,20 @@
127.0.0.0/8
10.0.0.0/8 10.0.0.0/8
172.16.0.0/12 172.16.0.0/12
192.168.0.0/16 192.168.0.0/16
169.254.0.0/16 169.254.0.0/16
::1
fc00::/7 fc00::/7
fe80::/10 fe80::/10
play.google.com
android.com
google-analytics.com
googleusercontent.com
gstatic.com
gvt1.com
ggpht.com
dl.google.com
dl-ssl.google.com
android.clients.google.com
gvt2.com
gvt3.com

View File

@ -0,0 +1 @@
abra-cadabra.com

View File

@ -0,0 +1,65 @@
From 069fb25032d1b85ea57615ca234752e3969b777b Mon Sep 17 00:00:00 2001
From: remittor <remittor@gmail.com>
Date: Sat, 8 Feb 2025 22:04:51 +0300
Subject: [PATCH] Add support log file for each daemons
---
diff --git a/common/custom.sh b/common/custom.sh
index 0af19c0..41c0967 100644
--- a/common/custom.sh
+++ b/common/custom.sh
@@ -13,9 +13,16 @@ custom_runner()
dir_is_not_empty "$CUSTOM_DIR/custom.d" && {
for script in "$CUSTOM_DIR/custom.d/"*; do
[ -f "$script" ] || continue
+ DAEMON_CFGNAME_SAVED="$DAEMON_CFGNAME"
+ unset DAEMON_CFGNAME
unset -f $FUNC
. "$script"
+ if [ -z "$DAEMON_CFGNAME" ]; then
+ DAEMON_CFGNAME="$(basename "$script")"
+ DAEMON_CFGNAME="${DAEMON_CFGNAME%%.*}"
+ fi
existf $FUNC && $FUNC "$@"
+ DAEMON_CFGNAME="$DAEMON_CFGNAME_SAVED"
done
}
}
diff --git a/init.d/openwrt/zapret b/init.d/openwrt/zapret
index 8d6d3a9..fcb1e91 100755
--- a/init.d/openwrt/zapret
+++ b/init.d/openwrt/zapret
@@ -58,12 +58,29 @@ run_daemon()
# use $PIDDIR/$DAEMONBASE$1.pid as pidfile
local DAEMONBASE="$(basename "$2")"
echo "Starting daemon $1: $2 $3"
+ local DAEMON_NAME="$DAEMONBASE"
+ local DAEMON_IDNUM=$1
+ local DAEMON_PATH="$2"
+ local DAEMON_ARGS="$3"
+ local DAEMON_LOG=
+ if [ -n "$DAEMON_LOG_FILE" ]; then
+ DAEMON_LOG="$DAEMON_LOG_FILE"
+ DAEMON_LOG=${DAEMON_LOG/<DAEMON_NAME>/$DAEMON_NAME}
+ DAEMON_LOG=${DAEMON_LOG/<DAEMON_IDNUM>/$DAEMON_IDNUM}
+ DAEMON_LOG=${DAEMON_LOG/<DAEMON_CFGNAME>/$DAEMON_CFGNAME}
+ [ -f "$DAEMON_LOG" ] && rm -f "$DAEMON_LOG"
+ if [ "$DAEMON_LOG_ENABLE" = "1" ]; then
+ DAEMON_ARGS="--debug=@$DAEMON_LOG $DAEMON_ARGS"
+ fi
+ fi
procd_open_instance
- procd_set_param command $2 $3
+ procd_set_param command $DAEMON_PATH $DAEMON_ARGS
procd_set_param pidfile $PIDDIR/$DAEMONBASE$1.pid
procd_close_instance
}
+DAEMON_CFGNAME="main"
+
run_tpws()
{
[ "$DISABLE_IPV4" = "1" ] && [ "$DISABLE_IPV6" = "1" ] && return 0
--
2.41.0.windows.3

View File

@ -3,8 +3,15 @@
. /opt/zapret/comfunc.sh . /opt/zapret/comfunc.sh
cfg_run_on_boot="$( uci -q get zapret.config.run_on_boot )"
create_default_cfg create_default_cfg
if [ "$cfg_run_on_boot" = "1" ]; then
uci set zapret.config.run_on_boot=1
uci commit
fi
if [ "$1" = "sync" ]; then if [ "$1" = "sync" ]; then
# renew main config # renew main config
/opt/zapret/sync_config.sh /opt/zapret/sync_config.sh

View File

@ -48,6 +48,12 @@ function sync_param
if [ "$value" = "$TAB" ]; then if [ "$value" = "$TAB" ]; then
value="" value=""
fi fi
if [ "$param" = "NFQWS_PORTS_TCP_KEEPALIVE" -o "$param" = "NFQWS_PORTS_UDP_KEEPALIVE" ]; then
[ "$value" = "0" ] && value=""
fi
if [ "$param" = "NFQWS_OPT" -a "$value" != "" ]; then
value=$( echo -n "$value" | sed '/^#/d' )
fi
if [ "$vtype" = "str" ]; then if [ "$vtype" = "str" ]; then
set_param_value_str $param "$value" set_param_value_str $param "$value"
else else
@ -74,7 +80,12 @@ sync_param FLOWOFFLOAD
sync_param INIT_APPLY_FW sync_param INIT_APPLY_FW
sync_param DISABLE_IPV4 sync_param DISABLE_IPV4
sync_param DISABLE_IPV6 sync_param DISABLE_IPV6
sync_param FILTER_TTL_EXPIRED_ICMP
sync_param MODE_FILTER sync_param MODE_FILTER
sync_param DISABLE_CUSTOM
sync_param WS_USER str
sync_param DAEMON_LOG_ENABLE
sync_param DAEMON_LOG_FILE str
sync_param AUTOHOSTLIST_RETRANS_THRESHOLD sync_param AUTOHOSTLIST_RETRANS_THRESHOLD
sync_param AUTOHOSTLIST_FAIL_THRESHOLD sync_param AUTOHOSTLIST_FAIL_THRESHOLD
@ -84,14 +95,15 @@ sync_param AUTOHOSTLIST_DEBUGLOG
sync_param NFQWS_ENABLE sync_param NFQWS_ENABLE
sync_param DESYNC_MARK sync_param DESYNC_MARK
sync_param DESYNC_MARK_POSTNAT sync_param DESYNC_MARK_POSTNAT
sync_param FILTER_MARK str
sync_param NFQWS_PORTS_TCP str sync_param NFQWS_PORTS_TCP str
sync_param NFQWS_PORTS_UDP str sync_param NFQWS_PORTS_UDP str
sync_param NFQWS_TCP_PKT_OUT str sync_param NFQWS_TCP_PKT_OUT str
sync_param NFQWS_TCP_PKT_IN str sync_param NFQWS_TCP_PKT_IN str
sync_param NFQWS_UDP_PKT_OUT str sync_param NFQWS_UDP_PKT_OUT str
sync_param NFQWS_UDP_PKT_IN str sync_param NFQWS_UDP_PKT_IN str
sync_param NFQWS_PORTS_TCP_KEEPALIVE sync_param NFQWS_PORTS_TCP_KEEPALIVE str
sync_param NFQWS_PORTS_UDP_KEEPALIVE sync_param NFQWS_PORTS_UDP_KEEPALIVE str
sync_param NFQWS_OPT str sync_param NFQWS_OPT str
ZAPRET_CONFIG="$ZAPRET_CONFIG__SAVED" ZAPRET_CONFIG="$ZAPRET_CONFIG__SAVED"