А восстановление в finally, catch и trap завязано на $originalIpsetStatus, про режим там ничего нет:
if($originalIpsetStatus-ne"any"){Write-Host"[INFO] Restoring original ipset mode..."-ForegroundColorDarkGraySet-IpsetMode-mode"restore"}
Поэтому после стандартного прогона пользователь видит [INFO] Restoring original ipset mode..., хотя ipset никто не трогал, и вхолостую вызывается Set-IpsetMode -mode "restore".
Добавил флаг $ipsetSwitched, который выставляется в месте реального переключения, и заменил на него условие во всех трёх обработчиках. Текст сообщений не менял.
Проверка:
testType=standard ipset=none -> тихо, восстановление не вызывается
testType=dpi ipset=none -> печатает [INFO] Restoring original ipset mode... и восстанавливает
При этом, предупреждение в начале скрипта не трогал - там прямо сказано, что переключение нужно для DPI-тестов.
Да и тем более в начале скрипта сделано правильно, что все предупреждения сразу выносятся.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/Flowseal/zapret-discord-youtube/pull/17607
**Author:** [@klaymm](https://github.com/klaymm)
**Created:** 9/20/2026
**Status:** 🔄 Open
**Base:** `main` ← **Head:** `fix/ipset-restore-guard`
---
### 📝 Commits (2)
- [`0b62b49`](https://github.com/Flowseal/zapret-discord-youtube/commit/0b62b49bdac921117e71371c83c893824c9da1ed) test zapret.ps1: ipset восстанавливается там, где его не меняли
- [`3755fbe`](https://github.com/Flowseal/zapret-discord-youtube/commit/3755fbefd7f2fd15951630418a23ddc3c6ab0e62) test zapret.ps1: поднимать флаг ipset до переключения
### 📊 Changes
**1 file changed** (+6 additions, -3 deletions)
<details>
<summary>View changed files</summary>
📝 `utils/test zapret.ps1` (+6 -3)
</details>
### 📄 Description
# Переключение ipset в `any` происходит только в DPI-режиме:
```powershell
if (($originalIpsetStatus -ne "any") -and ($testType -eq 'dpi')) {
```
А восстановление в `finally`, `catch` и `trap` завязано на `$originalIpsetStatus`, про режим там ничего нет:
```powershell
if ($originalIpsetStatus -ne "any") {
Write-Host "[INFO] Restoring original ipset mode..." -ForegroundColor DarkGray
Set-IpsetMode -mode "restore"
}
```
Поэтому после стандартного прогона пользователь видит `[INFO] Restoring original ipset mode...`, хотя ipset никто не трогал, и вхолостую вызывается `Set-IpsetMode -mode "restore"`.
Добавил флаг `$ipsetSwitched`, который выставляется в месте реального переключения, и заменил на него условие во всех трёх обработчиках. Текст сообщений не менял.
Проверка:
```
testType=standard ipset=none -> тихо, восстановление не вызывается
testType=dpi ipset=none -> печатает [INFO] Restoring original ipset mode... и восстанавливает
```
При этом, предупреждение в начале скрипта не трогал - там прямо сказано, что переключение нужно для DPI-тестов.
Да и тем более в начале скрипта сделано правильно, что все предупреждения сразу выносятся.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/Flowseal/zapret-discord-youtube/pull/17607
Author: @klaymm
Created: 9/20/2026
Status: 🔄 Open
Base:
main← Head:fix/ipset-restore-guard📝 Commits (2)
0b62b49test zapret.ps1: ipset восстанавливается там, где его не меняли3755fbetest zapret.ps1: поднимать флаг ipset до переключения📊 Changes
1 file changed (+6 additions, -3 deletions)
View changed files
📝
utils/test zapret.ps1(+6 -3)📄 Description
Переключение ipset в
anyпроисходит только в DPI-режиме:А восстановление в
finally,catchиtrapзавязано на$originalIpsetStatus, про режим там ничего нет:Поэтому после стандартного прогона пользователь видит
[INFO] Restoring original ipset mode..., хотя ipset никто не трогал, и вхолостую вызываетсяSet-IpsetMode -mode "restore".Добавил флаг
$ipsetSwitched, который выставляется в месте реального переключения, и заменил на него условие во всех трёх обработчиках. Текст сообщений не менял.Проверка:
При этом, предупреждение в начале скрипта не трогал - там прямо сказано, что переключение нужно для DPI-тестов.
Да и тем более в начале скрипта сделано правильно, что все предупреждения сразу выносятся.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.