GoodbyeDPI
GoodbyeDPI copied to clipboard
Blacklist update without service restart
сейчас после каждого обновления russia-blacklist.txt нужно делать перезапуск службы чтобы изменения вступили в силу. есть ли возможность добавить перечитывание файла при изменении, например, его размера или даты?
Да, было бы неплохо. Еще можно было вообще авто обновление списка периодическое сделать, например раз в час или раз в день...
Да, было бы неплохо. Еще можно было вообще авто обновление списка периодическое сделать, например раз в час или раз в день...
автообновление можно сделать и самому через планировщик задач
CMD-файл в папку с программой
@echo off
pushd "%~dp0"
set blacklist_url="https://antizapret.prostovpn.org/domains-export.txt"
set blacklist=%cd%\russia-blacklist.txt
set log=%temp%\blacklist_update.log
:: set log=nul
set mydate=%date:~4,2%/%date:~7,2%/%date:~10,4%
set mytime=%time: =0%
schtasks /Query /TN "GoodbyeDPI blacklist update" > nul
if ERRORLEVEL 1 schtasks /Create /TN "GoodbyeDPI blacklist update" /RU SYSTEM /TR "%~fs0" /SC HOURLY /ST %mytime:~,-3% /SD %mydate%
:download
bitsadmin /transfer blacklist %blacklist_url% "%temp%\goodbyedpi-blacklist.txt.new"
:: wget %blacklist_url% -O "%temp%\goodbyedpi-blacklist.txt.new"
for %%i in (%temp%\goodbyedpi-blacklist.txt.new) do (set /a size=%%~Zi)
if %size% == 0 (
del /F /Q %temp%\goodbyedpi-blacklist.txt.new
timeout 120
goto download
)
<nul set /p strTemp=%date% %time:~0,-3% >> %log%
fc %blacklist% %temp%\goodbyedpi-blacklist.txt.new > nul
if ERRORLEVEL 1 (
echo обновление списка блокировок >> %log%
net stop GoodbyeDPI
move /Y %temp%\goodbyedpi-blacklist.txt.new %blacklist%
net start GoodbyeDPI
) else (
echo список блокировок без изменений >> %log%
del /F /Q %temp%\goodbyedpi-blacklist.txt.new
)
popd
exit
CMD-файл создаст задание на обновление раз в час
CMD-файл создаст задание на обновление раз в час
У меня американский формат даты и времени, время выдаётся одной цифрой в часах:
echo %time:~,-3%
0:46:26
(На самом деле там пробел вместо первого нуля, его и заменяю в фиксе).
Дата выдаётся с кратким днём недели:
echo %date%
Sun 10/02/2022
Поэтому добавление в планировщик забирает "Sun" вместо даты, а также время нужно вида "00" (двузначный час):
schtasks /Create /TN "GoodbyeDPI blacklist update" /RU SYSTEM /TR "%~fs0" /SC HOURLY /ST %time:~ ,-3% /SD %date%
ERROR: Invalid argument/option - '10/02/2022'.
ERROR: Invalid starttime value.
Фикс:
set mydate=%date:~4,2%/%date:~7,2%/%date:~10,4%
set mytime=%time: =0%
:: set log=nul
schtasks /Query /TN "GoodbyeDPI blacklist update" > nul
if ERRORLEVEL 1 schtasks /Create /TN "GoodbyeDPI blacklist update" /RU SYSTEM /TR "%~fs0" /SC HOURLY /ST %mytime:~,-3% /SD %mydate%
Ещё добавлю, что таск с пользователем SYSTEM у меня не срабатывает почему-то, нормально работает так:
if ERRORLEVEL 1 schtasks /Create /TN "GoodbyeDPI blacklist update" /RU Administrators /TR "%~fs0" /SC HOURLY /ST %mytime:~,-3% /SD %mydate%
Но в таком случае появляется окно cmd при выполнении таска, пришлось обходить это с помощью VBS. Вот тут итоговый результат: https://gist.github.com/rdavydov/14756249a767372b545dc7685d636dee
P.S. bitsadmin качал со скоростью черепахи (буквально, байты в сек), вариант с wget - работает прекрасно.
Перестал обновляться russia-blacklis.txt через 0_russia_update_blacklist_file.cmd Доходит до 21-24% и висит. Приходится делать вручную: открывать https://antizapret.prostovpn.org/domains-export.txt в браузере, затем "Сохранить как ..."
Перестал обновляться russia-blacklis.txt через 0_russia_update_blacklist_file.cmd Доходит до 21-24% и висит. Приходится делать вручную: открывать https://antizapret.prostovpn.org/domains-export.txt в браузере, затем "Сохранить как ..."
У меня была похожая проблема, стопорилось на 4%, помог перезапуск службы "Фоновая интеллектуальная служба передачи" в винде