Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / простейший Proxy / 10 сообщений из 10, страница 1 из 1
15.04.2005, 16:14
    #33018582
lissyara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
Надо. Никаких кэширований ничё не надо. Чё-то рыл-рыл, ничё не нашёл.
Одним экзэшником без настроек, только http
Ни у кого нет на примете. Видел, давно, но щас не могу найти, название не помню
...
Рейтинг: 0 / 0
15.04.2005, 16:59
    #33018725
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
Есть такой shttp3.exe - могу на мыло кинуть, 100кб. Правда, shareware.
...
Рейтинг: 0 / 0
15.04.2005, 17:01
    #33018730
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
Ой, виноват. Он не прокси. Он веб. Извиняюсь.
...
Рейтинг: 0 / 0
15.04.2005, 20:52
    #33019143
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
http://search.centre.ru/soft/0_Server_Tools/Proxy_Servers/
?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
15.04.2005, 21:20
    #33019165
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
#define VERSION "v1.02"

//#include "windows.h"
#include "Winsock2.h"
#include "Winsvc.h"
#include "ws2tcpip.h"

#include "stdio.h"
#include "conio.h"
#pragma comment(lib, "Ws2_32.lib")
//#include "winsock2.h"
#define C_TIMEOUT  60 ;
#define SEND_TIMEOUT  3600 ;

#define MAGIC_WORD_LEN  42 
#define MAGIC_WORD "Grigoriev rulez! Other lecturers must die!"

int OUR_PORT =  800 ;
int ENEMY_PORT =  3128 ;
char ENEMY_ADDR[ 256 ] = "localhost";

SOCKET s;
int PROXYMODE =  0 ;
char ENEMY_IP[ 16 ];

int getaddr(char *name, char *ip){
  ADDRINFOA *addr;
  if(getaddrinfo(name, NULL, NULL, &addr) !=  0 ){
    return  0 ;
  }
  sprintf(ip, "%d.%d.%d.%d",
    (unsigned char)addr->ai_addr->sa_data[ 2 ],
    (unsigned char)addr->ai_addr->sa_data[ 3 ],    
    (unsigned char)addr->ai_addr->sa_data[ 4 ],    
    (unsigned char)addr->ai_addr->sa_data[ 5 ]);
  return  1 ;
} 

int streq(char *str1, char *str2){
  int i =  0 ;
  while(str2[i]){
    if(str1[i]!=str2[i]) return  0 ;
    i++;
  }
  return  1 ;
}

void parseheader(char *buff, char *addr, int *port, size_t *size){
  int mode =  0 ;
  size_t loc1 =  0 , loc2 =  0 ;
  size_t pos1 =  0 ;
  size_t i;
  *port =  80 ;
  for(i =  0 ; i < *size; i++){
    switch(mode){
      case( 0 ):
        if(buff[i] == ' '){
          mode++;
          loc1 = i;
        }
        break;
      case( 1 ):
        if(streq(&buff[i], "http://")){
          *port =  80 ;
          mode++;
          i+= 6 ;
        }
        break;
      case( 2 ):
        if(buff[i] == ':'){
          *port =  0 ;
          mode++;
          break;
        }
        if(buff[i] == '/'){
          mode =  255 ;
          loc2 = i;
          break;
        }
        addr[pos1++] = buff[i];
        break;
      case( 3 ):
        if(buff[i] == '/'){
          mode =  255 ;
          loc2 = i;
          break;
        }
        *port = (*port)* 10  + buff[i] - '0';
    }
    if(mode ==  255 ) break;
  }
  addr[pos1] =  0 ;
  if(loc1 && loc2){
    MoveMemory(&buff[loc1+ 1 ], &buff[loc2], (*size)-loc2+ 1 );
    size -= (loc2-loc1);
  }
}

unsigned long int ids =  0 ;

