abysshint

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 1. Большинство используемых настроек в первых версиях TCP, сначала подгружались из torrc, а потом уже из ini, если соответствующие параметры не были найдены в torrc. Чем больше функций реализовывалось, тем больше проблем создавал такой подход. Нужно было писать в 2 раза больше кода, чтобы загружать и сохранять настройки как в ini-файл, так и в torrc. В большинстве случаев, настройки из torrc-файла, TOR загружает один раз и работает с ними до тех пор пока не будет перезапущен. TCP же постоянно их динамически изменяет во время свой работы. Например, если в torrc-файле есть параметр ExcludeNodes, TOR использует его в качестве списка заблокированных узлов, если он не задан - значит такого списка нет. В то же время в TCP есть возможность отключить список заблокированных узлов, то есть список существует, но в torrc-файле его нет. Как поступать в такой ситуации? Удалять тот, который уже есть в TCP, потому что его нет в torrc или сохранять тот который есть в TCP, но отключать его. Мне больше нравится второй вариант, его я и реализовал. Вот ещё пример: в torrc-файле пользователя может быть настройка ExcludeExitNodes, в TCP новых версий она не используется, потому что StrictNodes на неё не распространяется и не существует аналогичных настроек для EntryNodes и MiddleNodes, поэтому используется только ExcludeNodes, которая позволяет создать единый список заблокированных узлов, а не только выходных. Загрузка пользовательских torrc-файлов, которые "неправильно" составлены просто будут ломать логику работы TCP, поэтому многие настройки были перенесены в ini-файл и при изменении их через интерфейс TCP они сохраняются в ini и torrc одновременно, но загружаются только из ini-файла. Этой проблемы нет у TOR, потому что ему не нужно синхронизировать настройки между двумя файлами и графическим интерфейсом пользователя. Я думаю, что перенести настройки из другого torrc-файла в TCP обычным копированием не составит труда. Все параметры, которые не используются программой TCP будут проигнорированы и не затронуты. Некоторые параметры, которые используются TCP нормально загрузятся из torrc-файла, а критические - которые ломают логику работы программы сбросятся до тех, которые указаны в ini-файле (их можно вручную добавить через интерфейс или через правку Settings.ini). 2. Возможность подключаться к уже работающему процессу TOR тоже сложно осуществить и это тесно связано с проблемами синхронизации настроек, которые я описал выше. - Первая проблема: при подключении к уже созданному процессу нужно получить актуальный список цепочек и потоков, но через GETINFO circuit-status и GETINFO stream-status нельзя получить всех данных, которые используются программой TCP, а значит часть данных просто не будет отображаться в интерфейсе программы, по крайней мере до тех пор пока не будут созданы новые цепочки и потоки. - Вторая проблема - это синхронизация настроек между контроллерами. Например: подключаешься к процессу, который создал Tor-Browser, получил неполный список цепочек и потоков, но что делать с настройками? Придётся загружать те, которые использует TOR-браузер, перезаписывая свои собственные, либо навязывать ему свои. Но контроллер Tor-браузера так же как и TCP имеет двойные настройки: часть загружается из torrc-файла, а часть хранится вместе с настройками браузера. Если я изменю через TCP настройки Tor-браузера, он подхватит только те, которые загружаются из torrc-файла, но в интерфейсе ничего не поменяется. Так же если изменить настройки в Tor-браузере, то TCP их просто не сможет синхронизировать полностью со своим интерфейсом. Так что даже если и попытаться подключиться к удалённому или даже локальному TOR-процессу, полноценно работать с ним не получится из-за конфликта контроллеров. Для нормальной и стабильной работы TOR каждому процессу нужен свой контроллер иначе это будет какая-то вакханалия с непредсказуемыми результатами. Функционал, который вы предлагаете я уже пытался реализовать в той или ной степени и пришёл к выводу, что это либо невозможно, либо придётся каким-то коренным образом менять логику работы программы и переписывать всё что уже сделано по новой. Учитывая гору проблем, которые возникнут при реализации подобного функционала и достаточно сомнительную необходимость в этом функционале, я склоняюсь к выводу, что за это дело даже не стоит браться. Ну а вам придётся выбрать: либо вы используете TOR с контроллером в виде TCP, либо с контроллером в виде Tor-Browser, либо вообще без контроллера. Другого пока не дано... | Всего записей: 159 | Зарегистр. 03-06-2019 | Отправлено: 06:55 07-11-2022 | Исправлено: abysshint, 13:43 23-11-2022 |
|