Пишу простенький вариант прокси на free pascal под линукс, с использованием библиотеки synapse. Коечто набросал, в итоге клиент подсоединяется к прокси, благополучно проходит авторизацию, а дальше запарка (для соединения с моим прокси использую proxychains). Я понимаю что кроме вышеизложенного там еще очень много недочетов (уничтожение объектов и т.п), но пока нужно разобраться только с этим.
Собственно код
После процедуры авторизации попадаем сюда
if stage = RESPONSE_CONNECTION_OK then begin
Self.tcp.OnReadFilter:=@Self.OnReadFilterTCP;
Self.ConnectionSocket.OnReadFilter:=@Self.OnReadFilterClient;
Self.ConnectionSocket.RecvPacket(120000);
Self.tcp.RecvPacket(120000);
end;
Собственно обработчики:
procedure CProxyThread.OnReadFilterTCP(Sender: TObject; var Value: AnsiString);
var str_stream:TStringStream;
sock:TTCPBlockSocket;
begin
str_stream:=TStringStream.Create(Value);
Self.ConnectionSocket.SendStreamRaw(str_stream);
sock:=TTCPBlockSocket(Sender);
sock.RecvPacket(120000);
end;
procedure CProxyThread.OnReadFilterClient(Sender: TObject; var Value: AnsiString);
var str_stream:TStringStream;
sock:TTCPBlockSocket;
begin
str_stream:=TStringStream.Create(Value);
Self.tcp.SendStreamRaw(str_stream);
sock:=TTCPBlockSocket(Sender);
sock.RecvPacket(120000);
end;
в итоге данные через прокси не передаются