void socktread(){
  WSANETWORKEVENTS netevents;
  SOCKET clnt, srv;
  size_t Size;
  SOCKADDR_IN addrs;
  WSAEVENT hEventC, hEventS, hEventWait;
  int connected;
  char desccl[ 256 ], descsv[ 256 ];
  char buff[ 65537 ];
  int _ENEMY_PORT = ENEMY_PORT;
  char _ENEMY_ADDR[ 256 ];
  char _ENEMY_IP[ 256 ];
  unsigned long int id;
  u_long bmode;
  TIMEVAL timeout;
  fd_set writefds;
  int temp;
  
  ids++;
  id = ids;

  sprintf(_ENEMY_ADDR, "%s", ENEMY_ADDR);
  sprintf(_ENEMY_IP, "%s", ENEMY_IP);
  Size = sizeof(addrs);
  clnt = accept(s, (SOCKADDR *)&addrs, (int *)&Size);
  if(!clnt) return;

  sprintf(desccl,"%s:%d", inet_ntoa(addrs.sin_addr), ntohs(addrs.sin_port));
  printf("[#%d] %s connected...\n", id, desccl);
  hEventC = WSACreateEvent();
  hEventS = WSACreateEvent();
  hEventWait = WSACreateEvent();
  WSAEventSelect(clnt, hEventC, FD_READ | FD_CLOSE);
  connected =  0 ;

  for(;;){
    // Client activity
    WSAEnumNetworkEvents(clnt, hEventC, &netevents);
    if(netevents.lNetworkEvents & FD_READ){
      Size = recv(clnt, buff, sizeof(buff)- 1 ,  0 );
      buff[Size] =  0 ;
      if(!connected){
        if((Size == MAGIC_WORD_LEN) && !strcmp(buff, MAGIC_WORD)){
          printf("[#%d] %s closed proxy server...\n", id, desccl);
          send(clnt, "200 Close command OK",  21 ,  0 );
          exit( 0 );
        }
        if(!PROXYMODE){
          parseheader(buff, _ENEMY_ADDR, &_ENEMY_PORT, &Size);
          if(!getaddr(_ENEMY_ADDR, _ENEMY_IP)){
            sprintf(buff, "Server \"%s\" not found!", _ENEMY_ADDR);
            printf("[#%d] %s disconnected [%s not found]...\n", id, desccl, _ENEMY_ADDR);
            send(clnt, buff, (int)strlen(buff),  0 );
            closesocket(clnt);
            WSAEventSelect(clnt, hEventC,  0 );
            fflush(stdout);
            return;
          }
        }
        addrs.sin_addr.S_un.S_addr = inet_addr(_ENEMY_IP);
        addrs.sin_port = htons(_ENEMY_PORT);
        addrs.sin_family = PF_INET;
        sprintf(descsv, "%s:%d", _ENEMY_ADDR, _ENEMY_PORT);
        srv = socket(PF_INET,SOCK_STREAM, 0 );
        bmode =  1 ;
        ioctlsocket(srv, FIONBIO, &bmode);
        connect(srv, (SOCKADDR *)&addrs, sizeof(addrs));
        FD_SET(srv, &writefds);
        timeout.tv_sec = C_TIMEOUT;
        timeout.tv_usec =  0 ;
        select( 0 , NULL, &writefds, NULL, &timeout);
        connected = FD_ISSET(srv, &writefds);
        FD_ZERO(&writefds);
        if(!connected){
          sprintf(buff, "Server \"%s:%d\" connection timeout!", _ENEMY_ADDR, _ENEMY_PORT);
          printf("[#%d] %s disconnected [%s:%d connection timeout]...\n", id, desccl, _ENEMY_ADDR, _ENEMY_PORT);
          send(clnt, buff, (int)strlen(buff),  0 );
          closesocket(srv);
          closesocket(clnt);
          WSAEventSelect(clnt, hEventC,  0 );
          fflush(stdout);
          return;
        } else {
          WSAEventSelect(srv, hEventS, FD_READ | FD_CLOSE);
        }
      }
      printf("[#%d] %s->%s ===> (%d bytes)\n", id, desccl, descsv, Size);
      send(srv,buff,(int)Size, 0 );
      FD_SET(srv, &writefds);
      timeout.tv_sec = SEND_TIMEOUT;
      timeout.tv_usec =  0 ;
      select( 0 , NULL, &writefds, NULL, &timeout);
      FD_ZERO(&writefds);
    }
    if(netevents.lNetworkEvents & FD_CLOSE){
      closesocket(srv);
      WSAEventSelect(clnt, hEventC,  0 );
      WSAEventSelect(srv, hEventS,  0 );
      printf("[#%d] %s disconnected [Client]...\n", id, desccl);
      fflush(stdout);
      return;
    }

    // Enemy server activity
    if(connected){
      WSAEnumNetworkEvents(srv, hEventS, &netevents);
      if(netevents.lNetworkEvents & FD_READ){
        Size = recv(srv, buff, sizeof(buff)- 1 ,  0 );
        buff[Size] =  0 ;
        printf("[#%d] %s<-%s <=== (%d bytes)\n", id, desccl, descsv, Size);
        temp = send(clnt,buff,(size_t)Size, 0 );
        sprintf(buff,"ERROR: sent %d of %d",temp, Size);
        FD_SET(clnt, &writefds);
        timeout.tv_sec = SEND_TIMEOUT;
        timeout.tv_usec =  0 ;
        select( 0 , NULL, &writefds, NULL, &timeout);
        FD_ZERO(&writefds);
      }
      if(netevents.lNetworkEvents & FD_CLOSE){
        WSAEventSelect(srv, hEventS,  0 );
        WSAEventSelect(clnt, hEventC,  0 );
        closesocket(clnt);
        printf("[#%d] %s disconnected [Server]...\n", id, desccl);
        fflush(stdout);
        return;
      }
    }
    Sleep( 1 );
  }
}

