Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Посоветуйте пожалуйста socs5 - прокси сервер под винду   Найти похожие ветки 

 
РТР   (2007-05-11 00:27) [0]

Посоветуйте пожалуйста socks5/4 - прокси сервер под винду. Юзергейт и подобные не предлагать, считают трафик драйвером, а он конфликтует с драйвером оутпоста. Из функционала достаточно возможности ограничить доступ диапазоном адресов, подсчет трафика не нужен.


 
Knight ©   (2007-05-11 00:28) [1]

Можно подробнее о конфликте и о версиях?


 
Knight ©   (2007-05-11 00:32) [2]

Иногда при загрузке не запускается служба UG, или комп тупит тихонько шевеля винтом, со 100% загрузкой проца аутпостом. Но если загружается, то работает без проблем.

Аутпост какой-то из третих, UG 2.8.


 
Knight ©   (2007-05-11 00:33) [3]

Этот глюк или там что-то другое?


 
Knight ©   (2007-05-11 00:36) [4]

Мож что-то типа Permeo Security Driver?
http://Permeo.com


 
РТР   (2007-05-11 00:45) [5]

Ничего конкретного сказать не могу, ибо не тестировал совместимость, а просто так говорить не хочется, вдруг проблемы были из-за нестабильной версии юзергейта. Да и дело уже давно было. В любом случае два фильтр-драйвера мне не надо.


 
РТР   (2007-05-11 00:46) [6]


> Мож что-то типа Permeo Security Driver?

А это проксик? Судя по названию непохоже.


 
Knight ©   (2007-05-11 00:52) [7]


> [6] РТР   (11.05.07 00:46)

Что-то похожее.


 
РТР   (2007-05-11 01:09) [8]

Нашел я исходник, не знаю, стоит ли заморачиватся, пока не разбирался с исходником. Вообще то, честно говоря, не хочется, охота готовый :) Понимаю, понимаю, а что поделаешь :)
program dproxy;

uses
 windows,
 WinSock;

type TSOCKS4_REQUEST=record
      ucVersion : byte;
      ucCommand : byte;
      wDestPort : word;
      dwDestIp  : dword;
    end;

var
 wsaData : TWSADATA;
 sport   : string;
 iport   : word;
 l_sock  : TSocket;
 sock4   : SOCKADDR_IN;
 Client  : TSockAddr;
 Size    : integer;
 h1      : THandle;

procedure FlushRecvBufferUntil(s:TSOCKET;condition:Char);
var
 iReceiveRes : integer;
 cDummy      : char;
begin
 repeat
   iReceiveRes := recv(s, cDummy, sizeof(cDummy), 0);
 until NOT ((iReceiveRes<>SOCKET_ERROR) and (iReceiveRes<>0) and (cDummy<>condition));
end;

procedure SocksHandlerTreadProc(pParam:pointer); stdcall;
var
 s              : TSocket;
 tunnelSock     : TSocket;
 iConnectResult : integer;
 iReceiveRes    : integer;
 iSocketsSet    : integer;
 socks4Request  : TSOCKS4_REQUEST;
 socks4Response : TSOCKS4_REQUEST;
 remoteAddr     : SOCKADDR_IN;
 fds_read       : TFDset;//fd_set;
 tv             : TTimeval;
 cSocksVersion  : byte;
 iSelectResult  : integer;
 loop           : integer;
 ulVal          : u_long;
 swapBuffer     : array[0..4096*16-1] of char;
 iRecvResult    : integer;
begin
 s              := TSOCKET(pParam);
 tunnelSock     := 0;
 loop           := 0;
 while loop=0 do
 begin
   inc(loop);
   iConnectResult := 0;
   iReceiveRes    := 0;
   iSocketsSet    := 0;
   FD_ZERO(fds_read);
   FD_SET(s, fds_read);
   tv.tv_sec     := 30;
   cSocksVersion := 0;
   iSelectResult := select(0, @fds_read, nil, nil, @tv);
   if (iSelectResult=SOCKET_ERROR) or (not iSelectResult>0) then break;
   ulVal := 0;
   ioctlsocket(s, FIONBIO , ulVal);
   iReceiveRes := recv(s, cSocksVersion, 1, MSG_PEEK);
   if cSocksVersion=4 then // 3333333333333333333
   begin
     iReceiveRes := recv(s, socks4Request, sizeof(socks4Request), 0);
     if iReceiveRes=SOCKET_ERROR then break;
     ulVal := 1;
     ioctlsocket(s, FIONBIO , ulVal);
     FlushRecvBufferUntil(s, #0);
     if socks4Request.ucCommand = 1 then
     begin // 2222222222222222222
   ulVal := 0;
   ioctlsocket(s, FIONBIO, ulVal);
   remoteAddr.sin_family := AF_INET;
   move(socks4Request.dwDestIp,remoteAddr.sin_addr,sizeof(remoteAddr.sin_addr));
   remoteAddr.sin_port := socks4Request.wDestPort;
   tunnelSock := socket(AF_INET, SOCK_STREAM, 0);
   iConnectResult := connect(tunnelSock, remoteAddr, sizeof(remoteAddr));
   if (iConnectResult<>SOCKET_ERROR) then
   begin // 1111111111
     socks4Response.ucCommand := 90;
     socks4Response.ucVersion := 0;
     send(s, socks4Response, sizeof(socks4Response), 0);
   end else break; // 1111111111
     end else break;// 2222222222222222222
   end else break;// 3333333333333333333
   ulVal := 0;
   ioctlsocket(tunnelSock, FIONBIO, ulVal);
   ioctlsocket(s, FIONBIO, ulVal);
   fillchar(swapBuffer,sizeof(swapBuffer),0);
   tv.tv_sec := 2;
   while true do // 4444444444444444
   begin
     FD_ZERO(fds_read);
     FD_SET(s, fds_read);
     FD_SET(tunnelSock, fds_read);
     iSocketsSet := select(0, @fds_read, nil, nil, @tv); //if (iSocketsSet == SOCKET_ERROR) _leave;
     if iSocketsSet > 0 then // 5555555555555555
     begin
   if FD_ISSET(s, fds_read) then
   begin
     iRecvResult := recv(s, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
     if (iRecvResult=0)
       then break
       else iRecvResult := recv(s, swapBuffer, sizeof(swapBuffer), 0);
     if (iRecvResult <> SOCKET_ERROR) and (iRecvResult > 0)
       then send(tunnelSock, swapBuffer, iRecvResult, 0)
       else BREAK;
   end;

   if (FD_ISSET(tunnelSock, fds_read)) then
   begin
     iRecvResult := recv(tunnelSock, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
     if iRecvResult = 0
       then break
       else iRecvResult := recv(tunnelSock, swapBuffer, sizeof(swapBuffer), 0);
     if (iRecvResult <> SOCKET_ERROR) and (iRecvResult > 0)
       then send(s, swapBuffer, iRecvResult, 0)
       else break;
   end;
     end;  // 5555555555555555
   end; // 4444444444444444
 end; // while loop=0 do
 closesocket(s);
 closesocket(tunnelSock);
end;

begin
 WSAStartup(MAKEWORD(2,0), wsaData);
 l_sock                := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 sock4.sin_family      := AF_INET;
 sock4.sin_port        := htons(1080);
 sock4.sin_addr.s_addr := INADDR_ANY;
 Size                  := SizeOf(Client);
 if (Bind(l_sock,sock4,SizeOf(sock4))=0) and (Listen(l_sock,$FF)=0) then
   while true do CreateThread(nil,0,@SocksHandlerTreadProc,Pointer(accept(l_sock, @Client, @Size)),0,h1);
end.

вот описание протокола
http://www.faqs.org/rfcs/rfc1928.html


 
Knight ©   (2007-05-11 01:32) [9]

http://www.niks.by/support/instruct/permeo/permeo.htm


 
Knight ©   (2007-05-11 01:33) [10]

http://satorel.mailers.ru/index.php?newsid=118



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
15-1178492643
Real
2007-05-07 03:04
2007.06.03
C Днем Радио!!!


2-1178820436
Riply
2007-05-10 22:07
2007.06.03
Ожидание окончания "инициализации процесса".


2-1179340482
Slimer
2007-05-16 22:34
2007.06.03
Не завершается цикл while


2-1179146463
[Salo]Phantom
2007-05-14 16:41
2007.06.03
Компоненты


2-1179143854
Gentos
2007-05-14 15:57
2007.06.03
a--->ф , q --->й