Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте пожалуйста 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.049 c
15-1178477279
ferr
2007-05-06 22:47
2007.06.03
gdb


8-1158759616
Урия
2006-09-20 17:40
2007.06.03
Запись видео в DirectShow


11-1160836684
AndreyRus
2006-10-14 18:38
2007.06.03
Free_And_Nil


15-1178542230
Kerk
2007-05-07 16:50
2007.06.03
Словарь Зализняка


3-1173871237
Sour Smile
2007-03-14 14:20
2007.06.03
Обновление автоинкремента в мёртвых запросах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский