Клиент TidIMAP4 пакета Indy не поддерживает носки 4/5 прокси, какими будут возможные подходы к добавлению этой поддержки?Как сделать носки поддержки TIdIMAP4 4/5 прокси?
ответ
Indy уже имеет встроенный фрейм для подключения любой Клиентский компонент TCP через прокси. Вы просто присоединяете желаемый прокси-компонент к клиентскому компоненту, а затем клиент будет автоматически подключаться к прокси-серверу и сообщать, с каким подключением. А прокси-компоненты могут быть закодированы, если вам нужно подключиться через несколько прокси.
Инди 10 обеспечивает два компонента прокси-сервера по умолчанию - TIdSocksInfo
для SOCKS 4/4a/5 прокси и TIdConnectThroughHttpProxy
для HTTP прокси (с использованием метода HTTP-CONNECT
). Но структура достаточно универсальна, что вы можете получить новые классы, если вам нужно реализовать другие протоколы прокси.
В вашем случае, назначить TIdIOHandlerStack
компонент к TIdIMAP4.IOHandler
собственности перед подключением к серверу, назначить TIdSocksInfo
компонент к TIdIOHandlerStack.TransparentProxy
собственности, а также настроить TIdSocksInfo
по мере необходимости. Все это можно выполнить во время разработки или во время выполнения.
Отлично! Спасибо Реми. Еще одна вещь - есть ли прямой метод использования TIdSocksInfo в настройках прокси-сервера системы? –
Нет. Для начала не существует понятия «системный прокси-сервер». И даже если бы это было, это было бы сильно зависимым от платформы. Возможно, вы думаете о собственной настройке прокси-сервера WinInet? Это не является системным. Вам нужно будет спросить WinInet для этого параметра. В противном случае вы можете использовать такие протоколы, как Auto-Discovery (WPAD) для обнаружения прокси-сервера в сети. Но в любом случае вам нужно будет присвоить соответствующие значения 'TIdSocksInfo' по мере необходимости. –
Отлично, спасибо Реми, это очень полезно !. –