int main(int argc, char *argv[]){
  SOCKADDR_IN saddr;
  WSADATA wsa;
  WSAEVENT hEvent;
  WSANETWORKEVENTS netevents;

  if(argc >=  2 ) OUR_PORT = atoi(argv[ 1 ]);
  if(argc >=  3 ){
    PROXYMODE =  1 ;
    sprintf(ENEMY_ADDR, "%s", argv[ 2 ]);
    if(argc >=  4 ) ENEMY_PORT = atoi(argv[ 3 ]);
  }
  WSAStartup(0x101, &wsa);
  printf("Anti-Kleus [%s] proxy server ready...\n", VERSION);
  if(PROXYMODE)
    if(!getaddr(ENEMY_ADDR, ENEMY_IP)){
      printf("Master server not found...");
      return  1 ;
    }
  //printf("%s ",enemy_addr);
  s = socket(PF_INET, SOCK_STREAM,  0 );
  saddr.sin_family = PF_INET;
  saddr.sin_addr.S_un.S_addr = INADDR_ANY;
  saddr.sin_port = htons(OUR_PORT);
  if(bind(s, (SOCKADDR *)&saddr, sizeof(saddr))){
    printf("Bind port %d error...\n", OUR_PORT);
    return  2 ;
  }
  listen(s,  255 );
  printf("Listening on port %d\n", OUR_PORT);
  hEvent = WSACreateEvent();
  WSAEventSelect(s, hEvent, FD_ACCEPT);
  if(PROXYMODE){
    printf("Redirection set to %s:%d\n", ENEMY_ADDR, ENEMY_PORT);
  }
  printf("\n");
  for(;;){
    if(WSAEnumNetworkEvents(s, hEvent, &netevents) ==  0 )
      if(netevents.lNetworkEvents & FD_ACCEPT)
        CreateThread(NULL,  0 , (LPTHREAD_START_ROUTINE)&socktread, NULL,  0 , NULL);
    fflush(stdout);
    Sleep( 1 );
  }
}
Писал сам, некоторые баги есть, но их легко исправить.
...
Рейтинг: 0 / 0
15.04.2005, 23:15
    #33019226
lissyara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
2 Шогал :)
Вот бы ещё знать, что с этим делать.... :)
2 Yanis
EasyProxyServer - она называлась. Вспомнил. Спасибо!
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
27.04.2005, 15:03
    #33038483
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
2 Шогал

лучше б exe собрал бы...
...
Рейтинг: 0 / 0
30.04.2005, 21:34
    #33044199
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
Собрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
...
Рейтинг: 0 / 0
02.05.2005, 13:17
    #33044792
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
ШогалСобрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
Нормально! Мой юзверь подмены прокси на лету не заметил. Ж)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
E:\>proxy  1111 
Anti-Kleus [v1. 02 ] proxy server ready...
Listening on port  1111 

[# 1 ]  192 . 168 . 0 . 20 : 1376  connected...
[# 1 ]  192 . 168 . 0 . 20 : 1376 ->www.******.com: 80  ===> ( 384  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1942  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376  disconnected [Server]...
...
Рейтинг: 0 / 0
02.05.2005, 15:55
    #33044909
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
простейший Proxy
ШогалСобрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
Будь другом, если не в лом, кинь сюда исходники конкретно этого экзешника.
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / простейший Proxy / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]