Задать вопрос

Есть компонент/модуль или просто код реализации socks5 прокси сервера на Delphi 6/7?

Может быть есть у кого нибудь компонент/модуль или просто код реализации socks5 прокси сервера на Delphi 6/7?
Нашёл в сети вот такой вариант реализации - https://proxy-base.com/f29/delphi_socks5_ishodnik-... в нём есть небольшие ошибки, поправил их, тем не менее расшаривание порта не происходит (проверял через netstat в винде и пробовал подсоединяться через telnet). Тем не менее старт прокси вешал на кнопку. Приложение Delphi запустилось. Если из него сразу выйти то ошибок нет. Если запустить прокси и потом выйти то вылетает исключение, из чего можно сделать вывод что всё-таки там что то выполняется. При это опять же как написал порт не расшарен, коннектиться некуда.
Можете ли подсказать другую рабочую реализацию socks5 прокси для Delphi 6/7 или подсказать что именно в коде по ссылке неверно написано и как поправить?

Нашел ещё вот такой вариант - https://forum.sources.ru/next/index.php?showtopic=... его даже откомпилировать без ошибок для запуска не удалось.
  • Вопрос задан
  • 235 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Delphi
Delphi Developer, сис. админ
Спроси у народа здесь
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@hasalex
разработчик
curl не подходит? наверняка уже есть прослойка под делфу. Ну или накрайняк самому написать либу и ею пользоваться
Ответ написан
@ruyurik
Очень много инфы перелопатил на форумах, много делал экспериментов, в итоге добавил несколько строк работающего кода, чем и поделюсь.
Делал для Socks Proxy сервера, для RDP-соединений. Работает под Indy компонентами, использую Delphi XE5.
По TidTCPServer (по какому-нить свободному порту) на обработчике OnExecute создаю динамически компонент проброса портов TidMappedPortTCP

var mRemap: TIdMappedPortTCP;
begin
    mRemap := TIdMappedPortTCP.Create(Application);
    mRemap.DefaultPort := 40000; //Выбираем входящий порт прокси-сервера (необходимо пробросить порт до этого компа на роутере), у меня для каждого соединения выбран свой порт
    mRemap.OnConnect := MappedPortConnect;   //MappedPortConnect - новый назначаемый обработчик для всех соединений при перенаправления
    mRemap.Active := True;
end;


потом добавляем сам обработчик:

procedure TForm1.MappedPortConnect(AContext: TIdContext);
begin
  // Обработчик один на все соединения, здесь проверка IP соединения, которое вы должны ранее сохранить куда нибудь в массив при первом соединении через порт компонента TidTCPServer
  if (AContext.Binding.PeerIP = '192.168.0.1') then
      with TIdTCPClient(TIdMappedPortContext(AContext).OutboundClient) do
      begin
          Host := 'Computername';
          Port := 3389;
      end;
end;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы