Closed KainXVIII closed 1 month ago
Т.е. чтобы "запустил и забыл".
Думаю авторы Тора о подобном не позаботились. Там есть прописывание Тора в службы, но оно менее удобно чем автозапуск в трее, конечно. Да они много о чём не позаботились, иначе мне не пришлось бы создавать этот репозиторий, чтобы всё работало в стиле "запустил и забыл". Мы это всё обсуждали ещё полгода назад, и тогда коллективно пришли именно к такому варианту, что сейчас. Я со своей стороны не знаю, могу ли что сделать.
Т.е. чтобы "запустил и забыл".
Думаю авторы Тора о подобном не позаботились. Там есть прописывание Тора в службы, но оно менее удобно чем автозапуск в трее, конечно. Да они много о чём не позаботились, иначе мне не пришлось бы создавать этот репозиторий, чтобы всё работало в стиле "запустил и забыл". Мы это всё обсуждали ещё полгода назад, и тогда коллективно пришли именно к такому варианту, что сейчас. Я со своей стороны не знаю, могу ли что сделать.
Ну мне и так сойдёт, в принципе, а вот кому-нибудь менее сведущему поставить будет проблематичнее.
В интернете есть программы которые позволяют что угодно в трей сворачивать. Если прямо желание есть чтобы оно в трее было. Но это требует наличия такой программы. А вот так чтобы взять Тор, который изначально в трей сворачиваться никак не умел, и заставить его делать это - я не смогу.
По своей сути Тор - это стандартная консоль cmd, соответственно, если есть способ свернуть в трей любую консоль cmd, к Тору оно будет применимо, но я не уверен, что такой способ есть.
Можно ли запустить его как сервис?
@ECHO OFF
PUSHD "%~dp0"
set _arch=x86
IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set _arch=x86_64)
IF DEFINED PROCESSOR_ARCHITEW6432 (set _arch=x86_64)
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
sc stop "GoodbyeDPI"
sc delete "GoodbyeDPI"
sc create "GoodbyeDPI" binPath= "\"%CD%\%_arch%\goodbyedpi.exe\" -1 --blacklist \"%CD%\russia-blacklist.txt\" --blacklist \"%CD%\russia-youtube.txt\"" start= "auto"
sc description "GoodbyeDPI" "Passive Deep Packet Inspection blocker and Active DPI circumvention utility"
sc start "GoodbyeDPI"
POPD
у GoodByeDpi оно сделано так,можно ли сделать также с тором?
Можно ли запустить его как сервис?
@ECHO OFF PUSHD "%~dp0" set _arch=x86 IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set _arch=x86_64) IF DEFINED PROCESSOR_ARCHITEW6432 (set _arch=x86_64) echo This script should be run with administrator privileges. echo Right click - run as administrator. echo Press any key if you're running it as administrator. pause sc stop "GoodbyeDPI" sc delete "GoodbyeDPI" sc create "GoodbyeDPI" binPath= "\"%CD%\%_arch%\goodbyedpi.exe\" -1 --blacklist \"%CD%\russia-blacklist.txt\" --blacklist \"%CD%\russia-youtube.txt\"" start= "auto" sc description "GoodbyeDPI" "Passive Deep Packet Inspection blocker and Active DPI circumvention utility" sc start "GoodbyeDPI" POPD
у GoodByeDpi оно сделано так,можно ли сделать также с тором?
Это точно можно, если поколдовать. Есть инструкции.
--service install [--options command-line options] --service remove|start|stop
Вот это из мануала.
C:\AntiTor\tor\tor.exe --service install -options -f "C:\AntiTor\torrc.txt" - вот это примерно как оно будет выглядеть на практике в нашем случае. Это я со своей стороны могу сделать точно.
На самом деле не считаю удобными все эти вещи - вот сейчас сам набросал, и у меня ничего не работает. Это точно возможно, но для этого надо спрашивать тех, у кого оно уже было в виде службы. Когда-то гайд располагался по адресу https://www.torproject.org/docs/faq.html.en#NTService, сейчас там ничего нет. Ещё был вот такой хороший гайд, там про службы тоже написано https://github.com/anticensority/runet-censorship-bypass/issues/224#issuecomment-2025676123.
То есть мне самому в этом тоже надо почти с нуля разбираться. У меня никогда Тора не было в виде службы.
Например Павершелл ошибками засыпает, адрес файла конфигурации не меняет.
У меня тоже при попытке запустить через службу открывается окно к сожалению,я пробовал через .cmd потом переписал все и вообще не работает
@ECHO OFF
PUSHD "%~dp0"
set _arch=x86
IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set _arch=x86_64)
IF DEFINED PROCESSOR_ARCHITEW6432 (set _arch=x86_64)
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
sc stop "Tor"
sc delete "Tor"
sc create "Tor" binPath= "D:\Obxodruneta\antitor\AntiTor.exe" install -options -f "D:\Obxodruneta\antitor\torrc.txt" type=own start=auto
sc description "Tor" "Tor_ebet"
sc start "Tor"
pause
POPD
У меня тоже при попытке запустить через службу открывается окно к сожалению,я пробовал через .cmd потом переписал все и вообще не работает
@ECHO OFF PUSHD "%~dp0" set _arch=x86 IF "%PROCESSOR_ARCHITECTURE%"=="AMD64" (set _arch=x86_64) IF DEFINED PROCESSOR_ARCHITEW6432 (set _arch=x86_64) echo This script should be run with administrator privileges. echo Right click - run as administrator. echo Press any key if you're running it as administrator. pause sc stop "Tor" sc delete "Tor" sc create "Tor" binPath= "D:\Obxodruneta\antitor\AntiTor.exe" install -options -f "D:\Obxodruneta\antitor\torrc.txt" type=own start=auto sc description "Tor" "Tor_ebet" sc start "Tor" pause POPD
Вот мануальчик к нему. Может сможете разобраться. Если сможете и отпишитесь сюда, возможно появятся батники в архиве, один из которых создаёт и запускает службу, второй - останавливает. Служба должна запускать Тор и подхватывать torrc.txt, собственно то, что делает Антитор.exe. Но единственное для чего это нужно - чтобы у вас в панели задач он не висел, если вам это неудобно. Некоторых сам этот факт раздражает как я вижу, но подавляющему большинству всё равно. Мне так даже удобнее. Вы же не знаете, но раньше там постоянно откисали мосты - можно было посмотреть в окно командной строки и увидеть, всё ли хорошо. Совсем недавно появились эти Вебтуннели - они видимо не откисают, может и будет полезна служба. https://2019.www.torproject.org/docs/tor-manual.html.en
Благодарю,если получится то обязательно скину .bat или .cmd файлик
Благодарю,если получится то обязательно скину .bat или .cmd файлик
Как-то так это всё предлагалось сделать при помощи планировщика полгода назад, но я пошёл иным путём, как раз потому что уже тогда мы всё это посчитали неудобным.
Ещё спросил совета на форуме ntc по поводу службы. Может что ответят.
Сделял тяп-ляп на коленке батник для сервиса:
Т.к. судя по всему tor не имеет входного параметра для working directory, а добавлять переменную в env не хочется, то:
Заменяем
CacheDirectory ..\data
ClientOnionAuthDir ..\data\onion-auth
DataDirectory ..\data
GeoIPFile ..\data\geoip
GeoIPv6File ..\data\geoip6
на
CacheDirectory "TEMPLATE_WD\\data"
ClientOnionAuthDir "TEMPLATE_WD\\data\\onion-auth"
DataDirectory "TEMPLATE_WD\\data"
GeoIPFile "TEMPLATE_WD\\data\\geoip"
GeoIPv6File "TEMPLATE_WD\\data\\geoip6"
Создаём 'service_install_antitor.cmd', в него пишем:
@ECHO OFF
PUSHD "%~dp0"
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
powershell -Command "(gc '%CD%\torrc_template.txt') -replace 'TEMPLATE_WD', ('%CD%' -replace '\\','\\') | Out-File -encoding ASCII '%CD%\torrc.txt'"
start "" "%CD%\tor\tor.exe" --service stop
start "" "%CD%\tor\tor.exe" --service remove
start "" "%CD%\tor\tor.exe" --service install -options -f "%CD%\torrc.txt"
start "" "%CD%\tor\tor.exe" --service start
POPD
3. теперь tor работает как сервис
Но вы учитывайте, что с переименованием torrc экзешник Антитора работать не будет, ибо он уже привязан к названию.
Ну да оно работает.
@DesuIsALie желательно бы то же самое, но без torrc_template.txt. У него один файл конфигурации должен быть, ибо подразумевается, что каждый может легко отредактировать его под себя. С двумя даже непонятно, что и делать. Сможете?
@DesuIsALie желательно бы то же самое, но без torrc_template.txt. У него один файл конфигурации должен быть, ибо подразумевается, что каждый может легко отредактировать его под себя. С двумя даже непонятно, что и делать. Сможете?
@ECHO OFF
PUSHD "%~dp0"
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
start /wait "" "%CD%\tor\tor.exe" --service stop
start /wait "" "%CD%\tor\tor.exe" --service remove
start /wait "" "%CD%\tor\tor.exe" --service install -options -f "%CD%\torrc.txt"
start /wait "" "%CD%\tor\tor.exe" --service start
POPD
@DesuIsALie работает, но теперь он не удаляет службу при повторном запуске. В прошлой версии он при повторном открытии от администратора сносил службу начисто, что тоже гораздо более предпочтительно.
Если справитесь, то как минимум ваше имя можно будет указать в readme (при желании), может какую-нибудь небольшую финансовую благодарочку пришлю. Ну и разумеется файл будет в релизе.
Надо ещё смотреть, запустится ли служба автоматически при перезапуске Винды. Если нет, то очередная проблема. Но пока надо исправить то, что вижу.
Оно чуть ли не сложнее чем то, что уже сделано, на самом деле, но для конечного пользователя оно должно быть таким же однокнопочным, как и запустить через экзешник.
@DesuIsALie работает, но теперь он не удаляет службу при повторном запуске. В прошлой версии он при повторном открытии от администратора сносил службу начисто, что тоже гораздо более предпочтительно.
Это был косяк скрипта, т.к. я забыл /wait - оно не ждало завершения команд, а --remove выполнялся дольше остальных.
В любом случае, можно просто разнести команды по отдельным (улучшенным) скриптам:
run_antitor.cmd (просто запуск в терминале, не сервис)
@ECHO OFF
PUSHD "%~dp0"
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
call "%CD%\tor\tor.exe" -f "%CD%\torrc.txt"
POPD
service_install_antitor.cmd (установить сервис)
@ECHO OFF
PUSHD "%~dp0"
net session >nul 2>&1
if %errorLevel% NEQ 0 (
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
exit /b -1
)
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
call "%CD%\tor\tor.exe" --service install -options -f "%CD%\torrc.txt"
POPD
service_remove_antitor.cmd (удалить сервис)
@ECHO OFF
PUSHD "%~dp0"
net session >nul 2>&1
if %errorLevel% NEQ 0 (
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
exit /b -1
)
call "%CD%\tor\tor.exe" --service remove
POPD
service_reinstall_antitor.cmd (переустановить сервис)
@ECHO OFF
PUSHD "%~dp0"
call "%CD%\service_remove_antitor.cmd"
call "%CD%\service_install_antitor.cmd"
POPD
Надо ещё смотреть, запустится ли служба автоматически при перезапуске Винды.
tor создаёт службу с авто-запуском, всё работает при перезагрузке
Это был косяк скрипта, т.к. я забыл /wait
Выглядело так будто и должно так работать.
@DesuIsALie в текущем виде более-менее неплохо, но окно "выполните с правами администратора" больше не появляется. Ещё мне понравилась идея использовать всего один файл и для того чтобы удалить службу, и для того чтобы поставить её - работало хорошо. Явно не 4 файла там будет на всё это дело - никак нет.
Скрипт проверяет наличие прав администратора, если они есть - выполняется, если нет - выводит сообщение и завершается.
service_reinstall_antitor.cmd можно удалить, он тут для 'однокнопочности'. Остальные 3 скрипта - полная аналогия запуска goodbyedpi (не сервис, установка сервиса, удаление сервиса).
если нет - выводит сообщение и завершается.
У меня не выводит.
Просто файл не запустился.
Остальные 3 скрипта - полная аналогия запуска goodbyedpi
Мне не очень нравится как обычный Гудбай сделан в плане юзабилити - всем всегда говорю, у него очень хорошее ГУИ, пользуйтесь ГУИ. А ГУИ это совсем иной уровень. То что он одним файлом делает и то и другое - мне это прям нравится, хоть и случайно вышло, но стабильность есть в этом плане. Дальше действительно можно поработать над чеком админ-прав в консоли. У меня вторая версия консоли не даёт, а первая даёт в обеих случаях (спрашивает про админ-права даже когда они есть).
@ECHO OFF
PUSHD "%~dp0"
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
start "" "%CD%\tor\tor.exe" --service stop
start "" "%CD%\tor\tor.exe" --service remove
start "" "%CD%\tor\tor.exe" --service install -options -f "%CD%\torrc.txt"
start "" "%CD%\tor\tor.exe" --service start
POPD
Будет хорошо сделать нормальный чек на админ-права. А итоговый файл назвать install-and-delete или что-то вроде того - по сути обычная логика любого инсталлятора, который умеет и удалить, и установить в равной степени. Это у Гудбая в этом плане не совсем по-человечески сделано.
Просто файл не запустился.
Файл запустился, просто без терминала он сразу закрылся (мой недочёт). Добавьте pause в двух скриптах:
if %errorLevel% NEQ 0 (
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
pause
exit /b -1
)
у него очень хорошее ГУИ, пользуйтесь ГУИ Это у Гудбая в этом плане не совсем по-человечески сделано.
У нас разные понятия о юзабилити :)
и удалить, и установить
AIO скрипт:
@ECHO OFF
PUSHD "%~dp0"
net session >nul 2>&1
if %errorLevel% NEQ 0 (
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
pause
exit /b -1
)
call "%CD%\tor\tor.exe" --service remove
if %errorLevel% NEQ 0 (
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
call "%CD%\tor\tor.exe" --service install -options -f "%CD%\torrc.txt"
)
pause
POPD
@DesuIsALie то что нужно, огромное спасибо за помощь. Файл появится в релизе. Стоит ли как-то отблагодарить?
@DesuIsALie Спасибо
@DesuIsALie то что нужно, огромное спасибо за помощь. Файл появится в релизе. Стоит ли как-то отблагодарить?
Не надо, спасибо Вам за сборку самого tor для ленивых, вроде меня :)
Добавлена новая версия 1.3, в которой появился файл службы и обновлены мосты.
@DesuIsALie выявлен баг: файл службы редактирует файл Torrc, заменяя относительные пути на абсолютные. Это делает программу эффективно нерабочей. Требуется срочный фикс, а пока удаляю файл службы отсюда.
@DesuIsALie пути должны сохранить вид:
CacheDirectory ..\data ClientOnionAuthDir ..\data\onion-auth DataDirectory ..\data GeoIPFile ..\data\geoip GeoIPv6File ..\data\geoip6
А в чём баг?
tor как сервис не может работать с относительными путями (и впринципе он ругается на них), т.к. working directory любого сервиса - system32. env vars он тоже не поддерживает.
При каждой установке сервиса скрипт заменяет пути на абсолютные. Т.е. можно спокойно перемещать папку и запускать скрипт, чтобы удалить и установить сервис заново.
А в чём баг?
В том, что абсолютные пути попали в релиз. А так ни в чём.
Скрипт заменяет строки целиком, в релизе там хоть кракозябры вместо пути могут быть (главное, что названия параметров правильные).
Скрипт заменяет строки целиком, в релизе там хоть кракозябры вместо пути могут быть (главное, что названия параметров правильные).
1) Потом нельзя переместить папку в другое место - Антитор.exe не будет запускаться. 2) Из рабочего стола служба не запускается - пишет отказано в доступе. Запускается когда находится в корне диска C, например.
Это всё очень неудобно. Что-то можно сделать с этим? Иначе похоже придётся убирать службу.
@DesuIsALie предлагаю всё же делать два torrc, один torrc-service.txt (чтобы понятно было для чего он) с абсолютными путями, второй - torrc.txt с относительными путями для стабильной работы Антитора, если более элегантного решения вы не придумали. Ну и да, если оно всё находится на рабочем столе, то служба в принципе не запускается (access denied).
exe можно заменить скриптом из прошлых ответов:
@ECHO OFF
PUSHD "%~dp0"
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
call "%CD%\tor\tor.exe" -f "%CD%\torrc.txt"
POPD
tor через параметр создавал службу на аккаунте Local Service (мало привилегий). Поменял на sc, который создаёт на Local System (как goodbyedpi):
@ECHO OFF
PUSHD "%~dp0"
net session >nul 2>&1
if %errorLevel% NEQ 0 (
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
pause
exit /b -1
)
sc stop "Tor Win32 Service"
sc delete "Tor Win32 Service"
if %errorLevel% NEQ 0 (
powershell -Command "(gc '%CD%\torrc.txt') "^
"-replace '^CacheDirectory.*$', ('CacheDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^ClientOnionAuthDir.*$', ('ClientOnionAuthDir \"%CD%\data\onion-auth\"' -replace '\\','\\') "^
"-replace '^DataDirectory.*$', ('DataDirectory \"%CD%\data\"' -replace '\\','\\') "^
"-replace '^GeoIPFile.*$', ('GeoIPFile \"%CD%\data\geoip\"' -replace '\\','\\') "^
"-replace '^GeoIPv6File.*$', ('GeoIPv6File \"%CD%\data\geoip6\"' -replace '\\','\\') "^
"| Out-File -encoding ASCII '%CD%\torrc.txt'"
sc create "Tor Win32 Service" binPath= "\"%CD%\tor\tor.exe\" --nt-service -f \"%CD%\torrc.txt\"" start= "auto"
sc description "Tor Win32 Service" "Provides an anonymous Internet communication system"
sc start "Tor Win32 Service"
)
pause
POPD
как сервис
Как сервис не знаю, но как приложение он вполне распознаёт их...
Как сервис не знаю, но как приложение он вполне распознаёт их...
working directory любого сервиса - system32
Пути будут относительно system32
Да, я проверил, всё так.
Ну я это учту.
@DesuIsALie всё сделано.
Здравстрвуйте, не работает портабл :(
запускается и сразу выключается
Здравстрвуйте, не работает портабл :(
Перекачайте.
@cornkid сегодня патчи большие вносились, последний - минут 10 назад. Нужно было переписать логику программы, чтобы сделать возможным создание системной службы. Мы это сделали. Перекачайте релиз. У меня работает всё.
я скачала минут 5 назад, но скачаю ещё раз
Т.е. чтобы "запустил и забыл".