From 467650bbbf7d6ac0e0fbbcb9290b24eda11fc8eb Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Thu, 10 Apr 2014 03:33:46 +0400
Subject: [PATCH 001/122] ICO file added
---
3proxy.ico | Bin 0 -> 32988 bytes
3proxy.rc | 9 ++++-----
2 files changed, 4 insertions(+), 5 deletions(-)
create mode 100644 3proxy.ico
diff --git a/3proxy.ico b/3proxy.ico
new file mode 100644
index 0000000000000000000000000000000000000000..44dc48143d48dcf29b781f062f63da9359954b73
GIT binary patch
literal 32988
zcmeI4J&znk5QZCM@gWEtS|Zu(j6{I=1t%d9Lk1Cnb0o_#vSkZ7wuDT0h{S@7Kj46f
zfQX22QvV8g-@Sd#FKV|x4L_3_Ey{4TkTdmJ#D%!+Ff10Xss<4
ztNYuneW$TIcUJfBxAy$Y)^2Nj$$zW0m*2E@S2AL2k3=4?RtOXVg+L)t2owT^Kp{{F
z6as}nAy5bu0);>!PzV$Pg+L)t2=pNEKx3~&Cp~jlHT1R&|0McX)QLV2&DE}Z{Knu{
z(K|B%a2?~1q1r!V@Od1Zuz%g-|46a^BYHYv%uyBbf2=|Fobm3n_m##k%LVx|U!R^K
z9iOfE@9CPGb#|gT&H>{8P5SYfYqmM$yF~Smz1IE|Aserq#_=7#xTiVqBA-N-jr?2R
z9D9I##b*Hi*k)V@WAUS>FRrX7=Xy*pb6LkZI=lbH?~E;Z>STi4;mbO_c-E%}e63sm
z-CeGmh#Ru-dG2db%n>}hULAiYBF3oCbJ6Bd{H)QqR>t&r4jJb)+K6)S_)LiX$g^vI
zEdCsCzQ;DcZ4$p_S$pfq#kDYHEie}UocU*8IR9SXIVR@gobex8E1KG>k%PRa!Ml@I
z_6GU)dW;QUI}O6i{Lmb_z89l0$U5^GX??7-%PL
zdWgfk?}=P@bfSoz^<_Kg%e-RUy4g-AdLpu)k+OZq--#kG@sj5#Pv0_Qv4IB|<$H-=
zG;$Dgbuqa`hxqLuIkexMDEh41M*KXph%fpQb$FhbEbqp;&f_tz*guzg{dWwT*Id;r
z1PXydpb#ho3IQWP?Zh*?@7a8)NR8EI)Nh9xyW^rJyO)Bb&dRk|V!P3|Oa$|GZF%nde~NxsYWJ=|0APY_Z2Y@;SsYW58O7
zpWj4`4xvAG#veoc&LMHeI*-rMUTOa15E4BS19cu}e!S+Ictp*Oo?;)w*bjN%-{@qO
z^MybmPzdaTfPW`oAvzV+?*s^hYK6cs0|dhz8Ck5UyVV>uCUvFXv3bAt+_M#*F8^!j;~gc+_SyI6melT<_e^vCUdfLl
z@@XA^hkJG3Xv7b{{Y5_8H}6Xkcw|}o=I`|oi@M8qFpuH0$70JmJZC+|GTYDh(O1jm
zSegGsbI(QjyH=L5eSd$I+#zE;vc1dV=Y5k{&5zyt>VvVm7Y+NY7w5DS8Drb`ccAf2
z-6b~YkNL+pe@BHJc|P*ew;mdD-)f+5{r{rzpGBR>KH;x<8B_NSzl_7v)fm1z7O&5~
z9B8=O6(Zm@AHM_7THJ?A*k+yBW?a{E`w;gVwpioQC+7BXy=wb?n9LnF>%iyAKG$E4
z>#DK0KR!SAg+YF1?%TfY`FZc>g&X+yJ*&<+rvDq)p4Z<#ZBHLfXvE9BiM8
z*7%$t)>3QfA7HW`uQAp;Y*XpCKGt)5ep&wuk!^P(*K*M&GMvBfYTh*gdm*1mu4f;M
zsOPMUn9$2rQ_C|g>T=&U{jOm@&qV0*neq
z(d#QQIsWXwhL&eneCP4`Mg2{D=CiIJM6TyM5%|AY-G8VnH5h)xbCJHU_@VAnudme#
zf$NTd*RIbO6Z>i^pV_nMi~E(aDX(+s2cx*hr}W#p;u$rS?s!(tq2GRjjn|K#8P)cH
zfa@fGsI(BRQ74IO^2R%X^WKU4?A)})nqX5|^IP7}Zq6@1qc>@mKMMkzo*%i6*+d@v
zewTe>81g^Yfz)Kd_0g{VVsGX%c~r1xa$9-g-Q^i$9G;0bU2DW885GVu+fkL1VCR1PXydpb#ho3V}kP5GVu+fkL1VCR1PXyd
Spb#ho3V}kP5GVwe2>b_IV3_Ct
literal 0
HcmV?d00001
diff --git a/3proxy.rc b/3proxy.rc
index 3317196..5a9b43c 100644
--- a/3proxy.rc
+++ b/3proxy.rc
@@ -1,7 +1,6 @@
#include "src/version.h"
-#include "afxres.h"
-LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
+LANGUAGE 0x09, 0x01
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,7,0,0
@@ -18,9 +17,9 @@ BEGIN
VALUE "FileDescription", "3proxy - tiny proxy server"
VALUE "FileVersion", VERSION "-" BUILDDATE
VALUE "InternalName", "3proxy"
- VALUE "LegalCopyright", "Copyright (C) 2002-2009 Vladimir Dubrovin"
+ VALUE "LegalCopyright", "Copyright (C) 2002-2014 Vladimir Dubrovin"
VALUE "OriginalFilename", "3proxy.exe"
- VALUE "ProductName", "3proxy"
+ VALUE "ProductName", "3proxy - tiny proxy server"
VALUE "ProductVersion", VERSION
END
END
@@ -29,4 +28,4 @@ BEGIN
VALUE "Translation", 0x0, 1200
END
END
-
+0 ICON DISCARDABLE "3proxy.ico"
From 2890f064885e3ae557d52341e641ca4462895b2f Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Thu, 10 Apr 2014 03:34:59 +0400
Subject: [PATCH 002/122] traffic counters are changed to 64-bit
traffic counters are changed to 64-bit using pstdint.h
---
Makefile.msvc | 2 +-
Makefile.msvc64 | 2 +-
src/3proxy.c | 27 ++++-
src/auth.c | 48 +++++++++
src/common.c | 19 ++++
src/datatypes.c | 88 ++++++++++++----
src/dnspr.c | 8 ++
src/ftp.c | 38 ++++++-
src/ftppr.c | 16 ++-
src/icqpr.c | 21 +++-
src/msnpr.c | 13 ++-
src/plugins/TrafficPlugin/TrafficPlugin.c | 32 +++++-
src/pop3p.c | 4 +
src/proxy.c | 120 +++++++++++++++++++++-
src/pstdint.h | 2 +-
src/smtpp.c | 34 +++++-
src/sockgetchar.c | 8 ++
src/sockmap.c | 78 +++++++++++++-
src/socks.c | 8 ++
src/structures.h | 32 +++++-
src/webadmin.c | 13 +++
21 files changed, 569 insertions(+), 44 deletions(-)
diff --git a/Makefile.msvc b/Makefile.msvc
index 75d4d7f..4e4640a 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -15,7 +15,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386
DLFLAGS = /DLL
DLSUFFICS = .dll
-LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libeay32MT.lib ssleay32MT.lib
+LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib
LIBEXT = .lib
LNOUT = /out:
EXESUFFICS = .exe
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index d21f9de..4ce8745 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -15,7 +15,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64
DLFLAGS = /DLL
DLSUFFICS = .dll
-LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libeay32MT.lib ssleay32MT.lib
+LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib
LIBEXT = .lib
LNOUT = /out:
EXESUFFICS = .exe
diff --git a/src/3proxy.c b/src/3proxy.c
index ba35112..977814d 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -45,8 +45,12 @@ struct counter_header {
} cheader = {"3CF", (time_t)0};
struct counter_record {
+#ifndef NOPSTDINT
+ uint64_t traf64;
+#else
unsigned long traf;
unsigned long trafgb;
+#endif
time_t cleared;
time_t updated;
} crecord;
@@ -465,7 +469,11 @@ void dumpcounters(struct trafcount *tlin, int counterd){
if(cfp){
for(tl = tlin; cfp && tl; tl = tl->next){
if(tl->type >= conf.countertype)
+#ifndef NOPSTDINT
+ fprintf(cfp, "%05d %020"PRINTF_INT64_MODIFIER"u%s%s\n", tl->number, tl->traf64, tl->comment?" #" : "", tl->comment? tl->comment : "");
+#else
fprintf(cfp, "%05d %010lu %010lu%s%s\n", tl->number, tl->trafgb, tl->traf, tl->comment?" #" : "", tl->comment? tl->comment : "");
+#endif
}
fclose(cfp);
}
@@ -480,16 +488,24 @@ void dumpcounters(struct trafcount *tlin, int counterd){
lseek(counterd,
sizeof(struct counter_header) + (tl->number - 1) * sizeof(struct counter_record),
SEEK_SET);
+#ifndef NOPSTDINT
+ crecord.traf64 = tl->traf64;
+#else
crecord.traf = tl->traf;
crecord.trafgb = tl->trafgb;
+#endif
crecord.cleared = tl->cleared;
crecord.updated = tl->updated;
write(counterd, &crecord, sizeof(struct counter_record));
}
if(tl->type!=NEVER && timechanged(tl->cleared, conf.time, tl->type)){
tl->cleared = conf.time;
+#ifndef NOPSTDINT
+ tl->traf64 = 0;
+#else
tl->traf = 0;
tl->trafgb = 0;
+#endif
}
}
}
@@ -1534,10 +1550,15 @@ static int h_ace(int argc, unsigned char **argv){
sscanf((char *)argv[1], "%u", &tl->number);
sscanf((char *)argv[3], "%lu", &lim);
+ tl->type = getrotate(*argv[2]);
+#ifndef NOPSTDINT
+ tl->traflim64 = ((uint64_t)lim)*(1024*1024);
+ if(!tl->traflim64) {
+#else
tl->traflimgb = (lim/(1024*4));
tl->traflim = ((lim - (tl->traflimgb*(1024*4)))*(1024*1024));
- tl->type = getrotate(*argv[2]);
if(!tl->traflim && !tl->traflimgb) {
+#endif
fprintf(stderr, "Wrong traffic limit specified, line %d\n", linenum);
return(6);
}
@@ -1547,8 +1568,12 @@ static int h_ace(int argc, unsigned char **argv){
SEEK_SET);
memset(&crecord, 0, sizeof(struct counter_record));
read(conf.counterd, &crecord, sizeof(struct counter_record));
+#ifndef NOPSTDINT
+ tl->traf64 = crecord.traf64;
+#else
tl->traf = crecord.traf;
tl->trafgb = crecord.trafgb;
+#endif
tl->cleared = crecord.cleared;
tl->updated = crecord.updated;
#ifdef _MAX__TIME64_T
diff --git a/src/auth.c b/src/auth.c
index 8b22b11..b2a9d44 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -115,7 +115,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
len += sprintf((char *)buf + len, "\r\n");
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != (int)strlen((char *)buf))
return 31;
+#ifndef NOPSTDINT
+ param->statssrv64+=len;
+#else
param->statssrv+=len;
+#endif
param->nwrites++;
if((res = sockgetlinebuf(param, SERVER,buf,13,'\n',conf.timeouts[CHAIN_TO])) < 13)
return 32;
@@ -152,7 +156,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) < len){
return 41;
}
+#ifndef NOPSTDINT
+ param->statssrv64+=len;
+#else
param->statssrv+=len;
+#endif
param->nwrites++;
if((len = sockgetlinebuf(param, SERVER, buf, (redir->type == R_SOCKS4B)? 3:8, EOF, conf.timeouts[CHAIN_TO])) != ((redir->type == R_SOCKS4B)? 3:8)){
return 42;
@@ -175,7 +183,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, 3, conf.timeouts[CHAIN_TO]) != 3){
return 51;
}
+#ifndef NOPSTDINT
+ param->statssrv64+=len;
+#else
param->statssrv+=len;
+#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 2, EOF, conf.timeouts[CHAIN_TO]) != 2){
return 52;
@@ -197,7 +209,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, inbuf, conf.timeouts[CHAIN_TO]) != inbuf){
return 51;
}
+#ifndef NOPSTDINT
+ param->statssrv64+=inbuf;
+#else
param->statssrv+=inbuf;
+#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 2, EOF, 60) != 2){
return 55;
@@ -227,7 +243,11 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != len){
return 51;
}
+#ifndef NOPSTDINT
+ param->statssrv64+=len;
+#else
param->statssrv+=len;
+#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 4, EOF, conf.timeouts[CHAIN_TO]) != 4){
return 57;
@@ -553,9 +573,13 @@ void trafcountfunc(struct clientparam *param){
countout = 1;
continue;
}
+#ifndef NOPSTDINT
+ tc->traf64 += param->statssrv64;
+#else
val = tc->traf + param->statssrv;
if(val < tc->traf) tc->trafgb++;
tc->traf = val;
+#endif
time(&t);
tc->updated = t;
}
@@ -567,9 +591,13 @@ void trafcountfunc(struct clientparam *param){
if(tc->ace->action != COUNTOUT) {
continue;
}
+#ifndef NOPSTDINT
+ tc->traf64 += param->statscli64;
+#else
val = tc->traf + param->statscli;
if(val < tc->traf) tc->trafgb++;
tc->traf = val;
+#endif
time(&t);
tc->updated = t;
}
@@ -596,6 +624,11 @@ int alwaysauth(struct clientparam * param){
continue;
}
+#ifndef NOPSTDINT
+ if(tc->traflim64 <= tc->traf64) return 10;
+ param->trafcountfunc = conf.trafcountfunc;
+ param->maxtrafin64 = tc->traflim64 - tc->traf64;
+#else
if((tc->traflimgb < tc->trafgb) ||
((tc->traflimgb == tc->trafgb) && (tc->traflim < tc->traf))
) return 10;
@@ -605,6 +638,7 @@ int alwaysauth(struct clientparam * param){
if(!param->maxtrafin || param->maxtrafin > maxtraf) param->maxtrafin = maxtraf;
}
if((tc->trafgb > tc->traflimgb) || (tc->trafgb == tc->traflimgb && tc->traf >= tc->traflim)) param->maxtrafin = 1;
+#endif
}
}
if(countout)for(tc = conf.trafcounter; tc; tc = tc->next) {
@@ -615,6 +649,11 @@ int alwaysauth(struct clientparam * param){
continue;
}
+#ifndef NOPSTDINT
+ if(tc->traflim64 <= tc->traf64) return 10;
+ param->trafcountfunc = conf.trafcountfunc;
+ param->maxtrafout64 = tc->traflim64 - tc->traf64;
+#else
if((tc->traflimgb < tc->trafgb) ||
((tc->traflimgb == tc->trafgb) && (tc->traflim < tc->traf))
) return 10;
@@ -624,6 +663,7 @@ int alwaysauth(struct clientparam * param){
if(!param->maxtrafout || param->maxtrafout > maxtraf) param->maxtrafout = maxtraf;
}
if((tc->trafgb > tc->traflimgb) || (tc->trafgb == tc->traflimgb && tc->traf >= tc->traflim)) param->maxtrafout = 1;
+#endif
}
}
@@ -1089,12 +1129,20 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
so._closesocket(sock);
continue;
}
+#ifndef NOPSTDINT
+ if(param) param->statscli64 += len;
+#else
if(param) param->statscli += len;
+#endif
len = sockrecvfrom(sock, sinsp, buf, 4096, 15000);
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
if(len <= 13) continue;
+#ifndef NOPSTDINT
+ if(param) param->statssrv64 += len;
+#else
if(param) param->statssrv += len;
+#endif
if(*(unsigned short *)buf != nquery)continue;
if((na = buf[7] + (((unsigned short)buf[6])<<8)) < 1) {
return 0;
diff --git a/src/common.c b/src/common.c
index a2fc23a..694c973 100644
--- a/src/common.c
+++ b/src/common.c
@@ -287,7 +287,11 @@ void clearstat(struct clientparam * param) {
param->time_start = (time_t)tv.tv_sec;
param->msec_start = (tv.tv_usec / 1000);
#endif
+#ifndef NOPSTDINT
+ param->statscli64 = param->statssrv64 = param->nreads = param->nwrites =
+#else
param->statscli = param->statssrv = param->nreads = param->nwrites =
+#endif
param->nconnects = 0;
}
@@ -378,10 +382,17 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i+=10;
break;
case 'b':
+#ifndef NOPSTDINT
+ i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statscli64 * 1000./delay):0);
+ break;
+ case 'B':
+ i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statssrv64 * 1000./delay):0);
+#else
i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statscli * 1000./delay):0);
break;
case 'B':
i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statssrv * 1000./delay):0);
+#endif
break;
case 'D':
i+=sprintf((char *)buf+i, "%u", delay);
@@ -478,11 +489,19 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += (int)strlen((char *)buf+i);
break;
case 'I':
+#ifndef NOPSTDINT
+ sprintf((char *)buf+i, "%"PRINTF_INT64_MODIFIER"u", param->statssrv64);
+ i += (int)strlen((char *)buf+i);
+ break;
+ case 'O':
+ sprintf((char *)buf+i, "%"PRINTF_INT64_MODIFIER"u", param->statscli64);
+#else
sprintf((char *)buf+i, "%lu", param->statssrv);
i += (int)strlen((char *)buf+i);
break;
case 'O':
sprintf((char *)buf+i, "%lu", param->statscli);
+#endif
i += (int)strlen((char *)buf+i);
break;
case 'h':
diff --git a/src/datatypes.c b/src/datatypes.c
index 24d5420..a99f7d5 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -8,6 +8,13 @@
#include "proxy.h"
+#ifndef NOPSTDINT
+static void pr_unsigned64(struct node *node, CBFUNC cbf, void*cb){
+ char buf[32];
+ if(node->value)(*cbf)(cb, buf, sprintf(buf, "%"PRINTF_INT64_MODIFIER"u", *(uint64_t *)node->value));
+}
+#endif
+
static void pr_integer(struct node *node, CBFUNC cbf, void*cb){
char buf[16];
if(node->value)(*cbf)(cb, buf, sprintf(buf, "%d", *(int *)node->value));
@@ -446,13 +453,55 @@ static void * ef_trafcounter_type(struct node * node){
return &((struct trafcount *)node->value) -> type;
}
+#ifndef NOPSTDINT
+static void * ef_trafcounter_traffic64(struct node * node){
+ return &((struct trafcount *)node->value) -> traf64;
+}
+static void * ef_trafcounter_limit64(struct node * node){
+ return &((struct trafcount *)node->value) -> traflim64;
+}
+static void * ef_client_maxtrafin64(struct node * node){
+ return &((struct clientparam *)node->value) -> maxtrafin64;
+}
+
+static void * ef_client_maxtrafout64(struct node * node){
+ return &((struct clientparam *)node->value) -> maxtrafout64;
+}
+
+static void * ef_client_bytesin64(struct node * node){
+ return &((struct clientparam *)node->value) -> statssrv64;
+}
+
+static void * ef_client_bytesout64(struct node * node){
+ return &((struct clientparam *)node->value) -> statscli64;
+}
+
+#else
+
static void * ef_trafcounter_traffic(struct node * node){
return &((struct trafcount *)node->value) -> traf;
}
-
static void * ef_trafcounter_limit(struct node * node){
return &((struct trafcount *)node->value) -> traflim;
}
+static void * ef_client_maxtrafin(struct node * node){
+ return &((struct clientparam *)node->value) -> maxtrafin;
+}
+static void * ef_client_maxtrafout(struct node * node){
+ return &((struct clientparam *)node->value) -> maxtrafout;
+}
+
+static void * ef_client_bytesin(struct node * node){
+ return &((struct clientparam *)node->value) -> statssrv;
+}
+
+static void * ef_client_bytesout(struct node * node){
+ return &((struct clientparam *)node->value) -> statscli;
+}
+
+
+#endif
+
static void * ef_trafcounter_cleared(struct node * node){
return &((struct trafcount *)node->value) -> cleared;
@@ -573,14 +622,6 @@ static void * ef_client_next(struct node * node){
return ((struct clientparam *)node->value) -> next;
}
-static void * ef_client_maxtrafin(struct node * node){
- return &((struct clientparam *)node->value) -> maxtrafin;
-}
-
-static void * ef_client_maxtrafout(struct node * node){
- return &((struct clientparam *)node->value) -> maxtrafout;
-}
-
static void * ef_client_type(struct node * node){
int service = ((struct clientparam *)node->value) -> service;
return (service>=0 && service < 15)? (void *)conf.stringtable[SERVICES + service] : (void *)"unknown";
@@ -641,14 +682,6 @@ static void * ef_client_cliport(struct node * node){
return &((struct clientparam *)node->value) -> sinc.sin_port;
}
-static void * ef_client_bytesin(struct node * node){
- return &((struct clientparam *)node->value) -> statssrv;
-}
-
-static void * ef_client_bytesout(struct node * node){
- return &((struct clientparam *)node->value) -> statscli;
-}
-
static void * ef_client_pwtype(struct node * node){
return &((struct clientparam *)node->value) -> pwtype;
}
@@ -742,8 +775,15 @@ static struct property prop_trafcounter[] = {
{prop_trafcounter + 2, "ace", ef_trafcounter_ace, TYPE_ACE, "traffic to count"},
{prop_trafcounter + 3, "number", ef_trafcounter_number, TYPE_UNSIGNED, "counter number"},
{prop_trafcounter + 4, "type", ef_trafcounter_type, TYPE_ROTATION, "rotation type"},
+
+
+#ifndef NOPSTDINT
+ {prop_trafcounter + 5, "traffic", ef_trafcounter_traffic64, TYPE_UNSIGNED64, "counter value"},
+ {prop_trafcounter + 6, "limit", ef_trafcounter_limit64, TYPE_UNSIGNED64, "counter limit"},
+#else
{prop_trafcounter + 5, "traffic", ef_trafcounter_traffic, TYPE_TRAFFIC, "counter value"},
{prop_trafcounter + 6, "limit", ef_trafcounter_limit, TYPE_TRAFFIC, "counter limit"},
+#endif
{prop_trafcounter + 7, "cleared", ef_trafcounter_cleared, TYPE_DATETIME, "last rotated"},
{prop_trafcounter + 8, "updated", ef_trafcounter_updated, TYPE_DATETIME, "last updated"},
{prop_trafcounter + 9, "comment", ef_trafcounter_comment, TYPE_STRING, "counter comment"},
@@ -795,11 +835,18 @@ static struct property prop_client[] = {
{prop_client + 15, "srvport", ef_client_srvport, TYPE_PORT, "target server port"},
{prop_client + 16, "reqip", ef_client_reqip, TYPE_IP, "requested server ip"},
{prop_client + 17, "reqport", ef_client_reqport, TYPE_PORT, "requested server port"},
+#ifndef NOPSTDINT
+ {prop_client + 18, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
+ {prop_client + 19, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
+ {prop_client + 20, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
+ {prop_client + 21, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
+#else
{prop_client + 18, "bytesin", ef_client_bytesin, TYPE_UNSIGNED, "bytes from server to client"},
{prop_client + 19, "bytesout", ef_client_bytesout, TYPE_UNSIGNED, "bytes from client to server"},
- {prop_client + 20, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
- {prop_client + 21, "maxtrafin", ef_client_maxtrafin, TYPE_UNSIGNED, "maximum traffic allowed for download"},
- {prop_client + 22, "maxtrafout", ef_client_maxtrafout, TYPE_UNSIGNED, "maximum traffic allowed for upload"},
+ {prop_client + 20, "maxtrafin", ef_client_maxtrafin, TYPE_UNSIGNED, "maximum traffic allowed for download"},
+ {prop_client + 21, "maxtrafout", ef_client_maxtrafout, TYPE_UNSIGNED, "maximum traffic allowed for upload"},
+#endif
+ {prop_client + 22, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
{NULL, "next", ef_client_next, TYPE_CLIENT, "next"}
@@ -810,6 +857,7 @@ struct datatype datatypes[64] = {
{"short", NULL, pr_short, NULL},
{"char", NULL, pr_char, NULL},
{"unsigned", NULL, pr_unsigned, NULL},
+ {"unsigned64", NULL, pr_unsigned64, NULL},
{"traffic", NULL, pr_traffic, NULL},
{"port", NULL, pr_port, NULL},
{"ip", NULL, pr_ip, NULL},
diff --git a/src/dnspr.c b/src/dnspr.c
index 1e008ff..661a668 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -147,13 +147,21 @@ void * dnsprchild(struct clientparam* param) {
if(socksendto(param->remsock, ¶m->sins, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
+#ifndef NOPSTDINT
+ param->statscli64 += i;
+#else
param->statscli += i;
+#endif
param->nwrites++;
len = sockrecvfrom(param->remsock, ¶m->sins, buf, BUFSIZE, 15000);
if(len <= 13) {
RETURN(821);
}
+#ifndef NOPSTDINT
+ param->statssrv64 += len;
+#else
param->statssrv += len;
+#endif
param->nreads++;
if(buf[6] || buf[7]){
if(socksendto(param->clisock, ¶m->sinc, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
diff --git a/src/ftp.c b/src/ftp.c
index 710c65b..de5a51b 100644
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -33,7 +33,11 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 703;
}
+#ifndef NOPSTDIN
+ param->statscli64 += (int)strlen(buf);
+#else
param->statscli += (int)strlen(buf);
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -50,7 +54,11 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
if((int)socksend(param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 705;
}
- param->statscli += res;
+#ifndef NOPSTDIN
+ param->statscli64 += res;
+#else
+ param->statscli += res;
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0){
buf[i] = 0;
@@ -81,7 +89,11 @@ int ftpcd(struct clientparam *param, unsigned char* path, char *nbuf, int *innbu
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 711;
}
+#ifndef NOPSTDIN
+ param->statscli64 += (int)strlen(buf);
+#else
param->statscli += (int)strlen(buf);
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
if(nbuf && innbuf && inbuf + i < *innbuf && i > 6) {
@@ -114,7 +126,11 @@ int ftpsyst(struct clientparam *param, unsigned char *buf, unsigned len){
if(socksend(param->remsock, (unsigned char *)"SYST\r\n", 6, conf.timeouts[STRING_S]) != 6){
return 721;
}
- param->statscli+=6;
+#ifndef NOPSTDIN
+ param->statscli64 += 6;
+#else
+ param->statscli += 6;
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -133,7 +149,11 @@ int ftppwd(struct clientparam *param, unsigned char *buf, unsigned len){
if(socksend(param->remsock, (unsigned char *)"PWD\r\n", 5, conf.timeouts[STRING_S]) != 5){
return 731;
}
+#ifndef NOPSTDIN
+ param->statscli64 += 5;
+#else
param->statscli += 5;
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -158,7 +178,11 @@ int ftptype(struct clientparam *param, unsigned char* f_type){
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 741;
}
+#ifndef NOPSTDIN
+ param->statscli64 += (int)strlen(buf);
+#else
param->statscli += (int)strlen(buf);
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -179,7 +203,11 @@ SOCKET ftpdata(struct clientparam *param){
if(socksend(param->remsock, (unsigned char *)"PASV\r\n", 6, conf.timeouts[STRING_S]) != 6){
return INVALID_SOCKET;
}
- param->statscli+=6;
+#ifndef NOPSTDIN
+ param->statscli64 += 6;
+#else
+ param->statscli += 6;
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -217,7 +245,11 @@ SOCKET ftpcommand(struct clientparam *param, unsigned char * command, unsigned c
so._closesocket(s);
return INVALID_SOCKET;
}
+#ifndef NOPSTDIN
+ param->statscli64 += (int)strlen(buf);
+#else
param->statscli += (int)strlen(buf);
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
diff --git a/src/ftppr.c b/src/ftppr.c
index 90f18c0..28d695e 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -276,7 +276,11 @@ param->srv->logfunc(param,buf);
buf[i++] = '\r';
buf[i++] = '\n';
if(socksend(param->remsock, buf, i, conf.timeouts[STRING_S])!=i) {RETURN (811);}
- param->statscli += i;
+#ifndef NOPSTDINT
+ param->statscli64+=(i);
+#else
+ param->statscli+=(i);
+#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, BUFSIZE, '\n', conf.timeouts[STRING_L])) > 0){
if(socksend(param->ctrlsock, buf, i, conf.timeouts[STRING_S])!=i) {RETURN (812);}
@@ -287,9 +291,15 @@ param->srv->logfunc(param,buf);
}
sasize = sizeof(struct sockaddr_in);
if(so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(819);}
+#ifndef NOPSTDINT
+ if(req && (param->statscli64 || param->statssrv64)){
+ (*param->srv->logfunc)(param, (unsigned char *)req);
+ }
+#else
if(req && (param->statscli || param->statssrv)){
(*param->srv->logfunc)(param, (unsigned char *)req);
}
+#endif
}
CLEANRET:
@@ -308,7 +318,11 @@ CLEANRET:
}
sasize = sizeof(struct sockaddr_in);
so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize);
+#ifndef NOPSTDINT
+ if(param->res != 0 || param->statscli64 || param->statssrv64 ){
+#else
if(param->res != 0 || param->statscli || param->statssrv ){
+#endif
(*param->srv->logfunc)(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
}
if(req) myfree(req);
diff --git a/src/icqpr.c b/src/icqpr.c
index a319da6..e1a315d 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -109,7 +109,11 @@ static void addbuffer(int increment, struct clientparam * param, unsigned char *
if(len > 0) {
*length_p += len;
param->nreads++;
+#ifndef NOPSTDINT
+ param->statssrv64 += len;
+#else
param->statssrv += len;
+#endif
}
return;
}
@@ -437,18 +441,29 @@ void * icqprchild(struct clientparam* param) {
if(greet){
if(socksend(param->remsock, tmpsend, 10, conf.timeouts[STRING_S])!=10) {RETURN (1105);}
+#ifndef NOPSTDINT
+ param->statscli64 += 10;
+#else
param->statscli += 10;
+#endif
}
if(readflap(param, SERVER, tmpsend, 1024)) {RETURN (1111);}
+#ifndef NOPSTDINT
+ param->statssrv64 += (ntohs(((struct flap_header *)tmpsend)->size) + 6);
+#else
param->statssrv += (ntohs(((struct flap_header *)tmpsend)->size) + 6);
+#endif
mystate.srvseq = ntohs(((struct flap_header *)tmpsend)->seq) + 1;
mystate.seq = 1;
len = ntohs(flap->size) + 6;
if((res=handledatfltcli(param, &buf, &buflen, offset, &len))!=PASS) RETURN(res);
if(socksend(param->remsock, buf+offset, len, conf.timeouts[STRING_S])!=(ntohs(flap->size)+6)) {RETURN (1106);}
offset = 0;
+#ifndef NOPSTDINT
+ param->statscli64 += len;
+#else
param->statscli += len;
-
+#endif
@@ -466,7 +481,11 @@ void * icqprchild(struct clientparam* param) {
len = ntohs(flap->size) + 6;
if((res=handledatfltcli(param, &buf, &buflen, offset, &len))!=PASS) RETURN(res);
if(socksend(param->remsock, buf+offset, len, conf.timeouts[STRING_S])!=len) {RETURN (1115);}
+#ifndef NOPSTDINT
+ param->statscli64 += len;
+#else
param->statscli += len;
+#endif
offset = 0;
}
if(logintype != ICQCOOKIE) {
diff --git a/src/msnpr.c b/src/msnpr.c
index be8e006..1ff1391 100644
--- a/src/msnpr.c
+++ b/src/msnpr.c
@@ -173,15 +173,22 @@ void * msnprchild(struct clientparam* param) {
if(!sec){
len = (int)strlen(verstr);
if(socksend(param->remsock, verstr, len, conf.timeouts[STRING_S])!= len) {RETURN (1207);}
+#ifndef NOPSTDINT
+ param->statscli64 += len;
+#else
param->statscli += len;
-
+#endif
myfree(verstr);
verstr = mystrdup(buf);
len = sockgetlinebuf(param, SERVER, buf, 240, '\n', conf.timeouts[STRING_S]);
if(len < 10) RETURN(1208);
+#ifndef NOPSTDINT
+ param->statssrv64 += len;
+#else
param->statssrv += len;
+#endif
strcpy(buf, verstr);
}
@@ -191,7 +198,11 @@ void * msnprchild(struct clientparam* param) {
if(socksend(param->remsock, buf, len, conf.timeouts[STRING_S])!= len) {RETURN (1207);}
+#ifndef NOPSTDINT
+ param->statscli64 += len;
+#else
param->statscli += len;
+#endif
if(sec){
RETURN(sockmap(param, conf.timeouts[CONNECTION_L]));
diff --git a/src/plugins/TrafficPlugin/TrafficPlugin.c b/src/plugins/TrafficPlugin/TrafficPlugin.c
index a745112..1347fe4 100644
--- a/src/plugins/TrafficPlugin/TrafficPlugin.c
+++ b/src/plugins/TrafficPlugin/TrafficPlugin.c
@@ -179,7 +179,11 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
int port;
int rule = 0;
struct trafcorrect * starttrafcorrect = firsttrafcorrect;
- int statssrv_before, statscli_before;
+#ifndef NOPSTDINT
+ uint64_t statssrv_before, statscli_before;
+#else
+ unsigned long statssrv_before, statscli_before;
+#endif
int ok = 0;
for (;starttrafcorrect != NULL; starttrafcorrect = starttrafcorrect->next) {
port = starttrafcorrect->port;
@@ -187,8 +191,13 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
if (starttrafcorrect->p_service == S_NOSERVICE) g_s = param->service;
if (starttrafcorrect->port <= 0) port = myhtons(param->sins.sin_port);
+#ifndef NOPSTDINT
+ statssrv_before = param->statssrv64;
+ statscli_before = param->statscli64;
+#else
statssrv_before = param->statssrv;
statscli_before = param->statscli;
+#endif
rule++;
if (((g_s == param->service) && (port == myhtons(param->sins.sin_port))) ||
( ((starttrafcorrect->type == UDP) &&
@@ -201,21 +210,40 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
/* фильтр подошёл. можно изменять значение траффика
домножаем на число */
if (starttrafcorrect->type == MULTIPLAY) {
+#ifndef NOPSTDINT
+ param->statssrv64 = (unsigned)((double)param->statssrv64 *starttrafcorrect->coeff);
+ param->statscli64 = (unsigned)((double)param->statscli64 * starttrafcorrect->coeff);
+#else
param->statssrv = (unsigned)((double)param->statssrv *starttrafcorrect->coeff);
param->statscli = (unsigned)((double)param->statscli * starttrafcorrect->coeff);
+#endif
}
/* с учётом пакетов */
if (starttrafcorrect->type == IPCORRECT) {
if (starttrafcorrect->con_type == TCP) {
+#ifndef NOPSTDINT
+ param->statssrv64+=(param->nreads + 3*param->nconnects)*starttrafcorrect->psize;
+ param->statscli64+=(param->nwrites + 3*param->nconnects)*starttrafcorrect->psize;
+#else
param->statssrv+=(param->nreads + 3*param->nconnects)*starttrafcorrect->psize;
param->statscli+=(param->nwrites + 3*param->nconnects)*starttrafcorrect->psize;
+#endif
} else {
+#ifndef NOPSTDINT
+ param->statssrv64+=param->nreads*starttrafcorrect->psize;
+ param->statscli64+=param->nwrites*starttrafcorrect->psize;
+#else
param->statssrv+=param->nreads*starttrafcorrect->psize;
param->statscli+=param->nwrites*starttrafcorrect->psize;
+#endif
}
}
if (DBGLEVEL == 1) {
- fprintf(stdout, "Port=%hd; Before: srv=%d, cli=%d; After: srv=%ld, cli=%ld; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(param->sins.sin_port), statssrv_before, statscli_before, param->statssrv, param->statscli,param->nreads,param->nwrites,rule);
+#ifndef NOPSTDINT
+ fprintf(stdout, "Port=%hd; Before: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; After: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(param->sins.sin_port), statssrv_before, statscli_before, param->statssrv64, param->statscli64,param->nreads,param->nwrites,rule);
+#else
+ fprintf(stdout, "Port=%hd; Before: srv=%lu, cli=%lu; After: srv=%lu, cli=%lu; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(param->sins.sin_port), statssrv_before, statscli_before, param->statssrv, param->statscli,param->nreads,param->nwrites,rule);
+#endif
}
ok = 1;
break;
diff --git a/src/pop3p.c b/src/pop3p.c
index b9a06a1..f5ac9b7 100644
--- a/src/pop3p.c
+++ b/src/pop3p.c
@@ -43,7 +43,11 @@ void * pop3pchild(struct clientparam* param) {
socksend(param->remsock, param->extusername, (int)strlen((char *)param->extusername), conf.timeouts[STRING_S]) <= 0 ||
socksend(param->remsock, (unsigned char *)"\r\n", 2, conf.timeouts[STRING_S])!=2)
{RETURN(623);}
+#ifndef NOPSTDINT
+ param->statscli64 += (uint64_t)(strlen((char *)param->extusername) + 7);
+#else
param->statscli += (int)(strlen((char *)param->extusername) + 7);
+#endif
param->nwrites++;
RETURN (sockmap(param, 180));
CLEANRET:
diff --git a/src/proxy.c b/src/proxy.c
index 834cae3..b09176b 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -217,7 +217,11 @@ void * proxychild(struct clientparam* param) {
unsigned char *ftpbase=NULL;
unsigned char username[1024];
int keepalive = 0;
+#ifndef NOPSTDINT
+ uint64_t contentlength64 = 0;
+#else
unsigned long contentlength = 0;
+#endif
int hascontent =0;
int isconnect = 0;
int redirect = 0;
@@ -388,6 +392,16 @@ for(;;){
while( (i = sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, '\n', conf.timeouts[STRING_S])) > 2){
if(i> 15 && (!strncasecmp((char *)(buf), "content-length", 14))){
buf[i]=0;
+#ifndef NOPSTDINT
+ sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+ }
+ }
+ while( contentlength64 > 0 && (i = sockgetlinebuf(param, CLIENT, buf, (BUFSIZE < contentlength64)? BUFSIZE - 1:(int)contentlength64, '\n', conf.timeouts[STRING_S])) > 0){
+ if ((uint64_t)i > contentlength64) break;
+ contentlength64-=i;
+ }
+ contentlength64 = 0;
+#else
sscanf((char *)buf + 15, "%lu", &contentlength);
}
}
@@ -396,6 +410,7 @@ for(;;){
contentlength-=i;
}
contentlength = 0;
+#endif
if(param->password)myfree(param->password);
param->password = myalloc(32);
param->pwtype = 2;
@@ -492,11 +507,19 @@ for(;;){
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
+#ifndef NOPSTDINT
+ sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
+ if(param->maxtrafout64 && (param->maxtrafout64 < param->statscli64 || contentlength64 > param->maxtrafout64 - param->statscli64)){
+ RETURN(10);
+ }
+ if(param->ndatfilterscli > 0 && contentlength64 > 0) continue;
+#else
sscanf(sb, "%lu",&contentlength);
if(param->maxtrafout && (param->maxtrafout < param->statscli || (unsigned)contentlength > param->maxtrafout - param->statscli)){
RETURN(10);
}
if(param->ndatfilterscli > 0 && contentlength > 0) continue;
+#endif
}
inbuf += i;
if((bufsize - inbuf) < LINESIZE){
@@ -527,19 +550,34 @@ for(;;){
RETURN(0);
}
if(action != PASS) RETURN(517);
+#ifndef NOPSTDINT
+ if(param->ndatfilterscli > 0 && contentlength64 > 0){
+ uint64_t newlen64;
+ newlen64 = sockfillbuffcli(param, (unsigned long)contentlength64, CONNECTION_S);
+ if(newlen64 == contentlength64) {
+#else
if(param->ndatfilterscli > 0 && contentlength > 0){
unsigned long newlen;
newlen = sockfillbuffcli(param, contentlength, CONNECTION_S);
if(newlen == contentlength) {
+#endif
action = handledatfltcli(param, ¶m->clibuf, ¶m->clibufsize, 0, ¶m->cliinbuf);
if(action == HANDLED){
RETURN(0);
}
if(action != PASS) RETURN(517);
+#ifndef NOPSTDINT
+ contentlength64 = param->cliinbuf;
+#else
contentlength = param->cliinbuf;
+#endif
param->ndatfilterscli = 0;
}
+#ifndef NOPSTDINT
+ sprintf((char*)buf+strlen((char *)buf), "Content-Length: %"PRINTF_INT64_MODIFIER"u\r\n", contentlength64);
+#else
sprintf((char*)buf+strlen((char *)buf), "Content-Length: %lu\r\n", contentlength);
+#endif
}
#endif
@@ -619,7 +657,11 @@ for(;;){
socksend(param->clisock, (unsigned char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
s = param->remsock;
param->remsock = ftps;
+#ifndef NOPSTDINT
+ if((param->operation == FTP_PUT) && (contentlength64 > 0)) param->waitclient64 = contentlength64;
+#else
if((param->operation == FTP_PUT) && (contentlength > 0)) param->waitclient = contentlength;
+#endif
res = sockmap(param, conf.timeouts[CONNECTION_L]);
if (res == 99) res = 0;
so._closesocket(ftps);
@@ -821,7 +863,11 @@ for(;;){
if(socksend(param->remsock, req , (res = (int)strlen((char *)req)), conf.timeouts[STRING_L]) != res) {
RETURN(518);
}
+#ifndef NOPSTDINT
+ param->statscli64 += res;
+#else
param->statscli += res;
+#endif
param->nwrites++;
}
inbuf = 0;
@@ -853,11 +899,27 @@ for(;;){
if ((res = socksend(param->remsock, buf+reqlen, (int)strlen((char *)buf+reqlen), conf.timeouts[STRING_S])) != (int)strlen((char *)buf+reqlen)) {
RETURN(518);
}
+#ifndef NOPSTDINT
+ param->statscli64 += res;
+#else
param->statscli += res;
+#endif
param->nwrites++;
if(param->bandlimfunc) {
sleeptime = param->bandlimfunc(param, 0, (int)strlen((char *)buf));
}
+#ifndef NOPSTDINT
+ if(contentlength64 > 0){
+ param->nolongdatfilter = 0;
+ param->waitclient64 = contentlength64;
+ res = sockmap(param, conf.timeouts[CONNECTION_S]);
+ param->waitclient64 = 0;
+ if(res != 99) {
+ RETURN(res);
+ }
+ }
+ contentlength64 = 0;
+#else
if(contentlength > 0){
param->nolongdatfilter = 0;
param->waitclient = contentlength;
@@ -868,6 +930,7 @@ for(;;){
}
}
contentlength = 0;
+#endif
inbuf = 0;
ckeepalive = keepalive;
res = 0;
@@ -900,13 +963,21 @@ for(;;){
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
+#ifndef NOPSTDINT
+ sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+#else
sscanf(sb, "%lu", &contentlength);
+#endif
hascontent = 1;
if(param->unsafefilter && param->ndatfilterssrv > 0) {
hascontent = 2;
continue;
}
+#ifndef NOPSTDINT
+ if(param->maxtrafin64 && (param->maxtrafin64 < param->statssrv64 || contentlength64 + param->statssrv64 > param->maxtrafin64)){
+#else
if(param->maxtrafin && (param->maxtrafin < param->statssrv || (unsigned)contentlength > param->maxtrafin - param->statssrv)){
+#endif
RETURN(10);
}
}
@@ -935,7 +1006,11 @@ for(;;){
}
if((res == 304 || res == 204) && !hascontent){
hascontent = 1;
+#ifndef NOPSTDINT
+ contentlength64 = 0;
+#else
contentlength = 0;
+#endif
}
if(param->bandlimfunc) {
int st1;
@@ -959,6 +1034,27 @@ for(;;){
param->nolongdatfilter = 0;
+#ifndef NOPSTDINT
+ if (conf.filtermaxsize && contentlength64 > (uint64_t)conf.filtermaxsize) {
+ param->nolongdatfilter = 1;
+ }
+ else if(param->unsafefilter && param->ndatfilterssrv > 0 && contentlength64 > 0 && param->operation != HTTP_HEAD && res != 204 && res != 304){
+ uint64_t newlen;
+ newlen = (uint64_t)sockfillbuffsrv(param, (unsigned long) contentlength64, CONNECTION_S);
+ if(newlen == contentlength64) {
+ action = handledatfltsrv(param, ¶m->srvbuf, ¶m->srvbufsize, 0, ¶m->srvinbuf);
+ param->nolongdatfilter = 1;
+ if(action == HANDLED){
+ RETURN(0);
+ }
+ if(action != PASS) RETURN(517);
+ contentlength64 = param->srvinbuf;
+ sprintf((char*)buf+strlen((char *)buf), "Content-Length: %"PRINTF_INT64_MODIFIER"u\r\n", contentlength64);
+ hascontent = 1;
+ }
+ }
+ if (contentlength64 > 0 && hascontent != 1) ckeepalive = 0;
+#else
if (conf.filtermaxsize && contentlength > (unsigned long)conf.filtermaxsize) {
param->nolongdatfilter = 1;
}
@@ -978,6 +1074,7 @@ for(;;){
}
}
if (contentlength > 0 && hascontent != 1) ckeepalive = 0;
+#endif
#else
#endif
if(!isconnect || param->operation){
@@ -996,7 +1093,11 @@ for(;;){
RETURN(521);
}
}
+#ifndef NOPSTDINT
+ if((param->chunked || contentlength64 > 0) && param->operation != HTTP_HEAD && res != 204 && res != 304) {
+#else
if((param->chunked || contentlength > 0) && param->operation != HTTP_HEAD && res != 204 && res != 304) {
+#endif
do {
if(param->chunked){
char smallbuf[32];
@@ -1021,18 +1122,32 @@ for(;;){
break;
}
smallbuf[i] = 0;
+#ifndef NOPSTDINT
+ contentlength64 = 0;
+ sscanf(smallbuf, "%"PRINTF_INT64_MODIFIER"x", &contentlength64);
+ if(contentlength64 == 0) {
+#else
contentlength = 0;
sscanf(smallbuf, "%lx", &contentlength);
if(contentlength == 0) {
+#endif
param->chunked = 2;
}
}
if(param->chunked != 2){
+#ifndef NOPSTDINT
+ param->waitserver64 = contentlength64;
+#else
param->waitserver = contentlength;
+#endif
if((res = sockmap(param, conf.timeouts[CONNECTION_S])) != 98){
RETURN(res);
}
+#ifndef NOPSTDINT
+ param->waitserver64 = 0;
+#else
param->waitserver = 0;
+#endif
}
} while(param->chunked);
}
@@ -1045,8 +1160,11 @@ for(;;){
else if(!hascontent && !param->chunked) {
RETURN(sockmap(param, conf.timeouts[CONNECTION_S]));
}
+#ifndef NOPSTDINT
+ contentlength64 = 0;
+#else
contentlength = 0;
-
+#endif
REQUESTEND:
if((!ckeepalive || !keepalive) && param->remsock != INVALID_SOCKET){
diff --git a/src/pstdint.h b/src/pstdint.h
index 81e2cc9..00fc1fc 100644
--- a/src/pstdint.h
+++ b/src/pstdint.h
@@ -797,4 +797,4 @@ int main () {
return EXIT_SUCCESS;
}
-#endif
\ No newline at end of file
+#endif
diff --git a/src/smtpp.c b/src/smtpp.c
index 8c8b635..f736119 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -191,7 +191,11 @@ void * smtppchild(struct clientparam* param) {
ul = param->extip;
i = sprintf(buf, "EHLO [%lu.%lu.%lu.%lu]\r\n", ((ul&0xFF000000)>>24), ((ul&0x00FF0000)>>16), ((ul&0x0000FF00)>>8), ((ul&0x000000FF)));
if(socksend(param->remsock, buf, i, conf.timeouts[STRING_S])!= i) {RETURN(673);}
+#ifndef NOPSTDINT
+ param->statscli64+=i;
+#else
param->statscli+=i;
+#endif
param->nwrites++;
login = 0;
do {
@@ -209,26 +213,42 @@ void * smtppchild(struct clientparam* param) {
}
if ((login & 1)) {
socksend(param->remsock, "AUTH LOGIN\r\n", 12, conf.timeouts[STRING_S]);
- param->statscli+=12;
+#ifndef NOPSTDINT
+ param->statscli64+=12;
+#else
+ param->statscli+=12;
+#endif
param->nwrites++;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(680);}
en64(param->extusername, buf, (int)strlen(param->extusername));
socksend(param->remsock, buf, (int)strlen(buf), conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
- param->statscli+=(i+2);
+#ifndef NOPSTDINT
+ param->statscli64+=(i+2);
+#else
+ param->statscli+=(i+2);
+#endif
param->nwrites+=2;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(681);}
en64(param->extpassword, buf, (int)strlen(param->extpassword));
socksend(param->remsock, buf, (int)strlen(buf), conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
- param->statscli+=(i+2);
+#ifndef NOPSTDINT
+ param->statscli64+=(i+2);
+#else
+ param->statscli+=(i+2);
+#endif
param->nwrites+=2;
}
else if((login & 2)){
socksend(param->remsock, "AUTH PLAIN\r\n", 12, conf.timeouts[STRING_S]);
- param->statscli+=12;
+#ifndef NOPSTDINT
+ param->statscli64+=(12);
+#else
+ param->statscli+=(12);
+#endif
param->nwrites++;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(682);}
@@ -243,7 +263,11 @@ void * smtppchild(struct clientparam* param) {
i = (int)strlen(buf);
socksend(param->remsock, buf, i, conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
- param->statscli+=(i+2);
+#ifndef NOPSTDINT
+ param->statscli64+=(i+2);
+#else
+ param->statscli+=(i+2);
+#endif
param->nwrites+=2;
}
if(command) {
diff --git a/src/sockgetchar.c b/src/sockgetchar.c
index f7d74c5..c507b6b 100644
--- a/src/sockgetchar.c
+++ b/src/sockgetchar.c
@@ -126,7 +126,11 @@ int sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec
if((len = sockrecvfrom(param->remsock, ¶m->sinc, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
param->srvinbuf += len;
param->nreads++;
+#ifndef NOPSTDINT
+ param->statssrv64 += len;
+#else
param->statssrv += len;
+#endif
}
return param->srvinbuf;
}
@@ -152,7 +156,11 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
param->srvinbuf = len;
param->srvoffset = 1;
param->nreads++;
+#ifndef NOPSTDINT
+ param->statssrv64 += len;
+#else
param->statssrv += len;
+#endif
return (int)*param->srvbuf;
}
diff --git a/src/sockmap.c b/src/sockmap.c
index 3b3dfcc..a039322 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -13,7 +13,11 @@
int sockmap(struct clientparam * param, int timeo){
int res=0;
+#ifndef NOPSTDINT
+ uint64_t sent=0, received=0;
+#else
unsigned sent=0, received=0;
+#endif
SASIZETYPE sasize;
struct pollfd fds[2];
int sleeptime = 0, stop = 0;
@@ -32,12 +36,20 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Starting sockets mapping");
#endif
+#ifndef NOPSTDINT
+ if(!param->waitclient64){
+#else
if(!param->waitclient){
+#endif
if(!param->srvbuf && (!(param->srvbuf=myalloc(bufsize)) || !(param->srvbufsize = bufsize))){
return (21);
}
}
+#ifndef NOPSTDINT
+ if(!param->waitserver64){
+#else
if(!param->waitserver){
+#endif
if(!param->clibuf && (!(param->clibuf=myalloc(bufsize)) || !(param->clibufsize = bufsize))){
return (21);
}
@@ -69,6 +81,16 @@ int sockmap(struct clientparam * param, int timeo){
while (!stop&&!conf.timetoexit){
sasize = sizeof(struct sockaddr_in);
+#ifndef NOPSTDINT
+ if((param->maxtrafin64 && param->statssrv64 >= param->maxtrafin64) || (param->maxtrafout64 && param->statscli64 >= param->maxtrafout64)){
+ return (10);
+ }
+ if((param->srv->logdumpsrv && (param->statssrv64 > param->srv->logdumpsrv)) ||
+ (param->srv->logdumpcli && (param->statscli64 > param->srv->logdumpcli)))
+ (*param->srv->logfunc)(param, NULL);
+ fds[0].events = fds[1].events = 0;
+ if(param->srvinbuf > param->srvoffset && !param->waitclient64) {
+#else
if((param->maxtrafin && param->statssrv >= param->maxtrafin) || (param->maxtrafout && param->statscli >= param->maxtrafout)){
return (10);
}
@@ -77,25 +99,38 @@ int sockmap(struct clientparam * param, int timeo){
(*param->srv->logfunc)(param, NULL);
fds[0].events = fds[1].events = 0;
if(param->srvinbuf > param->srvoffset && !param->waitclient) {
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "will send to client");
#endif
fds[0].events |= POLLOUT;
}
+#ifndef NOPSTDINT
+ if((param->srvbufsize - param->srvinbuf) > minsize && !param->waitclient64 && (!param->waitserver64 ||(received + param->srvinbuf - param->srvoffset < param->waitserver64))) {
+#else
if((param->srvbufsize - param->srvinbuf) > minsize && !param->waitclient && (!param->waitserver ||(received + param->srvinbuf - param->srvoffset < param->waitserver))) {
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will recv from server");
#endif
fds[1].events |= POLLIN;
}
+#ifndef NOPSTDINT
+ if(param->cliinbuf > param->clioffset && !param->waitserver64) {
+#else
if(param->cliinbuf > param->clioffset && !param->waitserver) {
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will send to server");
#endif
fds[1].events |= POLLOUT;
}
+#ifndef NOPSTDINT
+ if((param->clibufsize - param->cliinbuf) > minsize && !param->waitserver64 &&(!param->srv->singlepacket || param->service != S_UDPPM) ) {
+#else
if((param->clibufsize - param->cliinbuf) > minsize && !param->waitserver &&(!param->srv->singlepacket || param->service != S_UDPPM) ) {
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will recv from client");
#endif
@@ -128,7 +163,11 @@ int sockmap(struct clientparam * param, int timeo){
if(param->bandlimfunc) {
sleeptime = (*param->bandlimfunc)(param, param->srvinbuf - param->srvoffset, 0);
}
+#ifndef NOPSTDINT
+ res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sinc, sasize);
+#else
res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver || ((unsigned)param->waitserver - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : param->waitserver - received, 0, (struct sockaddr*)¶m->sinc, sasize);
+#endif
if(res < 0) {
if(errno != EAGAIN) return 96;
continue;
@@ -136,7 +175,11 @@ int sockmap(struct clientparam * param, int timeo){
param->srvoffset += res;
received += res;
if(param->srvoffset == param->srvinbuf) param->srvoffset = param->srvinbuf = 0;
+#ifndef NOPSTDINT
+ if(param->waitserver64 && param->waitserver64<= received){
+#else
if(param->waitserver && param->waitserver<= received){
+#endif
return (98);
}
if(param->service == S_UDPPM && param->srv->singlepacket) {
@@ -153,17 +196,26 @@ int sockmap(struct clientparam * param, int timeo){
sl1 = (*param->bandlimfunc)(param, 0, param->cliinbuf - param->clioffset);
if(sl1 > sleeptime) sleeptime = sl1;
}
+#ifndef NOPSTDINT
+ res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
+#else
res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient || ((unsigned)param->waitclient - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : param->waitclient - sent, 0, (struct sockaddr*)¶m->sins, sasize);
+#endif
if(res < 0) {
if(errno != EAGAIN) return 97;
continue;
}
param->clioffset += res;
- sent += res;
- param->statscli += res;
- param->nwrites++;
if(param->clioffset == param->cliinbuf) param->clioffset = param->cliinbuf = 0;
+ sent += res;
+ param->nwrites++;
+#ifndef NOPSTDINT
+ param->statscli64 += res;
+ if(param->waitclient64 && param->waitclient64<= sent) {
+#else
+ param->statscli += res;
if(param->waitclient && param->waitclient<= sent) {
+#endif
return (99);
}
}
@@ -215,7 +267,11 @@ int sockmap(struct clientparam * param, int timeo){
}
param->srvinbuf += res;
param->nreads++;
+#ifndef NOPSTDINT
+ param->statssrv64 += res;
+#else
param->statssrv += res;
+#endif
if(!param->nolongdatfilter){
action = handledatfltsrv(param, ¶m->srvbuf, ¶m->srvbufsize, param->srvinbuf - res, ¶m->srvinbuf);
if(action == HANDLED){
@@ -237,26 +293,42 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "finished with mapping");
#endif
+#ifndef NOPSTDINT
+ while(!param->waitclient64 && param->srvinbuf > param->srvoffset && param->clisock != INVALID_SOCKET){
+#else
while(!param->waitclient && param->srvinbuf > param->srvoffset && param->clisock != INVALID_SOCKET){
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to client");
#endif
res = socksendto(param->clisock, ¶m->sinc, param->srvbuf + param->srvoffset, param->srvinbuf - param->srvoffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->srvoffset += res;
+#ifndef NOPSTDINT
+ param->statssrv64 += res;
+#else
param->statssrv += res;
+#endif
if(param->srvoffset == param->srvinbuf) param->srvoffset = param->srvinbuf = 0;
}
else break;
}
+#ifndef NOPSTDINT
+ while(!param->waitserver64 && param->cliinbuf > param->clioffset && param->remsock != INVALID_SOCKET){
+#else
while(!param->waitserver && param->cliinbuf > param->clioffset && param->remsock != INVALID_SOCKET){
+#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to server");
#endif
res = socksendto(param->remsock, ¶m->sins, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->clioffset += res;
+#ifndef NOPSTDINT
+ param->statscli64 += res;
+#else
param->statscli += res;
+#endif
if(param->cliinbuf == param->clioffset) param->cliinbuf = param->clioffset = 0;
}
else break;
diff --git a/src/socks.c b/src/socks.c
index ca3e5b7..e53250b 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -339,7 +339,11 @@ fflush(stderr);
param->res = 467;
break;
}
+#ifndef NOPSTDINT
+ param->statscli64+=(len - i);
+#else
param->statscli+=(len - i);
+#endif
param->nwrites++;
#if SOCKSTRACE > 1
fprintf(stderr, "UDP packet relayed from client to %s:%hu size %d, header %d\n",
@@ -366,7 +370,11 @@ fflush(stderr);
param->res = 468;
break;
}
+#ifndef NOPSTDINT
+ param->statssrv64+=len;
+#else
param->statssrv+=len;
+#endif
param->nreads++;
memcpy(buf+4, &tsin.sin_addr.s_addr, 4);
memcpy(buf+8, &tsin.sin_port, 2);
diff --git a/src/structures.h b/src/structures.h
index 52d8dee..a6e964f 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -6,6 +6,9 @@
#include
#include
#include
+#ifndef NOPSTDINT
+#include "pstdint.h"
+#endif
#ifdef __cplusplus
extern "C" {
#endif
@@ -257,10 +260,15 @@ struct trafcount {
struct ace *ace;
unsigned number;
ROTATION type;
+#ifndef NOPSTDINT
+ uint64_t traf64;
+ uint64_t traflim64;
+#else
unsigned long traf;
unsigned long trafgb;
unsigned long traflim;
unsigned long traflimgb;
+#endif
char * comment;
int disabled;
time_t cleared;
@@ -377,8 +385,13 @@ struct clientparam {
int res,
status;
+#ifndef NOPSTDINT
+ uint64_t waitclient64,
+ waitserver64;
+#else
unsigned waitclient,
waitserver;
+#endif
int pwtype,
threadid,
weight,
@@ -402,16 +415,28 @@ struct clientparam {
srvoffset,
clibufsize,
srvbufsize,
- msec_start,
+ msec_start;
+#ifndef NOPSTDINT
+ uint64_t
+ maxtrafin64,
+ maxtrafout64;
+#else
+ unsigned
maxtrafin,
maxtrafout;
-
+#endif
struct sockaddr_in sinc,
sins,
req;
+#ifndef NOPSTDINT
+ uint64_t statscli64,
+ statssrv64;
+#else
unsigned long statscli,
- statssrv,
+ statssrv;
+#endif
+ unsigned long
nreads,
nwrites,
nconnects,
@@ -634,6 +659,7 @@ typedef enum {
TYPE_SHORT,
TYPE_CHAR,
TYPE_UNSIGNED,
+ TYPE_UNSIGNED64,
TYPE_TRAFFIC,
TYPE_PORT,
TYPE_IP,
diff --git a/src/webadmin.c b/src/webadmin.c
index ad47b52..516a04b 100644
--- a/src/webadmin.c
+++ b/src/webadmin.c
@@ -475,6 +475,18 @@ void * adminchild(struct clientparam* param) {
);
}
else {
+#ifndef NOPSTDINT
+ inbuf += sprintf(buf+inbuf,
+ "%"PRINTF_INT64_MODIFIER"u | "
+ "MB%s | "
+ "%"PRINTF_INT64_MODIFIER"u | "
+ "%s | ",
+ cp->traflim64,
+ rotations[cp->type],
+ cp->traf64,
+ cp->cleared?ctime(&cp->cleared):"never"
+ );
+#else
inbuf += sprintf(buf+inbuf,
"%.3f | "
"MB%s | "
@@ -485,6 +497,7 @@ void * adminchild(struct clientparam* param) {
(1024.0 * (float)cp->trafgb) + (float)cp->traf/1048576.0,
cp->cleared?ctime(&cp->cleared):"never"
);
+#endif
inbuf += sprintf(buf + inbuf,
"%s | "
"%i | "
From 97d811fbfda7a3fcda192824ff734f9a3aba8b0b Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Thu, 10 Apr 2014 04:11:48 +0400
Subject: [PATCH 003/122] temp debugging
---
src/proxy.c | 12 ++++++++----
src/sockmap.c | 1 +
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/proxy.c b/src/proxy.c
index b09176b..e8179d0 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -355,7 +355,7 @@ for(;;){
else param->operation = HTTP_OTHER;
do {
buf[inbuf+i]=0;
-/*printf("Got: %s\n", buf+inbuf);*/
+/* printf("Got: %s\n", buf+inbuf); */
#ifndef WITHMAIN
if(i > 25 && !param->srv->transparent && (!strncasecmp((char *)(buf+inbuf), "proxy-authorization", 19))){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
@@ -393,7 +393,8 @@ for(;;){
if(i> 15 && (!strncasecmp((char *)(buf), "content-length", 14))){
buf[i]=0;
#ifndef NOPSTDINT
- sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+ res=sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
}
}
while( contentlength64 > 0 && (i = sockgetlinebuf(param, CLIENT, buf, (BUFSIZE < contentlength64)? BUFSIZE - 1:(int)contentlength64, '\n', conf.timeouts[STRING_S])) > 0){
@@ -508,7 +509,9 @@ for(;;){
++sb;
while(isspace(*sb))sb++;
#ifndef NOPSTDINT
- sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
+ res=sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
+printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
+
if(param->maxtrafout64 && (param->maxtrafout64 < param->statscli64 || contentlength64 > param->maxtrafout64 - param->statscli64)){
RETURN(10);
}
@@ -964,7 +967,8 @@ for(;;){
++sb;
while(isspace(*sb))sb++;
#ifndef NOPSTDINT
- sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+ res=sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
+printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
#else
sscanf(sb, "%lu", &contentlength);
#endif
diff --git a/src/sockmap.c b/src/sockmap.c
index a039322..ccf9d66 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -6,6 +6,7 @@
$Id: sockmap.c,v 1.64 2014-04-07 20:35:09 vlad Exp $
*/
+#define DEBUGLEVEL 3
#include "proxy.h"
From 90ca18b3c1b7fc49c77c073ccf94fa4eb85b7593 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Thu, 10 Apr 2014 04:11:55 +0400
Subject: [PATCH 004/122] Revert "temp debugging"
This reverts commit 97d811fbfda7a3fcda192824ff734f9a3aba8b0b.
---
src/proxy.c | 12 ++++--------
src/sockmap.c | 1 -
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/src/proxy.c b/src/proxy.c
index e8179d0..b09176b 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -355,7 +355,7 @@ for(;;){
else param->operation = HTTP_OTHER;
do {
buf[inbuf+i]=0;
-/* printf("Got: %s\n", buf+inbuf); */
+/*printf("Got: %s\n", buf+inbuf);*/
#ifndef WITHMAIN
if(i > 25 && !param->srv->transparent && (!strncasecmp((char *)(buf+inbuf), "proxy-authorization", 19))){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
@@ -393,8 +393,7 @@ for(;;){
if(i> 15 && (!strncasecmp((char *)(buf), "content-length", 14))){
buf[i]=0;
#ifndef NOPSTDINT
- res=sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
-printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
+ sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
}
}
while( contentlength64 > 0 && (i = sockgetlinebuf(param, CLIENT, buf, (BUFSIZE < contentlength64)? BUFSIZE - 1:(int)contentlength64, '\n', conf.timeouts[STRING_S])) > 0){
@@ -509,9 +508,7 @@ printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
++sb;
while(isspace(*sb))sb++;
#ifndef NOPSTDINT
- res=sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
-printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
-
+ sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
if(param->maxtrafout64 && (param->maxtrafout64 < param->statscli64 || contentlength64 > param->maxtrafout64 - param->statscli64)){
RETURN(10);
}
@@ -967,8 +964,7 @@ printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
++sb;
while(isspace(*sb))sb++;
#ifndef NOPSTDINT
- res=sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
-printf("cl: %d/%"PRINTF_INT64_MODIFIER"u\n", res, contentlength64);
+ sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
#else
sscanf(sb, "%lu", &contentlength);
#endif
diff --git a/src/sockmap.c b/src/sockmap.c
index ccf9d66..a039322 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -6,7 +6,6 @@
$Id: sockmap.c,v 1.64 2014-04-07 20:35:09 vlad Exp $
*/
-#define DEBUGLEVEL 3
#include "proxy.h"
From c411e03126fc65505c86168565b546ab4c59c000 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Thu, 10 Apr 2014 04:16:25 +0400
Subject: [PATCH 005/122] logging to changelog
---
Changelog | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Changelog b/Changelog
index 017822e..8ed688e 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,8 @@
+10.04.2014
+! switching to 64-bit integers where possible.
+ proxy should now support downloading for files > 4GB.
+
+
08.04.2014
Releasing as 0.7
Significant changes since 0.6.1:
From 5543b3052dde45f09362e09f89112b02ad050f16 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Sun, 13 Apr 2014 19:21:18 +0400
Subject: [PATCH 006/122] Moving icons compilation to Makefiles
---
.gitignore | 1 +
3proxy.res | Bin 25272 -> 0 bytes
Makefile.msvc | 8 +++++++-
Makefile.msvc64 | 7 +++++++
src/Makefile.inc | 2 +-
5 files changed, 16 insertions(+), 2 deletions(-)
delete mode 100644 3proxy.res
diff --git a/.gitignore b/.gitignore
index 05e2ab2..4bd7388 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@ tmp/
src/version.h
src/res
version.c
+3proxy.res
doc/html/man3/
doc/html/man8/
doc/html/index.html
diff --git a/3proxy.res b/3proxy.res
deleted file mode 100644
index 115b2b77dbc53fbcc26bf9ca6cd55f7926afbd86..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 25272
zcmeHPO;21^7=9_l+SC~0ilhr?VZziD#1@S)O+!*NHZj((5Lazlij;%`1#IZTw9%NZ
zn;2bU+%&qU6}xI5pnV0O@1kBW6LxAy3Z4#5qPn}(
zZ$tn7XEtCb8-lt@53d8hf%--GH2^QxZPgZR$>!n1f-Tw{{8_TkZ5ccxfoH<>H)%If
zH^_`b_A+?x;BOB6>$Zme3$_An%eGG53>{al;58nB}$&9T4H%2@kP`8l9=Dvzm(R&sM
zo`(k$_#6v0`ci2N=Sy}PcCR+mVaVMrWN{Yp`ds@s
zJIT*`VGcFxjkDx+=jVuXk!xoLajb4dwY_T0UNJ7=Pch1Qx)x@ppI>Ib3{|HLXmVc|
z1P!2OHZi=t_N!=5fgXYe0w*e|Bm@!y34w$_LLecK5J(6l1QG%XfrLOpAR&+tNC+eZ
z5&{W2C@DFdep_3y(-0j7M)si#5>R4N9f-z7s?m;^7ORQalXMni)&n{GXs^e
z4=Dbhpxpw+q*r6HjygK~|CHY`w#rim6Uv=@X@^&y<>?W=)IAJ}=YwR$M@&Bh
z`5cL7zgNbeffS?H$1!iSRs5Qxey$Yh;h1EYS8v11iHCcFuX~>T){Ekgf0&6R2ifrLOp
zAR&+tNC*%Cot<>g&bv4FD^f*gGo9c1HFn0OGudnuq|RCKSuA2Z(oN+)FV7mw5Mg}Q
zJ<>sU;JiQocOcdmtlASZL~|VTe;n3-JW&<1?t^*zLM+oyZ6E(}i{0l@?;(ye2AT{0
z{f)<{AL>PW{Bek%IaHkfoTv9_&oDmP4~Z^_LFYW}`TiQ8i3`*m=^?EHAA3Kq`y-vK
zQRy0b#&y-{~yu+11JO0
zC;3ZW^`YA27jbyh=#%e^h4V8n2k1`a01@Dv_rHeGDp
z_c!W)0;25<#Iv5aDH-k0Co#@5gVsvCXYsuI6-ehj>QYS7t1E`Wp67M3PMdrdp`V)|
z>EfRC07M(3AQrDn1zksXGX!67Fo2v6FKTr*Nc}*oDaM%&x+~xj4(z@!F&sww6=hv(H
zx_K>2zcBJ^yqkVgm*1nhrQ7e7W$34$!iMvQ_l#6}fIt=5tiVqF`xvHn=l3yuDOCZr
zagG94*9)EEJ3h{f48(hDr^TNcI+Z0q<#}({{>FQFCx!BxPN38MB|hhLA}{=Yg?+`)
z%K!MBs56^$y|7BZw07e?yHGG^aIf-;cR%+a;_w*M>0I+Z--Y~WPFzJ@9{>ILUu2_{
zu}jce0o7_RhG#As@y}!2J%(&*s=kZxzsX}asWe*HU{2Tw9@n_T@X2n_hS3*V$R-o|
EKiS_-g#Z8m
diff --git a/Makefile.msvc b/Makefile.msvc
index 0ee2858..db8d4db 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -28,10 +28,16 @@ TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc
PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin lastFripper FilePlugin
-
+VERFILE = 3proxyres.obj $(VERFILE)
include Makefile.inc
+../3proxy.res:
+ rc /fo../3proxy.res ../3proxy.rc
+
+3proxyres.obj: ../3proxy.res
+ cvtres /out:3proxyres.obj /MACHINE:X86 ../3proxy.res
+
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
\ No newline at end of file
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index 6ee3eda..f4d5d3c 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -28,9 +28,16 @@ TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc64
PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin
+VERFILE = 3proxyres.obj $(VERFILE)
include Makefile.inc
+../3proxy.res:
+ rc /fo../3proxy.res ../3proxy.rc
+
+3proxyres.obj: ../3proxy.res
+ cvtres /out:3proxyres.obj /MACHINE:X64 ../3proxy.res
+
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
diff --git a/src/Makefile.inc b/src/Makefile.inc
index 8571993..96176d7 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -3,7 +3,7 @@
# 3 proxy common Makefile
#
-all: pre $(BUILDDIR)3proxy$(EXESUFFICS) $(BUILDDIR)mycrypt$(EXESUFFICS) $(BUILDDIR)dighosts$(EXESUFFICS) $(BUILDDIR)pop3p$(EXESUFFICS) $(BUILDDIR)smtpp$(EXESUFFICS) $(BUILDDIR)ftppr$(EXESUFFICS) $(BUILDDIR)tcppm$(EXESUFFICS) $(BUILDDIR)icqpr$(EXESUFFICS) $(BUILDDIR)msnpr$(EXESUFFICS) $(BUILDDIR)udppm$(EXESUFFICS) $(BUILDDIR)socks$(EXESUFFICS) $(BUILDDIR)proxy$(EXESUFFICS) $(BUILDDIR)countersutil$(EXESUFFICS) allplugins
+all: pre $(VERFILE) $(BUILDDIR)3proxy$(EXESUFFICS) $(BUILDDIR)mycrypt$(EXESUFFICS) $(BUILDDIR)dighosts$(EXESUFFICS) $(BUILDDIR)pop3p$(EXESUFFICS) $(BUILDDIR)smtpp$(EXESUFFICS) $(BUILDDIR)ftppr$(EXESUFFICS) $(BUILDDIR)tcppm$(EXESUFFICS) $(BUILDDIR)icqpr$(EXESUFFICS) $(BUILDDIR)msnpr$(EXESUFFICS) $(BUILDDIR)udppm$(EXESUFFICS) $(BUILDDIR)socks$(EXESUFFICS) $(BUILDDIR)proxy$(EXESUFFICS) $(BUILDDIR)countersutil$(EXESUFFICS) allplugins
pre:
From f4c6c9d962f002b879aa2673152b5d83e16fd21d Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 14 Apr 2014 02:14:34 +0400
Subject: [PATCH 007/122] legacy counters code removed
---
src/3proxy.c | 30 ------------
src/auth.c | 65 -------------------------
src/common.c | 19 --------
src/datatypes.c | 42 ----------------
src/dnspr.c | 8 ----
src/ftppr.c | 14 ------
src/icqpr.c | 22 ---------
src/msnpr.c | 12 -----
src/pop3p.c | 4 --
src/proxy.c | 119 ----------------------------------------------
src/smtpp.c | 24 ----------
src/sockgetchar.c | 8 ----
src/sockmap.c | 72 ----------------------------
src/socks.c | 8 ----
src/structures.h | 26 ++--------
src/webadmin.c | 13 -----
16 files changed, 3 insertions(+), 483 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 977814d..e3c4a80 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -45,12 +45,7 @@ struct counter_header {
} cheader = {"3CF", (time_t)0};
struct counter_record {
-#ifndef NOPSTDINT
uint64_t traf64;
-#else
- unsigned long traf;
- unsigned long trafgb;
-#endif
time_t cleared;
time_t updated;
} crecord;
@@ -469,11 +464,7 @@ void dumpcounters(struct trafcount *tlin, int counterd){
if(cfp){
for(tl = tlin; cfp && tl; tl = tl->next){
if(tl->type >= conf.countertype)
-#ifndef NOPSTDINT
fprintf(cfp, "%05d %020"PRINTF_INT64_MODIFIER"u%s%s\n", tl->number, tl->traf64, tl->comment?" #" : "", tl->comment? tl->comment : "");
-#else
- fprintf(cfp, "%05d %010lu %010lu%s%s\n", tl->number, tl->trafgb, tl->traf, tl->comment?" #" : "", tl->comment? tl->comment : "");
-#endif
}
fclose(cfp);
}
@@ -488,24 +479,14 @@ void dumpcounters(struct trafcount *tlin, int counterd){
lseek(counterd,
sizeof(struct counter_header) + (tl->number - 1) * sizeof(struct counter_record),
SEEK_SET);
-#ifndef NOPSTDINT
crecord.traf64 = tl->traf64;
-#else
- crecord.traf = tl->traf;
- crecord.trafgb = tl->trafgb;
-#endif
crecord.cleared = tl->cleared;
crecord.updated = tl->updated;
write(counterd, &crecord, sizeof(struct counter_record));
}
if(tl->type!=NEVER && timechanged(tl->cleared, conf.time, tl->type)){
tl->cleared = conf.time;
-#ifndef NOPSTDINT
tl->traf64 = 0;
-#else
- tl->traf = 0;
- tl->trafgb = 0;
-#endif
}
}
}
@@ -1551,14 +1532,8 @@ static int h_ace(int argc, unsigned char **argv){
sscanf((char *)argv[1], "%u", &tl->number);
sscanf((char *)argv[3], "%lu", &lim);
tl->type = getrotate(*argv[2]);
-#ifndef NOPSTDINT
tl->traflim64 = ((uint64_t)lim)*(1024*1024);
if(!tl->traflim64) {
-#else
- tl->traflimgb = (lim/(1024*4));
- tl->traflim = ((lim - (tl->traflimgb*(1024*4)))*(1024*1024));
- if(!tl->traflim && !tl->traflimgb) {
-#endif
fprintf(stderr, "Wrong traffic limit specified, line %d\n", linenum);
return(6);
}
@@ -1568,12 +1543,7 @@ static int h_ace(int argc, unsigned char **argv){
SEEK_SET);
memset(&crecord, 0, sizeof(struct counter_record));
read(conf.counterd, &crecord, sizeof(struct counter_record));
-#ifndef NOPSTDINT
tl->traf64 = crecord.traf64;
-#else
- tl->traf = crecord.traf;
- tl->trafgb = crecord.trafgb;
-#endif
tl->cleared = crecord.cleared;
tl->updated = crecord.updated;
#ifdef _MAX__TIME64_T
diff --git a/src/auth.c b/src/auth.c
index b2a9d44..93b24f5 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -115,11 +115,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
len += sprintf((char *)buf + len, "\r\n");
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != (int)strlen((char *)buf))
return 31;
-#ifndef NOPSTDINT
param->statssrv64+=len;
-#else
- param->statssrv+=len;
-#endif
param->nwrites++;
if((res = sockgetlinebuf(param, SERVER,buf,13,'\n',conf.timeouts[CHAIN_TO])) < 13)
return 32;
@@ -156,11 +152,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) < len){
return 41;
}
-#ifndef NOPSTDINT
param->statssrv64+=len;
-#else
- param->statssrv+=len;
-#endif
param->nwrites++;
if((len = sockgetlinebuf(param, SERVER, buf, (redir->type == R_SOCKS4B)? 3:8, EOF, conf.timeouts[CHAIN_TO])) != ((redir->type == R_SOCKS4B)? 3:8)){
return 42;
@@ -183,11 +175,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, 3, conf.timeouts[CHAIN_TO]) != 3){
return 51;
}
-#ifndef NOPSTDINT
param->statssrv64+=len;
-#else
- param->statssrv+=len;
-#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 2, EOF, conf.timeouts[CHAIN_TO]) != 2){
return 52;
@@ -209,11 +197,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, inbuf, conf.timeouts[CHAIN_TO]) != inbuf){
return 51;
}
-#ifndef NOPSTDINT
param->statssrv64+=inbuf;
-#else
- param->statssrv+=inbuf;
-#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 2, EOF, 60) != 2){
return 55;
@@ -243,11 +227,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != len){
return 51;
}
-#ifndef NOPSTDINT
param->statssrv64+=len;
-#else
- param->statssrv+=len;
-#endif
param->nwrites++;
if(sockgetlinebuf(param, SERVER, buf, 4, EOF, conf.timeouts[CHAIN_TO]) != 4){
return 57;
@@ -561,7 +541,6 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
void trafcountfunc(struct clientparam *param){
struct trafcount * tc;
- unsigned long val;
int countout = 0;
pthread_mutex_lock(&tc_mutex);
@@ -573,13 +552,7 @@ void trafcountfunc(struct clientparam *param){
countout = 1;
continue;
}
-#ifndef NOPSTDINT
tc->traf64 += param->statssrv64;
-#else
- val = tc->traf + param->statssrv;
- if(val < tc->traf) tc->trafgb++;
- tc->traf = val;
-#endif
time(&t);
tc->updated = t;
}
@@ -591,13 +564,7 @@ void trafcountfunc(struct clientparam *param){
if(tc->ace->action != COUNTOUT) {
continue;
}
-#ifndef NOPSTDINT
tc->traf64 += param->statscli64;
-#else
- val = tc->traf + param->statscli;
- if(val < tc->traf) tc->trafgb++;
- tc->traf = val;
-#endif
time(&t);
tc->updated = t;
}
@@ -624,21 +591,9 @@ int alwaysauth(struct clientparam * param){
continue;
}
-#ifndef NOPSTDINT
if(tc->traflim64 <= tc->traf64) return 10;
param->trafcountfunc = conf.trafcountfunc;
param->maxtrafin64 = tc->traflim64 - tc->traf64;
-#else
- if((tc->traflimgb < tc->trafgb) ||
- ((tc->traflimgb == tc->trafgb) && (tc->traflim < tc->traf))
- ) return 10;
- param->trafcountfunc = conf.trafcountfunc;
- if(tc->traflimgb - tc->trafgb < 1 || ((tc->traflimgb - tc->trafgb) == 1 && tc->traf > tc->traflim)){
- unsigned maxtraf = tc->traflim - tc->traf;
- if(!param->maxtrafin || param->maxtrafin > maxtraf) param->maxtrafin = maxtraf;
- }
- if((tc->trafgb > tc->traflimgb) || (tc->trafgb == tc->traflimgb && tc->traf >= tc->traflim)) param->maxtrafin = 1;
-#endif
}
}
if(countout)for(tc = conf.trafcounter; tc; tc = tc->next) {
@@ -649,21 +604,9 @@ int alwaysauth(struct clientparam * param){
continue;
}
-#ifndef NOPSTDINT
if(tc->traflim64 <= tc->traf64) return 10;
param->trafcountfunc = conf.trafcountfunc;
param->maxtrafout64 = tc->traflim64 - tc->traf64;
-#else
- if((tc->traflimgb < tc->trafgb) ||
- ((tc->traflimgb == tc->trafgb) && (tc->traflim < tc->traf))
- ) return 10;
- param->trafcountfunc = conf.trafcountfunc;
- if(tc->traflimgb - tc->trafgb < 1 || ((tc->traflimgb - tc->trafgb) == 1 && tc->traf > tc->traflim)){
- unsigned maxtraf = tc->traflim - tc->traf;
- if(!param->maxtrafout || param->maxtrafout > maxtraf) param->maxtrafout = maxtraf;
- }
- if((tc->trafgb > tc->traflimgb) || (tc->trafgb == tc->traflimgb && tc->traf >= tc->traflim)) param->maxtrafout = 1;
-#endif
}
}
@@ -1129,20 +1072,12 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
so._closesocket(sock);
continue;
}
-#ifndef NOPSTDINT
if(param) param->statscli64 += len;
-#else
- if(param) param->statscli += len;
-#endif
len = sockrecvfrom(sock, sinsp, buf, 4096, 15000);
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
if(len <= 13) continue;
-#ifndef NOPSTDINT
if(param) param->statssrv64 += len;
-#else
- if(param) param->statssrv += len;
-#endif
if(*(unsigned short *)buf != nquery)continue;
if((na = buf[7] + (((unsigned short)buf[6])<<8)) < 1) {
return 0;
diff --git a/src/common.c b/src/common.c
index 694c973..b2509a3 100644
--- a/src/common.c
+++ b/src/common.c
@@ -287,11 +287,7 @@ void clearstat(struct clientparam * param) {
param->time_start = (time_t)tv.tv_sec;
param->msec_start = (tv.tv_usec / 1000);
#endif
-#ifndef NOPSTDINT
param->statscli64 = param->statssrv64 = param->nreads = param->nwrites =
-#else
- param->statscli = param->statssrv = param->nreads = param->nwrites =
-#endif
param->nconnects = 0;
}
@@ -382,17 +378,10 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i+=10;
break;
case 'b':
-#ifndef NOPSTDINT
i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statscli64 * 1000./delay):0);
break;
case 'B':
i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statssrv64 * 1000./delay):0);
-#else
- i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statscli * 1000./delay):0);
- break;
- case 'B':
- i+=sprintf((char *)buf+i, "%u", delay?(unsigned)(param->statssrv * 1000./delay):0);
-#endif
break;
case 'D':
i+=sprintf((char *)buf+i, "%u", delay);
@@ -489,19 +478,11 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += (int)strlen((char *)buf+i);
break;
case 'I':
-#ifndef NOPSTDINT
sprintf((char *)buf+i, "%"PRINTF_INT64_MODIFIER"u", param->statssrv64);
i += (int)strlen((char *)buf+i);
break;
case 'O':
sprintf((char *)buf+i, "%"PRINTF_INT64_MODIFIER"u", param->statscli64);
-#else
- sprintf((char *)buf+i, "%lu", param->statssrv);
- i += (int)strlen((char *)buf+i);
- break;
- case 'O':
- sprintf((char *)buf+i, "%lu", param->statscli);
-#endif
i += (int)strlen((char *)buf+i);
break;
case 'h':
diff --git a/src/datatypes.c b/src/datatypes.c
index a99f7d5..554ab8f 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -8,12 +8,10 @@
#include "proxy.h"
-#ifndef NOPSTDINT
static void pr_unsigned64(struct node *node, CBFUNC cbf, void*cb){
char buf[32];
if(node->value)(*cbf)(cb, buf, sprintf(buf, "%"PRINTF_INT64_MODIFIER"u", *(uint64_t *)node->value));
}
-#endif
static void pr_integer(struct node *node, CBFUNC cbf, void*cb){
char buf[16];
@@ -453,7 +451,6 @@ static void * ef_trafcounter_type(struct node * node){
return &((struct trafcount *)node->value) -> type;
}
-#ifndef NOPSTDINT
static void * ef_trafcounter_traffic64(struct node * node){
return &((struct trafcount *)node->value) -> traf64;
}
@@ -476,33 +473,6 @@ static void * ef_client_bytesout64(struct node * node){
return &((struct clientparam *)node->value) -> statscli64;
}
-#else
-
-static void * ef_trafcounter_traffic(struct node * node){
- return &((struct trafcount *)node->value) -> traf;
-}
-static void * ef_trafcounter_limit(struct node * node){
- return &((struct trafcount *)node->value) -> traflim;
-}
-static void * ef_client_maxtrafin(struct node * node){
- return &((struct clientparam *)node->value) -> maxtrafin;
-}
-static void * ef_client_maxtrafout(struct node * node){
- return &((struct clientparam *)node->value) -> maxtrafout;
-}
-
-static void * ef_client_bytesin(struct node * node){
- return &((struct clientparam *)node->value) -> statssrv;
-}
-
-static void * ef_client_bytesout(struct node * node){
- return &((struct clientparam *)node->value) -> statscli;
-}
-
-
-#endif
-
-
static void * ef_trafcounter_cleared(struct node * node){
return &((struct trafcount *)node->value) -> cleared;
}
@@ -777,13 +747,8 @@ static struct property prop_trafcounter[] = {
{prop_trafcounter + 4, "type", ef_trafcounter_type, TYPE_ROTATION, "rotation type"},
-#ifndef NOPSTDINT
{prop_trafcounter + 5, "traffic", ef_trafcounter_traffic64, TYPE_UNSIGNED64, "counter value"},
{prop_trafcounter + 6, "limit", ef_trafcounter_limit64, TYPE_UNSIGNED64, "counter limit"},
-#else
- {prop_trafcounter + 5, "traffic", ef_trafcounter_traffic, TYPE_TRAFFIC, "counter value"},
- {prop_trafcounter + 6, "limit", ef_trafcounter_limit, TYPE_TRAFFIC, "counter limit"},
-#endif
{prop_trafcounter + 7, "cleared", ef_trafcounter_cleared, TYPE_DATETIME, "last rotated"},
{prop_trafcounter + 8, "updated", ef_trafcounter_updated, TYPE_DATETIME, "last updated"},
{prop_trafcounter + 9, "comment", ef_trafcounter_comment, TYPE_STRING, "counter comment"},
@@ -835,17 +800,10 @@ static struct property prop_client[] = {
{prop_client + 15, "srvport", ef_client_srvport, TYPE_PORT, "target server port"},
{prop_client + 16, "reqip", ef_client_reqip, TYPE_IP, "requested server ip"},
{prop_client + 17, "reqport", ef_client_reqport, TYPE_PORT, "requested server port"},
-#ifndef NOPSTDINT
{prop_client + 18, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
{prop_client + 19, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
{prop_client + 20, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
{prop_client + 21, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
-#else
- {prop_client + 18, "bytesin", ef_client_bytesin, TYPE_UNSIGNED, "bytes from server to client"},
- {prop_client + 19, "bytesout", ef_client_bytesout, TYPE_UNSIGNED, "bytes from client to server"},
- {prop_client + 20, "maxtrafin", ef_client_maxtrafin, TYPE_UNSIGNED, "maximum traffic allowed for download"},
- {prop_client + 21, "maxtrafout", ef_client_maxtrafout, TYPE_UNSIGNED, "maximum traffic allowed for upload"},
-#endif
{prop_client + 22, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
{NULL, "next", ef_client_next, TYPE_CLIENT, "next"}
diff --git a/src/dnspr.c b/src/dnspr.c
index 661a668..6612d6f 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -147,21 +147,13 @@ void * dnsprchild(struct clientparam* param) {
if(socksendto(param->remsock, ¶m->sins, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
-#ifndef NOPSTDINT
param->statscli64 += i;
-#else
- param->statscli += i;
-#endif
param->nwrites++;
len = sockrecvfrom(param->remsock, ¶m->sins, buf, BUFSIZE, 15000);
if(len <= 13) {
RETURN(821);
}
-#ifndef NOPSTDINT
param->statssrv64 += len;
-#else
- param->statssrv += len;
-#endif
param->nreads++;
if(buf[6] || buf[7]){
if(socksendto(param->clisock, ¶m->sinc, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
diff --git a/src/ftppr.c b/src/ftppr.c
index 28d695e..4feeb7b 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -276,11 +276,7 @@ param->srv->logfunc(param,buf);
buf[i++] = '\r';
buf[i++] = '\n';
if(socksend(param->remsock, buf, i, conf.timeouts[STRING_S])!=i) {RETURN (811);}
-#ifndef NOPSTDINT
param->statscli64+=(i);
-#else
- param->statscli+=(i);
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, BUFSIZE, '\n', conf.timeouts[STRING_L])) > 0){
if(socksend(param->ctrlsock, buf, i, conf.timeouts[STRING_S])!=i) {RETURN (812);}
@@ -291,15 +287,9 @@ param->srv->logfunc(param,buf);
}
sasize = sizeof(struct sockaddr_in);
if(so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(819);}
-#ifndef NOPSTDINT
if(req && (param->statscli64 || param->statssrv64)){
(*param->srv->logfunc)(param, (unsigned char *)req);
}
-#else
- if(req && (param->statscli || param->statssrv)){
- (*param->srv->logfunc)(param, (unsigned char *)req);
- }
-#endif
}
CLEANRET:
@@ -318,11 +308,7 @@ CLEANRET:
}
sasize = sizeof(struct sockaddr_in);
so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize);
-#ifndef NOPSTDINT
if(param->res != 0 || param->statscli64 || param->statssrv64 ){
-#else
- if(param->res != 0 || param->statscli || param->statssrv ){
-#endif
(*param->srv->logfunc)(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
}
if(req) myfree(req);
diff --git a/src/icqpr.c b/src/icqpr.c
index e1a315d..ee6808a 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -109,11 +109,7 @@ static void addbuffer(int increment, struct clientparam * param, unsigned char *
if(len > 0) {
*length_p += len;
param->nreads++;
-#ifndef NOPSTDINT
param->statssrv64 += len;
-#else
- param->statssrv += len;
-#endif
}
return;
}
@@ -441,31 +437,17 @@ void * icqprchild(struct clientparam* param) {
if(greet){
if(socksend(param->remsock, tmpsend, 10, conf.timeouts[STRING_S])!=10) {RETURN (1105);}
-#ifndef NOPSTDINT
param->statscli64 += 10;
-#else
- param->statscli += 10;
-#endif
}
if(readflap(param, SERVER, tmpsend, 1024)) {RETURN (1111);}
-#ifndef NOPSTDINT
param->statssrv64 += (ntohs(((struct flap_header *)tmpsend)->size) + 6);
-#else
- param->statssrv += (ntohs(((struct flap_header *)tmpsend)->size) + 6);
-#endif
mystate.srvseq = ntohs(((struct flap_header *)tmpsend)->seq) + 1;
mystate.seq = 1;
len = ntohs(flap->size) + 6;
if((res=handledatfltcli(param, &buf, &buflen, offset, &len))!=PASS) RETURN(res);
if(socksend(param->remsock, buf+offset, len, conf.timeouts[STRING_S])!=(ntohs(flap->size)+6)) {RETURN (1106);}
offset = 0;
-#ifndef NOPSTDINT
param->statscli64 += len;
-#else
- param->statscli += len;
-#endif
-
-
if(logintype == ICQMD5) {
if(readflap(param, SERVER, buf, 65550)) {RETURN (1112);}
@@ -481,11 +463,7 @@ void * icqprchild(struct clientparam* param) {
len = ntohs(flap->size) + 6;
if((res=handledatfltcli(param, &buf, &buflen, offset, &len))!=PASS) RETURN(res);
if(socksend(param->remsock, buf+offset, len, conf.timeouts[STRING_S])!=len) {RETURN (1115);}
-#ifndef NOPSTDINT
param->statscli64 += len;
-#else
- param->statscli += len;
-#endif
offset = 0;
}
if(logintype != ICQCOOKIE) {
diff --git a/src/msnpr.c b/src/msnpr.c
index 1ff1391..31895b4 100644
--- a/src/msnpr.c
+++ b/src/msnpr.c
@@ -173,22 +173,14 @@ void * msnprchild(struct clientparam* param) {
if(!sec){
len = (int)strlen(verstr);
if(socksend(param->remsock, verstr, len, conf.timeouts[STRING_S])!= len) {RETURN (1207);}
-#ifndef NOPSTDINT
param->statscli64 += len;
-#else
- param->statscli += len;
-#endif
myfree(verstr);
verstr = mystrdup(buf);
len = sockgetlinebuf(param, SERVER, buf, 240, '\n', conf.timeouts[STRING_S]);
if(len < 10) RETURN(1208);
-#ifndef NOPSTDINT
param->statssrv64 += len;
-#else
- param->statssrv += len;
-#endif
strcpy(buf, verstr);
}
@@ -198,11 +190,7 @@ void * msnprchild(struct clientparam* param) {
if(socksend(param->remsock, buf, len, conf.timeouts[STRING_S])!= len) {RETURN (1207);}
-#ifndef NOPSTDINT
param->statscli64 += len;
-#else
- param->statscli += len;
-#endif
if(sec){
RETURN(sockmap(param, conf.timeouts[CONNECTION_L]));
diff --git a/src/pop3p.c b/src/pop3p.c
index f5ac9b7..c3a7ef6 100644
--- a/src/pop3p.c
+++ b/src/pop3p.c
@@ -43,11 +43,7 @@ void * pop3pchild(struct clientparam* param) {
socksend(param->remsock, param->extusername, (int)strlen((char *)param->extusername), conf.timeouts[STRING_S]) <= 0 ||
socksend(param->remsock, (unsigned char *)"\r\n", 2, conf.timeouts[STRING_S])!=2)
{RETURN(623);}
-#ifndef NOPSTDINT
param->statscli64 += (uint64_t)(strlen((char *)param->extusername) + 7);
-#else
- param->statscli += (int)(strlen((char *)param->extusername) + 7);
-#endif
param->nwrites++;
RETURN (sockmap(param, 180));
CLEANRET:
diff --git a/src/proxy.c b/src/proxy.c
index b09176b..36f201b 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -217,11 +217,7 @@ void * proxychild(struct clientparam* param) {
unsigned char *ftpbase=NULL;
unsigned char username[1024];
int keepalive = 0;
-#ifndef NOPSTDINT
uint64_t contentlength64 = 0;
-#else
- unsigned long contentlength = 0;
-#endif
int hascontent =0;
int isconnect = 0;
int redirect = 0;
@@ -392,7 +388,6 @@ for(;;){
while( (i = sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, '\n', conf.timeouts[STRING_S])) > 2){
if(i> 15 && (!strncasecmp((char *)(buf), "content-length", 14))){
buf[i]=0;
-#ifndef NOPSTDINT
sscanf((char *)buf + 15, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
}
}
@@ -401,16 +396,6 @@ for(;;){
contentlength64-=i;
}
contentlength64 = 0;
-#else
- sscanf((char *)buf + 15, "%lu", &contentlength);
- }
- }
- while( contentlength > 0 && (i = sockgetlinebuf(param, CLIENT, buf, (BUFSIZE < contentlength)? BUFSIZE - 1:contentlength, '\n', conf.timeouts[STRING_S])) > 0){
- if ((unsigned long)i > contentlength) break;
- contentlength-=i;
- }
- contentlength = 0;
-#endif
if(param->password)myfree(param->password);
param->password = myalloc(32);
param->pwtype = 2;
@@ -507,19 +492,11 @@ for(;;){
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
-#ifndef NOPSTDINT
sscanf(sb, "%"PRINTF_INT64_MODIFIER"u",&contentlength64);
if(param->maxtrafout64 && (param->maxtrafout64 < param->statscli64 || contentlength64 > param->maxtrafout64 - param->statscli64)){
RETURN(10);
}
if(param->ndatfilterscli > 0 && contentlength64 > 0) continue;
-#else
- sscanf(sb, "%lu",&contentlength);
- if(param->maxtrafout && (param->maxtrafout < param->statscli || (unsigned)contentlength > param->maxtrafout - param->statscli)){
- RETURN(10);
- }
- if(param->ndatfilterscli > 0 && contentlength > 0) continue;
-#endif
}
inbuf += i;
if((bufsize - inbuf) < LINESIZE){
@@ -550,34 +527,19 @@ for(;;){
RETURN(0);
}
if(action != PASS) RETURN(517);
-#ifndef NOPSTDINT
if(param->ndatfilterscli > 0 && contentlength64 > 0){
uint64_t newlen64;
newlen64 = sockfillbuffcli(param, (unsigned long)contentlength64, CONNECTION_S);
if(newlen64 == contentlength64) {
-#else
- if(param->ndatfilterscli > 0 && contentlength > 0){
- unsigned long newlen;
- newlen = sockfillbuffcli(param, contentlength, CONNECTION_S);
- if(newlen == contentlength) {
-#endif
action = handledatfltcli(param, ¶m->clibuf, ¶m->clibufsize, 0, ¶m->cliinbuf);
if(action == HANDLED){
RETURN(0);
}
if(action != PASS) RETURN(517);
-#ifndef NOPSTDINT
contentlength64 = param->cliinbuf;
-#else
- contentlength = param->cliinbuf;
-#endif
param->ndatfilterscli = 0;
}
-#ifndef NOPSTDINT
sprintf((char*)buf+strlen((char *)buf), "Content-Length: %"PRINTF_INT64_MODIFIER"u\r\n", contentlength64);
-#else
- sprintf((char*)buf+strlen((char *)buf), "Content-Length: %lu\r\n", contentlength);
-#endif
}
#endif
@@ -657,11 +619,7 @@ for(;;){
socksend(param->clisock, (unsigned char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
s = param->remsock;
param->remsock = ftps;
-#ifndef NOPSTDINT
if((param->operation == FTP_PUT) && (contentlength64 > 0)) param->waitclient64 = contentlength64;
-#else
- if((param->operation == FTP_PUT) && (contentlength > 0)) param->waitclient = contentlength;
-#endif
res = sockmap(param, conf.timeouts[CONNECTION_L]);
if (res == 99) res = 0;
so._closesocket(ftps);
@@ -863,11 +821,7 @@ for(;;){
if(socksend(param->remsock, req , (res = (int)strlen((char *)req)), conf.timeouts[STRING_L]) != res) {
RETURN(518);
}
-#ifndef NOPSTDINT
param->statscli64 += res;
-#else
- param->statscli += res;
-#endif
param->nwrites++;
}
inbuf = 0;
@@ -899,16 +853,11 @@ for(;;){
if ((res = socksend(param->remsock, buf+reqlen, (int)strlen((char *)buf+reqlen), conf.timeouts[STRING_S])) != (int)strlen((char *)buf+reqlen)) {
RETURN(518);
}
-#ifndef NOPSTDINT
param->statscli64 += res;
-#else
- param->statscli += res;
-#endif
param->nwrites++;
if(param->bandlimfunc) {
sleeptime = param->bandlimfunc(param, 0, (int)strlen((char *)buf));
}
-#ifndef NOPSTDINT
if(contentlength64 > 0){
param->nolongdatfilter = 0;
param->waitclient64 = contentlength64;
@@ -919,18 +868,6 @@ for(;;){
}
}
contentlength64 = 0;
-#else
- if(contentlength > 0){
- param->nolongdatfilter = 0;
- param->waitclient = contentlength;
- res = sockmap(param, conf.timeouts[CONNECTION_S]);
- param->waitclient = 0;
- if(res != 99) {
- RETURN(res);
- }
- }
- contentlength = 0;
-#endif
inbuf = 0;
ckeepalive = keepalive;
res = 0;
@@ -963,21 +900,13 @@ for(;;){
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
-#ifndef NOPSTDINT
sscanf(sb, "%"PRINTF_INT64_MODIFIER"u", &contentlength64);
-#else
- sscanf(sb, "%lu", &contentlength);
-#endif
hascontent = 1;
if(param->unsafefilter && param->ndatfilterssrv > 0) {
hascontent = 2;
continue;
}
-#ifndef NOPSTDINT
if(param->maxtrafin64 && (param->maxtrafin64 < param->statssrv64 || contentlength64 + param->statssrv64 > param->maxtrafin64)){
-#else
- if(param->maxtrafin && (param->maxtrafin < param->statssrv || (unsigned)contentlength > param->maxtrafin - param->statssrv)){
-#endif
RETURN(10);
}
}
@@ -1006,11 +935,7 @@ for(;;){
}
if((res == 304 || res == 204) && !hascontent){
hascontent = 1;
-#ifndef NOPSTDINT
contentlength64 = 0;
-#else
- contentlength = 0;
-#endif
}
if(param->bandlimfunc) {
int st1;
@@ -1034,7 +959,6 @@ for(;;){
param->nolongdatfilter = 0;
-#ifndef NOPSTDINT
if (conf.filtermaxsize && contentlength64 > (uint64_t)conf.filtermaxsize) {
param->nolongdatfilter = 1;
}
@@ -1054,27 +978,6 @@ for(;;){
}
}
if (contentlength64 > 0 && hascontent != 1) ckeepalive = 0;
-#else
- if (conf.filtermaxsize && contentlength > (unsigned long)conf.filtermaxsize) {
- param->nolongdatfilter = 1;
- }
- else if(param->unsafefilter && param->ndatfilterssrv > 0 && contentlength > 0 && param->operation != HTTP_HEAD && res != 204 && res != 304){
- unsigned long newlen;
- newlen = sockfillbuffsrv(param, (unsigned long) contentlength, CONNECTION_S);
- if(newlen == contentlength) {
- action = handledatfltsrv(param, ¶m->srvbuf, ¶m->srvbufsize, 0, ¶m->srvinbuf);
- param->nolongdatfilter = 1;
- if(action == HANDLED){
- RETURN(0);
- }
- if(action != PASS) RETURN(517);
- contentlength = param->srvinbuf;
- sprintf((char*)buf+strlen((char *)buf), "Content-Length: %lu\r\n", contentlength);
- hascontent = 1;
- }
- }
- if (contentlength > 0 && hascontent != 1) ckeepalive = 0;
-#endif
#else
#endif
if(!isconnect || param->operation){
@@ -1093,11 +996,7 @@ for(;;){
RETURN(521);
}
}
-#ifndef NOPSTDINT
if((param->chunked || contentlength64 > 0) && param->operation != HTTP_HEAD && res != 204 && res != 304) {
-#else
- if((param->chunked || contentlength > 0) && param->operation != HTTP_HEAD && res != 204 && res != 304) {
-#endif
do {
if(param->chunked){
char smallbuf[32];
@@ -1122,32 +1021,18 @@ for(;;){
break;
}
smallbuf[i] = 0;
-#ifndef NOPSTDINT
contentlength64 = 0;
sscanf(smallbuf, "%"PRINTF_INT64_MODIFIER"x", &contentlength64);
if(contentlength64 == 0) {
-#else
- contentlength = 0;
- sscanf(smallbuf, "%lx", &contentlength);
- if(contentlength == 0) {
-#endif
param->chunked = 2;
}
}
if(param->chunked != 2){
-#ifndef NOPSTDINT
param->waitserver64 = contentlength64;
-#else
- param->waitserver = contentlength;
-#endif
if((res = sockmap(param, conf.timeouts[CONNECTION_S])) != 98){
RETURN(res);
}
-#ifndef NOPSTDINT
param->waitserver64 = 0;
-#else
- param->waitserver = 0;
-#endif
}
} while(param->chunked);
}
@@ -1160,11 +1045,7 @@ for(;;){
else if(!hascontent && !param->chunked) {
RETURN(sockmap(param, conf.timeouts[CONNECTION_S]));
}
-#ifndef NOPSTDINT
contentlength64 = 0;
-#else
- contentlength = 0;
-#endif
REQUESTEND:
if((!ckeepalive || !keepalive) && param->remsock != INVALID_SOCKET){
diff --git a/src/smtpp.c b/src/smtpp.c
index f736119..8c17e73 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -191,11 +191,7 @@ void * smtppchild(struct clientparam* param) {
ul = param->extip;
i = sprintf(buf, "EHLO [%lu.%lu.%lu.%lu]\r\n", ((ul&0xFF000000)>>24), ((ul&0x00FF0000)>>16), ((ul&0x0000FF00)>>8), ((ul&0x000000FF)));
if(socksend(param->remsock, buf, i, conf.timeouts[STRING_S])!= i) {RETURN(673);}
-#ifndef NOPSTDINT
param->statscli64+=i;
-#else
- param->statscli+=i;
-#endif
param->nwrites++;
login = 0;
do {
@@ -213,42 +209,26 @@ void * smtppchild(struct clientparam* param) {
}
if ((login & 1)) {
socksend(param->remsock, "AUTH LOGIN\r\n", 12, conf.timeouts[STRING_S]);
-#ifndef NOPSTDINT
param->statscli64+=12;
-#else
- param->statscli+=12;
-#endif
param->nwrites++;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(680);}
en64(param->extusername, buf, (int)strlen(param->extusername));
socksend(param->remsock, buf, (int)strlen(buf), conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
-#ifndef NOPSTDINT
param->statscli64+=(i+2);
-#else
- param->statscli+=(i+2);
-#endif
param->nwrites+=2;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(681);}
en64(param->extpassword, buf, (int)strlen(param->extpassword));
socksend(param->remsock, buf, (int)strlen(buf), conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
-#ifndef NOPSTDINT
param->statscli64+=(i+2);
-#else
- param->statscli+=(i+2);
-#endif
param->nwrites+=2;
}
else if((login & 2)){
socksend(param->remsock, "AUTH PLAIN\r\n", 12, conf.timeouts[STRING_S]);
-#ifndef NOPSTDINT
param->statscli64+=(12);
-#else
- param->statscli+=(12);
-#endif
param->nwrites++;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
if(i<4 || strncasecmp((char *)buf, "334", 3)) {RETURN(682);}
@@ -263,11 +243,7 @@ void * smtppchild(struct clientparam* param) {
i = (int)strlen(buf);
socksend(param->remsock, buf, i, conf.timeouts[STRING_S]);
socksend(param->remsock, "\r\n", 2, conf.timeouts[STRING_S]);
-#ifndef NOPSTDINT
param->statscli64+=(i+2);
-#else
- param->statscli+=(i+2);
-#endif
param->nwrites+=2;
}
if(command) {
diff --git a/src/sockgetchar.c b/src/sockgetchar.c
index c507b6b..0041fdf 100644
--- a/src/sockgetchar.c
+++ b/src/sockgetchar.c
@@ -126,11 +126,7 @@ int sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec
if((len = sockrecvfrom(param->remsock, ¶m->sinc, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
param->srvinbuf += len;
param->nreads++;
-#ifndef NOPSTDINT
param->statssrv64 += len;
-#else
- param->statssrv += len;
-#endif
}
return param->srvinbuf;
}
@@ -156,11 +152,7 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
param->srvinbuf = len;
param->srvoffset = 1;
param->nreads++;
-#ifndef NOPSTDINT
param->statssrv64 += len;
-#else
- param->statssrv += len;
-#endif
return (int)*param->srvbuf;
}
diff --git a/src/sockmap.c b/src/sockmap.c
index a039322..d2a2eca 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -13,11 +13,7 @@
int sockmap(struct clientparam * param, int timeo){
int res=0;
-#ifndef NOPSTDINT
uint64_t sent=0, received=0;
-#else
- unsigned sent=0, received=0;
-#endif
SASIZETYPE sasize;
struct pollfd fds[2];
int sleeptime = 0, stop = 0;
@@ -36,20 +32,12 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Starting sockets mapping");
#endif
-#ifndef NOPSTDINT
if(!param->waitclient64){
-#else
- if(!param->waitclient){
-#endif
if(!param->srvbuf && (!(param->srvbuf=myalloc(bufsize)) || !(param->srvbufsize = bufsize))){
return (21);
}
}
-#ifndef NOPSTDINT
if(!param->waitserver64){
-#else
- if(!param->waitserver){
-#endif
if(!param->clibuf && (!(param->clibuf=myalloc(bufsize)) || !(param->clibufsize = bufsize))){
return (21);
}
@@ -81,7 +69,6 @@ int sockmap(struct clientparam * param, int timeo){
while (!stop&&!conf.timetoexit){
sasize = sizeof(struct sockaddr_in);
-#ifndef NOPSTDINT
if((param->maxtrafin64 && param->statssrv64 >= param->maxtrafin64) || (param->maxtrafout64 && param->statscli64 >= param->maxtrafout64)){
return (10);
}
@@ -90,47 +77,25 @@ int sockmap(struct clientparam * param, int timeo){
(*param->srv->logfunc)(param, NULL);
fds[0].events = fds[1].events = 0;
if(param->srvinbuf > param->srvoffset && !param->waitclient64) {
-#else
- if((param->maxtrafin && param->statssrv >= param->maxtrafin) || (param->maxtrafout && param->statscli >= param->maxtrafout)){
- return (10);
- }
- if((param->srv->logdumpsrv && (param->statssrv > param->srv->logdumpsrv)) ||
- (param->srv->logdumpcli && (param->statscli > param->srv->logdumpcli)))
- (*param->srv->logfunc)(param, NULL);
- fds[0].events = fds[1].events = 0;
- if(param->srvinbuf > param->srvoffset && !param->waitclient) {
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "will send to client");
#endif
fds[0].events |= POLLOUT;
}
-#ifndef NOPSTDINT
if((param->srvbufsize - param->srvinbuf) > minsize && !param->waitclient64 && (!param->waitserver64 ||(received + param->srvinbuf - param->srvoffset < param->waitserver64))) {
-#else
- if((param->srvbufsize - param->srvinbuf) > minsize && !param->waitclient && (!param->waitserver ||(received + param->srvinbuf - param->srvoffset < param->waitserver))) {
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will recv from server");
#endif
fds[1].events |= POLLIN;
}
-#ifndef NOPSTDINT
if(param->cliinbuf > param->clioffset && !param->waitserver64) {
-#else
- if(param->cliinbuf > param->clioffset && !param->waitserver) {
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will send to server");
#endif
fds[1].events |= POLLOUT;
}
-#ifndef NOPSTDINT
if((param->clibufsize - param->cliinbuf) > minsize && !param->waitserver64 &&(!param->srv->singlepacket || param->service != S_UDPPM) ) {
-#else
- if((param->clibufsize - param->cliinbuf) > minsize && !param->waitserver &&(!param->srv->singlepacket || param->service != S_UDPPM) ) {
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "Will recv from client");
#endif
@@ -163,11 +128,7 @@ int sockmap(struct clientparam * param, int timeo){
if(param->bandlimfunc) {
sleeptime = (*param->bandlimfunc)(param, param->srvinbuf - param->srvoffset, 0);
}
-#ifndef NOPSTDINT
res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sinc, sasize);
-#else
- res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver || ((unsigned)param->waitserver - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : param->waitserver - received, 0, (struct sockaddr*)¶m->sinc, sasize);
-#endif
if(res < 0) {
if(errno != EAGAIN) return 96;
continue;
@@ -175,11 +136,7 @@ int sockmap(struct clientparam * param, int timeo){
param->srvoffset += res;
received += res;
if(param->srvoffset == param->srvinbuf) param->srvoffset = param->srvinbuf = 0;
-#ifndef NOPSTDINT
if(param->waitserver64 && param->waitserver64<= received){
-#else
- if(param->waitserver && param->waitserver<= received){
-#endif
return (98);
}
if(param->service == S_UDPPM && param->srv->singlepacket) {
@@ -196,11 +153,7 @@ int sockmap(struct clientparam * param, int timeo){
sl1 = (*param->bandlimfunc)(param, 0, param->cliinbuf - param->clioffset);
if(sl1 > sleeptime) sleeptime = sl1;
}
-#ifndef NOPSTDINT
res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
-#else
- res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient || ((unsigned)param->waitclient - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : param->waitclient - sent, 0, (struct sockaddr*)¶m->sins, sasize);
-#endif
if(res < 0) {
if(errno != EAGAIN) return 97;
continue;
@@ -209,13 +162,8 @@ int sockmap(struct clientparam * param, int timeo){
if(param->clioffset == param->cliinbuf) param->clioffset = param->cliinbuf = 0;
sent += res;
param->nwrites++;
-#ifndef NOPSTDINT
param->statscli64 += res;
if(param->waitclient64 && param->waitclient64<= sent) {
-#else
- param->statscli += res;
- if(param->waitclient && param->waitclient<= sent) {
-#endif
return (99);
}
}
@@ -267,11 +215,7 @@ int sockmap(struct clientparam * param, int timeo){
}
param->srvinbuf += res;
param->nreads++;
-#ifndef NOPSTDINT
param->statssrv64 += res;
-#else
- param->statssrv += res;
-#endif
if(!param->nolongdatfilter){
action = handledatfltsrv(param, ¶m->srvbuf, ¶m->srvbufsize, param->srvinbuf - res, ¶m->srvinbuf);
if(action == HANDLED){
@@ -293,42 +237,26 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "finished with mapping");
#endif
-#ifndef NOPSTDINT
while(!param->waitclient64 && param->srvinbuf > param->srvoffset && param->clisock != INVALID_SOCKET){
-#else
- while(!param->waitclient && param->srvinbuf > param->srvoffset && param->clisock != INVALID_SOCKET){
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to client");
#endif
res = socksendto(param->clisock, ¶m->sinc, param->srvbuf + param->srvoffset, param->srvinbuf - param->srvoffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->srvoffset += res;
-#ifndef NOPSTDINT
param->statssrv64 += res;
-#else
- param->statssrv += res;
-#endif
if(param->srvoffset == param->srvinbuf) param->srvoffset = param->srvinbuf = 0;
}
else break;
}
-#ifndef NOPSTDINT
while(!param->waitserver64 && param->cliinbuf > param->clioffset && param->remsock != INVALID_SOCKET){
-#else
- while(!param->waitserver && param->cliinbuf > param->clioffset && param->remsock != INVALID_SOCKET){
-#endif
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to server");
#endif
res = socksendto(param->remsock, ¶m->sins, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->clioffset += res;
-#ifndef NOPSTDINT
param->statscli64 += res;
-#else
- param->statscli += res;
-#endif
if(param->cliinbuf == param->clioffset) param->cliinbuf = param->clioffset = 0;
}
else break;
diff --git a/src/socks.c b/src/socks.c
index e53250b..5bdba1d 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -339,11 +339,7 @@ fflush(stderr);
param->res = 467;
break;
}
-#ifndef NOPSTDINT
param->statscli64+=(len - i);
-#else
- param->statscli+=(len - i);
-#endif
param->nwrites++;
#if SOCKSTRACE > 1
fprintf(stderr, "UDP packet relayed from client to %s:%hu size %d, header %d\n",
@@ -370,11 +366,7 @@ fflush(stderr);
param->res = 468;
break;
}
-#ifndef NOPSTDINT
param->statssrv64+=len;
-#else
- param->statssrv+=len;
-#endif
param->nreads++;
memcpy(buf+4, &tsin.sin_addr.s_addr, 4);
memcpy(buf+8, &tsin.sin_port, 2);
diff --git a/src/structures.h b/src/structures.h
index a6e964f..40f6268 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -8,6 +8,9 @@
#include
#ifndef NOPSTDINT
#include "pstdint.h"
+#else
+typedef unsigned long uint64_t
+#define PRINTF_INT64_MODIFIER "l"
#endif
#ifdef __cplusplus
extern "C" {
@@ -260,15 +263,8 @@ struct trafcount {
struct ace *ace;
unsigned number;
ROTATION type;
-#ifndef NOPSTDINT
uint64_t traf64;
uint64_t traflim64;
-#else
- unsigned long traf;
- unsigned long trafgb;
- unsigned long traflim;
- unsigned long traflimgb;
-#endif
char * comment;
int disabled;
time_t cleared;
@@ -385,13 +381,8 @@ struct clientparam {
int res,
status;
-#ifndef NOPSTDINT
uint64_t waitclient64,
waitserver64;
-#else
- unsigned waitclient,
- waitserver;
-#endif
int pwtype,
threadid,
weight,
@@ -416,26 +407,15 @@ struct clientparam {
clibufsize,
srvbufsize,
msec_start;
-#ifndef NOPSTDINT
uint64_t
maxtrafin64,
maxtrafout64;
-#else
- unsigned
- maxtrafin,
- maxtrafout;
-#endif
struct sockaddr_in sinc,
sins,
req;
-#ifndef NOPSTDINT
uint64_t statscli64,
statssrv64;
-#else
- unsigned long statscli,
- statssrv;
-#endif
unsigned long
nreads,
nwrites,
diff --git a/src/webadmin.c b/src/webadmin.c
index 516a04b..a4e6760 100644
--- a/src/webadmin.c
+++ b/src/webadmin.c
@@ -475,7 +475,6 @@ void * adminchild(struct clientparam* param) {
);
}
else {
-#ifndef NOPSTDINT
inbuf += sprintf(buf+inbuf,
"%"PRINTF_INT64_MODIFIER"u | "
"MB%s | "
@@ -486,18 +485,6 @@ void * adminchild(struct clientparam* param) {
cp->traf64,
cp->cleared?ctime(&cp->cleared):"never"
);
-#else
- inbuf += sprintf(buf+inbuf,
- "%.3f | "
- "MB%s | "
- "%.3f MB | "
- "%s | ",
- (1024.0 * (float)cp->traflimgb) + (float)cp->traflim/1048576.0,
- rotations[cp->type],
- (1024.0 * (float)cp->trafgb) + (float)cp->traf/1048576.0,
- cp->cleared?ctime(&cp->cleared):"never"
- );
-#endif
inbuf += sprintf(buf + inbuf,
"%s | "
"%i | "
From 17835c4d6633fa9f4e4aa6e30b51950e038bf470 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Mon, 14 Apr 2014 23:58:11 +0400
Subject: [PATCH 008/122] resolving compilation issues
---
src/3proxy.c | 7 ++++---
src/auth.c | 13 -------------
src/structures.h | 16 ++++++++++++++++
3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index af1bb44..5c88298 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -9,6 +9,7 @@
#include "proxy.h"
#ifndef _WIN32
+#include
#ifndef NOPLUGINS
#include
#endif
@@ -644,7 +645,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.isudp = 0;
childdef.service = S_PROXY;
childdef.helpmessage = " -n - no NTLM support\n";
- if(!resolvfunc || (resolvfunc == myresolver && !dns_table->hashsize)){
+ if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, proxy may run very slow\n", linenum);
}
}
@@ -675,7 +676,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.isudp = 0;
childdef.service = S_SOCKS;
childdef.helpmessage = " -n - no NTLM support\n";
- if(!resolvfunc || (resolvfunc == myresolver && !dns_table->hashsize)){
+ if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, socks may run very slow\n", linenum);
}
}
@@ -718,7 +719,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.port = 53;
childdef.isudp = 1;
childdef.service = S_DNSPR;
- if(!resolvfunc || (resolvfunc == myresolver && !dns_table->hashsize) || resolvfunc == fake_resolver){
+ if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize) || resolvfunc == fakeresolver){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, dnspr will not work as expected\n", linenum);
}
}
diff --git a/src/auth.c b/src/auth.c
index 93b24f5..9ccb124 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -865,19 +865,6 @@ struct auth authfuncs[] = {
};
-struct hashentry {
- unsigned char hash[sizeof(unsigned)*4];
- unsigned long value;
- time_t expires;
- struct hashentry *next;
-};
-
-struct hashtable {
- unsigned hashsize;
- struct hashentry ** hashtable;
- struct hashentry * hashvalues;
- struct hashentry * hashempty;
-};
struct hashtable dns_table = {0, NULL, NULL, NULL};
diff --git a/src/structures.h b/src/structures.h
index 40f6268..b0058d3 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -530,6 +530,22 @@ struct child {
unsigned char **argv;
};
+struct hashentry {
+ unsigned char hash[sizeof(unsigned)*4];
+ unsigned long value;
+ time_t expires;
+ struct hashentry *next;
+};
+
+struct hashtable {
+ unsigned hashsize;
+ struct hashentry ** hashtable;
+ struct hashentry * hashvalues;
+ struct hashentry * hashempty;
+};
+
+extern struct hashtable dns_table;
+
struct sockfuncs {
#ifdef _WIN32
SOCKET (WINAPI *_socket)(int domain, int type, int protocol);
From 2eee9d2e9860a9af227dfd4949d05bf629f6b05b Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Tue, 15 Apr 2014 00:13:42 +0400
Subject: [PATCH 009/122] Changelogs
---
Changelog | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Changelog b/Changelog
index 8ed688e..6bfcd9d 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,6 @@
+15.04.2014
+! adding warnings for most common misconfigurations
+
10.04.2014
! switching to 64-bit integers where possible.
proxy should now support downloading for files > 4GB.
From faf5b4b124e2eaa8c08e21315cff7fca3589f436 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Tue, 15 Apr 2014 02:41:39 +0400
Subject: [PATCH 010/122] Removing Changelog from git
---
.gitignore | 1 +
Changelog | 2223 ----------------------------------------------------
2 files changed, 1 insertion(+), 2223 deletions(-)
delete mode 100644 Changelog
diff --git a/.gitignore b/.gitignore
index 4bd7388..73f884f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@ tmp/
*.swp
*.o
*.idb
+Changelog
src/version.h
src/res
version.c
diff --git a/Changelog b/Changelog
deleted file mode 100644
index 6bfcd9d..0000000
--- a/Changelog
+++ /dev/null
@@ -1,2223 +0,0 @@
-15.04.2014
-! adding warnings for most common misconfigurations
-
-10.04.2014
-! switching to 64-bit integers where possible.
- proxy should now support downloading for files > 4GB.
-
-
-08.04.2014
-Releasing as 0.7
-Significant changes since 0.6.1:
-!! auth iponly by default
-! maxconn is 500 by default
-! Improved HTTP/1.1 compatibility
-! Functionality bugfixes
-+ Few new plugins
-
-11.07.2012
-! fixed: counters over 4GB in webadmin
-
-26.06.2012
-! OpenSSL thread support functions added to SSL plugin
-
-10.05.2012
-! SSL plugin works. Commands to enable/disable SSL spoofing will be added later.
-
-25.04.2012
-! pcre_rewrite slash sequence logic corrected
-
-16.04.2012
-+ Added: SSLPlugin for SSL decryption with certificates spoofing
-
-12.04.2012
-+ Added: new filter callback function type (pre data filter) for things like SSL/TLS, gzip, etc.
- WARNING: all plugins with filter functions need to be reviewed for compatibility
-
-06.02.2012
-+ Added: transparent redirection plugin for linux. Automatically detects redirection
- address if traffic is redirected via iptables
-
-15.08.2011
-! Fixed: 100% CPU because of usleep with large value on NetBSD
-
-11.06.2011
-+ Support for extusername/extpassword added to smtpp
-
-04.06.2011
-! Fixed: web admin access
-! Fixed: wrong error code in logfile in some rare cases
-! Migrated to VC 9.0 compiler
-
-14.04.2011
-! Authentication: do not request username/password in mixed authentication
- if all modules deny access.
-
-12.04.2011
-! Minor code cleanup
-
-17.12.2010
-- Debugging output to stdout removed
-
-09.12.2010
-! Code cleanup for sockets mapping and chunked encoding,
-! Content-Length up to 4GB
-
-25.11.2010
-+ System locale handling added for mixed case username in WindowAuthentication
-
-13.11.2010
-+ Plugin utf8tocp1251 added to automatically detect UTF-8 (used by Chrome and
- Opera in username/password.
-
- usage
-
- plugin "utf8tocp1251" utf8tocp1251
- auth utf8tocp1251 strong
-
- or
-
- auth utf8tocp1251 cache windows
-
-
-11.11.2010
-! encoding paramter added to WWW-Authenticate and Proxy-Authenticate headers in
- .3ps files according to
- http://tools.ietf.org/id/draft-reschke-basicauth-enc-01.txt
-
-12.08.2010
-! Removed getservbyport() from webadmin to avoid potential race condition
-
-09.08.2010
-! Default .3ps files corrected
-
-26.06.2010
-! Fixed: keep-alive connections detection for HTTP/1.1
-
-10.12.2009
-! Fixed: external address may be incorrectly set if few requests are
- received in single connection.
-
-02.12.2009
-! zero sockaddr before bind for some FreeBSD versions compatibity
-
-26.10.2009
-! Some changes for MD4/MD5 libraries 64-bit compatibility
-
-01.10.2009
-! Fixed: Content-Length is sent twice to server if there are content-handling
- plugins.
-
-17.09.2009
-! Makefile.Linux: add3proxyuser.sh moved to INSTALL_CFG_OBJS
- (thanks to Martin Wanicki)
-+ Functionality added to intercept all socket-related calls for plugins
-
-03.09.2009
-! Fixed: client connection was not closed on removed Content-Length (may
- cause connection hang for timeout at the end of large file transfer
- if filtering plugins are used).
-
-24.08.2009
-+ Added transparent redirection to ICQ and MSN proxy
-+ Added (untested) Last.fm ripper plugin - initial version, code needs to be
- cleaned to work under *nix. Thanks to Denis Stanishevskiy.
-
-14.08.2009
-+ WinCE (Windows Mobile) support added
-
-27.07.2009
-! Fixed: use authnserver for name match check if configured
-
-22.07.2009
-+ authnserver command added (nserver to use only with auth dnsname)
-
-13.07.2009
-+ man pages for smtpp and icqpr added
-! traffic correction plugin logics fixed
-
-10.07.2009
-+ 3proxy configuration parser: support added for empty strings ("").
-
-09.07.2009
-+ dnsname authentication added (auth dnsname) - puts validated reverse DNS
- record (PTR) instead of username
-+ PCREPlugin: Added: \r, \n support from pcre_rewrite rewrite string. Use \0
- for empty string
-+ PCREPlugin: Added: * may be used instead of regex (no regex is created
- and checked in this case)
-
-24.06.2009
-! random redirections are really fixed (incomplete fix on 08.04.2009)
-! icqpr "Need recync" problem fixed
-! disable NTLM by default (because of Windows Vista) until NTLMv2 implemented
-! set auth iponly to be default
-
-
-08.04.2009
-! Fixed: distribution between parent proxies was not even because of
- non-linear probability
-
-18.03.2009
-! Marking as 0.7-devel
-
-06.03.2009
-! Fixed: filters were applied in reverse order
-
-25.02.2009
-! Fixed: beginning of HTTP data may be not passed to filter
-
-22.02.2009
-! handle Content-Length as unsigned long to allow files > 2GB.
-
-10.02.2009
-! Ldapauth plugin corrected according to changes on 02.02.2009
-
-02.02.2009
-+ countout / nocountout commands added
-! Added workaround for Mac OS X / iPhone OS poll() (mis)behaviour.
-
-30.01.2009
-! Flush buffer in case of POLLxxx - probably required for Mac OS X / iPhone OS
-
-24.01.2009
-! Changed WindowsAuthentication to convert username to lowercase
-
-10.12.2008
-! Fixed: login may hang in ftppr in case of large server banner
-
-30.10.2008
-! WindowsAuthentication plugin may sometimes fail with 100122 error
- on startup because of uninitialized variable.
-
-30.09.2008
-! -lXXX moved to $LIBS in Makefiles for linkers compatibility
-+ 3proxy for Dummies v.1.2 by Kurmaeff Halit added (in Russian)
-
-26.08.2008
-! Fixed: end of chunked-encoded page may be incorrectly detected
-
-24.07.2008
-! Fixed: buffering problem on multiple chunks
-
-21.07.2008
-! Previous fix was incomplete
-
-13.07.2008
- Thanks to Hostile Fork:
-! Fixed directory listing building for some rare FTP servers (e.g. HP)
-! Fixed (probably) chunked encoding should now work. REQUIRES TESTING.
- please report, if you have problems with chunked.
-
-
-11.05.2008
-+ minor plugin interface additions
-
-03.05.2008
-+ pcre_options implemented
-
-24.04.2008
-! Fixed: bandlimsout may not work if both bandlimsin and bandlimsout
- are configured.
-
-01.04.2008
-! Fixed: chunked was actually converted to non-chunked
-
-25.03.2008
-+ HTTP chunked support (hopefully) added, not tested yet
-
-13.02.2008
-! Do not shutdown listening socket
-! FTPPR was broken on 10.02 fix
-! ':' may be encoded in ftp:// URI's in proxy
-
-12.02.2008
-! LOGIN and PLAIN authentication were swapped in smtpp.
-
-10.02.2008
-! FTPPR: potential race condition on socket close fixed
-
-07.02.2008
-! MSN: message channels were not captured
-
-05.02.2008
-! Use CDATA for XML data in webadmin module
-
-03.02.2008
-+ MSN / Live messenger proxy (msnpr) addded
-
-02.02.2008
-! Fixed: counters may be flushed on configureation reload
-
-01.02.2008
-! Work with counters with more safe way on configuration reload
-
-28.01.2008
-! Do not compile empty PCRE
-
-17.01.2008
-+ APPE support added to ftppr
-! Fixed problem with counters dumping on reload
-
-16.01.2008
-+ reqip/reqport added to XML data export
-
-15.01.2008
-! cache auth: set default cache type to user/password with 600 sec timeout
-
-14.01.2008
-! Fixed EAGAIN handling in sockmap
-! Fixed: plugins: some data may be sent to the filter functions more than once
- on incomplete send.
-! int * offset_p changed to int offset in plugins interface
-
-13.01.2008
-! icqpr: fixed new services request hijacking
-
-12.01.2008
-+ icqpr: added support for ICQ 6.0 greeting
-+ icqpr: added support for insecure authentication
-+ icqpr: added support for server migration
-
-11.01.2008
-+ Support for new service requests hijacking added to icqpr
-! Fixed: icqpr: sequence number can be > 0x8000 in current protocol verion
-
-10.01.2008
-! Fixed few rare cases where small amount of data may pass in/out statistics
- (e.g parent proxy request/response).
-
-09.01.2008
-+ Initial version of icqpr (ICQ proxy). Use it as portmapper to ICQ server:
- You can also control access by UIN (use 'auth useronly'):
- auth useronly
- allow 1369139,1234567
- icqpr 5190 login.icq.com 5190
-! Corrected seconds fractions calculation in poll() emulation code
- (probably did not affected any functionality)
-! PCRE library updated to 7.4
-
-07.01.2008
-!! Error code is now 5-digit
-
-
-27.12.2007
-+ StringsPlugin now supports strings substitution for 'admin' service (Kirill Lopuchov)
-+ PamAuth plugin added (Kirill Lopuchov)
-+ LdapPlugin added (Kirill Lopuchov)
-
-19.12.2007
- Copyright text fixed in source files
-
-18.12.2007
-+ Export added for weadmin strings to use/replace in plugins
-
-17.12.2007
-+ Proxy-support: Session-Based-Authentication added for compatibility
- with NTLM/Negotiate authentication in IE7.
-
-03.12.2007
-! StringPlugin fixed
-
-23.11.2007
-+ Developer's documentation added
-
-19.11.2007
-! StringPlugin fixes (by Kirill Lopuchov)
-
-09.11.2007
-! Fixed: SOCKS5 authentication was broken some time ago
-
-28.10.2007
-! Fixed: do flush() if logged to file given with -l
-
-25.10.2007
-! Improper extparam structure initialization fixed (caused invalid behavior
-smtpp/pop3p/ftppr if no 'delimchar' configured after 11.10.2007)
-
-19.10.2007
-! StringsPlugin cleanup
-
-11.10.2007
-+ delimchar command added
-
-10.10.2007
-! Fixed: filters are lost on configuration reload
-+ Added chkconfig support to rc.d script
-
-09.10.2007
-! Fixed double addition of authentication function on WindowsAuthentication
- plugin
-
-25.09.2007
-! Outgoing AUTH LOGIN fixed for smtpp
-! Fixed multiline banners in smtpp
-+ smtpp: default server (-h) may be used without authentication
-
-11.09.2007
-! Documentation corrections, thanx to Vladimir Fesko
-
-30.08.2007
-! Fixed PCRE filter behaviour on configuration reload
-
-29.08.2007
-! Support added for in-line auth plain SMTP authentication. Default parent
- authentication is changed to LOGIN.
-
-25.08.2007
-! Fixed -h feature (double memory free after second connect)
-+ smtpp (SMTP proxy added). Supports both PLAIN and LOGIN for both client
- and server, supports default SMTP server.
-
-23.08.2007
-+ %e format specificator added for exaternal IP logging.
-
-22.08.2007
-! dighost corrected to do not change file, if no replay from the server
- received.
-
-20.08.2007
-+ authcache password added
-! authcache user and user,ip corrected and crash fixed
-
-17.08.2007
-+ Documentation added for authentication cache
-
-16.08.2007
-+ Authentication cache created! New command:
- authcache authtype time
- e.g.
- authcache ip 600
- and new authentication type: cache, e.g.
- auth iponly cache strong
- Doesn't work with NTLM, Requires proxy -n!
-
-07.08.2007
-! define _MAX__TIME64_T, because Microsoft only mentions it in configuration
- and never actually defines it. Prevents crash on malformed/older counter
- file.
-
-03.08.2007
-+ 'nolog' command added to extend allow/deny rules (prevent logging
- for requests mathing allow/deny rules). nolog only affects last allow
- or deny command.
-+ 'weight' command added to extend allow/deny rules. E.g. 'weight 100'.
- weight only affects last allow/deny rule.
-
-31.07.2007
-! Error code changed to 100 on failed SOCKSv5 name resolution
-+ FAQ and documentation updates
-+ New command 'logdump' added, to create intermediate log records then given
- amount of data is archieved through connection
-+ New command 'filtermaxsize' to prevent filtering if expected Content-Length
- is greater than given value.
-
-21.07.2007
-! rm changed to del in Windows makefiles
-
-07.07.2007
-+ HTTP proxy code fixed to pre-buffer traffic and fix Content-Length in case of
- short files. For longer files Content-Length is not sent to client. It's safe
- now to change HTTP content within plugin.
- Result: pcre_rewrite works perfectly.
-
-05.07.2007
-+ Documentation improved.
-
-28.06.2007
-+ FTP server authentication fixed
-
-26.06.2007
-+ Request authentication for FTP server in HTTP proxy if anonymous logon fails
-
-18.06.2007
-! Documentation fixes
-
-11.06.2007
-! Fixed: \r in *nix installation scripts
-
-31.05.2007
-! PCRE: Fixed: replace on the string of different size
-! PCRE: Fixed: replace only replaces first match
-? PCRE: known problem: in HTTP if size changes after replacement it doesn't
- match Content-Length any more. Any workaround suggestions? Remove
- Content-Length on HTTP requests?
-
-07.05.2007
-! PCRE plugin only used first rule
-
-21.04.2007
-! Avoid usage of large stack buffer in proxy
-+ PCREPlugin is now somehow usefull
-
-20.04.2007
-! Minor code cleanup
-
-18.04.2007
-! Fixed: TraffCorrect plugin doesn't NULLify pointer after free()
-
-13.04.2007
-!! Potential buffer overflow fixed on transparent request handling
- thanks to big_gad_(at)_mail.ru
-
-12.04.2007
-! missed authentication type check in Windows Authentication plugin
-! fixed minor memory leak in tcppm
-
-11.04.2007
-! Compilation issue for structures.h introduced on 09.04 fixed
-
-09.04.2007
-! Minor code cleanup, documentation fixes, rus-win1251.3ps grammatics fixed.
-! *nix plugins compilation issue fixed
-
-08.04.2007
-! Bug fixed on socket mapping (introduced 06.04)
-! Some internal code review without functional changes
-! "parent type IP 0" is now used to specify external IP
- (like -eIP, but only for connections matching "allow")
-
-06.04.2007
-+ PCREPlugin added. Still in development, not all functionality is implemented.
-
-05.04.2007
-+ StringsPlugin by Kirill Lopuchov is imported
-
-21.03.07
-! Fixed: FTP listing is not shown on long FTP server greeting in HTTP proxy
-! Fixed: FTP listing may noy be shown on specific server timing in HTTP proxy
-
-19.03.07
-! TraffCorrect plugin NULL pointer fixed
-
-16.03.07
-+ It's now possible to use hostnames and patterns in destination ACL. Hostname
- is checked against requested hostname. Hostnames and networks may be mixed.
- Example:
- deny * * *sex*,*porn*,localhost,192.168.0.0/16
- '*' can not be uses in the middle of the hostname. www*com is invalid
- pattern.
-! BINDIR changed to BUILDDIR in Makefiles to avoid collision with install
- on Linux.
-
-15.03.07
-! Documentation update
-
-13.03.07
-+ It's possible to use hostnames in ACL, but it should not be dynamic or
- multihomed host because hotname is translated to IP immediately.
-
-01.03.07
-! fixed: unnecessary mutex_unlock on trafcounter mutex
-! Cosmetic changes
-
-28.02.07
-+ FTP put support added for HTTP proxy
-! Code cleanups (few warnings fixed)
-! Makefile.Linux changed (by request of Jari Aalto)
-
-22.02.07
-! fixed: ftppr may delay on file uploading
-
-20.02.07
-+ Minor improvements in schedule-handling code
-
-14.02.07
-! Previous FTP (24.12.06) fix was ineffective (operation after break)
-
-01.02.07
-! Documentation typo with portnumber in fordummies.html fixed
-
-25.01.07
-! Typo fixed in gethostbyname_r
-
-23.01.07
-! Plugins are added to main code tree
-
-20.01.07
-! Use gethostbyname_r on Linux and Solaris
-
-18.01.07
-! Set reload flag on Web interface reload, but do not call reload() function.
- to process reloads in uniform way.
-
-08.01.07
-! Rotate counters with '0' number
-+ Scheduling interface added
-
-29.12.06
-! udppm code cleanup
-
-24.12.06
-! Point ident for openlog to saved copy of string to prevent garbage in syslog
-! Fixed: FTP though parent proxy
-! Fixed: problem fixed for final FTP server response received before data
- (slow connection).
-
-22.12.06
-! socks4 parent redirection fixed
-! Makefile.Solaris and Makefile.Solaris-gcc are corrected against -o problem
- in Solaris.
-
-21.12.06
-+ FAQ additions
-
-19.12.06
-! Fixed: POST request problem with NTLM authentication
-+ Access to reload / exit status and proxy stringtable from plugin API
-
-05.12.06
-! Fixed: imcomlete pages through HTTP proxy (Internet Explorer hangs)
-! Minor changes in trafcount/bandlimit for better plugin compatibility
-
-30.12.06
-! Fixed: two 3xx replies on USER command in ftppr.
-
-27.11.06
-! Changed to SAFESQL because actually only Microsoft and Oracle
- seems to follow ODBC standards.
-
-19.11.06
-+ SITE command support in addition to OPEN for ftppr
-
-18.11.06
-+ -I added to standalone services to be executed from inetd.
-
-14.11.06
-! Fixed behaviour on failed ODBC log attempt
-+ Filtering HTTP request API now works
-
-10.11.06
-+ Try to fallback to stdlog if odbclog fails
-
-07.11.06
-+ Filtering API is partially implemented
-
-01.11.06
-+ -h option added to use as default hostname:port for ftppr/pop3pr.
-
-15.10.06
-! WindowsAuthentication.dll version updated to match current internal
- structures and changes in plugins API.
-
-13.10.06
-! Exit service on non-recoverable service error
-
-11.10.06
-! Fixed: hostname:xx causes name resolution problem (introduced on 09.10).
-! Fixed: wrong target ports for tcppm/udppm (introduced on 09.10).
-
-09.10.06
-! %Q and %q added to track requested IP/port. Hopefully also problems with
- ACL checks on redirected applications are finally fixed.
-
-06.10.06
-! WindowsAuthentication.dll replaced with static version in distro
-
-04.10.06
-! Some compilation warnings cleaned
-! Back to static linking
-! Errors introduced with filters corrected
-
-03.10.06
-! Add .manifest files to distribution
-
-28.09.06
-! Compile 3proxy with msvcr80.dll
-+ include msvcr80.dll into distribution
-
-27.09.06
-+ FAQ updated.
-+ Filtering functionality added (incomplete yet).
-! SOCKS BIND/UDPASSOC problems fixed (based on Artem Rebrov's patch)
-
-25.09.06
-! Traffic report name is now generated based on 'last traffic in report'
- date/time and is not overwritten on service startup. Today traffic report
- will only be seen tomorrow, but counters may be checked with 'countersutil'
- or web interface.
-
-13.09.06
-+ Examples of compatible log formats added to 3proxy.cfg.sample
-
-11.09.06
-! Name hash length changed from 64 to 128 bits.
-
-06.09.06
-! Documentation regarding to Unix compilation corrected
-
-
-05.09.06
-! Fixed: buffered input may double some data on empty reads
-+ FTP diagnostics improved for FTP login problems
-+ Add ".." to directory listing
-
-25.08.06
-! Fixed: endless loop on configuration parsing if ACL weekdays are given as
- a comma delimited list (reported Andrey S. Alexeenko).
-
-23.08.06
-! Fixed: compilation under Solaris
-+ Solaris/gcc Makefile added
-
-17.08.06
-! Fixed: NTLM authentication doesn't work for NT-encoded passwords
-! Fixed: offer NTLM authentication before basic
-
-15.08.06
-! Reset client address after hostname parsing
-! Warn on counterfile time_t incompatibility
-
-10.08.06
-! Fixed: \r's in few Makefiles
-
-09.08.06
-! Documentation corrections.
-
-04.08.06
-! Documentation corrections.
-
-28.07.06
-! Fixed: invalid traffic prediction for large downloads on traffic limits over
- 4GB.
-
-26.07.06
-! nbname auth rejects, if no NetBIOS name determined. Use
- auth nbname,iponly
- to emulate old behaviour
-! It's now possible to use "-" in ACLs to match empty username.
-! No need to specify L/G for filename template in "log" (local time is
- always used).
-
-25.07.06
-+ "log" command now supports same format specifications for filename template
- as "logformat" (if filename contains '%' sign it's believed to be template).
- As with "logformat" filename must begin with "L" or "G".
-
-08.07.06
-! nreads/nwrites/nconnects fields added to internal client paramters structure
- for plugin developments
-
-07.07.06
-! FTP_DATA operation added for FTP data connection ACLs.
-
-04.07.06
-! Scripts/Makefiles corrections
-
-03.07.06
-! Fixed: dnspr 822 error on Windows (seems like a bug with multithreading on
- latest Visual C compiler, ioctlsocket() resets parameters of setsockopt().
-! Fixed: wrong limit and traffic on counters on the web
-
-30.06.06
-! Fixed: wrong traffic displayed on web for traffic > 4GB
-
-28.06.06
-! Fixed path to binary in scripts/rc.d/proxy.sh
-
-27.06.06
-! Fixed: limitations for traffic over 1GB work incorrectly
-+ Start/stop script example added to distribution
-
-22.06.06
-+ -u parameter added to services to avoid username authentication request/usage
-
-16.06.06
-+ Windows authentication plugin added to binary Windows distribution
-
-14.06.06
-! Added workaround for broken HTTP client (e.g. SUM - SUN update manager) with
- incomplete URI in HTTP request.
-
-11.06.06
-! bind FTP data connection socket to external interface
-+ FTPPR fully supports parent proxy (SOCKS 4/5, HTTPS/CONNECT)
-+ FTPPR supports FTP_GET/FTP_PUT/FTP_LIST ACL actions limitations
-
-09.06.06
-+ 'auth' can be used with few authentication types now. It makes it possible
- to request password only on demand with
- auth ipony strong
-
-08.06.06
-! 'admin' redirect type added for redirection to local web administration
- service (works like admin -s).
-
-31.05.06
-! Log '-' instead of username if username exists but is empty
-
-29.05.06
-!!!! Warning: counters file format changed on Windows since 0.5.2
- because of different sizeof(time_t) on Visual C++ 2005 compiler.
-+ countersutil utility added to manage counters. To convert 3proxy.exe
- 0.5.2 counter file to 3proxy.exe current run
- countersutil oldexport counterfile tmpfile
- countersutil import counterfile tmpfile
-
-
-25.05.2006
-! Fixed: dnspr command lost from command list
-
-17.05.2006
-! Fixed: nobandlimin actually works like nobandlimout
-
-16.05.2006
-!! Fixed: crash if more than one "users" command in configuration
-! Fixed: timezone display for FreeBSD and Windows
-+ added %o format specification for 3-character mOnth abbriviation
-! Fixed: check EINTR on poll() (avoids "Interrupted system call" in logs
- and broken connection on USR1 signal.
-
-12.05.2006
-! Fixed: log rotation was broken after client code rewrite
-
-11.05.2006
-! Cleaned: "mypoll" error if compiled with GCC withoout WITH_POLL
-
-10.05.2006
-! Use SO_REUSEPORT if defined
-
-06.05.06
-! Minor HTTP proxy redirections code cleanup
-
-03.05.06
-+ socks error codes improved
-
-02.05.2006
-! Fixed: compilation for Unix (plugins)
-
-01.05.2006
-! Fixed: names for authentication types turned back for compatibility
-! Fixed: no warning given for unknown authentication type
-! Fixed: bandlimout doesn't work if bandlimin presents for same connection
-
-30.04.2006
-! Fixed: nobandlimin/nobandlimout commands missed
-++ plugin command added to load dynamic library
-
-25.04.06
-! Internal structures moved to diffent header file
-
-20.04.06
-! Fixed: few problems with logging after latest modification (out of memory
- reference on hostname).
- SQL injections now are filtered even if \' is not in filtered characters.
-
-17.04.06
-! Few bugs introduced on 13.04 (especially 'nocountin' crash) fixed
-! Significant changes to internal structures
-! Compilation problems under Linux/Unix fixed
-
-13.04.2006
-! 3proxy.c configuration reading major code rewrite
-! Fixed: memory leaks on configuration reload
-! Changed from CreateThread to _beginthreadex according to MS reccomendations
-! Changed: FTP start data transfer code from 101 to 125 in FTPPR
-+ NLST support added to ftppr
-
-05.04.2006
-+ Minor documentation and help screen updates
-
-30.03.2006
-!! Windows distribution compiler changed to MSVC 8.0
-++ bin64 (Windows XP/2003 64 bit edition x64) added
-
-29.03.2006
-! Socket leak fixed on FTP data connection failure under Windows
-! minor 64 bit compatibility code cleanup
-+ x64/amd64 Windows XP/2003 64 bit edition makefile added
-
-24.03.2006
-! Minor FAQ dummy compatibility updates
-
-18.03.2006
-+ Parameters descriptions and XML stylesheet added to webadmin services view
-! Potential problem (wrong type dereference) fixed in webadmin services
-
-12.03.2006
-! Restore sasize after receivefrom
-
-10.03.2006
-! Fixed: CONNECT with http parent
-+ bandlimout / nobandlimout implemented
-! Copyrights and banners fixed
-
-08.03.2006
-! Minor poll() code cleanup
-
-06.03.2006
-! Socks 4a name resolution fixed
-! Name resolution function was not cleared after configuration reload
-
-03.03.06
-! Print comments in traffic report
-
-26.02.06
-! Check POLLERR / POLLHUP for revents
-
-21.02.06
-+ "monitor" command added to reload 3proxy if monitored file changes
-
-13.02.06
-! Some files are renamed for autotools compatibility
-
-07.02.06
-! Fixed: insufficient timeout on buffers flushing, leads to loss
- of data if connection to client is worse than connection to server.
-
-06.02.06
-+ -b (bufsize) parameter added to every service
-! flushing improved to prevent data loss at the end of output
-
-03.02.06
-! Documentation corrected
-
-10.01.06
-+ Documentation updated
-! Buffered UDP data loss on exit is fixed for sockmap
-
-30.12.05
-! Minor interface fixes
-
-27.12.05
-+ English FAQ added
-
-20.12.05
-! Fixed: crash on counters in webadmin if "NONE" counter rotation type
- is used.
-
-09.12.05
-! Use bind port from BIND request for SOCKSv5 server
-
-30.11.05
-! Do not buffer UDP packets
-
-30.11.05
-! Do not drop connection on unknown command
-
-29.11.05
-! Do not drop connection on POP3 CAPA.
-
-28.11.05
-! Fixed: recv() may be called with small buffer on UDPPM
-
-23.11.05
-! Fixed: programming bug in $ file inclusing
-! Fixed: webadmin conter type uses stack for return value
-
-17.11.05
-+ Makefile.Solaris added, thanks to 'pqr'.
-! Cleaned pointer conversion warnings
-
-15.11.05
-! define PTHREAD_STACK_MIN if not defined to compile under Solaris
-! S_NONE renamed to S_NOSERVICE to compile under Solaris
-
-14.11.05
-! Linger period is set to STRING_L (60 sec default)
-
-10.10.05
-! Add some grace period to shutdown services before exit
-
-03.10.05
-! Linger added to FTP socket to avoid data loss on socket close
-
-29.09.05
-+ Added H (hour) and C (minute) routation support to countin
-
-22.08.05
-! Fixed: UDP resolver (nserver) fails to resolve name if reply contains
- no additional records (for example dnscache from djbdns).
-
-06.08.05
-!!Workaround added for Windows XP SP2 / Windows 2003 SP1 problem with
- 2 selects on single datagram socket. udppm -s and dnspr hang on random
- time while sending packets to client, sometimes causing client timeouts.
-
-
-05.08.05
-! Fixed problem with UDP mappings
-! Workaround for strange Windows XP bug with sendto() delay for 2 secs
- if no select() was performed on socket
-
-30.07.05
-! Error handling on SOCKSv5 parent improved
-
-28.07.05
-+ Support for parent SOCKS4b/SOCKS5b (broken implementation with shortened
- server reply) added. I never saw such server by they say there are.
- socks4b, socks5b options for parent proxy.
-
-22.07.05
-+ Name resolution for parent CONNECT, SOCKSv5 and SOCKSv4a proxy server
- added, should work with "fakeresolve" option (connect+, socks4+
- socks5+ options for parent proxy).
-
-13.07.05
-! Fixed: reading behind allocated memory in myrand() entropy
- gathering function (leads to occasional craches) intrdoduced
- on June, 20.
-
-12.07.05
-! Use client port only for portmappers
-! Code reviewed for possible double close()
-
-10.07.05
-! Improved quote handling in config files. No any string can be quoted
- (for example Thi"s is a test" is same as "This is a test", fixed a
- problem with using quotes with $ macro.
-
-01.07.05
-+ Added RSA copyright text to 'mycrypt' to allow binary redistribution
- for this tool only.
-
-22.06.05
-+ try to use same (unprivileged) port as client for outgoing connections
- for portmappers
-! admin -s now only shows counters related to user
-! Fixed: impossible to set traffic limit to even number of GB
-
-20.06.05
-! -a option corrected again (had inverted action)
-+ -a1 option added to report random information about client IP
-+ -s option added to 'admin' to allow safe-only commands (user mode)
-
-26.05.2005
-! -a option corrected
-
-25.05.2005
-+ 'Y' (annually) option added to counters, logfile rotations, etc
-+ -a (anonymous) option added to proxy server
-
-21.05.2005
-! socks: only allow UDP mapping from same IP with control connection
-! socks: always log network parameters for control connection
-! check timeout to be below 2000000
-
-20.05.2005
-! invalid sendto() argument fixed (may affect UDP mapping and sometimes
- TCP under very rare configurations)
-! set sasize before sendto
-! socks checks requested address to be non-zero
-! socks checks requested port to be non-zero
-! socks: do not change UDP client parameters before UDP packet received
-
-19.05.2005
-+ 'include' command added to 3proxy (include one config file from another
- config file)
-! handle EAGAIN on send()/recv()
-
-18.05.2005
-! More detailed problem code in mapping code
-
-17.05.2005
-! Fixed typo with dnspr logging
-
-16.05.2005
-+ dnspr can now resolve records different from hostname (request is proxied to
- first DNS server in the list, reply is not cached).
-
-14.05.2005
-! Fixed: mishandled socket error in dnspr code
-
-13.05.2005
-! Few minor fixes in HTTP proxy code (timeout in initial handshake lefts
- some garbage in request buffer).
-! Fixed short timeout in FTP proxy code
-! Mapping code is changed to leave unsent data on buffer
-
-06.05.2005
-! Prevent race conditions with 100% CPU usage in socksmap (introduced 30.04)
-
-03.05.2005
-! Fixed: double free() in authentication (probably introduced on 04.04)
-! Changed to POLLIN/POLLOUT/POLLPRI for more compatibility
-
-30.04.2005
-! Fixed: double free() in FTP over HTTP (probably introduced on 04.04)
-! Fixed: in very rare situation may loose some data at the and of connection
-
-27.04.2005
-! stack size increased (reported problems under some OSs)
-! Fixed: -l option for service executable leads to NULL-pointer reference
-!!! Moved from select() to poll() on *nix. Please upgrade your Makefiles.
-
-25.04.2005
-! set thread stack size explicitly to prevent problems with some Linux 2.6
- kernels.
-
-22.04.2005
-! Never fallback to gethostbyname() if nameservers are configured to prevent
- locking on *nix platforms
-!!Fixed: name resolution is called while mutex is locked in HTTP proxy
- leading to long lasting blocking.
-
-21.04.2005
-! Fixed: dnspr returns A record of invalid class (fails with some resolvers)
-!! Socket I/O is now non-blocking
-
-19.04.2005
-! bandlimits changed to avoid floating point operations
-
-11.04.2005
-+ Log if new connections delayed because of too many accepted connections
-
-04.04.2005
-! Fixed few minor rare memory leaks
-
-03.04.2005
-! Fixed: HTTP proxy should ignore Content-Length for 304 response
-
-14.03.2005
-! MD5 password hashin within mycrypt utility fixed
-! dnspr logging now shows DNS server IP instead of resolved IP, resolver IP
- is shown in additional info
-
-11.02.2005
-! Configuration reload removed from signal handler
-
-31.01.2005
-! Limit for maximum log string size increased to ~4K
-! large FD_SETSIZE and FD_SETSIZE check is not required under Windows
-
-28.01.2005
-! Fixed: -s options for udppm
-
-17.01.2005
-! Fixed: invalid IP may appear in logs and bandlimits on redirection
-
-13.01.2005
-+ fakeresolve option added
-
-21.12.2004
-! Fixed: traffic limits are set improperly for traffic over 1Gb
-
-11.12.2004
-! 0.6 development started
-
-11.12.2004
-Commited as 0.5b
-11/12/2004 3[APA3A]tiny proxy 0.5b
-New features marked with !.
-
- Features:
- 1. General
- + HTTP/1.1 Proxy with keep-alive client and server support,
- transparent proxy support.
- + FTP over HTTP support.
- + DNS caching with built-in resolver
- + HTTPS (CONNECT) proxy
- + SOCKSv4/4.5 Proxy
- + SOCKSv5 Proxy
- ! UDP and bind support for SOCKSv5 (fully compatible with
- SocksCAP/FreeCAP for UDP)
- + Transparent SOCKS->HTTP redirection
- ! Transparent SOCKS->FTP redirection
- ! Transparent SOCKS->POP3 redirection
- + POP3 Proxy
- ! FTP proxy
- ! DNS proxy
- + TCP port mapper
- + UDP port mapper
- + Threaded application (no child process).
- ! Web administration and statistics
- 2. Proxy chaining
- + Parent proxy support for any type of incoming connection
- + Username/password authentication for parent proxy(s).
- + HTTPS/SOCKS4/SOCKS5 and redirection parent support
- + Random parent selection
- + Chain building (multihop proxing)
- 3. Logging
- + turnable log format compatible with any log parser
- + stdout logging
- + file logging
- + syslog logging (Unix)
- + ODBC logging (Windows and Unix)
- + log file rotation (hourly, daily, weekly, monthly)
- + automatic log file comperssion with external archiver (for files)
- + automatic removal of older log files
- ! Character filtering for log files
- ! different log files for different servces are supported
- 4. Access control
- + ACL-driven (user/source/destination/protocol/weekday/daytime or
- combined) bandwith limitation
- + ACL-driven (user/source/destination/protocol/weekday/daytime or
- combined) traffic limitation per day, week or month
- + User authorization by NetBIOS messanger name
- + Access control by username, source IP, destination IP, destination
- port and destination action (POST, PUT, GET, etc), weekday and daytime.
- + Access control by username/password for SOCKSv5 and HTTP/HTTPS/FTP
- + Cleartext or encrypted (crypt/MD5 or NT) passwords.
- + Connection redirection
- + Access control by requested action (CONNECT/BIND,
- HTTP GET/POST/PUT/HEAD/OTHER).
- ! NTLM authentication for HTTP proxy access
- ! All access controle entries now support weekday and daytime
- limitations.
- 5. Configuration
- + support for configuration files
- + support for includes in configuration files
- + interface binding
- + running as daemon process
- + utility for automated networks list building
- Unix
- + support for chroot
- + support for setgid
- + support for setuid
- ! support for signals
- Windows NT/2K/XP/2K3
- + support --install as service
- + support --remove as service
- + support for service START, STOP, PAUSE and CONTINUE commands (on
- PAUSE no new connection accepted, but active connections still in
- progress, on CONTINUE configuration is reloaded)
- Windows 95/98/ME
- ! support --install as service
- ! support --remove as service
- 6. Compilation
- + MSVC (msvcrt.dll)
- + Intel Windows Compiler (msvcrt.dll)
- + Windows/gcc (msvcrt.dll)
- + Cygwin/gcc (cygwin.dll)
- + Unix/gcc
- + Unix/ccc
-
- Known bugs:
-
- report to 3proxy@security.nnov.ru
-
- Planned for future (0.6) release:
- - External modules API
- - Addon URL, antiviral, HTTP cache filters modules, authentication
- modules for different protocols (RADIUS, PAM, integrated system, etc).
-
-$Id: Changelog,v 1.154 2006/03/08 18:44:00 vlad Exp $
-
-11.12.2004
-+ man page for 3proxy.cfg added
-
-09.12.2004
-! restarting SQL on reloading configuration
-
-08.12.2004
-! Typo fixed in sockmap preventing portmappers from functioning
-
-06.12.2004
-+ Network input is now buffered, decreasing CPU usage
-- Debugging printf() removed from ftppr
-
-30.11.2004
-!! Fixed: memory content may be leaked on FTP error in HTTP proxy
-! Few race conditions with double socket closing fixed in FTP proxy
-+ Content-Length is checked to do not allow traffic overdraft via HTTP proxy
-+ Connection now can be aborted due to traffic limit (code 90)
-
-24.11.2004
-! 333 error removed - no longer required
-
-23.11.2004
-! Deadlock in checkACL() (introduced 18.11) fixed
-
-20.11.2004
-! All mutex operation are now atomic to prvent deadlocks
-! Race conditions with bamdlimits on reload fixed
-
-18.11.2004
-! Mutex logic overwritten, should clear reload races completely
-! Fixed socket leak on some failed FTP operations
-! FD_SETSIZE increased, check for FD_SETSIZE added
-
-04.11.2004
-! Fixed: Maxconn limitation doesn't work, may lead to resource exhaustion
- attacks
-! Fixed: reference to unallocated memory if fails to create new thread
- (may lead to crash together with previous bug).
-
-03.11.2004
-! Fixed: Wrong type for "ace.users" in datatypes.c
-! Partially fixed: race conditions on reload in alwaysauth()
-
-02.11.2004
-! race condition in sql_init on reload fixed
-! minor code cleanup
-! typo with SQL deadlock introduced on last fix fixed
-! checked few memory allocation calls missed with debug library (myalloc)
-
-30.10.2004
-! Fixed: minor memory leak on SQL error
-
-28.10.2004
-+ HTTP parent redirection for FTP requests
-
-23.10.2004
-! Fixed: access to free()'d memory in ODBC functions after few
- configuration reloads
-! Configuration reload is more (but not yet completely) thread safe
- now.
-
-17.10.2004
-! Fixed: Content-Type: missed in web interface
-
-16.10.2004
-! Fixed: log may show invalid IP/port for parent proxy connection
-
-12.10.2004
-- Debug printing to stdout in webadmin removed
-
-11.10.2004
-! Race conditions fixed, could cause 3proxy to crash on configuration reload
-
-28.09.2004
-! Limitation for maximum string length in config file removed (for included files)
-
-26.09.2004
-! Typo corrected preventing compilation under *nix
-
-18.09.2004
-! URL decoding corrected (affect HTTP over FTP clients)
-+ "writable" command added to allow config modification via Web interface
-+ Config file can be edited via web interface
-
-14.09.2004
-! Crash on HTTP redirections introduced on 08.09 fixed.
-
-11.09.2004
-+ Weekday based access control is now possible
-+ Time based access control added
-! Speed improved in ACL checks
-
-08.09.2004
-+ * can be used as external username with a meaning of username should be
- requested from user.
-+ %n1-n2T is now available in logformat to log only few field of service
- specific text
-+ -t (silent start) option added
-
-20.08.2004
-! Yesterday fix was broken, corrected.
-
-19.08.2004
-! Fixed: target address is logged instead of proxy address in a case
- of redirection
-
-09.08.2004
-! Fixed: under *nix if service fails to bind() port for few hours it falls
- into endless loop with logging and high CPU usage.
-
-03.08.2004
-! Fixed: select() changes tv value on some Linux kernels (100% CPU usage)
-
-02.08.2004
-! Fixed: wrong initialization for counter descriptor (causes some stdout
- noise).
-! Fixed: no HTTP proxy diagnostic message if host name doesn't resolve
-! Fixed: NULL pointer crash if no format specified
-
-30.07.2004
-! Few bugs with counters and bandlimits introduced yesterday fixed
-
-29.07.2004
-! Fixed few memory leaks on restart
-! Some code cleanup for configuration information storing
-+ Statistics extended
-+ Added "Zombie" threads support (service thread waiting for child shutdown
- to exit).
-+ Every service can now have different log format and character filtering
-+ It's now possible to set logformat for service from command line
-
-28.07.2004
-! Fixed: ACLs are not cleared on reload
-! Fixed: bind() warnings on reload under *nix
-!! Fixed potential race conditions DoS on some Unix systems with thread
- exit on aborted connection (accept(): Software caused connection abort)
-
-24.07.2004
-+ Web interface shows information about all currently running services and
- clients (plain format just for debugging, will be rewrtitten later)
-
-23.07.2004
-! Fixed: wrong external ip/port in logs sometimes on internal redirection
-+ HowTo and FAQ (Russian) added to documentation, documentation corrected
-
-22.07.2004
-+ Added logging options for request duration and average send/recieve
- speed per request
-
-20.07.2004
-! Changed default password for anonymous FTP
-! Improved diagnostic messages for FTP over HTTP errors
-
-19.07.2004
-! Changed FTP behaviour for some RFC ignorant sites
-
-17.07.2004
-+ services and clients are now registered for future extensions
-! counters show wrong result problem introduced yesterday fixed
-! fixed descriptor leak on configuration reload
-! fixed theoretical problem with client number limitations
-! few theoretical mutex leaks fixed
-
-16.07.2004
-+ 3proxy can now read configuration from stdin under *nix,
- 3proxy.cfg can be executable
-+ 'config' command added to allow 3proxy reload configuration in chroot'ed
- environment or if configured from stdin.
-+ 'end' command added
-+ Man pages in HTML added
-
-14.07.2004
-! Minor casting issues, Unix compilation issues fixed
-+ counters sample added
-
-13.07.2004
-+ Configuration improved and repacked
-
-08.07.2004
-! Problem introduced yesteday (after rotation logs do not print to
- logfile) fixed.
-
-07.07.2004
-! Fixed FTP behaviour on RFC ignoring FTP sites (ftp.drweb.ru).
-! Config file example updated with FTP proxy service configuration
-+ Logging changed to allow personal log files for every service (without
- rotation) and to work on older FreeBSD systems.
-
-05.07.2004
-! Fixed call to free'ed memory (could cause crash on reloading 3proxy
- configuration in 0.5b-devel after 28.06.2004)
-
-30.06.2004
-! Fixed redirection crash if parent username/password is not specified
-! Fixed documentation buf (%h instead of %n for hostname in logformat)
-
-28.06.2004
-! Minor changes in error messages generation
-
-25.06.2004
-! distributive repacked, some Russian documentation by Kirill Lopuchov
- added
-
-24.06.2004
-! realm sometimes is not shown in proxy-authentication
-
-23.06.2004
-! fixed maxconn parameter was not set to default value on proxy reload.
-! fixed typo in pop3p causing it to fail
-
-22.06.2004
-! ftppr.c typo corrected, preventing compilation under unix.
-
-19.06.2004
-+ FTP proxy (compatible with both USER and OPEN mode). Redirection to
- FTP proxy from SOCKS
-
-18.06.2004
-+ Local redirection to POP3 proxy is now awailable.
-! Fixed race conditions with double socket closing in POP3 proxy
-
-17.06.2004
-!! Threading problem causing minor memory leak and preventing 3proxy
- from functioning under few OS versions (including Linux) after
- some number of requests fixed.
-
-16.06.2004
-! Authentication problem introduced on 05.06 fixed
-
-15.06.2004
-! FTP over HTTP proxy supports spaces, quotes and 0x255 in filenames.
-!! Potential security risk fixed: FTP password may appear in log if
- URL ftp://user:password@server is used.
-
-09.06.2004
-! NTLM is enabled by default. Use proxy -n to disable NTLM for proxy service
- (for example, if crypt passwords are used).
-
-05.06.2004
-!! Potential security leak fixed: POP3 proxy password can appear in log if
- proxy username is configured as proxyuser:proxypassword:pop3user@pop3server
- in POP3 client program
-! Child invocation code rewritten to avoid code dupclication.
-
-27.05.2004
-! Reloading is now fast (new thread starts before old one dies)
-! Milliseconds are printed as .3 (not .4) in logs
-
-22.05.2004
-+ Reload command added to Web interface and SIGUSR1 handling
-! Problem fixed: no mode is given to open() with O_CREAT for counter files,
- counter file can be created as read only under Windows or with invalid mask
- under Unix.
-! Do not fail if bind() fails
-! Setsockopt for integer options corrected
-! REUSEADDR added to avoid "Address already in use" problem if restarted
- under Unix
-
-18.05.2004
-+ Installation/removal as a service under Windows 95/98/ME now supported.
-
-17.05.2004
-! Fixed: 3proxy hangs on socket error during config reading
-
-14.05.2004
-! For HTTP proxy NTLM authentication both ntlm and basic are now advertized
- to client for compatibility
-! Optimization parameters are changed and stack protection is turned on for
- MSVC (Windows default) compilation.
-! Fixed: exiting thread shows last client IP in log
-
-
-27.04.2004
-! Fixed: Microsoft domain authentication to web server may fail via
- transparent HTTP proxy with some IE versions.
-! HTTP HEAD now recognized
-
-23.04.2004
-! Fixed compilation issues under Unix
-
-22.04.2004
-+ Configuration now can be dynamically reloaded with
- net pause 3proxy / net continue 3proxy or by sending SIGPAUSE twice
- without breaking connections
-! 3proxy is now distributed compiled with Microsoft Visual C++, thanx
- to MS for releasing "Microsoft Visual C++ Toolkit 2003" for free.
-! Few bugs introduced in latest versions (username/password for parent proxy,
- dnspr and single packet UDP are fixed)
-
-13.04.2004
-+ NTLM authentication for proxy server (yes, it works under *nix). It will
- not work with crypt password, only CL or NT. Use proxy -n to allow NTLM.
-! potential DoS (NULL pointer) condition fixed in configuration with crypted
- passwords
-
-08.04.2004
-+ %n (hostname) added to logformat
-
-05.04.04
-! compilation problem under Unix fixed
-
-01.04.04
-! problem with portmappers fixed (introduced on last modification)
-
-20.03.04
-+ FTP messages are shown now
-! FTP problem with links with absolute paths fixed
-! No more authentication requested for user if ACL denies access to resource
- in HTTP proxy.
-! ACLs are now stored in predefined container. It's required for future
- improvement (Cisco-like ACL configuration and configuration reload without
- restarting proxy). As a backside, number of ACLs is now limited to 256.
-! Function for configuration reading implemented for future improvements.
-
-12.03.2004
-! error text generation changed for pthread_create (use return code
- instead of errno). Memory leak on failed pthread_create fixed.
-
-02.03.2004
-! Transparent proxy fixed to work with ports different from 80.
-! Workarond for Internet Explorer invalid Host: header bug
-
-28.02.2004
-+ -+ options added to logformat for character filtering
-! ' character now filtered only if logged via ODBC
-! few bugs fixed in ODBC logging reliability code. Now 3proxy should better
- handle broken database connections.
-
-26.02.2004
-! user32 added to library list for MSVC
-
-24.02.2004
-! Ask installation confirmation before installation
-
-23.02.2004
-! ttl now is real for DNS proxy proxy reply
-
-21.02.2004
-+ dnspr - DNS caching proxy added to 3proxy module. Listens on UDP/53
- and answers hostname requests. Requires nserver/nscache to be configured.
-! 3proxy wanrs user if installed as Windows service
-! 3proxy child threads are now started faster
-
-22.01.2004
-! mutex deadlock fixed if gethostbyname() is used under Unix
-
-19.01.2004
-! compilation issue fixed for MSVC (definition inside code)
-
-15.01.2004
-! bug fixed in configuration reading getip() called befor WSAStartup
- (thanks to Kerd)
-! bug fixed with parent CONNECT proxy (thanks to Kerd)
-
-11.01.2003
-+ Few man pages added
-
-06.01.2003
-+ now it's possible to use "" inside quotation for double quote sign (for
- example "say ""hello world"""
-
-04.01.2004
-+ maxconn configuration option added
-
-19.12.2003
-+ New "safe" memory allocation library implemented. It may slow down
- performance but is thread safe and never cause memory fragmentation.
-! Memory leak in redirection SOCKS->HTTP fixed
-
-11.12.2003
-! Memory leak in UDPPM fixed
-
-29.11.2003
-+ Copyrights added to banners
-!! Few signed/unsigned mismatches fixed (including potentially dangerous)
-
-27.11.2003
-! 'redirect' now can be used with hostname instead of ip address
-
-21.11.2003
-! POP3 proxy bug fixed
-
-04.11.2003
-! '@' situation in username for POP3 proxy corrected
- (pop3name@pop3realm@pop3server)
-
-03.11.2003
-! One more bug with 'archiver' causing 3proxy to crash on log archieving
- fixed
-
-29.10.2003
-! Some threading safety is added for logging (inet_ntoa and ODBC
- re-initialisation)
-
-28.10.2003
-! Bug causing daily log filename to work as weekly fixed
-! 'daemon' example moved to beginning of configuration file
-
-16.10.2003
-+ pidfile configuration option added
-+ processing for SIGCONT (pause/resume) and SIGTERM (termination) added
- under Unix
-
-01.10.2003
-! Weekly log filename now is generated by the date of last Sunday.
-! Do not strip executable for Unix (must be stripped during installation).
-
-21.09.2003
-! Bug fixed in "log" command processing (wrong buffer was used
- for filename generation)
-
-16.09.2003
-! socksmapping algorythm changed to handle incomlete send() (for *BSD).
-
-15.09.2003
-! mutex added to gethostbyname() to avoid thread unsafety. It slows
- down proxy if no nserver configured (it MUST be for *nix!) but prevents
- crashing on active usage.
-! signal() handling is added for SIGPIPE. It seems to be some race conditions
- on FreeBSD between send() and gethostbyname() somewhere causing SIGPIPE on
- gethostbyname().
-
-13.09.2003
-! NULL reference corrected if rotate is given without archiver
-
-11.09.2003
-! Few additional checks added for open()/fopen() to do not crash on invalid
- files in config
-! Buffer moved from stack to heap in socks.c to eliminate crash on FreeBSD
-
-10.09.2003
-! Bug in SOCKSv5 UDP mapping corrected. Now it works fine (checked with
- Unreal Tournament) with both SocksCAP and FreeCAP.
-
-06.08.2003
-! Algorithm for SOCKS5 bind/udp assoc port selection is now intellegent
- enough to allow server applications to use same port number on socks
- server if available and not denied by access list
-! SOCKS5 bind/udp assoc now matches incoming connections/packet
- with IP address from request in accordance to RFC 1928 to improve
- security
-
-04.08.2003
-!!! Bug fixed sometimes causing 3proxy to crash if parent proxy is used
-!!! UDP associate finaly completed and is fully functional
- (tested with SocksCAP on Unreal Tournament).
-!!! TCP bind code re-checked, and is probably working (doesn't work
- on SocksCAP because of SocksCAP bug
-!!! Socket leak on nbname auth fixed
-
-21.07.03
-+ Web administration module created
-+ Dynamic enable/disable for counters now available via web interface
-
-19/07/2003 3[APA3A]tiny proxy 0.4
-New features marked with !.
-
- Features:
- 1. General
- + HTTP/1.1 Proxy with keep-alive client and server support,
- transparent proxy support.
- ! FTP over HTTP support.
- ! DNS caching
- + HTTPS (CONNECT) proxy
- + SOCKSv4 Proxy
- + SOCKSv5 Proxy (TCP only)
- + Transparent SOCKS->HTTP redirection
- + POP3 Proxy
- + TCP port mapper
- + UDP port mapper
- + Threaded application (no child process).
- 2. Proxy chaining
- + Parent proxy support for any type of incoming connection
- + Username/password authentication for parent proxy(s).
- + HTTPS/SOCKS4/SOCKS5 and redirection parent support
- + Random parent selecttion
- + Chain building (multihop proxing)
- 3. Logging
- + turnable log format
- + stdout logging
- + file logging
- + syslog logging (Unix)
- + ODBC logging (Windows and Unix)
- + log file rotation (hourly, daily, weekly, monthly)
- + automatic log file comperssion with external archiver (for files)
- + automatic removal of older log files
- 4. Access control
- ! ACL-driven (user/source/destination/protocol or combined) bandwith
- limitation
- ! ACL-driven (user/source/destination/protocol or combined) traffic
- limitation per day, week or month
- + User authorization by NetBIOS messanger name
- + Access control by username, source IP, destination IP, destination
- port and destination action (POST, PUT, GET, etc).
- + Access control by username/password for SOCKSv5 and HTTP/HTTPS/FTP
- + Cleartext or encrypted (crypt/MD5 or NT) passwords.
- + Connection redirection
- + Access control by requested action (CONNECT/BIND,
- HTTP GET/POST/PUT/HEAD/OTHER).
- 5. Configuration
- + support for configuration files
- + support for includes in configuration files
- + interface binding
- + running as daemon process
- + utility for automated networks list building
- Unix
- + support for chroot
- + support for setgid
- + support for setuid
- NT
- + support --install as service
- + support --remove as service
- + support for service START, STOP, PAUSE and CONTINUE commands (on
- PAUSE no new connection accepted, but active connections still in
- progress)
- 6. Compilation
- + MSVC (msvcrt.dll)
- + Intel Windows Compiler (msvcrt.dll)
- + Windows/gcc (msvcrt.dll)
- + Cygwin/gcc (cygwin.dll)
- + Unix/gcc
- + Unix/ccc
-
- Known bugs:
-
- - udppm doesn't work if compiled with cygwin.
-
- Cygwin doesn't support recvfrom()/sendto() on connected socket, so
- recv/send is used instead... Not a big deal anyway.
-
-
- Planned for future release:
- - Web interface for configuration
- - Signal handling on Unix (for stop/pause/resume/configuration change)
- - External filter API
- - Addon URL, antiviral, HTTP cache filters
-
-17.07.03
-+ ODBC changed to re-establish broken connection
-
-11.06.03
-! #ifndef NOSQL changed to NOODBC
-
-22.05.03
-+ strong auth now supported for POP3 proxy. Now, username can be in format
- proxy_username:proxy_password:POP3_username@pop3server
-
-30.04.03
-! redirect function now do not change code of traffic limit error
-
-24.04.2003
-! -M changed to -D for *nix makefiles
-
-18.04.2003
-! HTTPS behaviour breaked by latest patches restored
-
-15.04.2003
-! fixed handling of special characters and non-existing files in
- FTP over HTTP proxy.
-
-12.04.2003
-! fixed behaviour of HTTP proxy on RFC-incompatible web servers (banners
- exchanges, price.ru, etc) - they terminate string with \n instead of
- \r\n.
-
-10.04.2003
-+ nsrecord and dialer commands added
-! Name resolution now occures right before authorization to prevent
- unauthenticated users from performing NS lookups and demand dial.
-
-05.04.2003
-+ N (Never) option value added for counters refreshing
-
-29.03.2003
-+ !!! FTP support for HTTP proxy added.
-
-25.03.2003
-! Socks 4 bug fixed (was visible in Netscape)
-+ Socks 4.5 support added (not tested)
-! !! UDP portmapper code fixed
-
-24.03.2003
-! Timeout, close on closed socket and FD bugs fixed in UDPPM
-
-21.03.2003
-+ Proxy-Authorization now works for CONNECT (HTTPS proxy).
-
-07.03.2003
-! counter command extended to allow traffic reports
-
-02.03.2003
-! Bandwidth/Traffic limiting problems fixed
-! gethostbyname() argument limited to 256 characters. It may be significant
- for Windows
-
-27.02.2003
-+ !!! Traffic limitting feature added (counter/countin/nocountin)
-
-26.02.2003
-! nobandlim processing changed
-! bandlim/nobamdlim commands renamed to bandlimin/nobandlimin
-
-22.02.2003
-+ !!! Bandwidth limiting features added (bandlim and nobandlim commands)
-
-18.02.2003
-+ Mutext support added for inter-thread data access. Should improve stability.
-- debugging printf() removed from proxy, typo fixed in auth.c
-
-10.02.2003
-! Changed to use WSASocket()/WSAAccept() instead of socket()/accept() under
- Windows
-
-30.01.2003
-! Version of gcc changed (3.2).
-+ nscache option added to 3proxy configuration for DNS cache. For a while
- caching is primitive (with no expiration).
-
-27.01.2003
-- \n removed from perror() calls
-
-27/01/2003 3[APA3A]tiny proxy 0.3b.
-New features are marked with !.
-
- Features:
- 1. General
- + HTTP/1.1 Proxy with keep-alive client and server support,
- transparent proxy support.
- ! HTTPS (CONNECT) proxy
- + SOCKSv4 Proxy
- + SOCKSv5 Proxy (TCP only)
- ! Transparent SOCKS->HTTP redirection
- + POP3 Proxy
- + TCP port mapper
- + UDP port mapper
- + Threaded application (no child process).
- 2. Proxy chaining
- ! Parent proxy support for any type of incoming connection
- ! Username/password authentication for parent proxy(s).
- ! HTTPS/SOCKS4/SOCKS5 and redirection parent support
- ! Random parent select
- ! Chain building (multihop proxing)
- 3. Logging
- ! turnable log format
- + stdout logging
- + file logging
- + syslog logging (Unix)
- ! ODBC logging (Windows)
- + log file rotation (hourly, daily, weekly, monthly)
- + automatic log file comperssion with external archiver (for files)
- + automatic removal of older log files
- 4. Access control
- + User authorization by NetBIOS messanger name
- + Access control by username, source IP, destination IP and destination
- port
- + Access control by username/password for SOCKSv5 and HTTP
- + Cleartext or encrypted (crypt/MD5 or NT) passwords.
- + Connection redirection
- ! Access control by requested action (CONNECT/BIND,
- HTTP GET/POST/PUT/HEAD/OTHER).
- 5. Configuration
- + support for configuration files
- + support for includes in configuration files
- + interface binding
- + running as daemon process
- ! utility for networks list building
- Unix
- + support for chroot
- + support for setgid
- + support for setuid
- NT
- + support --install as service
- + support --remove as service
- + support for service START, STOP, PAUSE and CONTINUE commands (on
- PAUSE no new connection accepted, but active connections still in
- progress)
- 6. Compilation
- + MSVC (msvcrt.dll)
- ! Intel Windows Compiler (msvcrt.dll)
- + Windows/gcc (msvcrt.dll)
- + Cygwin/gcc (cygwin.dll)
- + Unix/gcc
- ! Unix/ccc
-
- Known bugs:
-
- - udppm doesn't work if compiled with cygwin.
-
- Cygwin doesn't support recvfrom()/sendto() on connected socket, so
- recv/send is used instead... Not a big deal anyway.
-
-
- Planned for future release:
- - FTP proxy support
- - Web interface for configuration
- - Signal handling on Unix (for stop/pause/resume/configuration change)
- - External filter API
- - Addon trafficshape, URL, antiviral, HTTP cache filters
-
-
-27.01.2003
-!!!!!!!!!!!!!!!!!!!
-! Tagging as 0.3b !
-!!!!!!!!!!!!!!!!!!!
-
-24.01.2003
-- Fixed to use INVALID_SOCKET instead of -1 (for Windows compatibility)
-- Fixed problem with threading support under gcc. Now ODBC logging seems
- to work always.
-! strncasecmp removed. Changed to use strnicmp for Windows.
-
-21.01.2003
-! 0.3 development frozen to only bugfixes
-- bug fixed causing 3proxy to crash with NULL pointer reference on
- transparent web redirection
-- SQL support removed from default (gcc) compilation
-
-20.01.2003
-+ ODBC logging (yeah!). For a while it works stable only if compiled with
- MSVC or Intel compiler.
-
-17.01.2003
-- bug introduced yesterday into CONNECT code cleaned
-
-16.01.2003
-+ timeouts command added
-
-13.01.2003
-- daemonizing code changed to work correctly on buggy libc (FreeBSD)
- (pthread_* doesn't work after daemon())
-- logging code changed to work correctly on buggy libc (FreeBSD 4.4)
- (freopen "a" mode doesn't work as expected on stdout)
-
-12.01.2003
-! License is changed to prohibit modification and commercial use
-
-11.01.2003
-! All makefiles are made uniform
-+ Makefiles for Compaq C complier (Makefile.ccc) and Intel C Compiler for
- Windows (Makefile.intl) added
-+ Makefile.msvc added for Microsoft Visual C Compiler
-! proxy.dsp removed
-
-10.01.2003
-+ Now checked to compile with Compaq C Compiler under linux on alpha platform
-+ logformat configuration command added for custom log entry format
-! Unix version changed to use gettimeofday instead of ftime to avoid -lcompat
- issue.
-
-09.01.2003
-! Randomizer changed for proxy chaining
-! Code cleaned: Makefile, signed/unsigned conversions, etc.
-! Typo fixed preventing from compilation under *nix
-
-08.01.2003
-+ dateformat command added
-! Log format changed!!!
-+ Control for different operations (CONNECT,BIND,HTTP_*, etc) added to ACL,
- see 3proxy.cfg.sample
-
-25.12.2002
-+ Proxy chaining now is fully operational!!!!!
-+ SOCKSv4 and SOCKSv5 client code added for chaining
-+ HTTP connect authentication added for chaining
-+ Parent authentication for HTTP proxy added
-- Problem with "Connection: close" resolved (if HTTP server time outs or closes
- connection).
-
-24.12.2002
-+ Proxy chaining works!!! (for a while only HTTP CONNECT proxies
- are supported and no parent authentication). Logging is updated to
- include number of redirections (parent proxies) in square brackets.
- See config.sample for example of "parent" command.
-
-23.12.2002
-! Transparent proxy operations improved, logging corrected
-+ Added base code for proxy chaining
-! Redirection code rewritten
-
-23.12.2002
-+ UDP ASSOCIATE added (but not tested) to SOCKS.
-! Additional logging added to socks proxy
-+ Local HTTP proxy redirection added (for SOCKS).
-
-01.12.2002
-! closesock() problem _finally_ patched...
-
-30.11.2002
-! Makefile.unix corrected
-! Do not process $ in included files for 3proxy.cfg
-! Common error codes are unified
-
-29.11.2002
-+ nserver example added to 3proxy.cfg.sample
-
-28.11.2002
-- fixed closesock() instead of close() call on 3proxy.cfg included files
- for native Windows.
-
-27.11.2002
-! Minor changes in docummentation
-+ dighosts utility added
-
-22.11.2002
-- Few problems corrected in logfiles rotation
-
-20.11.2002
-- SOCKSv5 bind() reply corrected.
-
-19.11.2002
-+ internal resolver added to avoid usage of thread unsafe gethostbyname().
- nserver configuration option added to config file.
-! HTTP proxy behaviour slightly changed to be more compatible.
-
-06/11/2002 3[APA3A]tiny proxy 0.2b Initial release.
-
- Features:
- 1. General
- + HTTP/1.1 Proxy with keep-alive client and server support,
- transparent proxy support.
- + SOCKSv4 Proxy
- + SOCKSv5 Proxy (TCP only)
- + POP3 Proxy
- + TCP port mapper
- + UDP port mapper
- + Threaded application (no child process).
- 2. Logging
- + stdout logging
- + file logging
- + syslog logging (Unix)
- + log file rotation (hourly, daily, weekly, monthly)
- + automatic log file comperssion with external archiver (for files)
- + automatic removal of older log files
- 3. Access control
- + User authorization by NetBIOS messanger name
- + Access control by username, source IP, destination IP and destination
- port
- + Access control by username/password for SOCKSv5 and HTTP
- + Cleartext or encrypted (crypt/MD5 or NT) passwords.
- 4. Configuration
- + support for configuration files
- + support for includes in configuration files
- + interface binding
- + running as daemon process
- Unix
- + support for chroot
- + support for setgid
- + support for setuid
- NT
- + support --install as service
- + support --remove as service
- + support for service START, STOP, PAUSE and CONTINUE commands (on
- PAUSE no new connection accepted, but active connections still in
- progress)
- 5. Compilation
- + Microsoft VC++ (msvcrt.dll)
- + Windows/gcc (msvcrt.dll)
- + Cygwin/gcc (cygwin.dll)
- + Unix/gcc
-
- Known bugs:
-
- - udppm doesn't work if compiled with cygwin.
-
- Cygwin doesn't support recvfrom()/sendto() on connected socket, so
- recv/send is used instead... Not a big deal anyway.
-
- - socks5 doesn't work with UDP
-
- Not implemented yet
-
- Planned for future release:
- - UDP implementation in SOCKSv5
- - Signal handling on Unix (for pause/resume)
- - External filter API
- - Addon trafficshape, URL, antiviral, HTTP cache filters
-
-06.11.2002
-!!MARK IT 0.2beta
-! Using UPX to compress 3proxy.exe
-
-
-02.11.2002
-+ HTTP proxy now supports kepp-alive connections to HTTP server or proxy.
- It dramatically decreases number of outgoing connections and amount of DNS
- traffic.
-
-01.11.2002
-+ Now proxy can catch Web server style requests. It means proxy
- may be used as a transparent proxy. Yes. It means you can redirect
- SOCKS requests with target 80 to HTTP proxy.
-! Port check in ACL fixed
-! Now proxy catches redirection by changed destination IP or port. If
- you redirect request to web server make sure it supports proxy style
- requests (IIS and Apache do).
-+ HTTP proxy supports keep-alive. Now number of threads required
- significantly reduced.
-+ HTTP CONNECT fully supported (both direct and redirected to another proxy).
- Now you can use our proxy for HTTPs. Or for spam :) Don't forget to set ACL
- for outgoing ports, cause now ports are not limited.
-
-26.10.2002
-+ mycrypt utility added for making crypted passwords in NT and crypt/MD5
-! ACL check for strong auth corrected
-+ HTTP proxy support for authentication (basic). Now you can use strong
- username/password authentication with proxy module.
-+ Error messages added for HTTP proxy
-
-25.10.2002
-+ NT passwords are now supported in 3proxy.cfg
-! Public License Agreement changed to be more clear
-
-24.10.2002
-! Fixed handle leak because of missed CloseHandle for threads in Windows
-
-23.10.2002
-! Fixed POP3 proxy bug
-! Strong auth changed to allow rules with * for username
-+ MD5 crypt format passwords is now supported... Do we ever need DES?
- I will not implement blowfish - it's huge and rarely used.
-+ More comments added to 3proxy.cfg.sample
-
-21.10.2002
-! Fixed strongauth problem - ACL was not checked for authenticated
- SOCKSv5 users
-
-16.10.2002
-+ Added support for SOCKSv5 cleartext password authentication
-+ "strong" authentication is now OK (use it only for SOCKS)
-+ added "users" config file command to specify username and password. Only
- cleartext for a while.
-
-20.09.2002
-! Minor improvements in socket operations
-
-17.09.2002
-! HTTP proxy changed to do not strip hostname from URI if target port is not
- 80. It allows to redirect requests to another proxy as well as redirect to
- different Web server via ACL. It will work for most servers (IIS, Apache)
- if target redirected to non-standard port of Web server, but may fail in
- some rare cases. Redirection to proxy should always work OK except if proxy
- is on TCP/80.
-+ Added "redirect" ACL command. You can redirect request to another destination
- if ACL entry matches (that is by target or source IP, target port, username).
-! Fixed documentation bug in 3proxy.cfg.sample ("authtype" instead of "auth")
-! Fixed bug causing server to exit in native Win32 mode if "service"
- configuration option is not configured
-! Outgoing SOCKS connections are handled in common way now.
-
-07.09.2002
-+ added binding to external interface for outgoing connections
-! Fixed bug causing username check in ACL always fail
-+ Added ACL check for UDP map
-+ Added "Single packet" services to UDP portmap (-s switch). Allows unlimited
- number of clients to be handled by portmapper for single-packet services
- (like DNS).
-
-06.09.2002 3[APA3A]tiny proxy 0.1b initial release
-
- Features:
- 1. General
- + HTTP/1.0 Proxy
- + SOCKSv4 Proxy
- + SOCKSv5 Proxy (TCP only)
- + POP3 Proxy
- + TCP port mapper
- + UDP port mapper
- + Threaded application (no child process).
- 2. Logging
- + stdout logging
- + file logging
- + syslog logging (Unix)
- + log file rotation (hourly, daily, weekly, monthly)
- + automatic log file comperssion with external archiver (for files)
- + automatic removal of older log files
- 3. Access control
- + User authorization by NetBIOS messanger name
- + Access control by username, source IP, destination IP and destination
- port
- 4. Configuration
- + support for configuration files
- + support for includes in configuration files
- + interface binding
- + running as daemon process
- Unix
- + support for chroot
- + support for setgid
- + support for setuid
- NT
- + support --install as service
- + support --remove as service
- + support for service START, STOP, PAUSE and CONTINUE commands (on
- PAUSE no new connection accepted, but active connections still in
- progress)
- 5. Compilation
- + Microsoft VC++ (msvcrt.dll)
- + Windows/gcc (msvcrt.dll)
- + Cygwin/gcc (cygwin.dll)
- + Unix/gcc
-
- Known bugs:
-
- - udppm doesn't work if compiled with cygwin.
-
- Cygwin doesn't support recvfrom()/sendto() on connected socket, so
- recv/send is used instead... Not a big deal anyway.
-
- - udppm works without authentication
-
- Will be patched later.
-
- - socks5 doesn't work with UDP
-
- Not implemented yet
-
- Planned for future release:
- - Improvements to UDP portmapping
- - UDP implementation in SOCKSv5
- - Ident authorization
- - SOCKSv5 password authentication
- - Signal handling on Unix (for pause/resume)
- - External filter API
- - Addon trafficshape, URL, antiviral, HTTP cache filters
- - HTTP/1.1 support
-
-
-$Id: Changelog,v 1.154 2006/03/08 18:44:00 vlad Exp $
\ No newline at end of file
From cb590049b32810b170827d9e097f87466360bbbf Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 16 Apr 2014 15:39:38 +0400
Subject: [PATCH 011/122] More legacy code removed
---
src/ftp.c | 32 --------------------------------
1 file changed, 32 deletions(-)
diff --git a/src/ftp.c b/src/ftp.c
index de5a51b..d6708f2 100644
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -33,11 +33,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 703;
}
-#ifndef NOPSTDIN
param->statscli64 += (int)strlen(buf);
-#else
- param->statscli += (int)strlen(buf);
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -54,11 +50,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
if((int)socksend(param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 705;
}
-#ifndef NOPSTDIN
param->statscli64 += res;
-#else
- param->statscli += res;
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0){
buf[i] = 0;
@@ -89,11 +81,7 @@ int ftpcd(struct clientparam *param, unsigned char* path, char *nbuf, int *innbu
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 711;
}
-#ifndef NOPSTDIN
param->statscli64 += (int)strlen(buf);
-#else
- param->statscli += (int)strlen(buf);
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
if(nbuf && innbuf && inbuf + i < *innbuf && i > 6) {
@@ -126,11 +114,7 @@ int ftpsyst(struct clientparam *param, unsigned char *buf, unsigned len){
if(socksend(param->remsock, (unsigned char *)"SYST\r\n", 6, conf.timeouts[STRING_S]) != 6){
return 721;
}
-#ifndef NOPSTDIN
param->statscli64 += 6;
-#else
- param->statscli += 6;
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -149,11 +133,7 @@ int ftppwd(struct clientparam *param, unsigned char *buf, unsigned len){
if(socksend(param->remsock, (unsigned char *)"PWD\r\n", 5, conf.timeouts[STRING_S]) != 5){
return 731;
}
-#ifndef NOPSTDIN
param->statscli64 += 5;
-#else
- param->statscli += 5;
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -178,11 +158,7 @@ int ftptype(struct clientparam *param, unsigned char* f_type){
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 741;
}
-#ifndef NOPSTDIN
param->statscli64 += (int)strlen(buf);
-#else
- param->statscli += (int)strlen(buf);
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -203,11 +179,7 @@ SOCKET ftpdata(struct clientparam *param){
if(socksend(param->remsock, (unsigned char *)"PASV\r\n", 6, conf.timeouts[STRING_S]) != 6){
return INVALID_SOCKET;
}
-#ifndef NOPSTDIN
param->statscli64 += 6;
-#else
- param->statscli += 6;
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
@@ -245,11 +217,7 @@ SOCKET ftpcommand(struct clientparam *param, unsigned char * command, unsigned c
so._closesocket(s);
return INVALID_SOCKET;
}
-#ifndef NOPSTDIN
param->statscli64 += (int)strlen(buf);
-#else
- param->statscli += (int)strlen(buf);
-#endif
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
From e3144dc61bed56eba265883a8308ae61114a266f Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Sun, 4 May 2014 23:10:14 +0400
Subject: [PATCH 012/122] ldapauth memory leak fixed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Привет !
Рсправил старую багу РїРѕ утечки памяти РІ плагине .. теперь вообще РЅРµ
течет ,
глупая ошибка.. Вот так 3,5 года не попрограммируеш , срузу ошибку
найдеш :)
--
Kirill Lopuchov
---
src/plugins/LdapPlugin/ldapauth.c | 14 +++++++++++---
src/plugins/LdapPlugin/ldapauth.txt | 10 ----------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/src/plugins/LdapPlugin/ldapauth.c b/src/plugins/LdapPlugin/ldapauth.c
index bc69f68..5b8231c 100644
--- a/src/plugins/LdapPlugin/ldapauth.c
+++ b/src/plugins/LdapPlugin/ldapauth.c
@@ -121,6 +121,9 @@ static int ldapfunc(struct clientparam *param)
int rc = -1;
char tmpbuf[1024];
+ /* test proxy user auth ------------------------*/
+ if(!param->username || !param->password) return 4;
+ if(strlen(param->password)==0) return 4;
/* init ldap ---------------------- */
ld = ldap_init( ldap_serv, 389 );
@@ -131,9 +134,6 @@ static int ldapfunc(struct clientparam *param)
return 7;
}
- /* test proxy user auth ------------------------*/
- if(!param->username || !param->password) return 4;
- if(strlen(param->password)==0) return 4;
/* this code for Active Directory LDAP catalog :(
detail see documentation for plugin */
@@ -161,6 +161,14 @@ static int ldapfunc(struct clientparam *param)
ldap_unbind_s(ld);
ld = ldap_init( ldap_serv, 389 );
+
+ if ( ld == NULL )
+ {
+ param->srv->logfunc(param,"Error ldap_init: No init lib ldap");
+ /*ldap_perror( ld, "Error ldap_init" ); */
+ return 7;
+ }
+
rc = ldap_bind_s( ld, ldap_user, ldap_pass, LDAP_AUTH_SIMPLE );
if ( rc != LDAP_SUCCESS )
diff --git a/src/plugins/LdapPlugin/ldapauth.txt b/src/plugins/LdapPlugin/ldapauth.txt
index 0c23a6e..89f04d5 100644
--- a/src/plugins/LdapPlugin/ldapauth.txt
+++ b/src/plugins/LdapPlugin/ldapauth.txt
@@ -27,11 +27,6 @@ http://lucas.bergmans.us/hacks/openldap/
под unix подобной ОС (Freebsd) использовался стандартный gcc.
и библиотеки openldap-client.
-!!!! Внимание при работе плагина возможна утечка памяти !!!!
-У меня на Win 2000 Serv и окола 600 пользователях при канале 500 кбит/сек .
-процесс 3proxy за сутки выростает до 40 мб . Лечится рестартом сервиса.
-Если кто то знает хорошо Open Ldap api и может указать на ошибку в плагине
-с радостью выслушаю :) .
2. Настройка плагина.
@@ -328,11 +323,6 @@ http://lucas.bergmans.us/hacks/openldap/
РПД unix РПДПВОПК пу (Freebsd) ЙУРПМШЪПЧБМУС УФБОДБТФОЩК gcc.
Й ВЙВМЙПФЕЛЙ openldap-client.
-!!!! чОЙНБОЙЕ РТЙ ТБВПФЕ РМБЗЙОБ ЧПЪНПЦОБ ХФЕЮЛБ РБНСФЙ !!!!
-х НЕОС ОБ Win 2000 Serv Й ПЛПМБ 600 РПМШЪПЧБФЕМСИ РТЙ ЛБОБМЕ 500 ЛВЙФ/УЕЛ .
-РТПГЕУУ 3proxy ЪБ УХФЛЙ ЧЩТПУФБЕФ ДП 40 НВ . мЕЮЙФУС ТЕУФБТФПН УЕТЧЙУБ.
-еУМЙ ЛФП ФП ЪОБЕФ ИПТПЫП Open Ldap api Й НПЦЕФ ХЛБЪБФШ ОБ ПЫЙВЛХ Ч РМБЗЙОЕ
-У ТБДПУФША ЧЩУМХЫБА :) .
2. оБУФТПКЛБ РМБЗЙОБ.
From aad255900497b12d9de1448eeb644b1d11a0fdd7 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Wed, 7 May 2014 01:42:22 +0400
Subject: [PATCH 013/122] FTP proxy debugging output removed, bind to same IP
with control connection for active FTP
FTP proxy debugging output removed, bind to same IP with control
connection for active FTP
---
src/ftppr.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/ftppr.c b/src/ftppr.c
index 6fd5342..22bb4a2 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -42,8 +42,6 @@ void * ftpprchild(struct clientparam* param) {
if (req) myfree (req);
req = NULL;
-(*param->srv->logfunc)(param, buf);
-
if (!strncasecmp((char *)buf, "OPEN ", 5)){
if(parsehostname((char *)buf+5, param, 21)){RETURN(803);}
if(param->remsock != INVALID_SOCKET) {
@@ -123,10 +121,10 @@ void * ftpprchild(struct clientparam* param) {
}
if ((clidatasock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);}
sasize = sizeof(struct sockaddr_in);
+ if(so._getsockname(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(824);}
+ param->sinc.sin_port = 0;
+ if(so._bind(clidatasock, (struct sockaddr *)¶m->sinc, sasize)){RETURN(822);}
if (pasv) {
- if(so._getsockname(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(824);}
- param->sinc.sin_port = 0;
- if(so._bind(clidatasock, (struct sockaddr *)¶m->sinc, sasize)){RETURN(822);}
if(so._listen(clidatasock, 1)) {RETURN(823);}
if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(824);}
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
@@ -137,7 +135,6 @@ void * ftpprchild(struct clientparam* param) {
(unsigned)(((unsigned char *)(¶m->sinc.sin_port))[0]),
(unsigned)(((unsigned char *)(¶m->sinc.sin_port))[1])
);
-param->srv->logfunc(param,buf);
}
else {
unsigned long b1, b2, b3, b4;
From 6b99de69c408e753e86ae11c03d15d9ff5427533 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Tue, 6 May 2014 02:56:35 +0400
Subject: [PATCH 014/122] getip46() added
int getip46(int family, unsigned char *name, struct sockaddr_storage
*sa)
family: IPv4/IPv6 preference order 4, 6, 46, 64 or 0 for getip()
compatibility.
name - hostname,
sa - destination sockaddr (must be large enougth)
returns:
0 fo failed resolution
IP address for family = 0
AF_INET/AF_INET6 overwise.
---
src/common.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++---
src/proxy.h | 9 ++++++++
2 files changed, 69 insertions(+), 3 deletions(-)
diff --git a/src/common.c b/src/common.c
index b2509a3..fe94d3e 100644
--- a/src/common.c
+++ b/src/common.c
@@ -688,9 +688,8 @@ unsigned long getip(unsigned char *name){
if(name[i] <'0' || name[i] >'9') break;
}
if(!name[i] && ndots == 3){
- unsigned long ip;
- if(scanaddr(name, &ip, NULL) == 4){
- return ip;
+ if(scanaddr(name, &retval, NULL) == 4){
+ return retval;
}
}
if(resolvfunc){
@@ -719,3 +718,61 @@ unsigned long getip(unsigned char *name){
#endif
return retval;
}
+
+#ifdef NOIPV6
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa){
+#else
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa){
+ int ndots=0, ncols=0;
+ struct addrinfo *ai, *iter;
+ struct sockaddr *sa4, *sa6;
+ int i;
+
+ if(!sa) return 0;
+ if(!family) {
+#endif
+ memset(sa, 0, sizeof(struct sockaddr_in));
+ ((struct sockaddr_in *)sa)->sin_family = AF_INET;
+ return (((struct sockaddr_in *)sa)->sin_addr.s_addr = getip(name))? AF_INET:0;
+#ifndef NOIPV6
+ }
+ for(i=0; name[i]; i++){
+ if(name[i] == '.'){
+ if(++ndots > 3) break;
+ continue;
+ }
+ else if(name[i] == ':'){
+ if(++ndots > 7) break;
+ continue;
+ }
+ if(name[i] <'0' || name[i] >'9') break;
+ }
+ if(!name[i]){
+ if(ndots == 3 && ncols == 0){
+ return inet_pton(AF_INET, name, sa)? AF_INET : 0;
+ }
+ if(ncols >= 2) {
+ return inet_pton(AF_INET6, name, sa)? AF_INET6 : 0;
+ }
+ }
+ if (getaddrinfo(name, NULL, NULL, &ai)) return 0;
+ for(iter = ai; iter; iter = iter->ai_next){
+ if(!sa4 && iter->ai_addr->sa_family == AF_INET) sa4 = iter->ai_addr;
+ if(!sa6 && iter->ai_addr->sa_family == AF_INET) sa6 = iter->ai_addr;
+ }
+ if(sa6 && ((family == 6) || (family == 64) || (family == 46 && !sa4))){
+ memcpy(sa, sa6, sizeof(struct sockaddr_in6));
+ freeaddrinfo(ai);
+ return AF_INET6;
+ }
+ else if(sa4 && family != 6){
+ memcpy(sa, sa4, sizeof(struct sockaddr_in));
+ freeaddrinfo(ai);
+ return AF_INET;
+ }
+ else {
+ freeaddrinfo(ai);
+ return 0;
+ }
+#endif
+}
diff --git a/src/proxy.h b/src/proxy.h
index fbccdde..e195cc1 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -47,6 +47,10 @@
#ifdef _WIN32
#include
+#ifndef NOIPV6
+#include
+
+#endif
#ifndef _WINCE
#include
#else
@@ -188,6 +192,11 @@ int myinet_ntoa(struct in_addr in, char * buf);
extern unsigned long nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
+#ifdef NOIPV6
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa){
+#else
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa){
+#endif
unsigned long myresolver(unsigned char *);
unsigned long fakeresolver (unsigned char *name);
int initdnshashtable(unsigned nhashsize);
From cce3a94f04f1e14db48315086fa56670b1994078 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Wed, 7 May 2014 03:20:18 +0400
Subject: [PATCH 015/122] proxy.h getip46() description fixed
---
src/proxy.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/proxy.h b/src/proxy.h
index e195cc1..0e5ee31 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -193,9 +193,9 @@ extern unsigned long nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
#ifdef NOIPV6
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa){
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa);
#else
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa){
+unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa);
#endif
unsigned long myresolver(unsigned char *);
unsigned long fakeresolver (unsigned char *name);
From bc7ca3af09d8db2d32f8003c2395e40647bb30bf Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Wed, 7 May 2014 03:29:57 +0400
Subject: [PATCH 016/122] intip changed to intsa
intip changed to intsa for IPv6 use
---
src/3proxy.c | 2 +-
src/common.c | 3 ++-
src/datatypes.c | 18 +++++++++++++++---
src/dnspr.c | 2 +-
src/proxy.c | 3 ++-
src/proxy.h | 5 -----
src/proxymain.c | 10 ++++++----
src/socks.c | 2 +-
src/structures.h | 9 +++++++--
9 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 5c88298..20e8caa 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -727,7 +727,7 @@ static int h_proxy(int argc, unsigned char ** argv){
}
static int h_internal(int argc, unsigned char ** argv){
- conf.intip = getip(argv[1]);
+ getip46(46, argv[1], &conf.intsa);
return 0;
}
diff --git a/src/common.c b/src/common.c
index fe94d3e..028fe42 100644
--- a/src/common.c
+++ b/src/common.c
@@ -56,7 +56,8 @@ struct extparam conf = {
NULL, NULL,
NONE, NONE,
NULL,
- INADDR_ANY, INADDR_ANY,
+ {AF_INET},
+ INADDR_ANY,
0, 0,
NULL,
NULL,
diff --git a/src/datatypes.c b/src/datatypes.c
index 554ab8f..ce9c94c 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -72,6 +72,17 @@ static void pr_ip(struct node *node, CBFUNC cbf, void*cb){
if(node->value)(*cbf)(cb, buf, ipprint(buf, *(unsigned *)node -> value));
}
+static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
+#ifdef NOIPV6
+ if(node->value)return pr_ip(node, &((struct sockaddr_in *)node->value)->sin_addr.s_addr)
+#else
+ char buf[64];
+ *buf = 0;
+ inet_ntop(((struct sockaddr *)node -> value)->sa_family, node->value, buf, sizeof(buf));
+ if(node->value)(*cbf)(cb, buf, strlen(buf));
+#endif
+}
+
static void pr_wdays(struct node *node, CBFUNC cbf, void*cb){
char buf[16];
int i, found = 0;
@@ -555,8 +566,8 @@ static void * ef_server_targetport(struct node * node){
return &((struct srvparam *)node->value) -> targetport;
}
-static void * ef_server_intip(struct node * node){
- return &((struct srvparam *)node->value) -> intip;
+static void * ef_server_intsa(struct node * node){
+ return &((struct srvparam *)node->value) -> intsa;
}
static void * ef_server_extip(struct node * node){
@@ -763,7 +774,7 @@ static struct property prop_server[] = {
{prop_server + 2, "target", ef_server_target, TYPE_STRING, "portmapper target ip"},
{prop_server + 3, "targetport", ef_server_targetport, TYPE_PORT, "portmapper target port"},
{prop_server + 4, "starttime", ef_server_starttime, TYPE_DATETIME, "service started seconds"},
- {prop_server + 5, "intip", ef_server_intip, TYPE_IP, "ip address of internal interface"},
+ {prop_server + 5, "intsa", ef_server_intsa, TYPE_SA, "ip address of internal interface"},
{prop_server + 6, "extip", ef_server_extip, TYPE_IP, "ip address of external interface"},
{prop_server + 7, "intport", ef_server_intport, TYPE_PORT, "port to listen"},
{prop_server + 8, "extport", ef_server_extport, TYPE_PORT, "port to use for outgoing connection"},
@@ -819,6 +830,7 @@ struct datatype datatypes[64] = {
{"traffic", NULL, pr_traffic, NULL},
{"port", NULL, pr_port, NULL},
{"ip", NULL, pr_ip, NULL},
+ {"sa", NULL, pr_sa, NULL},
{"cidr", NULL, pr_cidr, NULL},
{"string", NULL, pr_string, NULL},
{"datetime", NULL, pr_datetime, NULL},
diff --git a/src/dnspr.c b/src/dnspr.c
index 6612d6f..f9ef868 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -107,7 +107,7 @@ void * dnsprchild(struct clientparam* param) {
unsigned a, b, c, d;
sscanf(host, "%u.%u.%u.%u", &a, &b, &c, &d);
ip = htonl((d<<24) ^ (c<<16) ^ (b<<8) ^ a);
- if(ip == param->srv->intip){
+ if(param->srv->intsa.ss_family == AF_INET && ip == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr){
buf[2] = 0x85;
buf[3] = 0x80;
buf[6] = 0;
diff --git a/src/proxy.c b/src/proxy.c
index f971abe..cd6824c 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -545,7 +545,8 @@ for(;;){
#endif
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
- if (param->sins.sin_addr.s_addr == param->srv->intip && param->sins.sin_port == param->srv->intport) {
+ if (param->srv->intsa.ss_family == AF_INET &&
+ (param->sins.sin_addr.s_addr == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr && param->sins.sin_port == param->srv->intport)) {
RETURN(519);
}
sasize = sizeof(struct sockaddr_in);
diff --git a/src/proxy.h b/src/proxy.h
index 0e5ee31..2fd1c22 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -47,10 +47,6 @@
#ifdef _WIN32
#include
-#ifndef NOIPV6
-#include
-
-#endif
#ifndef _WINCE
#include
#else
@@ -319,7 +315,6 @@ extern pthread_mutex_t odbc_mutex;
#endif
extern struct hashtable dns_table;
-
extern struct datatype datatypes[64];
extern struct commands commandhandlers[];
diff --git a/src/proxymain.c b/src/proxymain.c
index ff22a9b..a158afa 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -173,7 +173,7 @@ int MODULEMAINFUNC (int argc, char** argv){
}
break;
case 'i':
- srv.intip = getip((unsigned char *)argv[i]+2);
+ getip46(46, argv[i]+2, &srv.intsa);
break;
case 'e':
srv.extip = getip((unsigned char *)argv[i]+2);
@@ -535,8 +535,8 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
else srv->logformat = (unsigned char *)mystrdup((char *)srv->logformat);
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
- if(!srv->intip) srv->intip = conf.intip;
- param->sinc.sin_addr.s_addr = srv->intip;
+ if(!srv->intsa.ss_family) memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
+ param->sinc.sin_addr.s_addr = ((struct sockaddr_in *)&srv->intsa)->sin_addr.s_addr;
param->sinc.sin_port = srv->intport;
if(!srv->extip) srv->extip = conf.extip;
param->sins.sin_addr.s_addr = param->extip = srv->extip;
@@ -843,7 +843,9 @@ void freeconf(struct extparam *confp){
confp->logtype = NONE;
confp->authfunc = ipauth;
confp->bandlimfunc = NULL;
- confp->intip = confp->extip = 0;
+ memset(&confp->intsa, 0, sizeof(confp->intsa));
+ confp->intsa.ss_family = AF_INET;
+ confp->extip = 0;
confp->intport = confp->extport = 0;
confp->singlepacket = 0;
confp->maxchild = 100;
diff --git a/src/socks.c b/src/socks.c
index 5bdba1d..d8c9237 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -178,7 +178,7 @@ fflush(stderr);
param->clisock = so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(param->clisock == INVALID_SOCKET) {RETURN(11);}
sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = param->srv->intip;
+ sin.sin_addr.s_addr = ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr;
sin.sin_port = htons(0);
if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(struct sockaddr_in))) {RETURN (12);}
#if SOCKSTRACE > 0
diff --git a/src/structures.h b/src/structures.h
index b0058d3..6cabb6d 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -28,6 +28,9 @@ extern "C" {
#define INVALID_SOCKET (-1)
#else
#include
+#ifndef NOIPV6
+#include
+#endif
#define pthread_mutex_t CRITICAL_SECTION
#define pthread_mutex_init(x, y) InitializeCriticalSection(x)
#define pthread_mutex_lock(x) EnterCriticalSection(x)
@@ -330,7 +333,7 @@ struct srvparam {
int nfilters, nreqfilters, nhdrfilterscli, nhdrfilterssrv, npredatfilters, ndatfilterscli, ndatfilterssrv;
unsigned bufsize;
unsigned logdumpsrv, logdumpcli;
- unsigned long intip;
+ struct sockaddr_storage intsa;
unsigned long extip;
pthread_mutex_t counter_mutex;
struct pollfd fds;
@@ -451,7 +454,8 @@ struct extparam {
unsigned char *logname, **archiver;
ROTATION logtype, countertype;
char * counterfile;
- unsigned long intip, extip;
+ struct sockaddr_storage intsa;
+ unsigned long extip;
unsigned short intport, extport;
struct passwords *pwl;
struct auth * authenticate;
@@ -659,6 +663,7 @@ typedef enum {
TYPE_TRAFFIC,
TYPE_PORT,
TYPE_IP,
+ TYPE_SA,
TYPE_CIDR,
TYPE_STRING,
TYPE_DATETIME,
From 7897b009a1af5a0d57d5dc321b008104e5096192 Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Sun, 11 May 2014 01:39:02 +0400
Subject: [PATCH 017/122] intport removed, SA macro added
---
.gitignore | 1 +
src/common.c | 54 +++++++++++++++++++++++++++---------------------
src/datatypes.c | 35 ++++++++++++++-----------------
src/dnspr.c | 2 +-
src/proxy.c | 6 +++---
src/proxy.h | 6 +-----
src/proxymain.c | 30 ++++++++++++++-------------
src/structures.h | 30 +++++++++++++++++++++++----
8 files changed, 94 insertions(+), 70 deletions(-)
diff --git a/.gitignore b/.gitignore
index 22ac573..cf580e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,7 @@ doc/html/index.html
verfile.sh
Makefile
Changelog
+res
copytgz.sh
*~.nib
local.properties
diff --git a/src/common.c b/src/common.c
index 028fe42..341967f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -58,7 +58,7 @@ struct extparam conf = {
NULL,
{AF_INET},
INADDR_ANY,
- 0, 0,
+ 0,
NULL,
NULL,
doconnect,
@@ -463,7 +463,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += myinet_ntoa(param->req.sin_addr, (char *)buf + i);
break;
case 'p':
- sprintf((char *)buf+i, "%hu", ntohs(param->srv->intport));
+ sprintf((char *)buf+i, "%hu", ntohs(*SAPORT(¶m->srv->intsa)));
i += (int)strlen((char *)buf+i);
break;
case 'c':
@@ -720,60 +720,66 @@ unsigned long getip(unsigned char *name){
return retval;
}
-#ifdef NOIPV6
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa){
-#else
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa){
- int ndots=0, ncols=0;
+unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
+#ifndef NOIPV6
+ int ndots=0, ncols=0, nhex=0;
struct addrinfo *ai, *iter;
- struct sockaddr *sa4, *sa6;
+ struct sockaddr *sa4=NULL, *sa6=NULL;
int i;
if(!sa) return 0;
if(!family) {
#endif
- memset(sa, 0, sizeof(struct sockaddr_in));
((struct sockaddr_in *)sa)->sin_family = AF_INET;
return (((struct sockaddr_in *)sa)->sin_addr.s_addr = getip(name))? AF_INET:0;
#ifndef NOIPV6
}
for(i=0; name[i]; i++){
if(name[i] == '.'){
- if(++ndots > 3) break;
- continue;
+ if(++ndots > 3) {
+ break;
+ }
}
else if(name[i] == ':'){
- if(++ndots > 7) break;
- continue;
+ if(++ncols > 7) {
+ break;
+ }
+ }
+ else if(name[i] == '%' || (name[i] >= 'a' && name[i] <= 'f') || (name[i] >= 'A' && name[i] <= 'F')){
+ nhex++;
+ }
+ else if(name[i] <'0' || name[i] >'9') {
+ break;
}
- if(name[i] <'0' || name[i] >'9') break;
}
if(!name[i]){
- if(ndots == 3 && ncols == 0){
- return inet_pton(AF_INET, name, sa)? AF_INET : 0;
+ if(ndots == 3 && ncols == 0 && nhex == 0){
+ *SAFAMILY(sa)=AF_INET;
+ return inet_pton(AF_INET, name, SAADDR(sa))? AF_INET : 0;
}
if(ncols >= 2) {
- return inet_pton(AF_INET6, name, sa)? AF_INET6 : 0;
+ *SAFAMILY(sa)=AF_INET6;
+ return inet_pton(AF_INET6, name, SAADDR(sa))? AF_INET6 : 0;
}
}
if (getaddrinfo(name, NULL, NULL, &ai)) return 0;
for(iter = ai; iter; iter = iter->ai_next){
if(!sa4 && iter->ai_addr->sa_family == AF_INET) sa4 = iter->ai_addr;
- if(!sa6 && iter->ai_addr->sa_family == AF_INET) sa6 = iter->ai_addr;
+ if(!sa6 && iter->ai_addr->sa_family == AF_INET6) sa6 = iter->ai_addr;
}
if(sa6 && ((family == 6) || (family == 64) || (family == 46 && !sa4))){
- memcpy(sa, sa6, sizeof(struct sockaddr_in6));
+ *SAFAMILY(sa)=AF_INET6;
+ memcpy(SAADDR(sa), SAADDR(sa6), SAADDRLEN(sa));
freeaddrinfo(ai);
return AF_INET6;
}
else if(sa4 && family != 6){
- memcpy(sa, sa4, sizeof(struct sockaddr_in));
+ *SAFAMILY(sa)=AF_INET;
+ memcpy(SAADDR(sa), SAADDR(sa4), SAADDRLEN(sa));
freeaddrinfo(ai);
return AF_INET;
}
- else {
- freeaddrinfo(ai);
- return 0;
- }
+ freeaddrinfo(ai);
+ return 0;
#endif
}
diff --git a/src/datatypes.c b/src/datatypes.c
index ce9c94c..a80196e 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -77,8 +77,10 @@ static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
if(node->value)return pr_ip(node, &((struct sockaddr_in *)node->value)->sin_addr.s_addr)
#else
char buf[64];
- *buf = 0;
- inet_ntop(((struct sockaddr *)node -> value)->sa_family, node->value, buf, sizeof(buf));
+ buf[0] = '['
+ buf[1] = 0;
+ inet_ntop(*SAFAMILY(node->value), node->value, buf+1, sizeof(buf)-10);
+ sprintf(buf + strlen(buf), "]:hu", (unsigned short)*SAPORT(node->value));
if(node->value)(*cbf)(cb, buf, strlen(buf));
#endif
}
@@ -574,10 +576,6 @@ static void * ef_server_extip(struct node * node){
return &((struct srvparam *)node->value) -> extip;
}
-static void * ef_server_intport(struct node * node){
- return &((struct srvparam *)node->value) -> intport;
-}
-
static void * ef_server_extport(struct node * node){
return &((struct srvparam *)node->value) -> extport;
}
@@ -776,19 +774,18 @@ static struct property prop_server[] = {
{prop_server + 4, "starttime", ef_server_starttime, TYPE_DATETIME, "service started seconds"},
{prop_server + 5, "intsa", ef_server_intsa, TYPE_SA, "ip address of internal interface"},
{prop_server + 6, "extip", ef_server_extip, TYPE_IP, "ip address of external interface"},
- {prop_server + 7, "intport", ef_server_intport, TYPE_PORT, "port to listen"},
- {prop_server + 8, "extport", ef_server_extport, TYPE_PORT, "port to use for outgoing connection"},
- {prop_server + 9, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
- {prop_server + 10, "acl", ef_server_acl, TYPE_ACE, "access control list"},
- {prop_server + 11, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
- {prop_server + 12, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
- {prop_server + 13, "log", ef_server_log, TYPE_STRING, "type of logging"},
- {prop_server + 14, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
- {prop_server + 15, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
- {prop_server + 16, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
- {prop_server + 17, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
- {prop_server + 18, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
- {prop_server + 19, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
+ {prop_server + 7, "extport", ef_server_extport, TYPE_PORT, "port to use for outgoing connection"},
+ {prop_server + 8, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
+ {prop_server + 9, "acl", ef_server_acl, TYPE_ACE, "access control list"},
+ {prop_server + 10, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
+ {prop_server + 11, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
+ {prop_server + 12, "log", ef_server_log, TYPE_STRING, "type of logging"},
+ {prop_server + 13, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
+ {prop_server + 14, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
+ {prop_server + 15, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
+ {prop_server + 16, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
+ {prop_server + 17, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
+ {prop_server + 18, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
{NULL, "next", ef_server_next, TYPE_SERVER, "next"}
};
diff --git a/src/dnspr.c b/src/dnspr.c
index f9ef868..65faaf6 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -107,7 +107,7 @@ void * dnsprchild(struct clientparam* param) {
unsigned a, b, c, d;
sscanf(host, "%u.%u.%u.%u", &a, &b, &c, &d);
ip = htonl((d<<24) ^ (c<<16) ^ (b<<8) ^ a);
- if(param->srv->intsa.ss_family == AF_INET && ip == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr){
+ if(*SAFAMILY(¶m->srv->intsa) == AF_INET && ip == *(unsigned long*)SAADDR(¶m->srv->intsa)){
buf[2] = 0x85;
buf[3] = 0x80;
buf[6] = 0;
diff --git a/src/proxy.c b/src/proxy.c
index cd6824c..c1fe343 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -545,8 +545,8 @@ for(;;){
#endif
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
- if (param->srv->intsa.ss_family == AF_INET &&
- (param->sins.sin_addr.s_addr == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr && param->sins.sin_port == param->srv->intport)) {
+ if (*SAFAMILY(¶m->srv->intsa) == AF_INET &&
+ (param->sins.sin_addr.s_addr == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr && param->sins.sin_port == *SAPORT(¶m->srv->intsa))) {
RETURN(519);
}
sasize = sizeof(struct sockaddr_in);
@@ -830,7 +830,7 @@ for(;;){
if(anonymous!=1){
sprintf((char*)buf+strlen((char *)buf), "Via: 1.1 ");
gethostname((char *)(buf+strlen((char *)buf)), 256);
- sprintf((char*)buf+strlen((char *)buf), ":%d (%s %s)\r\nX-Forwarded-For: ", (int)ntohs(param->srv->intport), conf.stringtable?conf.stringtable[2]:(unsigned char *)"", conf.stringtable?conf.stringtable[3]:(unsigned char *)"");
+ sprintf((char*)buf+strlen((char *)buf), ":%d (%s %s)\r\nX-Forwarded-For: ", (int)ntohs(*SAPORT(¶m->srv->intsa)), conf.stringtable?conf.stringtable[2]:(unsigned char *)"", conf.stringtable?conf.stringtable[3]:(unsigned char *)"");
if(!anonymous)myinet_ntoa(param->sinc.sin_addr, (char *)buf + strlen((char *)buf));
else {
unsigned long tmp;
diff --git a/src/proxy.h b/src/proxy.h
index 2fd1c22..829ace8 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -188,11 +188,7 @@ int myinet_ntoa(struct in_addr in, char * buf);
extern unsigned long nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
-#ifdef NOIPV6
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_in *sa);
-#else
-unsigned long getip46(int family, unsigned char *name, struct sockaddr_storage *sa);
-#endif
+unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
unsigned long myresolver(unsigned char *);
unsigned long fakeresolver (unsigned char *name);
int initdnshashtable(unsigned nhashsize);
diff --git a/src/proxymain.c b/src/proxymain.c
index a158afa..a2df6a6 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -173,13 +173,13 @@ int MODULEMAINFUNC (int argc, char** argv){
}
break;
case 'i':
- getip46(46, argv[i]+2, &srv.intsa);
+ getip46(46, argv[i]+2, (struct sockaddr *)&srv.intsa);
break;
case 'e':
srv.extip = getip((unsigned char *)argv[i]+2);
break;
case 'p':
- srv.intport = htons(atoi(argv[i]+2));
+ *SAPORT(&srv.intsa) = htons(atoi(argv[i]+2));
break;
case 'b':
srv.bufsize = atoi(argv[i]+2);
@@ -259,7 +259,7 @@ int MODULEMAINFUNC (int argc, char** argv){
else {
#endif
#ifndef NOPORTMAP
- if (error || argc != i+3 || *argv[i]=='-'|| (srv.intport = htons((unsigned short)atoi(argv[i])))==0 || (srv.targetport = htons((unsigned short)atoi(argv[i+2])))==0) {
+ if (error || argc != i+3 || *argv[i]=='-'|| (*SAPORT(&srv.intsa) = htons((unsigned short)atoi(argv[i])))==0 || (srv.targetport = htons((unsigned short)atoi(argv[i+2])))==0) {
#ifndef STDMAIN
haveerror = 1;
conf.threadinit = 0;
@@ -311,7 +311,7 @@ int MODULEMAINFUNC (int argc, char** argv){
srvinit2(&srv, &defparam);
- if(!srv.intport) srv.intport = htons(childdef.port);
+ if(!*SAPORT(&srv.intsa)) *SAPORT(&srv.intsa) = htons(childdef.port);
if(!defparam.sinc.sin_port) defparam.sinc.sin_port = htons(childdef.port);
if(hostname)parsehostname(hostname, &defparam, childdef.port);
@@ -329,7 +329,7 @@ int MODULEMAINFUNC (int argc, char** argv){
if(!isudp){
lg.l_onoff = 1;
lg.l_linger = conf.timeouts[STRING_L];
- sock=so._socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+ sock=so._socket(SASOCK(&srv.intsa), SOCK_STREAM, IPPROTO_TCP);
}
else {
sock=so._socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
@@ -350,8 +350,8 @@ int MODULEMAINFUNC (int argc, char** argv){
#endif
}
- size = sizeof(defparam.sinc);
- for(sleeptime = SLEEPTIME * 100; so._bind(sock, (struct sockaddr*)&defparam.sinc, size)==-1; usleep(sleeptime)) {
+ size = sizeof(srv.intsa);
+ for(sleeptime = SLEEPTIME * 100; so._bind(sock, (struct sockaddr*)&srv.intsa, size)==-1; usleep(sleeptime)) {
sprintf((char *)buf, "bind(): %s", strerror(errno));
if(!srv.silent)(*srv.logfunc)(&defparam, buf);
sleeptime = (sleeptime<<1);
@@ -374,8 +374,10 @@ int MODULEMAINFUNC (int argc, char** argv){
sprintf((char *)buf, "Accepting connections [%u/%u]", (unsigned)getpid(), (unsigned)pthread_self());
(*srv.logfunc)(&defparam, buf);
}
- defparam.sinc.sin_addr.s_addr = defparam.sins.sin_addr.s_addr = 0;
- defparam.sinc.sin_port = defparam.sins.sin_port = 0;
+ memset(&defparam.sinc, 0, sizeof(defparam.sinc));
+ memset(&defparam.sins, 0, sizeof(defparam.sins));
+ *SAFAMILY(&defparam.sinc) = AF_INET;
+ *SAFAMILY(&defparam.sins) = AF_INET;
srv.fds.fd = sock;
srv.fds.events = POLLIN;
@@ -519,7 +521,7 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
param->req.sin_family = param->sins.sin_family = param->sinc.sin_family = AF_INET;
pthread_mutex_init(&srv->counter_mutex, NULL);
-
+ memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
}
void srvinit2(struct srvparam * srv, struct clientparam *param){
@@ -535,9 +537,9 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
else srv->logformat = (unsigned char *)mystrdup((char *)srv->logformat);
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
- if(!srv->intsa.ss_family) memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
+ if(!*SAFAMILY(&srv->intsa)) *SAFAMILY(&srv->intsa) = AF_INET;
param->sinc.sin_addr.s_addr = ((struct sockaddr_in *)&srv->intsa)->sin_addr.s_addr;
- param->sinc.sin_port = srv->intport;
+ param->sinc.sin_port = *SAPORT(&srv->intsa);
if(!srv->extip) srv->extip = conf.extip;
param->sins.sin_addr.s_addr = param->extip = srv->extip;
if(!srv->extport) srv->extport = htons(conf.extport);
@@ -844,9 +846,9 @@ void freeconf(struct extparam *confp){
confp->authfunc = ipauth;
confp->bandlimfunc = NULL;
memset(&confp->intsa, 0, sizeof(confp->intsa));
- confp->intsa.ss_family = AF_INET;
+ *SAFAMILY(&confp->intsa) = AF_INET;
confp->extip = 0;
- confp->intport = confp->extport = 0;
+ *SAPORT(&confp->intsa) = confp->extport = 0;
confp->singlepacket = 0;
confp->maxchild = 100;
resolvfunc = NULL;
diff --git a/src/structures.h b/src/structures.h
index 6cabb6d..9d91ece 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -101,6 +101,21 @@ int
#define IM_MSN 0x00400000
#define ADMIN 0x01000000
+
+#define SAFAMILY(sa) (&(((struct sockaddr_in *)sa)->sin_family))
+
+#ifndef NOIPV6
+#define SAPORT(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? &((struct sockaddr_in6 *)sa)->sin6_port : &((struct sockaddr_in *)sa)->sin_port)
+#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.s6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
+#define SAADDRLEN(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)
+#define SASOCK(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET)
+#else
+#define SAPORT(sa) (&((struct sockaddr_in *)sa)->sin_port)
+#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.a_addr)
+#define SAADDRLEN(sa) (4)
+#define SASOCK(sa) (PF_INET)
+#endif
+
typedef enum {
CLIENT,
SERVER
@@ -333,7 +348,11 @@ struct srvparam {
int nfilters, nreqfilters, nhdrfilterscli, nhdrfilterssrv, npredatfilters, ndatfilterscli, ndatfilterssrv;
unsigned bufsize;
unsigned logdumpsrv, logdumpcli;
- struct sockaddr_storage intsa;
+#ifndef NOIPV6
+ struct sockaddr_in6 intsa;
+#else
+ struct sockaddr_in intsa
+#endif
unsigned long extip;
pthread_mutex_t counter_mutex;
struct pollfd fds;
@@ -347,7 +366,6 @@ struct srvparam {
unsigned char * logformat;
unsigned char * logtarget;
unsigned char * nonprintable;
- unsigned short intport;
unsigned short extport;
unsigned short targetport;
unsigned char replace;
@@ -454,9 +472,13 @@ struct extparam {
unsigned char *logname, **archiver;
ROTATION logtype, countertype;
char * counterfile;
- struct sockaddr_storage intsa;
+#ifndef NOIPV6
+ struct sockaddr_in6 intsa;
+#else
+ struct sockaddr_in intsa
+#endif
unsigned long extip;
- unsigned short intport, extport;
+ unsigned short extport;
struct passwords *pwl;
struct auth * authenticate;
AUTHFUNC authfunc;
From ccf606fd9e354886ab41a71a09c1d80745285d9e Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Sun, 11 May 2014 02:41:13 +0400
Subject: [PATCH 018/122] ntoa changed to ntop
---
src/3proxy.c | 2 +-
src/auth.c | 2 +-
src/common.c | 33 +++++++++++++++++++++------------
src/datatypes.c | 2 +-
src/icqpr.c | 4 ++--
src/msnpr.c | 2 +-
src/plugins.c | 4 ++--
src/proxy.c | 4 ++--
src/proxy.h | 2 +-
src/socks.c | 5 +++--
src/structures.h | 2 +-
11 files changed, 36 insertions(+), 26 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 20e8caa..751fcf6 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -727,7 +727,7 @@ static int h_proxy(int argc, unsigned char ** argv){
}
static int h_internal(int argc, unsigned char ** argv){
- getip46(46, argv[1], &conf.intsa);
+ getip46(46, argv[1], (struct sockaddr *)&conf.intsa);
return 0;
}
diff --git a/src/auth.c b/src/auth.c
index 9ccb124..5c1999f 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -100,7 +100,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
len = 8 + sprintf((char *)buf + 8, "%.256s", param->hostname);
}
else {
- len = 8 + myinet_ntoa(ina, (char *)buf+8);
+ len = 8 + myinet_ntop(AF_INET, &ina, (char *)buf+8, 256);
}
len += sprintf((char *)buf + len,
":%hu HTTP/1.0\r\nProxy-Connection: keep-alive\r\n", ntohs(port));
diff --git a/src/common.c b/src/common.c
index 341967f..96397ca 100644
--- a/src/common.c
+++ b/src/common.c
@@ -22,13 +22,22 @@ int randomizer = 1;
unsigned char **stringtable = NULL;
-int myinet_ntoa(struct in_addr in, char * buf){
- unsigned u = ntohl(in.s_addr);
- return sprintf(buf, "%u.%u.%u.%u",
- ((u&0xFF000000)>>24),
- ((u&0x00FF0000)>>16),
- ((u&0x0000FF00)>>8),
- ((u&0x000000FF)));
+int myinet_ntop(int af, const void *src, char *dst, socklen_t size){
+#ifndef NOIPV6
+ if(af != AF_INET6){
+#endif
+ unsigned u = ntohl(((struct in_addr *)src)->s_addr);
+ return sprintf(dst, "%u.%u.%u.%u",
+ ((u&0xFF000000)>>24),
+ ((u&0x00FF0000)>>16),
+ ((u&0x0000FF00)>>8),
+ ((u&0x000000FF)));
+#ifndef NOIPV6
+ }
+ *dst = 0;
+ inet_ntop(af, src, dst, size);
+ return strlen(dst);
+#endif
}
char *rotations[] = {
@@ -421,7 +430,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i++;
}
}
- else i += myinet_ntoa(param->sins.sin_addr, (char *)buf + i);
+ else i += myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + i, 64);
break;
case 'N':
@@ -451,16 +460,16 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
break;
case 'e':
tmpia.s_addr = param->extip;
- i += myinet_ntoa(tmpia, (char *)buf + i);
+ i += myinet_ntop(AF_INET, &tmpia, (char *)buf + i, 64);
break;
case 'C':
- i += myinet_ntoa(param->sinc.sin_addr, (char *)buf + i);
+ i += myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + i, 64);
break;
case 'R':
- i += myinet_ntoa(param->sins.sin_addr, (char *)buf + i);
+ i += myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + i, 64);
break;
case 'Q':
- i += myinet_ntoa(param->req.sin_addr, (char *)buf + i);
+ i += myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + i, 64);
break;
case 'p':
sprintf((char *)buf+i, "%hu", ntohs(*SAPORT(¶m->srv->intsa)));
diff --git a/src/datatypes.c b/src/datatypes.c
index a80196e..211020d 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -77,7 +77,7 @@ static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
if(node->value)return pr_ip(node, &((struct sockaddr_in *)node->value)->sin_addr.s_addr)
#else
char buf[64];
- buf[0] = '['
+ buf[0] = '[';
buf[1] = 0;
inet_ntop(*SAFAMILY(node->value), node->value, buf+1, sizeof(buf)-10);
sprintf(buf + strlen(buf), "]:hu", (unsigned short)*SAPORT(node->value));
diff --git a/src/icqpr.c b/src/icqpr.c
index ee6808a..0cde9c0 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -118,7 +118,7 @@ static void addbuffer(int increment, struct clientparam * param, unsigned char *
static int searchcookie(struct clientparam *param, struct flap_header * flap, int len, int * dif, struct tlv_header *tlv, int extra){
struct icq_cookie *ic;
- char smallbuf[32];
+ char smallbuf[64];
struct tlv_header *bostlv = NULL;
struct sockaddr_in sa;
SASIZETYPE size = sizeof(sa);
@@ -165,7 +165,7 @@ static int searchcookie(struct clientparam *param, struct flap_header * flap, in
pthread_mutex_unlock(&icq_cookie_mutex);
if(bostlv){
if(so._getsockname(param->clisock, (struct sockaddr *)&sa, &size)==-1) return 1;
- len = myinet_ntoa(sa.sin_addr, smallbuf);
+ len = myinet_ntop(*SAFAMILY(&sa),SAADDR(&sa), smallbuf, 64);
if(strchr(ic->connectstring, ':'))sprintf(smallbuf+len, ":%hu", ntohs(sa.sin_port));
len = (int)strlen(smallbuf);
*dif = len - (int)ntohs(bostlv->size);
diff --git a/src/msnpr.c b/src/msnpr.c
index 31895b4..749847e 100644
--- a/src/msnpr.c
+++ b/src/msnpr.c
@@ -70,7 +70,7 @@ static FILTER_ACTION msn_srv(void *fc, struct clientparam * param, unsigned char
len = (int)strlen(tmpbuf);
tmpbuf[len++] = ' ';
- len+=myinet_ntoa(sa.sin_addr, tmpbuf+len);
+ len+=myinet_ntop(*SAFAMILY(&sa), SAADDR(&sa), tmpbuf+len, 64);
sprintf(tmpbuf+len, ":%hu %s", ntohs(sa.sin_port), sp3 + 1);
len = (int)strlen(tmpbuf);
memcpy(*buf_p + offset, tmpbuf, len);
diff --git a/src/plugins.c b/src/plugins.c
index 51a602f..6c21cf4 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -33,7 +33,7 @@ struct symbol symbols[] = {
{symbols+5, "sockgetcharcli", (void *) sockgetcharcli},
{symbols+6, "sockgetcharsrv", (void *) sockgetcharsrv},
{symbols+7, "sockgetlinebuf", (void *) sockgetlinebuf},
- {symbols+8, "myinet_ntoa", (void *) myinet_ntoa},
+ {symbols+8, "myinet_ntop", (void *) myinet_ntop},
{symbols+9, "dobuf", (void *) dobuf},
{symbols+10, "scanaddr", (void *) scanaddr},
{symbols+11, "getip", (void *) getip},
@@ -103,7 +103,7 @@ struct pluginlink pluginlink = {
sockgetcharcli,
sockgetcharsrv,
sockgetlinebuf,
- myinet_ntoa,
+ myinet_ntop,
dobuf,
dobuf2,
scanaddr,
diff --git a/src/proxy.c b/src/proxy.c
index c1fe343..6a1a594 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -831,13 +831,13 @@ for(;;){
sprintf((char*)buf+strlen((char *)buf), "Via: 1.1 ");
gethostname((char *)(buf+strlen((char *)buf)), 256);
sprintf((char*)buf+strlen((char *)buf), ":%d (%s %s)\r\nX-Forwarded-For: ", (int)ntohs(*SAPORT(¶m->srv->intsa)), conf.stringtable?conf.stringtable[2]:(unsigned char *)"", conf.stringtable?conf.stringtable[3]:(unsigned char *)"");
- if(!anonymous)myinet_ntoa(param->sinc.sin_addr, (char *)buf + strlen((char *)buf));
+ if(!anonymous)myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + strlen((char *)buf), 64);
else {
unsigned long tmp;
tmp = param->sinc.sin_addr.s_addr;
param->sinc.sin_addr.s_addr = ((unsigned long)myrand(param, sizeof(struct clientparam))<<16)^(unsigned long)rand();
- myinet_ntoa(param->sinc.sin_addr, (char *)buf + strlen((char *)buf));
+ myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + strlen((char *)buf), 64);
param->sinc.sin_addr.s_addr = tmp;
}
sprintf((char*)buf+strlen((char *)buf), "\r\n");
diff --git a/src/proxy.h b/src/proxy.h
index 829ace8..d539087 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -184,7 +184,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
-int myinet_ntoa(struct in_addr in, char * buf);
+int myinet_ntop(int af, const void *src, char *dst, socklen_t size);
extern unsigned long nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
diff --git a/src/socks.c b/src/socks.c
index d8c9237..9d980c5 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -96,7 +96,7 @@ void * sockschild(struct clientparam* param) {
if(command==1 && !param->req.sin_addr.s_addr) {
RETURN(422);
}
- myinet_ntoa(param->sins.sin_addr, (char *)buf);
+ myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + strlen((char *)buf), 64);
break;
case 3:
if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
@@ -400,7 +400,8 @@ fflush(stderr);
if(param->hostname){
sprintf((char *)buf + strlen((char *)buf), "%.265s", param->hostname);
}
- else myinet_ntoa(param->req.sin_addr, (char *)buf+strlen((char *)buf));
+ else
+ myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + strlen((char *)buf), 64);
sprintf((char *)buf+strlen((char *)buf), ":%hu", ntohs(param->req.sin_port));
(*param->srv->logfunc)(param, buf);
myfree(buf);
diff --git a/src/structures.h b/src/structures.h
index 9d91ece..dc1c085 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -625,7 +625,7 @@ struct pluginlink {
int (*sockgetcharcli)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetcharsrv)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetlinebuf)(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
- int (*myinet_ntoa)(struct in_addr in, char * buf);
+ int (*myinet_ntop)(int af, const void *src, char *dst, socklen_t size);
int (*dobuf)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec);
int (*dobuf2)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
int (*scanaddr)(const unsigned char *s, unsigned long * ip, unsigned long * mask);
From a30d5d51a58dd1a43f63130dd2881d4340b5395a Mon Sep 17 00:00:00 2001
From: Vladimir Dubrovin <3proxy@3proxy.ru>
Date: Sun, 11 May 2014 05:04:04 +0400
Subject: [PATCH 019/122] IPv6 server side code
+ IPv6 server side support
!!! Auth need to be fixed
---
src/auth.c | 33 ++++++++++++++++++------------
src/common.c | 8 ++++----
src/datatypes.c | 29 +++++++++++----------------
src/dnspr.c | 12 +++++------
src/ftppr.c | 51 +++++++++++++++++++++++++----------------------
src/icqpr.c | 2 +-
src/proxy.c | 8 +++-----
src/proxy.h | 4 ++--
src/proxymain.c | 32 ++++++++++++++++++-----------
src/smtpp.c | 2 +-
src/sockgetchar.c | 16 +++++++--------
src/sockmap.c | 8 ++++----
src/socks.c | 38 ++++++++++++++++++-----------------
src/structures.h | 14 +++++++++----
src/udppm.c | 6 +++---
15 files changed, 141 insertions(+), 122 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index 5c1999f..c1f705d 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -44,12 +44,12 @@ unsigned char * getNetBIOSnamebyip(unsigned long ip){
sins.sin_family = AF_INET;
sins.sin_addr.s_addr = ip;
sins.sin_port = htons(137);
- res=socksendto(sock, &sins, request, sizeof(request), conf.timeouts[SINGLEBYTE_L]*1000);
+ res=socksendto(sock, (struct sockaddr*)&sins, request, sizeof(request), conf.timeouts[SINGLEBYTE_L]*1000);
if(res <= 0) {
so._closesocket(sock);
return NULL;
}
- res = sockrecvfrom(sock, &sins, buf, sizeof(buf), conf.timeouts[SINGLEBYTE_L]*1000);
+ res = sockrecvfrom(sock, (struct sockaddr*)&sins, buf, sizeof(buf), conf.timeouts[SINGLEBYTE_L]*1000);
so._closesocket(sock);
if(res < (HEADERSIZE + RECORDSIZE)) {
return NULL;
@@ -376,7 +376,8 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
username = param->username?param->username:(unsigned char *)"-";
if(acentry->src) {
for(ipentry = acentry->src; ipentry; ipentry = ipentry->next)
- if(ipentry->ip == (param->sinc.sin_addr.s_addr & ipentry->mask)) {
+/* FIX IT !*/
+ if(ipentry->ip == (*(unsigned long *)SAADDR(¶m->sincr) & ipentry->mask)) {
break;
}
if(!ipentry) return 0;
@@ -673,7 +674,8 @@ int cacheauth(struct clientparam * param){
}
if(((!(conf.authcachetype&2)) || (param->username && ac->username && !strcmp(ac->username, param->username))) &&
- ((!(conf.authcachetype&1)) || ac->ip == param->sinc.sin_addr.s_addr) &&
+/* FIX IT */
+ ((!(conf.authcachetype&1)) || ac->ip == *(unsigned long *)SAADDR(¶m->sincr)) &&
(!(conf.authcachetype&4) || (ac->password && param->password && !strcmp(ac->password, param->password)))) {
if(param->username){
myfree(param->username);
@@ -707,7 +709,8 @@ int doauth(struct clientparam * param){
pthread_mutex_lock(&hash_mutex);
for(ac = authc; ac; ac = ac->next){
if((!(conf.authcachetype&2) || !strcmp(ac->username, param->username)) &&
- (!(conf.authcachetype&1) || ac->ip == param->sinc.sin_addr.s_addr) &&
+/* FIX IT */
+ (!(conf.authcachetype&1) || ac->ip == *(unsigned long *)SAADDR(¶m->sincr)) &&
(!(conf.authcachetype&4) || (ac->password && !strcmp(ac->password, param->password)))) {
ac->expires = conf.time + conf.authcachetime;
if(strcmp(ac->username, param->username)){
@@ -720,7 +723,8 @@ int doauth(struct clientparam * param){
ac->password = mystrdup(param->password);
myfree(tmp);
}
- ac->ip = param->sinc.sin_addr.s_addr;
+/* FIX IT */
+ ac->ip = *(unsigned long *)SAADDR(¶m->sincr);
break;
}
}
@@ -729,7 +733,8 @@ int doauth(struct clientparam * param){
if(ac){
ac->expires = conf.time + conf.authcachetime;
ac->username = mystrdup(param->username);
- ac->ip = param->sinc.sin_addr.s_addr;
+/* FIX IT */
+ ac->ip = *(unsigned long *)SAADDR(¶m->sincr);
ac->password = NULL;
if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password);
}
@@ -765,7 +770,8 @@ int userauth(struct clientparam * param){
}
int nbnameauth(struct clientparam * param){
- unsigned char * name = getNetBIOSnamebyip(param->sinc.sin_addr.s_addr);
+/* FIX IT */
+ unsigned char * name = getNetBIOSnamebyip(*(unsigned long *)SAADDR(¶m->sincr));
if (param->username) myfree (param->username);
param->username = name;
@@ -774,7 +780,8 @@ int nbnameauth(struct clientparam * param){
int dnsauth(struct clientparam * param){
char buf[32];
- unsigned u = ntohl(param->sinc.sin_addr.s_addr);
+/* FIX IT */
+ unsigned u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
sprintf(buf, "%u.%u.%u.%u.in-addr.arpa",
@@ -784,8 +791,8 @@ int dnsauth(struct clientparam * param){
((u&0x00FF0000)>>16),
((u&0xFF000000)>>24));
-
- if(param->sinc.sin_addr.s_addr != udpresolve(buf, NULL, param, 1)) return 6;
+/* FIX IT */
+ if(*(unsigned long *)SAADDR(¶m->sincr) != udpresolve(buf, NULL, param, 1)) return 6;
return param->username? 0:4;
}
@@ -1054,13 +1061,13 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
buf[len++] = (makeauth == 1)? 0x0c : 0x01; /* PTR:host address */
buf[len++] = 0;
buf[len++] = 1; /* INET */
- if(socksendto(sock, sinsp, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
+ if(socksendto(sock, (struct sockaddr *)sinsp, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
continue;
}
if(param) param->statscli64 += len;
- len = sockrecvfrom(sock, sinsp, buf, 4096, 15000);
+ len = sockrecvfrom(sock, (struct sockaddr *) sinsp, buf, 4096, 15000);
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
if(len <= 13) continue;
diff --git a/src/common.c b/src/common.c
index 96397ca..7b2e114 100644
--- a/src/common.c
+++ b/src/common.c
@@ -22,7 +22,7 @@ int randomizer = 1;
unsigned char **stringtable = NULL;
-int myinet_ntop(int af, const void *src, char *dst, socklen_t size){
+int myinet_ntop(int af, void *src, char *dst, socklen_t size){
#ifndef NOIPV6
if(af != AF_INET6){
#endif
@@ -463,7 +463,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += myinet_ntop(AF_INET, &tmpia, (char *)buf + i, 64);
break;
case 'C':
- i += myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + i, 64);
+ i += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + i, 64);
break;
case 'R':
i += myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + i, 64);
@@ -476,7 +476,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += (int)strlen((char *)buf+i);
break;
case 'c':
- sprintf((char *)buf+i, "%hu", ntohs(param->sinc.sin_port));
+ sprintf((char *)buf+i, "%hu", ntohs(*SAPORT(¶m->sincr)));
i += (int)strlen((char *)buf+i);
break;
case 'r':
@@ -612,7 +612,7 @@ int doconnect(struct clientparam * param){
bindsa.sin_family = AF_INET;
bindsa.sin_port = param->extport;
bindsa.sin_addr.s_addr = param->extip;
- if (param->srv->targetport && !bindsa.sin_port && ntohs(param->sinc.sin_port) > 1023) bindsa.sin_port = param->sinc.sin_port;
+ if (param->srv->targetport && !bindsa.sin_port && ntohs(*SAPORT(¶m->sincr)) > 1023) bindsa.sin_port = *SAPORT(¶m->sincr);
if(so._bind(param->remsock, (struct sockaddr*)&bindsa, sizeof(bindsa))==-1) {
memset(&bindsa, 0, sizeof(bindsa));
bindsa.sin_family = AF_INET;
diff --git a/src/datatypes.c b/src/datatypes.c
index 211020d..5d9a681 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -637,8 +637,8 @@ static void * ef_client_extpassword(struct node * node){
return ((struct clientparam *)node->value) -> extpassword;
}
-static void * ef_client_cliip(struct node * node){
- return &((struct clientparam *)node->value) -> sinc.sin_addr.s_addr;
+static void * ef_client_clisa(struct node * node){
+ return &((struct clientparam *)node->value) -> sincr;
}
static void * ef_client_srvip(struct node * node){
@@ -657,10 +657,6 @@ static void * ef_client_srvport(struct node * node){
return &((struct clientparam *)node->value) -> sins.sin_port;
}
-static void * ef_client_cliport(struct node * node){
- return &((struct clientparam *)node->value) -> sinc.sin_port;
-}
-
static void * ef_client_pwtype(struct node * node){
return &((struct clientparam *)node->value) -> pwtype;
}
@@ -802,17 +798,16 @@ static struct property prop_client[] = {
{prop_client + 9, "extpassword", ef_client_extpassword, TYPE_STRING, "password for requested host"},
{prop_client + 10, "username", ef_client_username, TYPE_STRING, "client username"},
{prop_client + 11, "password", ef_client_password, TYPE_STRING, "client password"},
- {prop_client + 12, "cliip", ef_client_cliip, TYPE_IP, "client ip"},
- {prop_client + 13, "cliport", ef_client_cliport, TYPE_PORT, "client port"},
- {prop_client + 14, "srvip", ef_client_srvip, TYPE_IP, "target server ip"},
- {prop_client + 15, "srvport", ef_client_srvport, TYPE_PORT, "target server port"},
- {prop_client + 16, "reqip", ef_client_reqip, TYPE_IP, "requested server ip"},
- {prop_client + 17, "reqport", ef_client_reqport, TYPE_PORT, "requested server port"},
- {prop_client + 18, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
- {prop_client + 19, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
- {prop_client + 20, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
- {prop_client + 21, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
- {prop_client + 22, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
+ {prop_client + 12, "clisa", ef_client_clisa, TYPE_SA, "client sa"},
+ {prop_client + 13, "srvip", ef_client_srvip, TYPE_IP, "target server ip"},
+ {prop_client + 14, "srvport", ef_client_srvport, TYPE_PORT, "target server port"},
+ {prop_client + 15, "reqip", ef_client_reqip, TYPE_IP, "requested server ip"},
+ {prop_client + 16, "reqport", ef_client_reqport, TYPE_PORT, "requested server port"},
+ {prop_client + 17, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
+ {prop_client + 18, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
+ {prop_client + 19, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
+ {prop_client + 20, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
+ {prop_client + 21, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
{NULL, "next", ef_client_next, TYPE_CLIENT, "next"}
diff --git a/src/dnspr.c b/src/dnspr.c
index 65faaf6..945edcc 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -36,8 +36,8 @@ void * dnsprchild(struct clientparam* param) {
param->srv->fds.events = POLLIN;
RETURN (21);
}
- size = sizeof(struct sockaddr_in);
- i = so._recvfrom(param->srv->srvsock, buf, BUFSIZE, 0, (struct sockaddr *)¶m->sinc, &size);
+ size = sizeof(param->sincr);
+ i = so._recvfrom(param->srv->srvsock, buf, BUFSIZE, 0, (struct sockaddr *)¶m->sincr, &size);
#ifdef _WIN32
if((param->clisock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
@@ -144,19 +144,19 @@ void * dnsprchild(struct clientparam* param) {
}
param->sins.sin_addr.s_addr = nservers[0];
param->sins.sin_port = htons(53);
- if(socksendto(param->remsock, ¶m->sins, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
+ if(socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
param->statscli64 += i;
param->nwrites++;
- len = sockrecvfrom(param->remsock, ¶m->sins, buf, BUFSIZE, 15000);
+ len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, buf, BUFSIZE, 15000);
if(len <= 13) {
RETURN(821);
}
param->statssrv64 += len;
param->nreads++;
if(buf[6] || buf[7]){
- if(socksendto(param->clisock, ¶m->sinc, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
+ if(socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
RETURN(822);
}
RETURN(0);
@@ -168,7 +168,7 @@ void * dnsprchild(struct clientparam* param) {
buf[3] = 0x83;
}
usleep(SLEEPTIME);
- res = socksendto(param->clisock, ¶m->sinc, buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
+ res = socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
if(res != len){RETURN(819);}
if(!ip) {RETURN(888);}
diff --git a/src/ftppr.c b/src/ftppr.c
index 22bb4a2..14bc1f1 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -119,32 +119,35 @@ void * ftpprchild(struct clientparam* param) {
so._closesocket(clidatasock);
clidatasock = INVALID_SOCKET;
}
- if ((clidatasock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);}
- sasize = sizeof(struct sockaddr_in);
- if(so._getsockname(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(824);}
- param->sinc.sin_port = 0;
- if(so._bind(clidatasock, (struct sockaddr *)¶m->sinc, sasize)){RETURN(822);}
+ if ((clidatasock=socket(SASOCK(¶m->sincl), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN(821);}
+ sasize = sizeof(param->sincl);
+ *SAPORT(¶m->sincl) = 0;
+ if(so._bind(clidatasock, (struct sockaddr *)¶m->sincl, sasize)){RETURN(822);}
if (pasv) {
if(so._listen(clidatasock, 1)) {RETURN(823);}
- if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(824);}
- sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
- (unsigned)(((unsigned char *)(¶m->sinc.sin_addr.s_addr))[0]),
- (unsigned)(((unsigned char *)(¶m->sinc.sin_addr.s_addr))[1]),
- (unsigned)(((unsigned char *)(¶m->sinc.sin_addr.s_addr))[2]),
- (unsigned)(((unsigned char *)(¶m->sinc.sin_addr.s_addr))[3]),
- (unsigned)(((unsigned char *)(¶m->sinc.sin_port))[0]),
- (unsigned)(((unsigned char *)(¶m->sinc.sin_port))[1])
- );
+ if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);}
+ if(*SAFAMILY(¶m->sincl) == AF_INET)
+ sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
+ (unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[0]),
+ (unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[1]),
+ (unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[2]),
+ (unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[3]),
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3]),
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3])
+ );
+ else sprintf((char *)buf, "227 OK (127,0,0,1,%u,%u)\r\n",
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3]),
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3])
+ );
}
else {
unsigned long b1, b2, b3, b4;
unsigned short b5, b6;
if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);}
- param->sinc.sin_family = AF_INET;
- param->sinc.sin_port = htons((unsigned short)((b5<<8)^b6));
- param->sinc.sin_addr.s_addr = htonl((b1<<24)^(b2<<16)^(b3<<8)^b4);
- if(so._connect(clidatasock, (struct sockaddr *)¶m->sinc, sasize)) {
+ *SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6));
+ sasize = sizeof(param->sincr);
+ if(so._connect(clidatasock, (struct sockaddr *)¶m->sincr, sasize)) {
so._closesocket(clidatasock);
clidatasock = INVALID_SOCKET;
RETURN(826);
@@ -203,8 +206,8 @@ void * ftpprchild(struct clientparam* param) {
if(res != 1) {
RETURN(857);
}
- sasize = sizeof(struct sockaddr_in);
- ss = so._accept(clidatasock, (struct sockaddr *)¶m->sinc, &sasize);
+ sasize = sizeof(param->sincr);
+ ss = so._accept(clidatasock, (struct sockaddr *)¶m->sincr, &sasize);
if (ss == INVALID_SOCKET) { RETURN (858);}
so._shutdown(clidatasock, SHUT_RDWR);
so._closesocket(clidatasock);
@@ -283,8 +286,8 @@ void * ftpprchild(struct clientparam* param) {
if(status == 5) {RETURN (0);}
if(i < 3) {RETURN (813);}
}
- sasize = sizeof(struct sockaddr_in);
- if(so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize)){RETURN(819);}
+ sasize = sizeof(param->sincr);
+ if(so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sincr, &sasize)){RETURN(819);}
if(req && (param->statscli64 || param->statssrv64)){
(*param->srv->logfunc)(param, (unsigned char *)req);
}
@@ -304,8 +307,8 @@ CLEANRET:
so._shutdown(clidatasock, SHUT_RDWR);
so._closesocket(clidatasock);
}
- sasize = sizeof(struct sockaddr_in);
- so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sinc, &sasize);
+ sasize = sizeof(param->sincr);
+ so._getpeername(param->ctrlsock, (struct sockaddr *)¶m->sincr, &sasize);
if(param->res != 0 || param->statscli64 || param->statssrv64 ){
(*param->srv->logfunc)(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
}
diff --git a/src/icqpr.c b/src/icqpr.c
index 0cde9c0..04abaf6 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -105,7 +105,7 @@ static void addbuffer(int increment, struct clientparam * param, unsigned char *
*buf_p = newbuf;
*bufsize_p = bufsize;
}
- if(increment) len = sockrecvfrom(param->remsock, ¶m->sins, *buf_p + *length_p, increment, conf.timeouts[STRING_S]*1000);
+ if(increment) len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, *buf_p + *length_p, increment, conf.timeouts[STRING_S]*1000);
if(len > 0) {
*length_p += len;
param->nreads++;
diff --git a/src/proxy.c b/src/proxy.c
index 6a1a594..7d0f9d3 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -831,14 +831,12 @@ for(;;){
sprintf((char*)buf+strlen((char *)buf), "Via: 1.1 ");
gethostname((char *)(buf+strlen((char *)buf)), 256);
sprintf((char*)buf+strlen((char *)buf), ":%d (%s %s)\r\nX-Forwarded-For: ", (int)ntohs(*SAPORT(¶m->srv->intsa)), conf.stringtable?conf.stringtable[2]:(unsigned char *)"", conf.stringtable?conf.stringtable[3]:(unsigned char *)"");
- if(!anonymous)myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + strlen((char *)buf), 64);
+ if(!anonymous)myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + strlen((char *)buf), 64);
else {
unsigned long tmp;
- tmp = param->sinc.sin_addr.s_addr;
- param->sinc.sin_addr.s_addr = ((unsigned long)myrand(param, sizeof(struct clientparam))<<16)^(unsigned long)rand();
- myinet_ntop(*SAFAMILY(¶m->sinc), SAADDR(¶m->sinc), (char *)buf + strlen((char *)buf), 64);
- param->sinc.sin_addr.s_addr = tmp;
+ tmp = ((unsigned long)myrand(param, sizeof(struct clientparam))<<16)^(unsigned long)rand();
+ myinet_ntop(AF_INET, &tmp, (char *)buf + strlen((char *)buf), 64);
}
sprintf((char*)buf+strlen((char *)buf), "\r\n");
}
diff --git a/src/proxy.h b/src/proxy.h
index d539087..873b977 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -148,8 +148,8 @@ extern struct extparam conf;
int sockmap(struct clientparam * param, int timeo);
int socksend(SOCKET sock, unsigned char * buf, int bufsize, int to);
-int socksendto(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to);
-int sockrecvfrom(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to);
+int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to);
+int sockrecvfrom(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to);
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec);
diff --git a/src/proxymain.c b/src/proxymain.c
index a2df6a6..cae0081 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -190,9 +190,9 @@ int MODULEMAINFUNC (int argc, char** argv){
#ifdef STDMAIN
#ifndef _WIN32
case 'I':
- size = sizeof(defparam.sinc);
- if(so._getsockname(0, (struct sockaddr*)&defparam.sinc, &size) ||
- defparam.sinc.sin_family != AF_INET) error = 1;
+ size = sizeof(defparam.sincl);
+ if(so._getsockname(0, (struct sockaddr*)&defparam.sincl, &size) ||
+ defparam.sincl.sin_family != AF_INET) error = 1;
else inetd = 1;
break;
@@ -311,8 +311,8 @@ int MODULEMAINFUNC (int argc, char** argv){
srvinit2(&srv, &defparam);
+ if(!*SAFAMILY(&srv.intsa)) *SAFAMILY(&srv.intsa) = AF_INET;
if(!*SAPORT(&srv.intsa)) *SAPORT(&srv.intsa) = htons(childdef.port);
- if(!defparam.sinc.sin_port) defparam.sinc.sin_port = htons(childdef.port);
if(hostname)parsehostname(hostname, &defparam, childdef.port);
@@ -374,9 +374,11 @@ int MODULEMAINFUNC (int argc, char** argv){
sprintf((char *)buf, "Accepting connections [%u/%u]", (unsigned)getpid(), (unsigned)pthread_self());
(*srv.logfunc)(&defparam, buf);
}
- memset(&defparam.sinc, 0, sizeof(defparam.sinc));
+ memset(&defparam.sincr, 0, sizeof(defparam.sincr));
+ memset(&defparam.sincl, 0, sizeof(defparam.sincl));
memset(&defparam.sins, 0, sizeof(defparam.sins));
- *SAFAMILY(&defparam.sinc) = AF_INET;
+ *SAFAMILY(&defparam.sincr) = AF_INET;
+ *SAFAMILY(&defparam.sincl) = AF_INET;
*SAFAMILY(&defparam.sins) = AF_INET;
srv.fds.fd = sock;
@@ -413,13 +415,19 @@ int MODULEMAINFUNC (int argc, char** argv){
}
if((conf.paused != srv.version) || (error < 0)) break;
if(!isudp){
- size = sizeof(defparam.sinc);
- new_sock = so._accept(sock, (struct sockaddr*)&defparam.sinc, &size);
+ size = sizeof(defparam.sincr);
+ new_sock = so._accept(sock, (struct sockaddr*)&defparam.sincr, &size);
if(new_sock == INVALID_SOCKET){
sprintf((char *)buf, "accept(): %s", strerror(errno));
if(!srv.silent)(*srv.logfunc)(&defparam, buf);
continue;
}
+ size = sizeof(defparam.sincl);
+ if(so._getsockname(new_sock, (struct sockaddr *)&defparam.sincl, &size)){
+ sprintf((char *)buf, "getsockname(): %s", strerror(errno));
+ if(!srv.silent)(*srv.logfunc)(&defparam, buf);
+ continue;
+ }
#ifdef _WIN32
ioctlsocket(new_sock, FIONBIO, &ul);
#else
@@ -482,7 +490,8 @@ int MODULEMAINFUNC (int argc, char** argv){
}
#endif
pthread_mutex_unlock(&srv.counter_mutex);
- memset(&defparam.sinc, 0, sizeof(defparam.sinc));
+ memset(&defparam.sincl, 0, sizeof(defparam.sincl));
+ memset(&defparam.sincr, 0, sizeof(defparam.sincr));
if(isudp) while(!srv.fds.events)usleep(SLEEPTIME);
}
@@ -519,7 +528,7 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
memset(param, 0, sizeof(struct clientparam));
param->srv = srv;
param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
- param->req.sin_family = param->sins.sin_family = param->sinc.sin_family = AF_INET;
+ *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sins) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
pthread_mutex_init(&srv->counter_mutex, NULL);
memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
}
@@ -538,8 +547,7 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
if(!*SAFAMILY(&srv->intsa)) *SAFAMILY(&srv->intsa) = AF_INET;
- param->sinc.sin_addr.s_addr = ((struct sockaddr_in *)&srv->intsa)->sin_addr.s_addr;
- param->sinc.sin_port = *SAPORT(&srv->intsa);
+ memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
if(!srv->extip) srv->extip = conf.extip;
param->sins.sin_addr.s_addr = param->extip = srv->extip;
if(!srv->extport) srv->extport = htons(conf.extport);
diff --git a/src/smtpp.c b/src/smtpp.c
index 8c17e73..9246117 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -83,7 +83,7 @@ int readdata (struct clientparam* param) {
return -1;
}
#endif
- socksendto(param->remsock, ¶m->sins, buf, i, conf.timeouts[STRING_S]);
+ socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf, i, conf.timeouts[STRING_S]);
}
if(i < 1) {
myfree(buf);
diff --git a/src/sockgetchar.c b/src/sockgetchar.c
index 0041fdf..1000d2c 100644
--- a/src/sockgetchar.c
+++ b/src/sockgetchar.c
@@ -33,7 +33,7 @@ int socksend(SOCKET sock, unsigned char * buf, int bufsize, int to){
}
-int socksendto(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to){
+int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to){
int sent = 0;
int res;
struct pollfd fds;
@@ -45,7 +45,7 @@ int socksendto(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int b
res = so._poll(&fds, 1, to);
if(res < 0 && (errno == EAGAIN || errno == EINTR)) continue;
if(res < 1) break;
- res = so._sendto(sock, buf + sent, bufsize - sent, 0, (struct sockaddr *)sin, sizeof(struct sockaddr_in));
+ res = so._sendto(sock, buf + sent, bufsize - sent, 0, sin, SASIZE(sin));
if(res < 0) {
if(errno != EAGAIN) break;
continue;
@@ -55,7 +55,7 @@ int socksendto(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int b
return sent;
}
-int sockrecvfrom(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to){
+int sockrecvfrom(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to){
struct pollfd fds;
SASIZETYPE sasize;
int res;
@@ -64,7 +64,7 @@ int sockrecvfrom(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int
fds.events = POLLIN;
if(conf.timetoexit) return EOF;
if (so._poll(&fds, 1, to)<1) return 0;
- sasize = sizeof(struct sockaddr_in);
+ sasize = SASIZE(sin);
do {
res = so._recvfrom(sock, buf, bufsize, 0, (struct sockaddr *)sin, &sasize);
} while (res < 0 && (errno == EAGAIN || errno == EINTR));
@@ -83,7 +83,7 @@ int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec){
return (int)param->clibuf[param->clioffset++];
}
param->clioffset = param->cliinbuf = 0;
- if ((len = sockrecvfrom(param->clisock, ¶m->sinc, param->clibuf, param->clibufsize, timeosec*1000 + timeousec))<=0) return EOF;
+ if ((len = sockrecvfrom(param->clisock, (struct sockaddr *)¶m->sincr, param->clibuf, param->clibufsize, timeosec*1000 + timeousec))<=0) return EOF;
param->cliinbuf = len;
param->clioffset = 1;
return (int)*param->clibuf;
@@ -103,7 +103,7 @@ int sockfillbuffcli(struct clientparam * param, unsigned long size, int timeosec
}
if(size <= param->cliinbuf) return size;
size -= param->cliinbuf;
- if((len = sockrecvfrom(param->clisock, ¶m->sinc, param->clibuf + param->cliinbuf, (param->clibufsize - param->cliinbuf) < size? param->clibufsize - param->cliinbuf:size, timeosec*1000)) > 0){
+ if((len = sockrecvfrom(param->clisock, (struct sockaddr *)¶m->sincr, param->clibuf + param->cliinbuf, (param->clibufsize - param->cliinbuf) < size? param->clibufsize - param->cliinbuf:size, timeosec*1000)) > 0){
param->cliinbuf += len;
}
return param->cliinbuf;
@@ -123,7 +123,7 @@ int sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec
}
if(size <= param->srvinbuf) return size;
size -= param->srvinbuf;
- if((len = sockrecvfrom(param->remsock, ¶m->sinc, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
+ if((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
param->srvinbuf += len;
param->nreads++;
param->statssrv64 += len;
@@ -148,7 +148,7 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
return (int)param->srvbuf[param->srvoffset++];
}
param->srvoffset = param->srvinbuf = 0;
- if ((len = sockrecvfrom(param->remsock, ¶m->sins, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
+ if ((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
param->srvinbuf = len;
param->srvoffset = 1;
param->nreads++;
diff --git a/src/sockmap.c b/src/sockmap.c
index d2a2eca..24fe342 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -128,7 +128,7 @@ int sockmap(struct clientparam * param, int timeo){
if(param->bandlimfunc) {
sleeptime = (*param->bandlimfunc)(param, param->srvinbuf - param->srvoffset, 0);
}
- res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sinc, sasize);
+ res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sincr, sasize);
if(res < 0) {
if(errno != EAGAIN) return 96;
continue;
@@ -171,7 +171,7 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "recv from client");
#endif
- res = so._recvfrom(param->clisock, param->clibuf + param->cliinbuf, param->clibufsize - param->cliinbuf, 0, (struct sockaddr *)¶m->sinc, &sasize);
+ res = so._recvfrom(param->clisock, param->clibuf + param->cliinbuf, param->clibufsize - param->cliinbuf, 0, (struct sockaddr *)¶m->sincr, &sasize);
if (res==0) {
so._shutdown(param->clisock, SHUT_RDWR);
so._closesocket(param->clisock);
@@ -241,7 +241,7 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to client");
#endif
- res = socksendto(param->clisock, ¶m->sinc, param->srvbuf + param->srvoffset, param->srvinbuf - param->srvoffset, conf.timeouts[STRING_S] * 1000);
+ res = socksendto(param->clisock, (struct sockaddr *)¶m->sincr, param->srvbuf + param->srvoffset, param->srvinbuf - param->srvoffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->srvoffset += res;
param->statssrv64 += res;
@@ -253,7 +253,7 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to server");
#endif
- res = socksendto(param->remsock, ¶m->sins, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
+ res = socksendto(param->remsock, (struct sockaddr *)¶m->sins, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->clioffset += res;
param->statscli64 += res;
diff --git a/src/socks.c b/src/socks.c
index 9d980c5..6cdff57 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -28,7 +28,11 @@ void * sockschild(struct clientparam* param) {
struct pollfd fds[3];
int ver=0;
int havepass = 0;
+#ifndef NOIPV6
+ struct sockaddr_in6 sin;
+#else
struct sockaddr_in sin;
+#endif
int len;
@@ -171,20 +175,18 @@ fprintf(stderr, "%s:%hu binded to communicate with server\n",
fflush(stderr);
#endif
}
- sasize = sizeof(struct sockaddr_in);
+ sasize = sizeof(param->sins);
so._getsockname(param->remsock, (struct sockaddr *)¶m->sins, &sasize);
if(command == 3) {
param->ctrlsock = param->clisock;
- param->clisock = so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ param->clisock = so._socket(SASOCK(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP);
if(param->clisock == INVALID_SOCKET) {RETURN(11);}
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr;
- sin.sin_port = htons(0);
- if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(struct sockaddr_in))) {RETURN (12);}
+ memcpy(&sin, ¶m->sincl, sizeof(&sin));
+ *SAPORT(&sin) = htons(0);
+ if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (12);}
#if SOCKSTRACE > 0
-fprintf(stderr, "%s:%hu binded to communicate with client\n",
- inet_ntoa(sin.sin_addr),
- ntohs(sin.sin_port)
+fprintf(stderr, "%hu binded to communicate with client\n",
+ ntohs(*SAPORT(&sin))
);
fflush(stderr);
#endif
@@ -195,7 +197,7 @@ fflush(stderr);
CLEANRET:
if(param->clisock != INVALID_SOCKET){
- sasize = sizeof(struct sockaddr_in);
+ sasize = sizeof(sin);
if(command != 3) so._getsockname(param->remsock, (struct sockaddr *)&sin, &sasize);
else so._getsockname(param->clisock, (struct sockaddr *)&sin, &sasize);
#if SOCKSTRACE > 0
@@ -212,15 +214,15 @@ fflush(stderr);
buf[1] = param->res%10;
buf[2] = 0;
buf[3] = 1;
- memcpy(buf+4, &sin.sin_addr.s_addr, 4);
- memcpy(buf+8, &sin.sin_port, 2);
+ memcpy(buf+4, SAADDR(&sin), 4);
+ memcpy(buf+8, SAPORT(&sin), 2);
socksend((command == 3)?param->ctrlsock:param->clisock, buf, 10, conf.timeouts[STRING_S]);
}
else{
buf[0] = 0;
buf[1] = 90 + (param->res%10);
- memcpy(buf+2, &sin.sin_port, 2);
- memcpy(buf+4, &sin.sin_addr.s_addr, 4);
+ memcpy(buf+2, SAPORT(&sin), 2);
+ memcpy(buf+4, SAADDR(&sin), 4);
socksend(param->clisock, buf, 8, conf.timeouts[STRING_S]);
}
@@ -300,12 +302,12 @@ fflush(stderr);
break;
}
if (fds[1].revents) {
- sasize = sizeof(struct sockaddr_in);
+ sasize = sizeof(sin);
if((len = so._recvfrom(param->clisock, buf, 65535, 0, (struct sockaddr *)&sin, &sasize)) <= 10) {
param->res = 464;
break;
}
- if(sin.sin_addr.s_addr != param->sinc.sin_addr.s_addr){
+ if(SAADDRLEN(&sin) != SAADDRLEN(¶m->sincr) || memcmp(SAADDR(&sin), SAADDR(¶m->sincr), SAADDRLEN(&sin))){
param->res = 465;
break;
}
@@ -335,7 +337,7 @@ fflush(stderr);
sasize = sizeof(param->sins);
if(len > (int)i){
- if(socksendto(param->remsock, ¶m->sins, buf+i, len - i, conf.timeouts[SINGLEBYTE_L]*1000) <= 0){
+ if(socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf+i, len - i, conf.timeouts[SINGLEBYTE_L]*1000) <= 0){
param->res = 467;
break;
}
@@ -371,7 +373,7 @@ fflush(stderr);
memcpy(buf+4, &tsin.sin_addr.s_addr, 4);
memcpy(buf+8, &tsin.sin_port, 2);
sasize = sizeof(param->sins);
- if(socksendto(param->clisock, &sin, buf, len + 10, conf.timeouts[SINGLEBYTE_L]*1000) <=0){
+ if(socksendto(param->clisock, (struct sockaddr *)&sin, buf, len + 10, conf.timeouts[SINGLEBYTE_L]*1000) <=0){
param->res = 469;
break;
}
diff --git a/src/structures.h b/src/structures.h
index dc1c085..c44efd2 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -109,11 +109,13 @@ int
#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.s6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDRLEN(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)
#define SASOCK(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET)
+#define SASIZE(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in))
#else
#define SAPORT(sa) (&((struct sockaddr_in *)sa)->sin_port)
#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.a_addr)
#define SAADDRLEN(sa) (4)
#define SASOCK(sa) (PF_INET)
+#define SASIZE(sa) (sizeof(struct sockaddr_in))
#endif
typedef enum {
@@ -431,8 +433,12 @@ struct clientparam {
uint64_t
maxtrafin64,
maxtrafout64;
- struct sockaddr_in sinc,
- sins,
+#ifndef NOIPV6
+ struct sockaddr_in6 sincl, sincr;
+#else
+ struct sockaddr_in sincl, sincr;
+#endif
+ struct sockaddr_in sins,
req;
uint64_t statscli64,
@@ -620,8 +626,8 @@ struct pluginlink {
struct commands * commandhandlers;
void * (*findbyname)(const char *name);
int (*socksend)(SOCKET sock, unsigned char * buf, int bufsize, int to);
- int (*socksendto)(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to);
- int (*sockrecvfrom)(SOCKET sock, struct sockaddr_in * sin, unsigned char * buf, int bufsize, int to);
+ int (*socksendto)(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to);
+ int (*sockrecvfrom)(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to);
int (*sockgetcharcli)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetcharsrv)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetlinebuf)(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
diff --git a/src/udppm.c b/src/udppm.c
index 62dc9c8..e746540 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -49,7 +49,7 @@ void * udppmchild(struct clientparam* param) {
RETURN (21);
}
param->cliinbuf = param->clioffset = 0;
- i = sockrecvfrom(param->srv->srvsock, ¶m->sinc, param->clibuf, param->clibufsize, 0);
+ i = sockrecvfrom(param->srv->srvsock, (struct sockaddr *)¶m->sincr, param->clibuf, param->clibufsize, 0);
if(i<=0){
param->srv->fds.events = POLLIN;
RETURN (214);
@@ -57,12 +57,12 @@ void * udppmchild(struct clientparam* param) {
param->cliinbuf = i;
#ifdef _WIN32
- if((param->clisock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
+ if((param->clisock=so._socket(*SAFAMILY(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
ioctlsocket(param->clisock, FIONBIO, &ul);
- size = sizeof(struct sockaddr_in);
+ size = sizeof(param->sins);
if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sins, &size)) {RETURN(21);};
if(so._bind(param->clisock,(struct sockaddr *)¶m->sins,sizeof(struct sockaddr_in))) {
RETURN(822);
From 4fef3a1df020fb2909066f9adfe5dc31a6c47498 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 12 May 2014 00:21:22 +0400
Subject: [PATCH 020/122] More changes for IPv6 suppot +nbname auth removed
---
src/3proxy.c | 52 +++++++++++++++++++---
src/auth.c | 111 ++++++++++++-----------------------------------
src/datatypes.c | 61 ++++++++++----------------
src/ntlm.c | 4 +-
src/plugins.c | 67 ++++++++++++++--------------
src/proxy.h | 1 -
src/structures.h | 10 ++++-
src/webadmin.c | 18 +++-----
8 files changed, 145 insertions(+), 179 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 751fcf6..bed4737 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1149,6 +1149,47 @@ static int h_nolog(int argc, unsigned char **argv){
return 0;
}
+int scanipl(unsigned char *arg, struct iplist *dst){
+#ifndef NOIPV6
+ struct sockaddr_in6 sa;
+#else
+ struct sockaddr_in sa;
+#endif
+ char * slash, *dash;
+ int masklen, addrlen;
+ if((slash = strchr(arg, '/'))) *slash = 0;
+ if((dash = strchr(arg,'-'))) *dash = 0;
+
+ if(!getip46(46, arg, (struct sockaddr *)&sa)) return 1;
+ memcpy(&dst->ip_from, SAADDR(&sa), SAADDRLEN(&sa));
+ dst->family = *SAFAMILY(&sa);
+ if(dash){
+ if(!getip46(46, dash+1, (struct sockaddr *)&sa)) return 2;
+ memcpy(&dst->ip_to, SAADDR(&sa), SAADDRLEN(&sa));
+ return 0;
+ }
+ if(slash){
+ addrlen = SAADDRLEN(&sa);
+ masklen = atoi(slash+1);
+ if(masklen >= 0 && masklen<(addrlen*8)){
+ int i, nbytes = masklen / 8, nbits = masklen % 8;
+
+ for(i = addrlen; i; i--){
+ ((unsigned char *)&dst->ip_from)[i-1] = 0x00;
+ ((unsigned char *)&dst->ip_to)[i-1] = 0xff;
+ }
+ memcpy(&dst->ip_to, &dst->ip_from, addrlen - i);
+ for(;nbits;nbits--){
+ ((unsigned char *)&dst->ip_from)[i-1] &= (0x01<<(nbits-1));
+ ((unsigned char *)&dst->ip_to)[i-1] |= (0x01<<(nbits-1));
+ }
+ return 0;
+ }
+ }
+ memcpy(&dst->ip_to, &dst->ip_from, SAADDRLEN(&sa));
+ return 0;
+}
+
struct ace * make_ace (int argc, unsigned char ** argv){
struct ace * acl;
unsigned char *arg;
@@ -1195,12 +1236,9 @@ struct ace * make_ace (int argc, unsigned char ** argv){
return(NULL);
}
memset(ipl, 0, sizeof(struct iplist));
- if (!scanaddr(arg, &ipl->ip, &ipl->mask)) {
- if((ipl->ip = getip(arg)) == 0){
- fprintf(stderr, "Invalid IP or CIDR, line %d\n", linenum);
- return(NULL);
- }
- ipl->mask = 0xFFFFFFFF;
+ if (scanipl(arg, ipl)) {
+ fprintf(stderr, "Invalid IP or CIDR, line %d\n", linenum);
+ return(NULL);
}
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
}
@@ -1256,7 +1294,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
return(NULL);
}
memset(ipl, 0, sizeof(struct iplist));
- if (!scanaddr(arg, &ipl->ip, &ipl->mask)) {
+ if (scanipl(arg, ipl)) {
fprintf(stderr, "Invalid IP or CIDR, line %d\n", linenum);
return(NULL);
}
diff --git a/src/auth.c b/src/auth.c
index c1f705d..b2bba6e 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -12,62 +12,6 @@
#define HEADERSIZE 57
#define RECORDSIZE 18
-unsigned char request[] = {
- 0xa2, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x43, 0x4b, 0x41,
- 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
- 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
- 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
- 0x41, 0x41, 0x41, 0x41, 0x41, 0x00, 0x00, 0x21,
- 0x00, 0x01};
-
-unsigned char * getNetBIOSnamebyip(unsigned long ip){
- unsigned char buf[1024];
- struct sockaddr_in sins;
- int res;
- SOCKET sock;
- unsigned char * username = NULL;
- int i;
- int j;
- int nnames;
- int type;
-
- if ( (sock=so._socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) == INVALID_SOCKET) return NULL;
- memset(&sins, 0, sizeof(sins));
- sins.sin_family = AF_INET;
- sins.sin_port = htons(0);
- sins.sin_addr.s_addr = INADDR_ANY;
- if(so._bind(sock,(struct sockaddr *)&sins,sizeof(sins))) {
- so._closesocket(sock);
- return NULL;
- }
- sins.sin_family = AF_INET;
- sins.sin_addr.s_addr = ip;
- sins.sin_port = htons(137);
- res=socksendto(sock, (struct sockaddr*)&sins, request, sizeof(request), conf.timeouts[SINGLEBYTE_L]*1000);
- if(res <= 0) {
- so._closesocket(sock);
- return NULL;
- }
- res = sockrecvfrom(sock, (struct sockaddr*)&sins, buf, sizeof(buf), conf.timeouts[SINGLEBYTE_L]*1000);
- so._closesocket(sock);
- if(res < (HEADERSIZE + RECORDSIZE)) {
- return NULL;
- }
- nnames = buf[HEADERSIZE-1];
- if (res < (HEADERSIZE + (nnames * RECORDSIZE))) return NULL;
- for (i = 0; i < nnames; i++){
- type = buf[HEADERSIZE + (i*RECORDSIZE) + 15];
- if( type == 3) {
- for(j = 14; j && buf[HEADERSIZE + (i*RECORDSIZE) + j] == ' '; j--)
- buf[HEADERSIZE + (i*RECORDSIZE) + j] = 0;
- if(username)myfree(username);
- username = (unsigned char *)mystrdup((char *)buf + HEADERSIZE + i*RECORDSIZE);
- }
- buf[HEADERSIZE + (i*RECORDSIZE) + 15] = 0;
- }
- return username;
-}
int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned long ip, unsigned short port){
unsigned char buf[1024];
@@ -362,6 +306,18 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
return redir?clientnegotiate(redir, param, targetip, targetport):0;
}
+int IPInentry(struct sockaddr *sa, struct iplist *ipentry){
+ int i, addrlen;
+ unsigned char *ip, *ipf, *ipt;
+ ip = (unsigned char *)SAADDR(sa);
+ ipf = (unsigned char *)&ipentry->ip_from;
+ ipt = (unsigned char *)&ipentry->ip_to;
+ if(!sa || ! ipentry || *SAFAMILY(sa) != ipentry->family) return 0;
+ addrlen = SAADDRLEN(sa);
+ for(i=0; iipt[i]) return 0;
+ return 1;
+
+}
int ACLmatches(struct ace* acentry, struct clientparam * param){
struct userlist * userentry;
@@ -376,15 +332,14 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
username = param->username?param->username:(unsigned char *)"-";
if(acentry->src) {
for(ipentry = acentry->src; ipentry; ipentry = ipentry->next)
-/* FIX IT !*/
- if(ipentry->ip == (*(unsigned long *)SAADDR(¶m->sincr) & ipentry->mask)) {
+ if(IPInentry((struct sockaddr *)¶m->sincr, ipentry)) {
break;
}
- if(!ipentry) return 0;
+ if(!ipentry) return 0;
}
if((acentry->dst && param->req.sin_addr.s_addr) || (acentry->dstnames && param->hostname)) {
for(ipentry = acentry->dst; ipentry; ipentry = ipentry->next)
- if(ipentry->ip == (param->req.sin_addr.s_addr & ipentry->mask)) {
+ if(IPInentry((struct sockaddr *)¶m->req, ipentry)) {
break;
}
if(!ipentry) {
@@ -647,7 +602,11 @@ struct authcache {
char * username;
char * password;
time_t expires;
- unsigned long ip;
+#ifndef NOIPV6
+ struct sockaddr_in6 sa;
+#else
+ struct sockaddr_in sa;
+#endif
struct authcache *next;
} *authc = NULL;
@@ -674,8 +633,7 @@ int cacheauth(struct clientparam * param){
}
if(((!(conf.authcachetype&2)) || (param->username && ac->username && !strcmp(ac->username, param->username))) &&
-/* FIX IT */
- ((!(conf.authcachetype&1)) || ac->ip == *(unsigned long *)SAADDR(¶m->sincr)) &&
+ ((!(conf.authcachetype&1)) || (*SAFAMILY(&ac->sa) == *SAFAMILY(¶m->sincr) && !memcmp(SAADDR(&ac->sa), ¶m->sincr, SAADDRLEN(&ac->sa)))) &&
(!(conf.authcachetype&4) || (ac->password && param->password && !strcmp(ac->password, param->password)))) {
if(param->username){
myfree(param->username);
@@ -709,8 +667,7 @@ int doauth(struct clientparam * param){
pthread_mutex_lock(&hash_mutex);
for(ac = authc; ac; ac = ac->next){
if((!(conf.authcachetype&2) || !strcmp(ac->username, param->username)) &&
-/* FIX IT */
- (!(conf.authcachetype&1) || ac->ip == *(unsigned long *)SAADDR(¶m->sincr)) &&
+ (!(conf.authcachetype&1) || (*SAFAMILY(&ac->sa) == *SAFAMILY(¶m->sincr) && !memcmp(SAADDR(&ac->sa), ¶m->sincr, SAADDRLEN(&ac->sa)))) &&
(!(conf.authcachetype&4) || (ac->password && !strcmp(ac->password, param->password)))) {
ac->expires = conf.time + conf.authcachetime;
if(strcmp(ac->username, param->username)){
@@ -723,8 +680,7 @@ int doauth(struct clientparam * param){
ac->password = mystrdup(param->password);
myfree(tmp);
}
-/* FIX IT */
- ac->ip = *(unsigned long *)SAADDR(¶m->sincr);
+ memcpy(&ac->sa, ¶m->sincr, SASIZE(¶m->sincr));
break;
}
}
@@ -733,8 +689,7 @@ int doauth(struct clientparam * param){
if(ac){
ac->expires = conf.time + conf.authcachetime;
ac->username = mystrdup(param->username);
-/* FIX IT */
- ac->ip = *(unsigned long *)SAADDR(¶m->sincr);
+ memcpy(&ac->sa, ¶m->sincr, SASIZE(¶m->sincr));
ac->password = NULL;
if((conf.authcachetype&4) && param->password) ac->password = mystrdup(param->password);
}
@@ -769,15 +724,6 @@ int userauth(struct clientparam * param){
return (param->username)? 0:4;
}
-int nbnameauth(struct clientparam * param){
-/* FIX IT */
- unsigned char * name = getNetBIOSnamebyip(*(unsigned long *)SAADDR(¶m->sincr));
-
- if (param->username) myfree (param->username);
- param->username = name;
- return name? 0:4;
-}
-
int dnsauth(struct clientparam * param){
char buf[32];
/* FIX IT */
@@ -862,11 +808,10 @@ struct auth authfuncs[] = {
{authfuncs+1, NULL, NULL, ""},
{authfuncs+2, ipauth, NULL, "iponly"},
{authfuncs+3, userauth, checkACL, "useronly"},
- {authfuncs+4, nbnameauth, checkACL, "nbname"},
- {authfuncs+5, dnsauth, checkACL, "dnsname"},
- {authfuncs+6, strongauth, checkACL, "strong"},
- {authfuncs+7, cacheauth, checkACL, "cache"},
- {authfuncs+8, NULL, NULL, "none"},
+ {authfuncs+4, dnsauth, checkACL, "dnsname"},
+ {authfuncs+5, strongauth, checkACL, "strong"},
+ {authfuncs+6, cacheauth, checkACL, "cache"},
+ {authfuncs+7, NULL, NULL, "none"},
{NULL, NULL, NULL, ""}
};
diff --git a/src/datatypes.c b/src/datatypes.c
index 5d9a681..d5dea1d 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -57,19 +57,14 @@ static void pr_datetime(struct node *node, CBFUNC cbf, void*cb){
}
}
-int ipprint(char *buf, unsigned uu){
- unsigned u = ntohl(uu);
-
- return sprintf(buf, "%u.%u.%u.%u",
- ((u&0xFF000000)>>24),
- ((u&0x00FF0000)>>16),
- ((u&0x0000FF00)>>8),
- ((u&0x000000FF)));
-}
-
static void pr_ip(struct node *node, CBFUNC cbf, void*cb){
char buf[16];
- if(node->value)(*cbf)(cb, buf, ipprint(buf, *(unsigned *)node -> value));
+ if(node->value)(*cbf)(cb, buf, myinet_ntop(AF_INET, node -> value, buf, 4));
+}
+
+static void pr_ip6(struct node *node, CBFUNC cbf, void*cb){
+ char buf[64];
+ if(node->value)(*cbf)(cb, buf, myinet_ntop(AF_INET6, node -> value, buf, 16));
}
static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
@@ -243,9 +238,22 @@ static void pr_userlist(struct node *node, CBFUNC cbf, void*cb){
}
}
+int printiple(char *buf, struct iplist* ipl){
+ int addrlen = (ipl->family == AF_INET6)?16:4, i;
+ i = myinet_ntop(ipl->family, &ipl->ip_from, buf, addrlen);
+ if(memcmp(&ipl->ip_from, &ipl->ip_to, addrlen)){
+ buf[i++] = '-';
+ i += myinet_ntop(ipl->family, &ipl->ip_from, buf+i, addrlen);
+ }
+ if(ipl->next){
+ buf[i++] = ',';
+ buf[i++] = ' ';
+ }
+ return i;
+}
+
static void pr_iplist(struct node *node, CBFUNC cbf, void*cb){
- char buf[20];
- int i;
+ char buf[128];
struct iplist *il = (struct iplist *)node->value;
if(!il) {
@@ -253,10 +261,7 @@ static void pr_iplist(struct node *node, CBFUNC cbf, void*cb){
return;
}
for(; il; il = il->next){
- i = ipprint(buf, il->ip);
- i += cidrprint(buf+i, il->mask);
- if(il->next)buf[i++] = ',';
- (*cbf)(cb, buf, i);
+ (*cbf)(cb, buf, printiple(buf, il));
}
}
@@ -277,18 +282,6 @@ static void * ef_iplist_next(struct node *node){
return (((struct iplist *)node->value) -> next);
}
-static void * ef_iplist_ip(struct node *node){
- return &(((struct iplist *)node->value) -> ip);
-}
-
-static void * ef_iplist_cidr(struct node *node){
- return &(((struct iplist *)node->value) -> mask);
-}
-
-static void * ef_iplist_mask(struct node *node){
- return &(((struct iplist *)node->value) -> mask);
-}
-
static void * ef_userlist_next(struct node * node){
return (((struct userlist *)node->value) -> next);
}
@@ -519,7 +512,6 @@ static void * ef_server_auth(struct node * node){
AUTHFUNC af = ((struct srvparam *)node->value) -> authfunc;
if(af == alwaysauth) return "none";
- if(af == nbnameauth) return "nbname";
if(af == ipauth) return "iponly";
if(af == strongauth) return "strong";
return "uknown";
@@ -703,13 +695,6 @@ static struct property prop_pwlist[] = {
{NULL, "next", ef_pwlist_next, TYPE_PWLIST, "next"}
};
-static struct property prop_iplist[] = {
- {prop_iplist + 1, "ip", ef_iplist_ip, TYPE_IP, "ip address"},
- {prop_iplist + 2, "cidr", ef_iplist_cidr, TYPE_CIDR, "ip mask length"},
- {prop_iplist + 3, "mask", ef_iplist_mask, TYPE_IP, "ip mask"},
- {NULL, "next", ef_iplist_next, TYPE_IPLIST, "next"}
-};
-
static struct property prop_chain[] = {
{prop_chain + 1, "ip", ef_chain_ip, TYPE_IP, "parent ip address"},
{prop_chain + 2, "port", ef_chain_port, TYPE_PORT, "parent port"},
@@ -829,7 +814,7 @@ struct datatype datatypes[64] = {
{"operations", NULL, pr_operations, NULL},
{"rotation", NULL, pr_rotation, NULL},
{"portlist", ef_portlist_next, pr_portlist, prop_portlist},
- {"iplist", ef_iplist_next, pr_iplist, prop_iplist},
+ {"iplist", ef_iplist_next, pr_iplist, NULL},
{"userlist", ef_userlist_next, pr_userlist, prop_userlist},
{"pwlist", ef_pwlist_next, NULL, prop_pwlist},
{"chain", ef_chain_next, NULL, prop_chain},
diff --git a/src/ntlm.c b/src/ntlm.c
index 9f57c92..c13f62c 100644
--- a/src/ntlm.c
+++ b/src/ntlm.c
@@ -81,8 +81,8 @@ void genchallenge(struct clientparam *param, char * challenge, char *buf){
chal->flags[3] = 0xA0;
text2unicode(hostname, (char *)chal->data, 64);
time((time_t *)challenge);
- memcpy(challenge+4, ¶m->sinc.sin_addr.s_addr, 4);
- challenge[1]^=param->sinc.sin_port;
+ memcpy(challenge+4, SAADDR(¶m->sincr), 4);
+ challenge[1]^=*SAPORT(¶m->sincr);
for(i = 0; i < 8; i++) challenge[i] ^= myrand(challenge, 8);
memcpy(chal->challenge, challenge, 8);
en64((unsigned char *)tmpbuf, (unsigned char *)buf, (int)((unsigned char *)chal->data - (unsigned char *)chal) + len);
diff --git a/src/plugins.c b/src/plugins.c
index 6c21cf4..0891cb0 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -44,40 +44,39 @@ struct symbol symbols[] = {
{symbols+16, "trafcountfunc", (void *) trafcountfunc},
{symbols+17, "alwaysauth", (void *) alwaysauth},
{symbols+18, "ipauth", (void *) ipauth},
- {symbols+19, "nbnameauth", (void *) nbnameauth},
- {symbols+20, "strongauth", (void *) strongauth},
- {symbols+21, "checkACL", (void *) checkACL},
- {symbols+22, "nametohash", (void *) nametohash},
- {symbols+23, "hashindex", (void *) hashindex},
- {symbols+24, "nservers", (void *) nservers},
- {symbols+25, "udpresolve", (void *) udpresolve},
- {symbols+26, "bandlim_mutex", (void *) &bandlim_mutex},
- {symbols+27, "tc_mutex", (void *) &tc_mutex},
- {symbols+28, "hash_mutex", (void *) &hash_mutex},
- {symbols+29, "pwl_mutex", (void *) &pwl_mutex},
- {symbols+30, "linenum", (void *) &linenum},
- {symbols+31, "proxy_stringtable", (void *) proxy_stringtable},
- {symbols+32, "en64", (void *) en64},
- {symbols+33, "de64", (void *) de64},
- {symbols+34, "tohex", (void *) tohex},
- {symbols+35, "fromhex", (void *) fromhex},
- {symbols+36, "dnspr", (void *) dnsprchild},
- {symbols+37, "pop3p", (void *) pop3pchild},
- {symbols+38, "proxy", (void *) proxychild},
- {symbols+39, "socks", (void *) sockschild},
- {symbols+40, "tcppm", (void *) tcppmchild},
- {symbols+41, "udppm", (void *) udppmchild},
- {symbols+42, "admin", (void *) adminchild},
- {symbols+43, "ftppr", (void *) ftpprchild},
- {symbols+44, "smtpp", (void *) smtppchild},
- {symbols+45, "icqpr", (void *) icqprchild},
- {symbols+46, "msnpr", (void *) msnprchild},
- {symbols+47, "authfuncs", (void *) &authfuncs},
- {symbols+48, "commandhandlers", (void *) &commandhandlers},
- {symbols+49, "decodeurl", (void *) decodeurl},
- {symbols+50, "parsestr", (void *) parsestr},
- {symbols+51, "make_ace", (void *) make_ace},
- {symbols+52, "freeacl", (void *) freeacl},
+ {symbols+19, "strongauth", (void *) strongauth},
+ {symbols+20, "checkACL", (void *) checkACL},
+ {symbols+21, "nametohash", (void *) nametohash},
+ {symbols+22, "hashindex", (void *) hashindex},
+ {symbols+23, "nservers", (void *) nservers},
+ {symbols+24, "udpresolve", (void *) udpresolve},
+ {symbols+25, "bandlim_mutex", (void *) &bandlim_mutex},
+ {symbols+26, "tc_mutex", (void *) &tc_mutex},
+ {symbols+27, "hash_mutex", (void *) &hash_mutex},
+ {symbols+28, "pwl_mutex", (void *) &pwl_mutex},
+ {symbols+29, "linenum", (void *) &linenum},
+ {symbols+30, "proxy_stringtable", (void *) proxy_stringtable},
+ {symbols+31, "en64", (void *) en64},
+ {symbols+32, "de64", (void *) de64},
+ {symbols+33, "tohex", (void *) tohex},
+ {symbols+34, "fromhex", (void *) fromhex},
+ {symbols+35, "dnspr", (void *) dnsprchild},
+ {symbols+36, "pop3p", (void *) pop3pchild},
+ {symbols+37, "proxy", (void *) proxychild},
+ {symbols+38, "socks", (void *) sockschild},
+ {symbols+39, "tcppm", (void *) tcppmchild},
+ {symbols+40, "udppm", (void *) udppmchild},
+ {symbols+41, "admin", (void *) adminchild},
+ {symbols+42, "ftppr", (void *) ftpprchild},
+ {symbols+43, "smtpp", (void *) smtppchild},
+ {symbols+44, "icqpr", (void *) icqprchild},
+ {symbols+45, "msnpr", (void *) msnprchild},
+ {symbols+46, "authfuncs", (void *) &authfuncs},
+ {symbols+47, "commandhandlers", (void *) &commandhandlers},
+ {symbols+48, "decodeurl", (void *) decodeurl},
+ {symbols+49, "parsestr", (void *) parsestr},
+ {symbols+50, "make_ace", (void *) make_ace},
+ {symbols+51, "freeacl", (void *) freeacl},
{NULL, "", NULL}
};
diff --git a/src/proxy.h b/src/proxy.h
index 873b977..3dfaa22 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -174,7 +174,6 @@ int init_sql(char * s);
void close_sql();
#endif
int doconnect(struct clientparam * param);
-int nbnameauth(struct clientparam * param);
int alwaysauth(struct clientparam * param);
int ipauth(struct clientparam * param);
int doauth(struct clientparam * param);
diff --git a/src/structures.h b/src/structures.h
index c44efd2..ea59ae3 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -170,8 +170,14 @@ struct auth {
struct iplist {
struct iplist *next;
- unsigned long ip;
- unsigned long mask;
+ int family;
+#ifndef NOIPV6
+ struct in6_addr ip_from;
+ struct in6_addr ip_to;
+#else
+ struct in_addr ip_from;
+ struct in_addr ip_to;
+#endif
};
struct portlist {
diff --git a/src/webadmin.c b/src/webadmin.c
index a4e6760..8a41bd6 100644
--- a/src/webadmin.c
+++ b/src/webadmin.c
@@ -319,21 +319,15 @@ static int printuserlist(char *buf, int bufsize, struct userlist* ul, char * del
return printed;
}
+
+int printiple(char *buf, struct iplist* ipl);
+
static int printiplist(char *buf, int bufsize, struct iplist* ipl, char * delim){
int printed = 0;
for(; ipl; ipl = ipl->next){
- if(printed > (bufsize - 64)) break;
- printed += sprintf(buf+printed, "%u.%u.%u.%u mask %u.%u.%u.%u%s",
- (unsigned)(ntohl(ipl->ip)&0xff000000)>>24,
- (unsigned)(ntohl(ipl->ip)&0x00ff0000)>>16,
- (unsigned)(ntohl(ipl->ip)&0x0000ff00)>>8,
- (unsigned)(ntohl(ipl->ip)&0x000000ff),
- (unsigned)(ntohl(ipl->mask)&0xff000000)>>24,
- (unsigned)(ntohl(ipl->mask)&0x00ff0000)>>16,
- (unsigned)(ntohl(ipl->mask)&0x0000ff00)>>8,
- (unsigned)(ntohl(ipl->mask)&0x000000ff),
- ipl->next?delim:"");
- if(printed > (bufsize - 64)) {
+ if(printed > (bufsize - 128)) break;
+ printed += printiple(buf+printed, ipl);
+ if(printed > (bufsize - 128)) {
printed += sprintf(buf+printed, "...");
break;
}
From 7ca32fc940ce0c00453c665ed795db77e515069a Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 11 Jun 2014 00:57:18 +0400
Subject: [PATCH 021/122] overlapped memcpy replaced with memmove
---
src/proxy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/proxy.c b/src/proxy.c
index 7d0f9d3..1889222 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -339,7 +339,7 @@ for(;;){
if(!isconnect){
if(se==sg)*se-- = ' ';
*se = '/';
- memcpy(ss, se, i - (se - sb) + 1);
+ memmove(ss, se, i - (se - sb) + 1);
}
}
reqlen = i = (int)strlen((char *)buf);
From 7bae6c45258d3b2ace3f77acb144fa7f07234134 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 11 Jun 2014 01:26:07 +0400
Subject: [PATCH 022/122] resolving compilation issues for *nix
---
src/proxy.h | 2 +-
src/proxymain.c | 2 +-
src/structures.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/proxy.h b/src/proxy.h
index 3dfaa22..3c689d3 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -183,7 +183,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
-int myinet_ntop(int af, const void *src, char *dst, socklen_t size);
+int myinet_ntop(int af, void *src, char *dst, socklen_t size);
extern unsigned long nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
diff --git a/src/proxymain.c b/src/proxymain.c
index cae0081..ad69314 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -192,7 +192,7 @@ int MODULEMAINFUNC (int argc, char** argv){
case 'I':
size = sizeof(defparam.sincl);
if(so._getsockname(0, (struct sockaddr*)&defparam.sincl, &size) ||
- defparam.sincl.sin_family != AF_INET) error = 1;
+ SAFAMILY(&defparam.sincl) != AF_INET) error = 1;
else inetd = 1;
break;
diff --git a/src/structures.h b/src/structures.h
index ea59ae3..5195131 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -637,7 +637,7 @@ struct pluginlink {
int (*sockgetcharcli)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetcharsrv)(struct clientparam * param, int timeosec, int timeousec);
int (*sockgetlinebuf)(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
- int (*myinet_ntop)(int af, const void *src, char *dst, socklen_t size);
+ int (*myinet_ntop)(int af, void *src, char *dst, socklen_t size);
int (*dobuf)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec);
int (*dobuf2)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
int (*scanaddr)(const unsigned char *s, unsigned long * ip, unsigned long * mask);
From 8975b00cce0b168252fb28309454a3e3076e60ec Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 11 Jun 2014 01:54:25 +0400
Subject: [PATCH 023/122] better EINTR handling
---
src/sockgetchar.c | 2 +-
src/sockmap.c | 12 ++++++++----
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/sockgetchar.c b/src/sockgetchar.c
index 1000d2c..906a4bd 100644
--- a/src/sockgetchar.c
+++ b/src/sockgetchar.c
@@ -47,7 +47,7 @@ int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufs
if(res < 1) break;
res = so._sendto(sock, buf + sent, bufsize - sent, 0, sin, SASIZE(sin));
if(res < 0) {
- if(errno != EAGAIN) break;
+ if(errno != EAGAIN && errno != EINTR) break;
continue;
}
sent += res;
diff --git a/src/sockmap.c b/src/sockmap.c
index 24fe342..5626d3d 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -130,7 +130,8 @@ int sockmap(struct clientparam * param, int timeo){
}
res = so._sendto(param->clisock, param->srvbuf + param->srvoffset,(!param->waitserver64 || (param->waitserver64 - received) > (param->srvinbuf - param->srvoffset))? param->srvinbuf - param->srvoffset : (int)(param->waitserver64 - received), 0, (struct sockaddr*)¶m->sincr, sasize);
if(res < 0) {
- if(errno != EAGAIN) return 96;
+ if(errno != EAGAIN && errno != EINTR) return 96;
+ if(errno == EINTR) usleep(SLEEPTIME);
continue;
}
param->srvoffset += res;
@@ -155,7 +156,8 @@ int sockmap(struct clientparam * param, int timeo){
}
res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
if(res < 0) {
- if(errno != EAGAIN) return 97;
+ if(errno != EAGAIN && errno != EINTR) return 97;
+ if(errno == EINTR) usleep(SLEEPTIME);
continue;
}
param->clioffset += res;
@@ -180,7 +182,8 @@ int sockmap(struct clientparam * param, int timeo){
}
else {
if (res < 0){
- if( errno != EAGAIN) return (94);
+ if(errno != EAGAIN && errno != EINTR) return 94;
+ if(errno == EINTR) usleep(SLEEPTIME);
continue;
}
param->cliinbuf += res;
@@ -210,7 +213,8 @@ int sockmap(struct clientparam * param, int timeo){
}
else {
if (res < 0){
- if( errno != EAGAIN) return (93);
+ if(errno != EAGAIN && errno != EINTR) return 93;
+ if(errno == EINTR) usleep(SLEEPTIME);
continue;
}
param->srvinbuf += res;
From 5cccf7cbdd80ecea7e6f1f6c8c8c93e16e698489 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 28 Jun 2014 17:29:26 +0400
Subject: [PATCH 024/122] Do not ignore version.h
version.h is required to build from sources
Conflicts:
.gitignore
---
.gitignore | 2 --
1 file changed, 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index cf580e3..12689cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,8 +15,6 @@ tmp/
*.swp
*.o
*.idb
-Changelog
-src/version.h
src/res
version.c
3proxy.res
From 9416012a011eed1f7d433fab829f3843793ce5a3 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel
Date: Tue, 1 Jul 2014 19:01:28 +0200
Subject: [PATCH 025/122] Fix some awkward NOIPV6 typoes and ommissions
---
src/datatypes.c | 2 +-
src/structures.h | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/datatypes.c b/src/datatypes.c
index d5dea1d..074b62c 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -69,7 +69,7 @@ static void pr_ip6(struct node *node, CBFUNC cbf, void*cb){
static void pr_sa(struct node *node, CBFUNC cbf, void*cb){
#ifdef NOIPV6
- if(node->value)return pr_ip(node, &((struct sockaddr_in *)node->value)->sin_addr.s_addr)
+ if(node->value)return pr_ip(node, cbf, cb);
#else
char buf[64];
buf[0] = '[';
diff --git a/src/structures.h b/src/structures.h
index 5195131..3b25c06 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -112,7 +112,7 @@ int
#define SASIZE(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in))
#else
#define SAPORT(sa) (&((struct sockaddr_in *)sa)->sin_port)
-#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.a_addr)
+#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDRLEN(sa) (4)
#define SASOCK(sa) (PF_INET)
#define SASIZE(sa) (sizeof(struct sockaddr_in))
@@ -359,7 +359,7 @@ struct srvparam {
#ifndef NOIPV6
struct sockaddr_in6 intsa;
#else
- struct sockaddr_in intsa
+ struct sockaddr_in intsa;
#endif
unsigned long extip;
pthread_mutex_t counter_mutex;
@@ -487,7 +487,7 @@ struct extparam {
#ifndef NOIPV6
struct sockaddr_in6 intsa;
#else
- struct sockaddr_in intsa
+ struct sockaddr_in intsa;
#endif
unsigned long extip;
unsigned short extport;
From 6b579b8190b25a3c2edbc521ba38c73707b01c10 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel
Date: Tue, 1 Jul 2014 19:08:31 +0200
Subject: [PATCH 026/122] Communicate SOCKS error states properly
This used to look pretty random :(
Try to keep the last decimal digits of internal errors sensible for v5
error codes. For most cases we can't really do much better than using the
value of one.
One specific code paths where we can return something more useful is the
authentication, where we not communicate the underlying error code or
signal an ACL denial.
As for v4, there's not really much space to be too smart as only the code
of 91 is meaningful. Therefore we limit the last digit to zero and one now.
---
src/socks.c | 66 +++++++++++++++++++++++++++++++++++++----------------
1 file changed, 46 insertions(+), 20 deletions(-)
diff --git a/src/socks.c b/src/socks.c
index 6cdff57..a48ffbf 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -48,29 +48,29 @@ void * sockschild(struct clientparam* param) {
if(ver == 5){
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);} /* nmethods */
for (; i; i--) {
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(442);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
if (res == 2 && !param->srv->nouser) {
havepass = res;
}
}
buf[0] = 5;
buf[1] = havepass;
- if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(402);}
+ if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(401);}
if (havepass) {
if (((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_L], 0))) != 1) {
RETURN(412);
}
- if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(443);}
- if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(444);};
+ if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);}
+ if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
buf[i] = 0;
if(!param->username)param->username = (unsigned char *)mystrdup((char *)buf);
if ((i = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(445);}
- if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(446);};
+ if (i && (unsigned)(res = sockgetlinebuf(param, CLIENT, buf, i, 0, conf.timeouts[STRING_S])) != i){RETURN(441);};
buf[i] = 0;
if(!param->password)param->password = (unsigned char *)mystrdup((char *)buf);
buf[0] = 1;
buf[1] = 0;
- if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(402);}
+ if(socksend(param->clisock, buf, 2, conf.timeouts[STRING_S])!=2){RETURN(481);}
}
if ((c = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_L], 0)) != 5) {
RETURN(421);
@@ -82,9 +82,9 @@ void * sockschild(struct clientparam* param) {
c = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0); /* atype */
}
else {
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(448);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[0] = (unsigned char) res;
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(449);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[1] = (unsigned char) res;
param->sins.sin_port = param->req.sin_port = *(unsigned short*)buf;
c = 1;
@@ -93,19 +93,19 @@ void * sockschild(struct clientparam* param) {
switch(c) {
case 1:
for (i = 0; i<4; i++){
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(450);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[i] = (unsigned char)res;
}
param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr = *(unsigned long *)buf;
if(command==1 && !param->req.sin_addr.s_addr) {
- RETURN(422);
+ RETURN(421);
}
myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + strlen((char *)buf), 64);
break;
case 3:
if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
for (i=0; ihostname)myfree(param->hostname);
param->hostname = (unsigned char *)mystrdup((char *)buf);
if (ver == 5) {
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(453);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[0] = (unsigned char) res;
- if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(454);}
+ if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[1] = (unsigned char) res;
param->sins.sin_port = param->req.sin_port = *(unsigned short*)buf;
}
@@ -139,7 +139,7 @@ void * sockschild(struct clientparam* param) {
param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr = getip(buf);
}
}
- if(command == 1 && !param->req.sin_port) {RETURN(424);}
+ if(command == 1 && !param->req.sin_port) {RETURN(421);}
param->sins.sin_family = AF_INET;
switch(command) {
case 1:
@@ -161,12 +161,38 @@ void * sockschild(struct clientparam* param) {
RETURN(997);
}
- if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
+ errno = 0;
+ if((res = (*param->srv->authfunc)(param))) {
+ res *= 10;
+ switch (errno) {
+ /* If authfunc failed but errno stays intacts we assume ACL denied the access,
+ * otherwise we do our best to pick a good error code for SOCKSv5. */
+ case 0:
+ res += 2; /* connection not allowed by ruleset */
+ break;
+ case ENETUNREACH:
+ res += 3; /* Network unreachable */
+ break;
+ case EHOSTUNREACH:
+ res += 4; /* Host unreachable */
+ break;
+ case ECONNREFUSED:
+ res += 5; /* Connection refused */
+ break;
+ case EPFNOSUPPORT:
+ case EAFNOSUPPORT:
+ res += 8; /* Address type not supported */
+ break;
+ default:
+ res += 1;
+ }
+ RETURN(res);
+ }
if(command > 1) {
if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins))) {
param->sins.sin_port = 0;
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins)))RETURN (12);
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins)))RETURN (11);
#if SOCKSTRACE > 0
fprintf(stderr, "%s:%hu binded to communicate with server\n",
inet_ntoa(param->sins.sin_addr),
@@ -183,7 +209,7 @@ fflush(stderr);
if(param->clisock == INVALID_SOCKET) {RETURN(11);}
memcpy(&sin, ¶m->sincl, sizeof(&sin));
*SAPORT(&sin) = htons(0);
- if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (12);}
+ if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (11);}
#if SOCKSTRACE > 0
fprintf(stderr, "%hu binded to communicate with client\n",
ntohs(*SAPORT(&sin))
@@ -220,7 +246,7 @@ fflush(stderr);
}
else{
buf[0] = 0;
- buf[1] = 90 + (param->res%10);
+ buf[1] = 90 + !!(param->res%10);
memcpy(buf+2, SAPORT(&sin), 2);
memcpy(buf+4, SAADDR(&sin), 4);
socksend(param->clisock, buf, 8, conf.timeouts[STRING_S]);
@@ -329,7 +355,7 @@ fflush(stderr);
param->sins.sin_addr.s_addr = getip(buf+4);
break;
default:
- RETURN(996);
+ RETURN(997);
}
memcpy(¶m->sins.sin_port, buf+i, 2);
From 1f5198a238aa0d3c4d309e16a42556f52be62dff Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Tue, 1 Jul 2014 21:31:57 +0400
Subject: [PATCH 027/122] Keep 2-digit error codes for socket operations
2 digit codes are common for all modules, should not be changed
---
src/socks.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/socks.c b/src/socks.c
index a48ffbf..184cc5c 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -192,7 +192,7 @@ void * sockschild(struct clientparam* param) {
if(command > 1) {
if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins))) {
param->sins.sin_port = 0;
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins)))RETURN (11);
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins)))RETURN (12);
#if SOCKSTRACE > 0
fprintf(stderr, "%s:%hu binded to communicate with server\n",
inet_ntoa(param->sins.sin_addr),
@@ -209,7 +209,7 @@ fflush(stderr);
if(param->clisock == INVALID_SOCKET) {RETURN(11);}
memcpy(&sin, ¶m->sincl, sizeof(&sin));
*SAPORT(&sin) = htons(0);
- if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (11);}
+ if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (12);}
#if SOCKSTRACE > 0
fprintf(stderr, "%hu binded to communicate with client\n",
ntohs(*SAPORT(&sin))
From ce6c2a069ccc90c59a50abda2ac18ac2ff422801 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel
Date: Tue, 1 Jul 2014 18:57:57 +0200
Subject: [PATCH 028/122] Don't pad the text address with the binary form
The buf gets copied to hostname and is present verbatim in logs looking
like pure random garbage. Moreover you can't really strlen() it.
This was likely some silly typo in inet_ntoa -> inet_ntop conversion for
ipv6, since it used to be correct before.
---
src/socks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/socks.c b/src/socks.c
index 184cc5c..68c3959 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -100,7 +100,7 @@ void * sockschild(struct clientparam* param) {
if(command==1 && !param->req.sin_addr.s_addr) {
RETURN(421);
}
- myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + strlen((char *)buf), 64);
+ myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf, 64);
break;
case 3:
if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
From f8cefb989cacb18a31b47e9881ce28b41b73371a Mon Sep 17 00:00:00 2001
From: Lubomir Rintel
Date: Tue, 1 Jul 2014 18:53:55 +0200
Subject: [PATCH 029/122] Try to use stdint.h with gcc <= 4.4
There's no way to tell whether the architecture has its stdint.h, as
__UINT_FAST64_TYPE__ built in define didn't exist yet. Redefining the
types would break the build, and chances are we're not on some exotic
architecture where stdint would be missing, so let's assume it exists.
---
src/pstdint.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pstdint.h b/src/pstdint.h
index 00fc1fc..41aa44b 100644
--- a/src/pstdint.h
+++ b/src/pstdint.h
@@ -191,7 +191,7 @@
* do nothing else. On the Mac OS X version of gcc this is _STDINT_H_.
*/
-#if ((defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined (__WATCOMC__) && (defined (_STDINT_H_INCLUDED) || __WATCOMC__ >= 1250)) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_) || defined (__UINT_FAST64_TYPE__)) )) && !defined (_PSTDINT_H_INCLUDED)
+#if ((defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined (__WATCOMC__) && (defined (_STDINT_H_INCLUDED) || __WATCOMC__ >= 1250)) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_) || defined (__UINT_FAST64_TYPE__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)) )) && !defined (_PSTDINT_H_INCLUDED)
#include
#define _PSTDINT_H_INCLUDED
# ifndef PRINTF_INT64_MODIFIER
From 085b47d64ec401e1a96792c8a10ce5a174454cd3 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Thu, 3 Jul 2014 03:40:16 +0400
Subject: [PATCH 030/122] Fix compatibility issues
! avoid errno usage due to compatibility issues (and never use errno as
a lvalue). socks changed to use internal error codes instead.
! NOIPV6 compilation issues solved
! -lite version is switched to NOIPV6
---
Makefile.win | 2 +-
src/socks.c | 37 +++++++++++--------------------------
src/structures.h | 2 --
src/version.h | 2 ++
4 files changed, 14 insertions(+), 29 deletions(-)
create mode 100644 src/version.h
diff --git a/Makefile.win b/Makefile.win
index 39882bc..7a1870d 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -11,7 +11,7 @@
BUILDDIR = ../bin/
CC = gcc
-CFLAGS = -O2 -s -c -mthreads -DWITH_STD_MALLOC
+CFLAGS = -O2 -s -c -mthreads -DWITH_STD_MALLOC -DNOIPV6
COUT = -o
LN = gcc
LDFLAGS = -O2 -s -mthreads
diff --git a/src/socks.c b/src/socks.c
index 68c3959..d21ed4e 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -161,31 +161,7 @@ void * sockschild(struct clientparam* param) {
RETURN(997);
}
- errno = 0;
if((res = (*param->srv->authfunc)(param))) {
- res *= 10;
- switch (errno) {
- /* If authfunc failed but errno stays intacts we assume ACL denied the access,
- * otherwise we do our best to pick a good error code for SOCKSv5. */
- case 0:
- res += 2; /* connection not allowed by ruleset */
- break;
- case ENETUNREACH:
- res += 3; /* Network unreachable */
- break;
- case EHOSTUNREACH:
- res += 4; /* Host unreachable */
- break;
- case ECONNREFUSED:
- res += 5; /* Connection refused */
- break;
- case EPFNOSUPPORT:
- case EAFNOSUPPORT:
- res += 8; /* Address type not supported */
- break;
- default:
- res += 1;
- }
RETURN(res);
}
@@ -223,6 +199,8 @@ fflush(stderr);
CLEANRET:
if(param->clisock != INVALID_SOCKET){
+ int repcode;
+
sasize = sizeof(sin);
if(command != 3) so._getsockname(param->remsock, (struct sockaddr *)&sin, &sasize);
else so._getsockname(param->clisock, (struct sockaddr *)&sin, &sasize);
@@ -235,9 +213,16 @@ fprintf(stderr, "Sending confirmation to client with code %d for %s with %s:%hu\
);
fflush(stderr);
#endif
+ if(!param->res) repcode = 0;
+ else if(param->res <= 10) repcode = 2;
+ else if (param->res < 20) repcode = 5;
+ else if (param->res < 30) repcode = 1;
+ else if (param->res < 100) repcode = 4;
+ else repcode = param->res%10;
+
if(ver == 5){
buf[0] = 5;
- buf[1] = param->res%10;
+ buf[1] = repcode;
buf[2] = 0;
buf[3] = 1;
memcpy(buf+4, SAADDR(&sin), 4);
@@ -246,7 +231,7 @@ fflush(stderr);
}
else{
buf[0] = 0;
- buf[1] = 90 + !!(param->res%10);
+ buf[1] = 90 + !!(repcode);
memcpy(buf+2, SAPORT(&sin), 2);
memcpy(buf+4, SAADDR(&sin), 4);
socksend(param->clisock, buf, 8, conf.timeouts[STRING_S]);
diff --git a/src/structures.h b/src/structures.h
index 3b25c06..5489299 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -28,9 +28,7 @@ extern "C" {
#define INVALID_SOCKET (-1)
#else
#include
-#ifndef NOIPV6
#include
-#endif
#define pthread_mutex_t CRITICAL_SECTION
#define pthread_mutex_init(x, y) InitializeCriticalSection(x)
#define pthread_mutex_lock(x) EnterCriticalSection(x)
diff --git a/src/version.h b/src/version.h
new file mode 100644
index 0000000..45f99ca
--- /dev/null
+++ b/src/version.h
@@ -0,0 +1,2 @@
+#define VERSION "3proxy-0.8b-devel"
+#define BUILDDATE "140703033508"
From a425dc40b37430a98d4255373cfb55a2ded77a8b Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Fri, 15 Aug 2014 18:48:06 +0400
Subject: [PATCH 031/122] Correct error handling for thread creation
Error handling corrected for thread creation in case of e.g.
insufficient system resources.
---
src/proxymain.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/proxymain.c b/src/proxymain.c
index ad69314..b8ad7e2 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -470,22 +470,26 @@ int MODULEMAINFUNC (int argc, char** argv){
#else
h = (HANDLE)CreateThread((LPSECURITY_ATTRIBUTES )NULL, (unsigned)32768, (BEGINTHREADFUNC)srv.pf, (void *) newparam, 0, &thread);
#endif
- newparam->threadid = (unsigned)thread;
+ srv.childcount++;
if (h) {
- srv.childcount++;
+ newparam->threadid = (unsigned)thread;
CloseHandle(h);
}
else {
- myfree(newparam);
+ sprintf((char *)buf, "_beginthreadex(): %s", _strerror(NULL));
+ if(!srv.silent)(*srv.logfunc)(&defparam, buf);
+ freeparam(newparam);
}
#else
- if((error = pthread_create(&thread, &pa, (PTHREADFUNC)srv.pf, (void *)newparam))){
+
+ error = pthread_create(&thread, &pa, (PTHREADFUNC)srv.pf, (void *)newparam);
+ srv.childcount++;
+ if(error){
sprintf((char *)buf, "pthread_create(): %s", strerror(error));
if(!srv.silent)(*srv.logfunc)(&defparam, buf);
freeparam(newparam);
}
else {
- srv.childcount++;
newparam->threadid = (unsigned)thread;
}
#endif
From f1e017394d970ee8f8e22edf9a9a2c3e77f33cbd Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 19 Oct 2014 04:32:18 +0400
Subject: [PATCH 032/122] Added IPv6 support for 'external' command and -e
Now, 2 external addresses can be specified: one for IPv4 and one for
IPv6
---
src/3proxy.c | 13 +++++++++++--
src/common.c | 8 +++++---
src/datatypes.c | 12 ++++++------
src/proxymain.c | 33 +++++++++++++++++++++++++--------
src/structures.h | 8 ++++----
src/version.h | 2 +-
6 files changed, 52 insertions(+), 24 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index bed4737..1cd8d15 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -732,7 +732,16 @@ static int h_internal(int argc, unsigned char ** argv){
}
static int h_external(int argc, unsigned char ** argv){
- conf.extip = getip(argv[1]);
+ int res;
+#ifndef NOIPV6
+ struct sockaddr_in6 sa6;
+ res = getip46(46, argv[1], (struct sockaddr *)&sa6);
+ if(!res) return 1;
+ memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&conf.extsa:(void *)&conf.extsa6, &sa6, SASIZE(&sa6));
+#else
+ res = getip46(46, argv[1], (struct sockaddr *)&conf.extsa);
+ if(!res) return 1;
+#endif
return 0;
}
@@ -2040,7 +2049,7 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
{
char * args[] = {"auth", "iponly", NULL};
- h_auth(2, args);
+ h_auth(2, (unsigned char **)args);
}
res = readconfig(fp);
diff --git a/src/common.c b/src/common.c
index 7b2e114..a0b18bd 100644
--- a/src/common.c
+++ b/src/common.c
@@ -65,9 +65,11 @@ struct extparam conf = {
NULL, NULL,
NONE, NONE,
NULL,
- {AF_INET},
- INADDR_ANY,
- 0,
+#ifndef NOIPV6
+ {AF_INET},{AF_INET6},{AF_INET},
+#else
+ {AF_INET},{AF_INET},
+#endif
NULL,
NULL,
doconnect,
diff --git a/src/datatypes.c b/src/datatypes.c
index 074b62c..40b5649 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -564,12 +564,12 @@ static void * ef_server_intsa(struct node * node){
return &((struct srvparam *)node->value) -> intsa;
}
-static void * ef_server_extip(struct node * node){
- return &((struct srvparam *)node->value) -> extip;
+static void * ef_server_extsa(struct node * node){
+ return &((struct srvparam *)node->value) -> extsa;
}
-static void * ef_server_extport(struct node * node){
- return &((struct srvparam *)node->value) -> extport;
+static void * ef_server_extsa6(struct node * node){
+ return &((struct srvparam *)node->value) -> extsa6;
}
static void * ef_server_acl(struct node * node){
@@ -754,8 +754,8 @@ static struct property prop_server[] = {
{prop_server + 3, "targetport", ef_server_targetport, TYPE_PORT, "portmapper target port"},
{prop_server + 4, "starttime", ef_server_starttime, TYPE_DATETIME, "service started seconds"},
{prop_server + 5, "intsa", ef_server_intsa, TYPE_SA, "ip address of internal interface"},
- {prop_server + 6, "extip", ef_server_extip, TYPE_IP, "ip address of external interface"},
- {prop_server + 7, "extport", ef_server_extport, TYPE_PORT, "port to use for outgoing connection"},
+ {prop_server + 6, "extsa", ef_server_extsa, TYPE_SA, "ip address of external interface"},
+ {prop_server + 7, "extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"},
{prop_server + 8, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
{prop_server + 9, "acl", ef_server_acl, TYPE_ACE, "access control list"},
{prop_server + 10, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
diff --git a/src/proxymain.c b/src/proxymain.c
index b8ad7e2..ab2c5ae 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -176,7 +176,15 @@ int MODULEMAINFUNC (int argc, char** argv){
getip46(46, argv[i]+2, (struct sockaddr *)&srv.intsa);
break;
case 'e':
- srv.extip = getip((unsigned char *)argv[i]+2);
+ {
+#ifndef NOIPV6
+ struct sockaddr_in6 sa6;
+ error = !getip46(46, argv[i]+2, (struct sockaddr *)&sa6);
+ if(!error) memcpy((*SAFAMILY(&sa6)==AF_INET)?(void *)&srv.extsa:(void *)&srv.extsa6, &sa6, SASIZE(&sa6));
+#else
+ error = !getip46(46, argv[i]+2, (struct sockaddr *)&srv.extsa);
+#endif
+ }
break;
case 'p':
*SAPORT(&srv.intsa) = htons(atoi(argv[i]+2));
@@ -313,6 +321,10 @@ int MODULEMAINFUNC (int argc, char** argv){
srvinit2(&srv, &defparam);
if(!*SAFAMILY(&srv.intsa)) *SAFAMILY(&srv.intsa) = AF_INET;
if(!*SAPORT(&srv.intsa)) *SAPORT(&srv.intsa) = htons(childdef.port);
+ *SAFAMILY(&srv.extsa) = AF_INET;
+#ifndef NOIPV6
+ *SAFAMILY(&srv.extsa6) = AF_INET6;
+#endif
if(hostname)parsehostname(hostname, &defparam, childdef.port);
@@ -535,6 +547,10 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
*SAFAMILY(¶m->req) = *SAFAMILY(¶m->sins) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
pthread_mutex_init(&srv->counter_mutex, NULL);
memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
+ memcpy(&srv->extsa, &conf.extsa, sizeof(srv->extsa));
+#ifndef NOIPV6
+ memcpy(&srv->extsa6, &conf.extsa6, sizeof(srv->extsa6));
+#endif
}
void srvinit2(struct srvparam * srv, struct clientparam *param){
@@ -550,12 +566,9 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
else srv->logformat = (unsigned char *)mystrdup((char *)srv->logformat);
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
- if(!*SAFAMILY(&srv->intsa)) *SAFAMILY(&srv->intsa) = AF_INET;
memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
- if(!srv->extip) srv->extip = conf.extip;
- param->sins.sin_addr.s_addr = param->extip = srv->extip;
- if(!srv->extport) srv->extport = htons(conf.extport);
- param->sins.sin_port = param->extport = srv->extport;
+/* FIX ME */
+ memcpy(¶m->sins, &srv->extsa, sizeof(param->sins));
}
void srvfree(struct srvparam * srv){
@@ -858,9 +871,13 @@ void freeconf(struct extparam *confp){
confp->authfunc = ipauth;
confp->bandlimfunc = NULL;
memset(&confp->intsa, 0, sizeof(confp->intsa));
+ memset(&confp->extsa, 0, sizeof(confp->extsa));
+#ifndef NOIPV6
+ memset(&confp->extsa6, 0, sizeof(confp->extsa6));
+ *SAFAMILY(&confp->extsa6) = AF_INET6;
+#endif
*SAFAMILY(&confp->intsa) = AF_INET;
- confp->extip = 0;
- *SAPORT(&confp->intsa) = confp->extport = 0;
+ *SAFAMILY(&confp->extsa) = AF_INET;
confp->singlepacket = 0;
confp->maxchild = 100;
resolvfunc = NULL;
diff --git a/src/structures.h b/src/structures.h
index 5489299..5aa2ced 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -356,10 +356,11 @@ struct srvparam {
unsigned logdumpsrv, logdumpcli;
#ifndef NOIPV6
struct sockaddr_in6 intsa;
+ struct sockaddr_in6 extsa6;
#else
struct sockaddr_in intsa;
#endif
- unsigned long extip;
+ struct sockaddr_in extsa;
pthread_mutex_t counter_mutex;
struct pollfd fds;
FILE *stdlog;
@@ -372,7 +373,6 @@ struct srvparam {
unsigned char * logformat;
unsigned char * logtarget;
unsigned char * nonprintable;
- unsigned short extport;
unsigned short targetport;
unsigned char replace;
time_t time_start;
@@ -484,11 +484,11 @@ struct extparam {
char * counterfile;
#ifndef NOIPV6
struct sockaddr_in6 intsa;
+ struct sockaddr_in6 extsa6;
#else
struct sockaddr_in intsa;
#endif
- unsigned long extip;
- unsigned short extport;
+ struct sockaddr_in extsa;
struct passwords *pwl;
struct auth * authenticate;
AUTHFUNC authfunc;
diff --git a/src/version.h b/src/version.h
index 45f99ca..15a8005 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "140703033508"
+#define BUILDDATE "141019042604"
From c7310a20608a93b0e9a20835e9e37093aa3ecb5c Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 19 Oct 2014 21:54:24 +0400
Subject: [PATCH 033/122] initial partial patches for IPv6 client support
---
src/3proxy.c | 2 +
src/Makefile.inc | 15 +----
src/auth.c | 2 +
src/common.c | 4 ++
src/ftppr.c | 2 +-
src/icqpr.c | 2 +-
src/plugins.c | 14 +++--
src/pop3p.c | 2 +-
src/proxy.c | 13 -----
src/proxymain.c | 13 +++--
src/smtpp.c | 10 ++--
src/sockgetchar.c | 4 +-
src/sockmap.c | 4 +-
src/socks.c | 146 +++++++++++++++++++++++-----------------------
src/stringtable.c | 5 +-
src/structures.h | 17 +++---
src/udppm.c | 20 +++----
src/version.h | 2 +-
18 files changed, 134 insertions(+), 143 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 1cd8d15..a25b882 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -694,6 +694,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.service = S_ICQPR;
childdef.helpmessage = "";
}
+/*
else if(!strcmp((char *)argv[0], "msnpr")) {
childdef.pf = msnprchild;
childdef.port = 0;
@@ -701,6 +702,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.service = S_MSNPR;
childdef.helpmessage = "";
}
+*/
else if(!strcmp((char *)argv[0], "udppm")) {
childdef.pf = udppmchild;
childdef.port = 0;
diff --git a/src/Makefile.inc b/src/Makefile.inc
index 96176d7..f134c9f 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -3,7 +3,7 @@
# 3 proxy common Makefile
#
-all: pre $(VERFILE) $(BUILDDIR)3proxy$(EXESUFFICS) $(BUILDDIR)mycrypt$(EXESUFFICS) $(BUILDDIR)dighosts$(EXESUFFICS) $(BUILDDIR)pop3p$(EXESUFFICS) $(BUILDDIR)smtpp$(EXESUFFICS) $(BUILDDIR)ftppr$(EXESUFFICS) $(BUILDDIR)tcppm$(EXESUFFICS) $(BUILDDIR)icqpr$(EXESUFFICS) $(BUILDDIR)msnpr$(EXESUFFICS) $(BUILDDIR)udppm$(EXESUFFICS) $(BUILDDIR)socks$(EXESUFFICS) $(BUILDDIR)proxy$(EXESUFFICS) $(BUILDDIR)countersutil$(EXESUFFICS) allplugins
+all: pre $(BUILDDIR)3proxy$(EXESUFFICS) $(BUILDDIR)mycrypt$(EXESUFFICS) $(BUILDDIR)dighosts$(EXESUFFICS) $(BUILDDIR)pop3p$(EXESUFFICS) $(BUILDDIR)smtpp$(EXESUFFICS) $(BUILDDIR)ftppr$(EXESUFFICS) $(BUILDDIR)tcppm$(EXESUFFICS) $(BUILDDIR)icqpr$(EXESUFFICS) $(BUILDDIR)udppm$(EXESUFFICS) $(BUILDDIR)socks$(EXESUFFICS) $(BUILDDIR)proxy$(EXESUFFICS) $(BUILDDIR)countersutil$(EXESUFFICS) allplugins
pre:
@@ -53,9 +53,6 @@ tcppm$(OBJSUFFICS): tcppm.c proxy.h structures.h proxymain.c
icqpr$(OBJSUFFICS): icqpr.c proxy.h structures.h proxymain.c
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP icqpr.c
-msnpr$(OBJSUFFICS): msnpr.c proxy.h structures.h proxymain.c
- $(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)PORTMAP msnpr.c
-
socks$(OBJSUFFICS): socks.c proxy.h structures.h proxymain.c
$(CC) $(CFLAGS) $(DEFINEOPTION)WITHMAIN $(DEFINEOPTION)NOPORTMAP socks.c
@@ -86,9 +83,6 @@ $(BUILDDIR)tcppm$(EXESUFFICS): sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) tcp
$(BUILDDIR)icqpr$(EXESUFFICS): sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) icqpr$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS)
$(LN) $(LNOUT)$(BUILDDIR)icqpr$(EXESUFFICS) $(LDFLAGS) $(VERFILE) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) icqpr$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) $(LIBS)
-$(BUILDDIR)msnpr$(EXESUFFICS): sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) msnpr$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS)
- $(LN) $(LNOUT)$(BUILDDIR)msnpr$(EXESUFFICS) $(LDFLAGS) $(VERFILE) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) msnpr$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) $(LIBS)
-
$(BUILDDIR)udppm$(EXESUFFICS): sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) udppm$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS)
$(LN) $(LNOUT)$(BUILDDIR)udppm$(EXESUFFICS) $(LDFLAGS) $(VERFILE) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) udppm$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) $(LIBS)
@@ -115,9 +109,6 @@ srvtcppm$(OBJSUFFICS): tcppm.c proxy.h structures.h
srvicqpr$(OBJSUFFICS): icqpr.c proxy.h structures.h
$(CC) $(COUT)srvicqpr$(OBJSUFFICS) $(CFLAGS) icqpr.c
-srvmsnpr$(OBJSUFFICS): msnpr.c proxy.h structures.h
- $(CC) $(COUT)srvmsnpr$(OBJSUFFICS) $(CFLAGS) msnpr.c
-
srvsocks$(OBJSUFFICS): socks.c proxy.h structures.h
$(CC) $(COUT)srvsocks$(OBJSUFFICS) $(CFLAGS) socks.c
@@ -174,8 +165,8 @@ ntlm$(OBJSUFFICS): ntlm.c
stringtable$(OBJSUFFICS): stringtable.c
$(CC) $(COUT)stringtable$(OBJSUFFICS) $(CFLAGS) stringtable.c
-$(BUILDDIR)3proxy$(EXESUFFICS): 3proxy$(OBJSUFFICS) mainfunc$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvicqpr$(OBJSUFFICS) srvmsnpr$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) auth$(OBJSUFFICS) datatypes$(OBJSUFFICS) md4$(OBJSUFFICS) md5$(OBJSUFFICS) mycrypt$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) smbdes$(OBJSUFFICS) ntlm$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS)
- $(LN) $(LNOUT)$(BUILDDIR)3proxy$(EXESUFFICS) $(LDFLAGS) $(VERFILE) 3proxy$(OBJSUFFICS) mainfunc$(OBJSUFFICS) auth$(OBJSUFFICS) datatypes$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvicqpr$(OBJSUFFICS) srvmsnpr$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) mycrypt$(OBJSUFFICS) md5$(OBJSUFFICS) md4$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) smbdes$(OBJSUFFICS) ntlm$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS) $(LIBS)
+$(BUILDDIR)3proxy$(EXESUFFICS): 3proxy$(OBJSUFFICS) mainfunc$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvicqpr$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) auth$(OBJSUFFICS) datatypes$(OBJSUFFICS) md4$(OBJSUFFICS) md5$(OBJSUFFICS) mycrypt$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) smbdes$(OBJSUFFICS) ntlm$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS)
+ $(LN) $(LNOUT)$(BUILDDIR)3proxy$(EXESUFFICS) $(LDFLAGS) $(VERFILE) 3proxy$(OBJSUFFICS) mainfunc$(OBJSUFFICS) auth$(OBJSUFFICS) datatypes$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvicqpr$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) myalloc$(OBJSUFFICS) common$(OBJSUFFICS) mycrypt$(OBJSUFFICS) md5$(OBJSUFFICS) md4$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) smbdes$(OBJSUFFICS) ntlm$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS) $(LIBS)
clean:
@$(REMOVECOMMAND) *$(OBJSUFFICS) $(COMPFILES)
diff --git a/src/auth.c b/src/auth.c
index b2bba6e..a3b2831 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -260,9 +260,11 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
case R_ICQ:
param->redirectfunc = icqprchild;
break;
+/*
case R_MSN:
param->redirectfunc = msnprchild;
break;
+*/
default:
param->redirectfunc = proxychild;
}
diff --git a/src/common.c b/src/common.c
index a0b18bd..bf96d55 100644
--- a/src/common.c
+++ b/src/common.c
@@ -597,6 +597,10 @@ void logsyslog(struct clientparam * param, const unsigned char *s) {
int doconnect(struct clientparam * param){
SASIZETYPE size = sizeof(param->sins);
struct sockaddr_in bindsa;
+
+ if (*SAFAMILY(¶m->sincr) == *SAFAMILY(¶m->req) && !memcmp(SAADDR(¶m->sincr), SAADDR(¶m->req), SASIZE(param->req)) &&
+ *SAPORT(¶m->sincr) == *SAPORT(¶m->req)) return 519;
+
if (param->operation == ADMIN || param->operation == DNSRESOLVE || param->operation == BIND || param->operation == UDPASSOC)
return 0;
if (param->remsock != INVALID_SOCKET){
diff --git a/src/ftppr.c b/src/ftppr.c
index 14bc1f1..fe1fb47 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -71,7 +71,7 @@ void * ftpprchild(struct clientparam* param) {
param->res = res;
if(inbuf && inbuf != BUFSIZE && socksend(param->ctrlsock, buf, inbuf, conf.timeouts[STRING_S])!=inbuf) {RETURN (807);}
if(!res) status = 3;
- sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(param->sins.sin_port)==21)?0:':', ntohs(param->sins.sin_port));
+ sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(*SAPORT(¶m->sinsr))==21)?0:':', ntohs(*SAPORT(¶m->sinsr)));
req = mystrdup((char *)buf);
#ifndef WITHMAIN
{
diff --git a/src/icqpr.c b/src/icqpr.c
index 04abaf6..6aa5760 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -105,7 +105,7 @@ static void addbuffer(int increment, struct clientparam * param, unsigned char *
*buf_p = newbuf;
*bufsize_p = bufsize;
}
- if(increment) len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, *buf_p + *length_p, increment, conf.timeouts[STRING_S]*1000);
+ if(increment) len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sinsr, *buf_p + *length_p, increment, conf.timeouts[STRING_S]*1000);
if(len > 0) {
*length_p += len;
param->nreads++;
diff --git a/src/plugins.c b/src/plugins.c
index 0891cb0..7820822 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -70,13 +70,15 @@ struct symbol symbols[] = {
{symbols+42, "ftppr", (void *) ftpprchild},
{symbols+43, "smtpp", (void *) smtppchild},
{symbols+44, "icqpr", (void *) icqprchild},
+/*
{symbols+45, "msnpr", (void *) msnprchild},
- {symbols+46, "authfuncs", (void *) &authfuncs},
- {symbols+47, "commandhandlers", (void *) &commandhandlers},
- {symbols+48, "decodeurl", (void *) decodeurl},
- {symbols+49, "parsestr", (void *) parsestr},
- {symbols+50, "make_ace", (void *) make_ace},
- {symbols+51, "freeacl", (void *) freeacl},
+*/
+ {symbols+45, "authfuncs", (void *) &authfuncs},
+ {symbols+46, "commandhandlers", (void *) &commandhandlers},
+ {symbols+47, "decodeurl", (void *) decodeurl},
+ {symbols+48, "parsestr", (void *) parsestr},
+ {symbols+49, "make_ace", (void *) make_ace},
+ {symbols+50, "freeacl", (void *) freeacl},
{NULL, "", NULL}
};
diff --git a/src/pop3p.c b/src/pop3p.c
index c3a7ef6..b76a77a 100644
--- a/src/pop3p.c
+++ b/src/pop3p.c
@@ -49,7 +49,7 @@ void * pop3pchild(struct clientparam* param) {
CLEANRET:
if(param->hostname&¶m->extusername) {
- sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(param->sins.sin_port)==110)?0:':', ntohs(param->sins.sin_port));
+ sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==110)?0:':', ntohs(*SAPORT(¶m->sinsr)));
(*param->srv->logfunc)(param, buf);
}
else (*param->srv->logfunc)(param, NULL);
diff --git a/src/proxy.c b/src/proxy.c
index 1889222..827ef85 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -229,7 +229,6 @@ void * proxychild(struct clientparam* param) {
int authenticate;
struct pollfd fds[2];
SOCKET ftps;
- SASIZETYPE sasize;
#ifndef WITHMAIN
FILTER_ACTION action;
#endif
@@ -260,8 +259,6 @@ for(;;){
ckeepalive = 0;
so._shutdown(param->remsock, SHUT_RDWR);
so._closesocket(param->remsock);
- param->sins.sin_addr.s_addr = 0;
- param->sins.sin_port = 0;
param->remsock = INVALID_SOCKET;
param->redirected = 0;
param->redirtype = 0;
@@ -282,8 +279,6 @@ for(;;){
so._shutdown(param->remsock, SHUT_RDWR);
so._closesocket(param->remsock);
}
- param->sins.sin_addr.s_addr = 0;
- param->sins.sin_port = 0;
param->remsock = INVALID_SOCKET;
param->redirected = 0;
param->redirtype = 0;
@@ -545,14 +540,6 @@ for(;;){
#endif
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
- if (*SAFAMILY(¶m->srv->intsa) == AF_INET &&
- (param->sins.sin_addr.s_addr == ((struct sockaddr_in *)¶m->srv->intsa)->sin_addr.s_addr && param->sins.sin_port == *SAPORT(¶m->srv->intsa))) {
- RETURN(519);
- }
- sasize = sizeof(struct sockaddr_in);
- if(so._getpeername(param->remsock, (struct sockaddr *)¶m->sins, &sasize)){
- RETURN(520);
- }
#define FTPBUFSIZE 1536
if(ftp && param->redirtype != R_HTTP){
diff --git a/src/proxymain.c b/src/proxymain.c
index ab2c5ae..d12d8ee 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -388,10 +388,14 @@ int MODULEMAINFUNC (int argc, char** argv){
}
memset(&defparam.sincr, 0, sizeof(defparam.sincr));
memset(&defparam.sincl, 0, sizeof(defparam.sincl));
- memset(&defparam.sins, 0, sizeof(defparam.sins));
+ memset(&defparam.sinsl, 0, sizeof(defparam.sinsl));
+ memset(&defparam.sinsr, 0, sizeof(defparam.sinsr));
+ memset(&defparam.req, 0, sizeof(defparam.req));
*SAFAMILY(&defparam.sincr) = AF_INET;
*SAFAMILY(&defparam.sincl) = AF_INET;
- *SAFAMILY(&defparam.sins) = AF_INET;
+ *SAFAMILY(&defparam.sinsl) = AF_INET;
+ *SAFAMILY(&defparam.sinsr) = AF_INET;
+ *SAFAMILY(&defparam.req) = AF_INET;
srv.fds.fd = sock;
srv.fds.events = POLLIN;
@@ -544,7 +548,7 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
memset(param, 0, sizeof(struct clientparam));
param->srv = srv;
param->remsock = param->clisock = param->ctrlsock = param->ctrlsocksrv = INVALID_SOCKET;
- *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sins) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
+ *SAFAMILY(¶m->req) = *SAFAMILY(¶m->sinsl) = *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->sincr) = *SAFAMILY(¶m->sincl) = AF_INET;
pthread_mutex_init(&srv->counter_mutex, NULL);
memcpy(&srv->intsa, &conf.intsa, sizeof(srv->intsa));
memcpy(&srv->extsa, &conf.extsa, sizeof(srv->extsa));
@@ -567,8 +571,7 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
-/* FIX ME */
- memcpy(¶m->sins, &srv->extsa, sizeof(param->sins));
+ memcpy(¶m->sinsl, &srv->extsa, sizeof(param->sinsl));
}
void srvfree(struct srvparam * srv){
diff --git a/src/smtpp.c b/src/smtpp.c
index 9246117..167b4e0 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -83,7 +83,7 @@ int readdata (struct clientparam* param) {
return -1;
}
#endif
- socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf, i, conf.timeouts[STRING_S]);
+ socksendto(param->remsock, (struct sockaddr *)¶m->sinsr, buf, i, conf.timeouts[STRING_S]);
}
if(i < 1) {
myfree(buf);
@@ -99,7 +99,6 @@ void * smtppchild(struct clientparam* param) {
int i=0, res;
unsigned char buf[320];
unsigned char username[256];
- unsigned long ul;
char * command = NULL;
int login = 0;
@@ -188,8 +187,9 @@ void * smtppchild(struct clientparam* param) {
if( i < 3 ) {RETURN(671);}
buf[i] = 0;
if(strncasecmp((char *)buf, "220", 3)||!strncasecmp((char *)buf+4, "PROXY", 5)){RETURN(672);}
- ul = param->extip;
- i = sprintf(buf, "EHLO [%lu.%lu.%lu.%lu]\r\n", ((ul&0xFF000000)>>24), ((ul&0x00FF0000)>>16), ((ul&0x0000FF00)>>8), ((ul&0x000000FF)));
+ i = sprintf(buf, "EHLO [");
+ i += myinet_ntop(*SAFAMILY(¶m->sinsl), SAADDR(¶m->sinsl), buf+strlen(buf), 64);
+ i += sprintf(buf+strlen(buf), "]\r\n");
if(socksend(param->remsock, buf, i, conf.timeouts[STRING_S])!= i) {RETURN(673);}
param->statscli64+=i;
param->nwrites++;
@@ -292,7 +292,7 @@ void * smtppchild(struct clientparam* param) {
CLEANRET:
if(param->hostname&¶m->extusername) {
- sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(param->sins.sin_port)==25)?0:':', ntohs(param->sins.sin_port));
+ sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(*SAPORT(¶m->sinsr))==25)?0:':', *SAPORT(¶m->sinsr));
(*param->srv->logfunc)(param, buf);
}
else (*param->srv->logfunc)(param, NULL);
diff --git a/src/sockgetchar.c b/src/sockgetchar.c
index 906a4bd..cfaa0f1 100644
--- a/src/sockgetchar.c
+++ b/src/sockgetchar.c
@@ -123,7 +123,7 @@ int sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec
}
if(size <= param->srvinbuf) return size;
size -= param->srvinbuf;
- if((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
+ if((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sinsr, param->srvbuf + param->srvinbuf, (param->srvbufsize - param->srvinbuf) < size? param->srvbufsize - param->srvinbuf:size, timeosec*1000)) > 0){
param->srvinbuf += len;
param->nreads++;
param->statssrv64 += len;
@@ -148,7 +148,7 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
return (int)param->srvbuf[param->srvoffset++];
}
param->srvoffset = param->srvinbuf = 0;
- if ((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
+ if ((len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sinsr, param->srvbuf, param->srvbufsize, timeosec*1000 + timeousec))<=0) return EOF;
param->srvinbuf = len;
param->srvoffset = 1;
param->nreads++;
diff --git a/src/sockmap.c b/src/sockmap.c
index 5626d3d..1479a48 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -154,7 +154,7 @@ int sockmap(struct clientparam * param, int timeo){
sl1 = (*param->bandlimfunc)(param, 0, param->cliinbuf - param->clioffset);
if(sl1 > sleeptime) sleeptime = sl1;
}
- res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sins, sasize);
+ res = so._sendto(param->remsock, param->clibuf + param->clioffset, (!param->waitclient64 || (param->waitclient64 - sent) > (param->cliinbuf - param->clioffset))? param->cliinbuf - param->clioffset : (int)(param->waitclient64 - sent), 0, (struct sockaddr*)¶m->sinsr, sasize);
if(res < 0) {
if(errno != EAGAIN && errno != EINTR) return 97;
if(errno == EINTR) usleep(SLEEPTIME);
@@ -257,7 +257,7 @@ int sockmap(struct clientparam * param, int timeo){
#if DEBUGLEVEL > 2
(*param->srv->logfunc)(param, "flushing buffer to server");
#endif
- res = socksendto(param->remsock, (struct sockaddr *)¶m->sins, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
+ res = socksendto(param->remsock, (struct sockaddr *)¶m->sinsr, param->clibuf + param->clioffset, param->cliinbuf - param->clioffset, conf.timeouts[STRING_S] * 1000);
if(res > 0){
param->clioffset += res;
param->statscli64 += res;
diff --git a/src/socks.c b/src/socks.c
index d21ed4e..e8aa81e 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -22,6 +22,7 @@ void * sockschild(struct clientparam* param) {
SOCKET s;
unsigned size;
SASIZETYPE sasize;
+ unsigned short port = 0;
unsigned char * buf=NULL;
unsigned char c;
unsigned char command=0;
@@ -29,14 +30,13 @@ void * sockschild(struct clientparam* param) {
int ver=0;
int havepass = 0;
#ifndef NOIPV6
- struct sockaddr_in6 sin;
+ struct sockaddr_in6 sin = {AF_INET6};
#else
- struct sockaddr_in sin;
+ struct sockaddr_in sin = {AF_INET};
#endif
int len;
- param->req.sin_addr.s_addr = 0;
param->service = S_SOCKS;
if(!(buf = myalloc(BUFSIZE))) {RETURN(21);}
@@ -86,21 +86,26 @@ void * sockschild(struct clientparam* param) {
buf[0] = (unsigned char) res;
if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[1] = (unsigned char) res;
- param->sins.sin_port = param->req.sin_port = *(unsigned short*)buf;
+ port = *(unsigned short*)buf;
c = 1;
}
+ size = 4;
switch(c) {
+ case 4:
+ size = 16;
case 1:
- for (i = 0; i<4; i++){
+ for (i = 0; isins.sin_addr.s_addr = param->req.sin_addr.s_addr = *(unsigned long *)buf;
- if(command==1 && !param->req.sin_addr.s_addr) {
+ *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->req) = (c == 1)? AF_INET:AF_INET6;
+ memcpy(SAADDR(¶m->sinsr), buf, size);
+ memcpy(SAADDR(¶m->req), buf, size);
+ if(command==1 && !memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", size)) {
RETURN(421);
}
- myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf, 64);
+ myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), (char *)buf, 64);
break;
case 3:
if ((size = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(451);} /* nmethods */
@@ -109,10 +114,8 @@ void * sockschild(struct clientparam* param) {
buf[i] = (unsigned char)res;
}
buf[i] = 0;
- param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr = getip(buf);
- if(command==1 && !param->req.sin_addr.s_addr) {
- RETURN(100);
- }
+ if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
+ memcpy(¶m->sinsr, ¶m->req, sizeof(¶m->req));
break;
default:
RETURN(997);
@@ -124,39 +127,39 @@ void * sockschild(struct clientparam* param) {
buf[0] = (unsigned char) res;
if ((res = sockgetcharcli(param, conf.timeouts[SINGLEBYTE_S], 0)) == EOF) {RETURN(441);}
buf[1] = (unsigned char) res;
- param->sins.sin_port = param->req.sin_port = *(unsigned short*)buf;
+ port = *(unsigned short*)buf;
+
}
else {
sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
buf[127] = 0;
if(!param->srv->nouser && *buf && !param->username)param->username = (unsigned char *)mystrdup((char *)buf);
- if(param->sins.sin_addr.s_addr && ntohl(param->sins.sin_addr.s_addr)<256){
+ if(!memcmp(SAADDR(¶m->req), "\0\0\0", 3)){
param->service = S_SOCKS45;
sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, 0, conf.timeouts[STRING_S]);
buf[127] = 0;
if(param->hostname)myfree(param->hostname);
param->hostname = (unsigned char *)mystrdup((char *)buf);
- param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr = getip(buf);
+ if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->req)) RETURN(100);
+ memcpy(¶m->sinsr, ¶m->req, sizeof(¶m->req));
}
}
- if(command == 1 && !param->req.sin_port) {RETURN(421);}
- param->sins.sin_family = AF_INET;
+
+ *SAPORT(¶m->sinsr) = *SAPORT(¶m->req) = port;
+ if(command == 1 && !*SAPORT(¶m->sinsr)) {RETURN(421);}
switch(command) {
case 1:
param->operation = CONNECT;
break;
case 2:
- param->sins.sin_addr.s_addr = param->extip;
- param->sins.sin_port = param->extport?param->extport:param->req.sin_port;
- if ((param->remsock=so._socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {RETURN (11);}
- param->operation = BIND;
- break;
case 3:
- param->sins.sin_port = param->extport?param->extport:param->req.sin_port;
- param->sins.sin_addr.s_addr = param->extip;
- if ((param->remsock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
- param->operation = UDPASSOC;
+
+ memcpy(¶m->sinsl, *SAFAMILY(¶m->req)==AF_INET6? (struct sockaddr *)¶m->srv->extsa6:(struct sockaddr *)¶m->srv->extsa, SASIZE(¶m->req));
+ if(!*SAPORT(¶m->sinsl))*SAPORT(¶m->sinsl) = port;
+ if ((param->remsock=so._socket(*SAFAMILY(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
+ param->operation = command == 2?BIND:UDPASSOC;
break;
+
default:
RETURN(997);
}
@@ -166,25 +169,22 @@ void * sockschild(struct clientparam* param) {
}
if(command > 1) {
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins))) {
- param->sins.sin_port = 0;
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins)))RETURN (12);
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,SASIZE(¶m->sinsl))) {
+ *SAPORT(¶m->sinsl) = 0;
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,SASIZE(¶m->sinsl)))RETURN (12);
#if SOCKSTRACE > 0
-fprintf(stderr, "%s:%hu binded to communicate with server\n",
- inet_ntoa(param->sins.sin_addr),
- ntohs(param->sins.sin_port)
- );
+fprintf(stderr, "%hu binded to communicate with server\n", *SAPORT(¶m->sins));
fflush(stderr);
#endif
}
- sasize = sizeof(param->sins);
- so._getsockname(param->remsock, (struct sockaddr *)¶m->sins, &sasize);
+ sasize = SASIZE(¶m->sinsl);
+ so._getsockname(param->remsock, (struct sockaddr *)¶m->sinsl, &sasize);
if(command == 3) {
param->ctrlsock = param->clisock;
param->clisock = so._socket(SASOCK(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP);
if(param->clisock == INVALID_SOCKET) {RETURN(11);}
memcpy(&sin, ¶m->sincl, sizeof(&sin));
- *SAPORT(&sin) = htons(0);
+ *SAPORT(&sin) = 0;
if(so._bind(param->clisock,(struct sockaddr *)&sin,sizeof(sin))) {RETURN (12);}
#if SOCKSTRACE > 0
fprintf(stderr, "%hu binded to communicate with client\n",
@@ -224,10 +224,10 @@ fflush(stderr);
buf[0] = 5;
buf[1] = repcode;
buf[2] = 0;
- buf[3] = 1;
- memcpy(buf+4, SAADDR(&sin), 4);
- memcpy(buf+8, SAPORT(&sin), 2);
- socksend((command == 3)?param->ctrlsock:param->clisock, buf, 10, conf.timeouts[STRING_S]);
+ buf[3] = (*SAFAMILY(&sin) == AF_INET)?1:4;
+ memcpy(buf+4, SAADDR(&sin), SAADDRLEN(&sin));
+ memcpy(buf+4+SAADDRLEN(&sin), SAPORT(&sin), 2);
+ socksend((command == 3)?param->ctrlsock:param->clisock, buf, 6+SAADDRLEN(&sin), conf.timeouts[STRING_S]);
}
else{
buf[0] = 0;
@@ -252,48 +252,48 @@ fflush(stderr);
fds[0].fd = param->remsock;
fds[1].fd = param->clisock;
fds[0].events = fds[1].events = POLLIN;
- res = so._poll(fds, 2, conf.timeouts[(param->req.sin_addr.s_addr)?CONNECTION_S:CONNECTION_L] * 1000);
+ res = so._poll(fds, 2, conf.timeouts[CONNECTION_L] * 1000);
if (res < 1 || fds[1].revents) {
res = 460;
break;
}
- sasize = sizeof(param->sins);
- s = so._accept(param->remsock, (struct sockaddr *)¶m->sins, &sasize);
+ sasize = sizeof(param->sinsr);
+ s = so._accept(param->remsock, (struct sockaddr *)¶m->sinsr, &sasize);
so._closesocket(param->remsock);
param->remsock = s;
if(s == INVALID_SOCKET) {
param->res = 462;
break;
}
- if(param->req.sin_addr.s_addr && param->req.sin_addr.s_addr != param->sins.sin_addr.s_addr) {
+ if(!memcmp(SAADDR(¶m->req),"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",SAADDRLEN(¶m->req)) &&
+ memcmp(SAADDR(¶m->req),SAADDR(¶m->sinsr),SAADDRLEN(¶m->req))) {
param->res = 470;
break;
}
#if SOCKSTRACE > 0
-fprintf(stderr, "Sending incoming connection to client with code %d for %s with %s:%hu\n",
+fprintf(stderr, "Sending incoming connection to client with code %d for %s with %hu\n",
param->res,
commands[command],
- inet_ntoa(param->sins.sin_addr),
- ntohs(param->sins.sin_port)
+ *SAPORT(param->sins);
);
fflush(stderr);
#endif
if(ver == 5){
- memcpy (buf+4, ¶m->sins.sin_addr, 4);
- memcpy (buf+8, ¶m->sins.sin_port, 2);
- socksend(param->clisock, buf, 10, conf.timeouts[STRING_S]);
+ buf[3] = (*SAFAMILY(¶m->sinsr) == AF_INET)?1:4;
+ memcpy(buf+4, SAADDR(¶m->sinsr), SAADDRLEN(¶m->sinsr));
+ memcpy(buf+4+SAADDRLEN(¶m->sinsr), SAPORT(¶m->sinsr), 2);
+ socksend(param->clisock, buf, 6+SAADDRLEN(¶m->sinsr), conf.timeouts[STRING_S]);
}
else {
- memcpy (buf+2, ¶m->sins.sin_port, 2);
- memcpy (buf+4, ¶m->sins.sin_addr, 4);
+ memcpy (buf+2, SAPORT(¶m->sinsr), 2);
+ memcpy (buf+4, SAADDR(¶m->sinsr), 4);
socksend(param->clisock, buf, 8, conf.timeouts[STRING_S]);
}
param->res = sockmap(param, conf.timeouts[CONNECTION_S]);
break;
case 3:
- param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr;
- param->sins.sin_port = param->req.sin_port;
+ memcpy(¶m->sinsr, ¶m->req, sizeof(param->sinsr));
myfree(buf);
if(!(buf = myalloc(LARGEBUFSIZE))) {RETURN(21);}
@@ -326,10 +326,14 @@ fflush(stderr);
param->res = 466;
break;
}
+ size = 4;
switch(buf[3]) {
+ case 4:
+ size = 16;
case 1:
- i = 8;
- memcpy(¶m->sins.sin_addr.s_addr, buf+4, 4);
+ i = 4+size;
+ memcpy(SAADDR(¶m->sinsr), buf+4, size);
+ *SAFAMILY(¶m->sinsr) = (size == 4)?AF_INET:AF_INET6;
break;
case 3:
size = buf[4];
@@ -337,18 +341,18 @@ fflush(stderr);
buf[i] = buf[i+1];
}
buf[i++] = 0;
- param->sins.sin_addr.s_addr = getip(buf+4);
+ if(!getip46(param->srv->family, buf, (struct sockaddr *) ¶m->sinsr)) RETURN(100);
break;
default:
RETURN(997);
}
- memcpy(¶m->sins.sin_port, buf+i, 2);
+ memcpy(SAPORT(¶m->sinsr), buf+i, 2);
i+=2;
- sasize = sizeof(param->sins);
+ sasize = sizeof(param->sinsr);
if(len > (int)i){
- if(socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf+i, len - i, conf.timeouts[SINGLEBYTE_L]*1000) <= 0){
+ if(socksendto(param->remsock, (struct sockaddr *)¶m->sinsr, buf+i, len - i, conf.timeouts[SINGLEBYTE_L]*1000) <= 0){
param->res = 467;
break;
}
@@ -371,27 +375,25 @@ fflush(stderr);
}
if (fds[0].revents) {
- struct sockaddr_in tsin;
- sasize = sizeof(tsin);
+ sasize = sizeof(param->sinsr);
buf[0]=buf[1]=buf[2]=0;
- buf[3]=1;
- if((len = so._recvfrom(param->remsock, buf+10, 65535 - 10, 0, (struct sockaddr *)&tsin, &sasize)) <= 0) {
+ buf[3]=(*SAFAMILY(¶m->sinsl) == AF_INET)?1:4;
+ if((len = so._recvfrom(param->remsock, buf+6+SAADDRLEN(¶m->sinsl), 65535 - 10, 0, (struct sockaddr *)¶m->sinsr, &sasize)) <= 0) {
param->res = 468;
break;
}
param->statssrv64+=len;
param->nreads++;
- memcpy(buf+4, &tsin.sin_addr.s_addr, 4);
- memcpy(buf+8, &tsin.sin_port, 2);
- sasize = sizeof(param->sins);
- if(socksendto(param->clisock, (struct sockaddr *)&sin, buf, len + 10, conf.timeouts[SINGLEBYTE_L]*1000) <=0){
+ memcpy(buf+4, SAADDR(¶m->sinsr), SAADDRLEN(¶m->sinsr));
+ memcpy(buf+4+SAADDRLEN(¶m->sinsr), SAPORT(¶m->sinsr), 2);
+ sasize = sizeof(sin);
+ if(socksendto(param->clisock, (struct sockaddr *)&sin, buf, len + 6 + SAADDRLEN(¶m->sinsr), conf.timeouts[SINGLEBYTE_L]*1000) <=0){
param->res = 469;
break;
}
#if SOCKSTRACE > 1
-fprintf(stderr, "UDP packet relayed to client from %s:%hu size %d\n",
- inet_ntoa(tsin.sin_addr),
- ntohs(tsin.sin_port),
+fprintf(stderr, "UDP packet relayed to client from %hu size %d\n",
+ ntohs(*SAPORT(¶m->sinsr)),
len
);
fflush(stderr);
@@ -415,7 +417,7 @@ fflush(stderr);
}
else
myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + strlen((char *)buf), 64);
- sprintf((char *)buf+strlen((char *)buf), ":%hu", ntohs(param->req.sin_port));
+ sprintf((char *)buf+strlen((char *)buf), ":%hu", ntohs(*SAPORT(¶m->req)));
(*param->srv->logfunc)(param, buf);
myfree(buf);
}
diff --git a/src/stringtable.c b/src/stringtable.c
index 4a1a54f..be59b75 100644
--- a/src/stringtable.c
+++ b/src/stringtable.c
@@ -30,8 +30,9 @@ unsigned char * strings[] = {
/* 16 */ (unsigned char *)"FTPPR",
/* 17 */ (unsigned char *)"SMTPP",
/* 18 */ (unsigned char *)"ICQPR",
-/* 19 */ (unsigned char *)"MSNPR",
-/* 20 */ (unsigned char *)"ZOMBIE",
+/* 19 (unsigned char *)"MSNPR", */
+/* 19 */ (unsigned char *)"ZOMBIE",
+/* 20 */ NULL,
/* 21 */ NULL,
/* 22 */ NULL,
/* 23 */ NULL,
diff --git a/src/structures.h b/src/structures.h
index 5aa2ced..a6c6e9e 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -137,7 +137,9 @@ typedef enum {
S_FTPPR,
S_SMTPP,
S_ICQPR,
+/*
S_MSNPR,
+*/
S_ZOMBIE
}PROXYSERVICE;
@@ -352,6 +354,7 @@ struct srvparam {
int silent;
int transparent;
int nfilters, nreqfilters, nhdrfilterscli, nhdrfilterssrv, npredatfilters, ndatfilterscli, ndatfilterssrv;
+ int family;
unsigned bufsize;
unsigned logdumpsrv, logdumpcli;
#ifndef NOIPV6
@@ -438,26 +441,21 @@ struct clientparam {
maxtrafin64,
maxtrafout64;
#ifndef NOIPV6
- struct sockaddr_in6 sincl, sincr;
+ struct sockaddr_in6 sincl, sincr, sinsl, sinsr, req;
#else
- struct sockaddr_in sincl, sincr;
+ struct sockaddr_in sincl, sincr, sinsl, sinsr, req;
#endif
- struct sockaddr_in sins,
- req;
uint64_t statscli64,
statssrv64;
unsigned long
nreads,
nwrites,
- nconnects,
- extip;
+ nconnects;
struct bandlim *bandlims[MAXBANDLIMS],
*bandlimsout[MAXBANDLIMS];
- unsigned short extport;
-
time_t time_start;
};
@@ -485,10 +483,11 @@ struct extparam {
#ifndef NOIPV6
struct sockaddr_in6 intsa;
struct sockaddr_in6 extsa6;
+ struct sockaddr_in extsa;
#else
struct sockaddr_in intsa;
-#endif
struct sockaddr_in extsa;
+#endif
struct passwords *pwl;
struct auth * authenticate;
AUTHFUNC authfunc;
diff --git a/src/udppm.c b/src/udppm.c
index e746540..4a609fb 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -40,7 +40,7 @@ void * udppmchild(struct clientparam* param) {
if(!param->hostname)parsehostname((char *)param->srv->target, param, ntohs(param->srv->targetport));
- if (!param->req.sin_addr.s_addr) {
+ if (!memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) {
param->srv->fds.events = POLLIN;
RETURN (100);
}
@@ -62,27 +62,25 @@ void * udppmchild(struct clientparam* param) {
}
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
ioctlsocket(param->clisock, FIONBIO, &ul);
- size = sizeof(param->sins);
- if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sins, &size)) {RETURN(21);};
- if(so._bind(param->clisock,(struct sockaddr *)¶m->sins,sizeof(struct sockaddr_in))) {
+ size = sizeof(param->sinsl);
+ if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sinsl, &size)) {RETURN(21);};
+ if(so._bind(param->clisock,(struct sockaddr *)¶m->sinsl,sizeof(struct sockaddr_in))) {
RETURN(822);
}
#else
param->clisock = param->srv->srvsock;
#endif
- param->sins.sin_family = AF_INET;
- param->sins.sin_port = htons(0);
- param->sins.sin_addr.s_addr = param->extip;
- if ((param->remsock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins))) {RETURN (12);}
+ memcpy(¶m->sinsl, *SAFAMILY(¶m->req) == AF_INET? (struct sockaddr *)¶m->srv->extsa : (struct sockaddr *)¶m->srv->extsa6, SASIZE(¶m->req));
+ *SAPORT(¶m->sinsl) = 0;
+ if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsl), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {RETURN (12);}
#ifdef _WIN32
ioctlsocket(param->remsock, FIONBIO, &ul);
#else
fcntl(param->remsock,F_SETFL,O_NONBLOCK);
#endif
- param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr;
- param->sins.sin_port = param->req.sin_port;
+ memcpy(¶m->sinsr, ¶m->req, sizeof(param->req));
param->operation = UDPASSOC;
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
diff --git a/src/version.h b/src/version.h
index 15a8005..030dff4 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141019042604"
+#define BUILDDATE "141019215116"
From 10bc0db2a89b7b83e2ee4da168f8418772801073 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 19 Oct 2014 22:02:15 +0400
Subject: [PATCH 034/122] add IPv4/IPv6 selection for outgoing connections
---
src/proxymain.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/proxymain.c b/src/proxymain.c
index d12d8ee..eb3f91d 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -73,7 +73,11 @@ int MODULEMAINFUNC (int argc, char** argv){
" -bBUFSIZE size of network buffer (default 4096 for TCP, 16384 for UDP)\n"
" -t be silent (do not log service start/stop)\n"
" -iIP ip address or internal interface (clients are expected to connect)\n"
- " -eIP ip address or external interface (outgoing connection will have this)\n";
+ " -eIP ip address or external interface (outgoing connection will have this)\n"
+ " -4 Use IPv4 for outgoing connections\n"
+ " -6 Use IPv6 for outgoing connections\n"
+ " -46 Prefer IPv4 for outgoing connections, use both IPv4 and IPv6\n"
+ " -64 Prefer IPv6 for outgoing connections, use both IPv4 and IPv6\n";
#ifdef _WIN32
unsigned long ul = 1;
@@ -189,6 +193,10 @@ int MODULEMAINFUNC (int argc, char** argv){
case 'p':
*SAPORT(&srv.intsa) = htons(atoi(argv[i]+2));
break;
+ case '4':
+ case '6':
+ srv.family = atoi(argv[i]);
+ break;
case 'b':
srv.bufsize = atoi(argv[i]+2);
break;
From db5c4b1255b7f2885cf48fcca097ef722212c7ee Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Tue, 21 Oct 2014 06:00:56 +0400
Subject: [PATCH 035/122] more changes for IPv6 client support
---
src/auth.c | 35 ++++++-----
src/common.c | 76 +++++++++++------------
src/datatypes.c | 32 ++++------
src/dnspr.c | 23 +++----
src/ftp.c | 10 +--
src/plugins/TrafficPlugin/TrafficPlugin.c | 8 +--
src/proxymain.c | 4 +-
src/version.h | 2 +-
8 files changed, 90 insertions(+), 100 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index a3b2831..e0b3d5e 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -205,16 +205,12 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
int done = 0;
struct chain * cur;
struct chain * redir = NULL;
- unsigned long targetip;
- unsigned short targetport;
int r2;
if(param->remsock != INVALID_SOCKET) {
return 0;
}
- targetip = param->req.sin_addr.s_addr;
- targetport = param->req.sin_port;
- if(!targetip || !targetport) return 100;
+ if(!memcmp(SAADDR(¶m->req),"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",SAADDRLEN(¶m->req)) || !*SAPORT(¶m->req)) return 100;
r2 = (myrand(param, sizeof(struct clientparam))%1000);
@@ -270,11 +266,16 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
return 0;
}
- else if(!cur->redirip && cur->redirport) param->extport = cur->redirport;
- else if(!cur->redirport && cur->redirip) param->extip = cur->redirip;
- else {
- param->sins.sin_port = cur->redirport;
- param->sins.sin_addr.s_addr = cur->redirip;
+ else if(!cur->redirport && cur->redirip) {
+ unsigned short port = *SAPORT(¶m->sinsl);
+ *SAFAMILY(¶m->sinsl) = AF_INET;
+ *(unsigned long *)SAADDR(¶m->sinsl) = cur->redirip;
+ *SAPORT(¶m->sinsl) = port;
+ }
+ else if(!cur->redirip && cur->redirport) *SAPORT(¶m->sinsl) = cur->redirport;
+ else if(*SAFAMILY(¶m->req) == AF_INET){
+ *(unsigned long *)SAADDR(¶m->sinsr) = cur->redirip;
+ *SAPORT(¶m->sinsr) = cur->redirport;
}
if((res = alwaysauth(param))){
@@ -282,7 +283,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
}
else {
- res = redir?clientnegotiate(redir, param, cur->redirip, cur->redirport):0;
+ res = (redir && *SAFAMILY(¶m->req) == AF_INET)?clientnegotiate(redir, param, cur->redirip, cur->redirport):0;
if(res) return res;
}
redir = cur;
@@ -305,7 +306,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
if(!connected) return 9;
- return redir?clientnegotiate(redir, param, targetip, targetport):0;
+ return (redir && *SAFAMILY(¶m->req) == AF_INET)?clientnegotiate(redir, param, *(unsigned long *)SAADDR(¶m->req), *SAPORT(¶m->req)):0;
}
int IPInentry(struct sockaddr *sa, struct iplist *ipentry){
@@ -339,7 +340,7 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
}
if(!ipentry) return 0;
}
- if((acentry->dst && param->req.sin_addr.s_addr) || (acentry->dstnames && param->hostname)) {
+ if((acentry->dst && memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) || (acentry->dstnames && param->hostname)) {
for(ipentry = acentry->dst; ipentry; ipentry = ipentry->next)
if(IPInentry((struct sockaddr *)¶m->req, ipentry)) {
break;
@@ -374,10 +375,10 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
}
if(!ipentry && !hstentry) return 0;
}
- if(acentry->ports && param->req.sin_port) {
+ if(acentry->ports && *SAPORT(¶m->req)) {
for (portentry = acentry->ports; portentry; portentry = portentry->next)
- if(ntohs(param->req.sin_port) >= portentry->startport &&
- ntohs(param->req.sin_port) <= portentry->endport) {
+ if(ntohs(*SAPORT(¶m->req)) >= portentry->startport &&
+ ntohs(*SAPORT(¶m->req)) <= portentry->endport) {
break;
}
if(!portentry) return 0;
@@ -970,7 +971,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
struct sockaddr_in sin, *sinsp;
memset(&sin, 0, sizeof(sin));
- sinsp = (param && !makeauth)? ¶m->sins : &sin;
+ sinsp = (param && !makeauth && *SAFAMILY(¶m->sinsr) == AF_INET)? (struct sockaddr_in *)¶m->sinsr : &sin;
if((sock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) break;
diff --git a/src/common.c b/src/common.c
index bf96d55..c8bd49e 100644
--- a/src/common.c
+++ b/src/common.c
@@ -214,22 +214,26 @@ int ceparseargs(const char *str){
#endif
int parsehostname(char *hostname, struct clientparam *param, unsigned short port){
- char *sp;
+ char *sp,*se;
if(!hostname || !*hostname)return 1;
- if ( (sp = strchr(hostname, ':')) ) *sp = 0;
+ if(*hostname == '[') se=strchr(hostname, ']');
+ if ( (sp = strchr(se?se:hostname, ':')) ) *sp = 0;
+ if(se){
+ *se = 0;
+ }
if(hostname != param->hostname){
if(param->hostname) myfree(param->hostname);
- param->hostname = (unsigned char *)mystrdup(hostname);
+ param->hostname = (unsigned char *)mystrdup(hostname + (se!=0));
}
if(sp){
port = atoi(sp+1);
*sp = ':';
}
- param->req.sin_port=htons(port);
- param->req.sin_addr.s_addr = getip(param->hostname);
- param->sins.sin_addr.s_addr = 0;
- param->sins.sin_port = 0;
+ if(se) *se = ']';
+ getip46(param->srv->family, param->hostname + (se!=0), (struct sockaddr *)¶m->req);
+ *SAPORT(¶m->req) = htons(port);
+ memset(¶m->sinsr, 0, sizeof(param->sinsr));
return 0;
}
@@ -318,7 +322,6 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
long timezone;
unsigned delay;
- struct in_addr tmpia;
@@ -432,7 +435,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i++;
}
}
- else i += myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + i, 64);
+ else i += myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), (char *)buf + i, 64);
break;
case 'N':
@@ -461,14 +464,13 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
}
break;
case 'e':
- tmpia.s_addr = param->extip;
- i += myinet_ntop(AF_INET, &tmpia, (char *)buf + i, 64);
+ i += myinet_ntop(*SAFAMILY(¶m->sinsl), SAADDR(¶m->sinsl), (char *)buf + i, 64);
break;
case 'C':
i += myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + i, 64);
break;
case 'R':
- i += myinet_ntop(*SAFAMILY(¶m->sins), SAADDR(¶m->sins), (char *)buf + i, 64);
+ i += myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), (char *)buf + i, 64);
break;
case 'Q':
i += myinet_ntop(*SAFAMILY(¶m->req), SAADDR(¶m->req), (char *)buf + i, 64);
@@ -482,11 +484,11 @@ int dobuf2(struct clientparam * param, unsigned char * buf, const unsigned char
i += (int)strlen((char *)buf+i);
break;
case 'r':
- sprintf((char *)buf+i, "%hu", ntohs(param->sins.sin_port));
+ sprintf((char *)buf+i, "%hu", ntohs(*SAPORT(¶m->sinsr)));
i += (int)strlen((char *)buf+i);
break;
case 'q':
- sprintf((char *)buf+i, "%hu", ntohs(param->req.sin_port));
+ sprintf((char *)buf+i, "%hu", ntohs(*SAPORT(¶m->req)));
i += (int)strlen((char *)buf+i);
break;
case 'I':
@@ -595,58 +597,52 @@ void logsyslog(struct clientparam * param, const unsigned char *s) {
#endif
int doconnect(struct clientparam * param){
- SASIZETYPE size = sizeof(param->sins);
- struct sockaddr_in bindsa;
+ SASIZETYPE size = sizeof(param->sinsr);
- if (*SAFAMILY(¶m->sincr) == *SAFAMILY(¶m->req) && !memcmp(SAADDR(¶m->sincr), SAADDR(¶m->req), SASIZE(param->req)) &&
+ if (*SAFAMILY(¶m->sincr) == *SAFAMILY(¶m->req) && !memcmp(SAADDR(¶m->sincr), SAADDR(¶m->req), SASIZE(¶m->req)) &&
*SAPORT(¶m->sincr) == *SAPORT(¶m->req)) return 519;
if (param->operation == ADMIN || param->operation == DNSRESOLVE || param->operation == BIND || param->operation == UDPASSOC)
return 0;
if (param->remsock != INVALID_SOCKET){
- if(so._getpeername(param->remsock, (struct sockaddr *)¶m->sins, &size)==-1) {return (15);}
+ if(so._getpeername(param->remsock, (struct sockaddr *)¶m->sinsr, &size)==-1) {return (15);}
}
else {
struct linger lg;
- if(!param->sins.sin_addr.s_addr)
- if(!(param->sins.sin_addr.s_addr = param->req.sin_addr.s_addr)) return 100;
- if(!param->sins.sin_port)param->sins.sin_port = param->req.sin_port;
- if ((param->remsock=so._socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
+ if(!memcmp(SAADDR(¶m->sinsr), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->sinsr))){
+ if(!memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) return 100;
+ *SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->req);
+ memcpy(SAADDR(¶m->sinsr), SAADDR(¶m->req), SAADDRLEN(¶m->req));
+ }
+ if(!*SAPORT(¶m->sinsr))*SAPORT(¶m->sinsr) = *SAPORT(¶m->req);
+ if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
- memset(&bindsa, 0, sizeof(bindsa));
- bindsa.sin_family = AF_INET;
- bindsa.sin_port = param->extport;
- bindsa.sin_addr.s_addr = param->extip;
- if (param->srv->targetport && !bindsa.sin_port && ntohs(*SAPORT(¶m->sincr)) > 1023) bindsa.sin_port = *SAPORT(¶m->sincr);
- if(so._bind(param->remsock, (struct sockaddr*)&bindsa, sizeof(bindsa))==-1) {
- memset(&bindsa, 0, sizeof(bindsa));
- bindsa.sin_family = AF_INET;
- bindsa.sin_addr.s_addr = param->extip;
- bindsa.sin_port = 0;
- if(so._bind(param->remsock, (struct sockaddr*)&bindsa, sizeof(bindsa))==-1) {
+ if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+ else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
+ if (param->srv->targetport && !*SAPORT(¶m->sinsl) && ntohs(*SAPORT(¶m->sincr)) > 1023) *SAPORT(¶m->sinsl) = *SAPORT(¶m->sincr);
+ if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
+ if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+ else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
+ if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
return 12;
}
}
- param->sins.sin_family = AF_INET;
if(param->operation >= 256 || (param->operation & CONNECT)){
#ifdef _WIN32
unsigned long ul = 1;
#endif
- if(so._connect(param->remsock,(struct sockaddr *)¶m->sins,sizeof(param->sins))) {return (13);}
+ if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,sizeof(param->sinsr))) {return (13);}
param->nconnects++;
#ifdef _WIN32
ioctlsocket(param->remsock, FIONBIO, &ul);
#else
fcntl(param->remsock,F_SETFL,O_NONBLOCK);
#endif
- if(so._getsockname(param->remsock, (struct sockaddr *)&bindsa, &size)==-1) {return (15);}
- param->extip = bindsa.sin_addr.s_addr;
- }
- else {
- if(so._getsockname(param->remsock, (struct sockaddr *)¶m->sins, &size)==-1) {return (15);}
+ size = sizeof(param->sinsl);
}
+ if(so._getsockname(param->remsock, (struct sockaddr *)¶m->sinsl, &size)==-1) {return (15);}
}
return 0;
}
diff --git a/src/datatypes.c b/src/datatypes.c
index 40b5649..75c6279 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -633,20 +633,12 @@ static void * ef_client_clisa(struct node * node){
return &((struct clientparam *)node->value) -> sincr;
}
-static void * ef_client_srvip(struct node * node){
- return &((struct clientparam *)node->value) -> sins.sin_addr.s_addr;
+static void * ef_client_srvsa(struct node * node){
+ return &((struct clientparam *)node->value) -> sinsr;
}
-static void * ef_client_reqip(struct node * node){
- return &((struct clientparam *)node->value) -> req.sin_addr.s_addr;
-}
-
-static void * ef_client_reqport(struct node * node){
- return &((struct clientparam *)node->value) -> req.sin_port;
-}
-
-static void * ef_client_srvport(struct node * node){
- return &((struct clientparam *)node->value) -> sins.sin_port;
+static void * ef_client_reqsa(struct node * node){
+ return &((struct clientparam *)node->value) -> req;
}
static void * ef_client_pwtype(struct node * node){
@@ -784,15 +776,13 @@ static struct property prop_client[] = {
{prop_client + 10, "username", ef_client_username, TYPE_STRING, "client username"},
{prop_client + 11, "password", ef_client_password, TYPE_STRING, "client password"},
{prop_client + 12, "clisa", ef_client_clisa, TYPE_SA, "client sa"},
- {prop_client + 13, "srvip", ef_client_srvip, TYPE_IP, "target server ip"},
- {prop_client + 14, "srvport", ef_client_srvport, TYPE_PORT, "target server port"},
- {prop_client + 15, "reqip", ef_client_reqip, TYPE_IP, "requested server ip"},
- {prop_client + 16, "reqport", ef_client_reqport, TYPE_PORT, "requested server port"},
- {prop_client + 17, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
- {prop_client + 18, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
- {prop_client + 19, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
- {prop_client + 20, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
- {prop_client + 21, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
+ {prop_client + 13, "srvsa", ef_client_srvsa, TYPE_IP, "target server sa"},
+ {prop_client + 14, "reqsa", ef_client_reqsa, TYPE_IP, "requested server sa"},
+ {prop_client + 15, "bytesin", ef_client_bytesin64, TYPE_UNSIGNED64, "bytes from server to client"},
+ {prop_client + 16, "bytesout", ef_client_bytesout64, TYPE_UNSIGNED64, "bytes from client to server"},
+ {prop_client + 17, "maxtrafin", ef_client_maxtrafin64, TYPE_UNSIGNED64, "maximum traffic allowed for download"},
+ {prop_client + 18, "maxtrafout", ef_client_maxtrafout64, TYPE_UNSIGNED64, "maximum traffic allowed for upload"},
+ {prop_client + 19, "pwtype", ef_client_pwtype, TYPE_INTEGER, "type of client password"},
{NULL, "next", ef_client_next, TYPE_CLIENT, "next"}
diff --git a/src/dnspr.c b/src/dnspr.c
index 945edcc..56e9d5b 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -43,10 +43,10 @@ void * dnsprchild(struct clientparam* param) {
RETURN(818);
}
ioctlsocket(param->clisock, FIONBIO, &ul);
- size = sizeof(struct sockaddr_in);
- if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sins, &size)) {RETURN(21);};
+ size = sizeof(param->sinsl);
+ if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sinsl, &size)) {RETURN(21);};
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
- if(so._bind(param->clisock,(struct sockaddr *)¶m->sins,sizeof(struct sockaddr_in))) {
+ if(so._bind(param->clisock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {
RETURN(822);
}
@@ -136,20 +136,21 @@ void * dnsprchild(struct clientparam* param) {
#else
fcntl(param->remsock,F_SETFL,O_NONBLOCK);
#endif
- param->sins.sin_family = AF_INET;
- param->sins.sin_port = htons(0);
- param->sins.sin_addr.s_addr = htonl(0);
- if(so._bind(param->remsock,(struct sockaddr *)¶m->sins,sizeof(struct sockaddr_in))) {
+ *SAFAMILY(¶m->sinsl) = AF_INET;
+ *SAPORT(¶m->sinsl) = htons(0);
+ *(unsigned long*)SAADDR(¶m->sinsl) = htonl(0);
+ if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {
RETURN(819);
}
- param->sins.sin_addr.s_addr = nservers[0];
- param->sins.sin_port = htons(53);
- if(socksendto(param->remsock, (struct sockaddr *)¶m->sins, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
+ *SAFAMILY(¶m->sinsr) = AF_INET;
+ *(unsigned long*)SAADDR(¶m->sinsr) = nservers[0];
+ *SAPORT(¶m->sinsr) = htons(53);
+ if(socksendto(param->remsock, (struct sockaddr *)¶m->sinsr, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
param->statscli64 += i;
param->nwrites++;
- len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sins, buf, BUFSIZE, 15000);
+ len = sockrecvfrom(param->remsock, (struct sockaddr *)¶m->sinsr, buf, BUFSIZE, 15000);
if(len <= 13) {
RETURN(821);
}
diff --git a/src/ftp.c b/src/ftp.c
index d6708f2..4f763bc 100644
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -190,12 +190,14 @@ SOCKET ftpdata(struct clientparam *param){
if(sscanf(sb+1, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) return INVALID_SOCKET;
rem = param->remsock;
param->remsock = INVALID_SOCKET;
- param->req.sin_family = AF_INET;
- param->req.sin_port = param->sins.sin_port = htons((unsigned short)((b5<<8)^b6));
- param->req.sin_addr.s_addr = param->sins.sin_addr.s_addr = htonl((b1<<24)^(b2<<16)^(b3<<8)^b4);
+ memcpy(¶m->req,¶m->sinsr,sizeof(param->req));
+ *SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((unsigned short)((b5<<8)^b6));
i = param->operation;
param->operation = FTP_DATA;
- if((param->res = (*param->srv->authfunc)(param))) return INVALID_SOCKET;
+ if((param->res = (*param->srv->authfunc)(param))) {
+ param->remsock = rem;
+ return INVALID_SOCKET;
+ }
param->operation = i;
s = param->remsock;
param->remsock = rem;
diff --git a/src/plugins/TrafficPlugin/TrafficPlugin.c b/src/plugins/TrafficPlugin/TrafficPlugin.c
index d4da35d..09009a0 100644
--- a/src/plugins/TrafficPlugin/TrafficPlugin.c
+++ b/src/plugins/TrafficPlugin/TrafficPlugin.c
@@ -189,7 +189,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
port = starttrafcorrect->port;
g_s = starttrafcorrect->p_service;
if (starttrafcorrect->p_service == S_NOSERVICE) g_s = param->service;
- if (starttrafcorrect->port <= 0) port = myhtons(param->sins.sin_port);
+ if (starttrafcorrect->port <= 0) port = myhtons(*SAPORT(¶m->sinsr));
#ifndef NOPSTDINT
statssrv_before = param->statssrv64;
@@ -199,7 +199,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
statscli_before = param->statscli;
#endif
rule++;
- if (((g_s == param->service) && (port == myhtons(param->sins.sin_port))) ||
+ if (((g_s == param->service) && (port == myhtons(*SAPORT(¶m->sinsr)))) ||
( ((starttrafcorrect->type == UDP) &&
((param->operation == UDPASSOC)||
(param->operation == DNSRESOLVE)||
@@ -240,7 +240,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
}
if (DBGLEVEL == 1) {
#ifndef NOPSTDINT
- fprintf(stdout, "Port=%hd; Before: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; After: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(param->sins.sin_port), statssrv_before, statscli_before, param->statssrv64, param->statscli64,param->nreads,param->nwrites,rule);
+ fprintf(stdout, "Port=%hd; Before: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; After: srv=%"PRINTF_INT64_MODIFIER"d, cli=%"PRINTF_INT64_MODIFIER"d; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(*SAPORT(¶m->sinsr)), statssrv_before, statscli_before, param->statssrv64, param->statscli64,param->nreads,param->nwrites,rule);
#else
fprintf(stdout, "Port=%hd; Before: srv=%lu, cli=%lu; After: srv=%lu, cli=%lu; nreads=%ld; nwrites=%ld; Rule=%d\n",myhtons(param->sins.sin_port), statssrv_before, statscli_before, param->statssrv, param->statscli,param->nreads,param->nwrites,rule);
#endif
@@ -250,7 +250,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
}
}
if ((!ok) && (DBGLEVEL == 1)) {
- fprintf(stdout, "No rules specifed: service=%d, port=%d, operation=%d", param->service, param->sins.sin_port,param->operation);
+ fprintf(stdout, "No rules specifed: service=%d, port=%d, operation=%d", param->service, *SAPORT(¶m->sinsr),param->operation);
}
origlogfunc(param, pz);
}
diff --git a/src/proxymain.c b/src/proxymain.c
index eb3f91d..b903654 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -195,7 +195,7 @@ int MODULEMAINFUNC (int argc, char** argv){
break;
case '4':
case '6':
- srv.family = atoi(argv[i]);
+ srv.family = atoi(argv[i]+1);
break;
case 'b':
srv.bufsize = atoi(argv[i]+2);
@@ -579,7 +579,7 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
- memcpy(¶m->sinsl, &srv->extsa, sizeof(param->sinsl));
+ memcpy(¶m->sinsr, (srv->family == 6 || srv->family == 64)? (void *)&srv->extsa6: (void *)&srv->extsa, sizeof(param->sinsl));
}
void srvfree(struct srvparam * srv){
diff --git a/src/version.h b/src/version.h
index 030dff4..26dcb17 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141019215116"
+#define BUILDDATE "141021055913"
From f70e4adf47f7f41e1a99d4ffa296dab899a0d8db Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 3 Nov 2014 21:25:06 +0300
Subject: [PATCH 036/122] IPv6 bugfixes
---
src/auth.c | 1 +
src/common.c | 2 +-
src/proxy.c | 4 ++--
src/proxy.h | 2 +-
src/smtpp.c | 2 +-
src/version.h | 2 +-
6 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index e0b3d5e..cfbf500 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -268,6 +268,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
else if(!cur->redirport && cur->redirip) {
unsigned short port = *SAPORT(¶m->sinsl);
+ memset(¶m->sinsl, 0, sizeof(param->sinsl));
*SAFAMILY(¶m->sinsl) = AF_INET;
*(unsigned long *)SAADDR(¶m->sinsl) = cur->redirip;
*SAPORT(¶m->sinsl) = port;
diff --git a/src/common.c b/src/common.c
index c8bd49e..a19ae56 100644
--- a/src/common.c
+++ b/src/common.c
@@ -599,7 +599,7 @@ void logsyslog(struct clientparam * param, const unsigned char *s) {
int doconnect(struct clientparam * param){
SASIZETYPE size = sizeof(param->sinsr);
- if (*SAFAMILY(¶m->sincr) == *SAFAMILY(¶m->req) && !memcmp(SAADDR(¶m->sincr), SAADDR(¶m->req), SASIZE(¶m->req)) &&
+ if (*SAFAMILY(¶m->sincr) == *SAFAMILY(¶m->req) && !memcmp(SAADDR(¶m->sincr), SAADDR(¶m->req), SAADDRLEN(¶m->req)) &&
*SAPORT(¶m->sincr) == *SAPORT(¶m->req)) return 519;
if (param->operation == ADMIN || param->operation == DNSRESOLVE || param->operation == BIND || param->operation == UDPASSOC)
diff --git a/src/proxy.c b/src/proxy.c
index 827ef85..1c073b8 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -132,8 +132,8 @@ char * proxy_stringtable[] = {
NULL
};
-#define BUFSIZE 4096
-#define LINESIZE 2048
+#define BUFSIZE 8192
+#define LINESIZE 4096
static void logurl(struct clientparam * param, char * buf, char * req, int ftp){
char *sb;
diff --git a/src/proxy.h b/src/proxy.h
index 3c689d3..66b6c4b 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -42,7 +42,7 @@
#define NOCOUNTOUT 8
#define UDPBUFSIZE 16384
-#define TCPBUFSIZE 4096
+#define TCPBUFSIZE 8192
#ifdef _WIN32
diff --git a/src/smtpp.c b/src/smtpp.c
index 167b4e0..96b7a8c 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -292,7 +292,7 @@ void * smtppchild(struct clientparam* param) {
CLEANRET:
if(param->hostname&¶m->extusername) {
- sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(*SAPORT(¶m->sinsr))==25)?0:':', *SAPORT(¶m->sinsr));
+ sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, *SAPORT(¶m->sinsr)==25?0:':',ntohs(*SAPORT(¶m->sinsr)));
(*param->srv->logfunc)(param, buf);
}
else (*param->srv->logfunc)(param, NULL);
diff --git a/src/version.h b/src/version.h
index 26dcb17..57d7b74 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141021055913"
+#define BUILDDATE "141103212413"
From 7acf3cc4ed61f86bcbb2ead707ac41e8220be64c Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 3 Nov 2014 22:17:22 +0300
Subject: [PATCH 037/122] name resolution bugfixes
---
Makefile.msvc | 14 +++++++-------
Makefile.msvc64 | 14 +++++++-------
src/common.c | 6 +++---
src/version.h | 2 +-
4 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/Makefile.msvc b/Makefile.msvc
index db8d4db..263c4af 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -28,16 +28,16 @@ TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc
PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin lastFripper FilePlugin
-VERFILE = 3proxyres.obj $(VERFILE)
+VERFILE = $(VERFILE)
+
+#../3proxy.res:
+# rc /fo../3proxy.res ../3proxy.rc
+
+#3proxyres.obj: ../3proxy.res
+# cvtres /out:3proxyres.obj /MACHINE:I386 ../3proxy.res
include Makefile.inc
-../3proxy.res:
- rc /fo../3proxy.res ../3proxy.rc
-
-3proxyres.obj: ../3proxy.res
- cvtres /out:3proxyres.obj /MACHINE:X86 ../3proxy.res
-
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
\ No newline at end of file
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index f4d5d3c..59d64a3 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -28,16 +28,16 @@ TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc64
PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin
-VERFILE = 3proxyres.obj $(VERFILE)
+VERFILE = $(VERFILE)
+
+#../3proxy.res:
+# rc /fo../3proxy.res ../3proxy.rc
+
+#3proxyres.obj: ../3proxy.res
+# cvtres /out:3proxyres.obj /MACHINE:X64 ../3proxy.res
include Makefile.inc
-../3proxy.res:
- rc /fo../3proxy.res ../3proxy.rc
-
-3proxyres.obj: ../3proxy.res
- cvtres /out:3proxyres.obj /MACHINE:X64 ../3proxy.res
-
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
diff --git a/src/common.c b/src/common.c
index a19ae56..fbd14fc 100644
--- a/src/common.c
+++ b/src/common.c
@@ -214,7 +214,7 @@ int ceparseargs(const char *str){
#endif
int parsehostname(char *hostname, struct clientparam *param, unsigned short port){
- char *sp,*se;
+ char *sp=NULL,*se=NULL;
if(!hostname || !*hostname)return 1;
if(*hostname == '[') se=strchr(hostname, ']');
@@ -228,10 +228,10 @@ int parsehostname(char *hostname, struct clientparam *param, unsigned short port
}
if(sp){
port = atoi(sp+1);
- *sp = ':';
}
- if(se) *se = ']';
getip46(param->srv->family, param->hostname + (se!=0), (struct sockaddr *)¶m->req);
+ if(se) *se = ']';
+ if(sp) *sp = ':';
*SAPORT(¶m->req) = htons(port);
memset(¶m->sinsr, 0, sizeof(param->sinsr));
return 0;
diff --git a/src/version.h b/src/version.h
index 57d7b74..de844fb 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141103212413"
+#define BUILDDATE "141103221444"
From 278955deef0321756911ca16ee79371a40a04045 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 9 Nov 2014 20:56:26 +0300
Subject: [PATCH 038/122] getip46 corrected
---
src/common.c | 37 ++++++++++++++++++-------------------
src/structures.h | 2 +-
src/version.h | 2 +-
3 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/src/common.c b/src/common.c
index fbd14fc..70dfc38 100644
--- a/src/common.c
+++ b/src/common.c
@@ -734,8 +734,7 @@ unsigned long getip(unsigned char *name){
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
#ifndef NOIPV6
int ndots=0, ncols=0, nhex=0;
- struct addrinfo *ai, *iter;
- struct sockaddr *sa4=NULL, *sa6=NULL;
+ struct addrinfo *ai, hint;
int i;
if(!sa) return 0;
@@ -766,31 +765,31 @@ unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
if(!name[i]){
if(ndots == 3 && ncols == 0 && nhex == 0){
*SAFAMILY(sa)=AF_INET;
- return inet_pton(AF_INET, name, SAADDR(sa))? AF_INET : 0;
+ return inet_pton(AF_INET, name, SAADDR(sa))? (family==6? 0:AF_INET) : 0;
}
if(ncols >= 2) {
*SAFAMILY(sa)=AF_INET6;
- return inet_pton(AF_INET6, name, SAADDR(sa))? AF_INET6 : 0;
+ return inet_pton(AF_INET6, name, SAADDR(sa))?(family==4? 0:AF_INET6) : 0;
}
}
- if (getaddrinfo(name, NULL, NULL, &ai)) return 0;
- for(iter = ai; iter; iter = iter->ai_next){
- if(!sa4 && iter->ai_addr->sa_family == AF_INET) sa4 = iter->ai_addr;
- if(!sa6 && iter->ai_addr->sa_family == AF_INET6) sa6 = iter->ai_addr;
+ memset(&hint, 0, sizeof(hint));
+ hint.ai_family = (family == 6 || family == 64)?AF_INET6:AF_INET;
+ if (getaddrinfo(name, NULL, &hint, &ai)) {
+ if(family == 64 || family == 46){
+ hint.ai_family = (family == 64)?AF_INET:AF_INET6;
+ if (getaddrinfo(name, NULL, &hint, &ai)) return 0;
+ }
+ else return 0;
}
- if(sa6 && ((family == 6) || (family == 64) || (family == 46 && !sa4))){
- *SAFAMILY(sa)=AF_INET6;
- memcpy(SAADDR(sa), SAADDR(sa6), SAADDRLEN(sa));
+ if(ai){
+ if(ai->ai_addr->sa_family == AF_INET || ai->ai_addr->sa_family == AF_INET6){
+ *SAFAMILY(sa)=ai->ai_addr->sa_family;
+ memcpy(SAADDR(sa), SAADDR(ai->ai_addr), SAADDRLEN(ai->ai_addr));
+ freeaddrinfo(ai);
+ return *SAFAMILY(sa);
+ }
freeaddrinfo(ai);
- return AF_INET6;
}
- else if(sa4 && family != 6){
- *SAFAMILY(sa)=AF_INET;
- memcpy(SAADDR(sa), SAADDR(sa4), SAADDRLEN(sa));
- freeaddrinfo(ai);
- return AF_INET;
- }
- freeaddrinfo(ai);
return 0;
#endif
}
diff --git a/src/structures.h b/src/structures.h
index a6c6e9e..06e8cdd 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -104,7 +104,7 @@ int
#ifndef NOIPV6
#define SAPORT(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? &((struct sockaddr_in6 *)sa)->sin6_port : &((struct sockaddr_in *)sa)->sin_port)
-#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.s6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
+#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.u.Byte : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDRLEN(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)
#define SASOCK(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET)
#define SASIZE(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in))
diff --git a/src/version.h b/src/version.h
index de844fb..0bc5479 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141103221444"
+#define BUILDDATE "141109205515"
From b5bcb44e27f0889a9aee1eac011f987315165fda Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 9 Nov 2014 21:59:58 +0300
Subject: [PATCH 039/122] Fixes for NOIPV6
Fixes to compile without IPv6 support
---
src/common.c | 14 ++++++++++++--
src/datatypes.c | 26 +++++++++++++++-----------
src/proxymain.c | 4 ++++
src/socks.c | 6 +++++-
src/udppm.c | 4 ++++
src/version.h | 2 +-
6 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/src/common.c b/src/common.c
index 70dfc38..fdf586a 100644
--- a/src/common.c
+++ b/src/common.c
@@ -618,12 +618,22 @@ int doconnect(struct clientparam * param){
if(!*SAPORT(¶m->sinsr))*SAPORT(¶m->sinsr) = *SAPORT(¶m->req);
if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
- if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+#ifndef NOIPV6
+ if(*SAFAMILY(¶m->sinsr) == AF_INET)
+#endif
+ memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+#ifndef NOIPV6
else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
+#endif
if (param->srv->targetport && !*SAPORT(¶m->sinsl) && ntohs(*SAPORT(¶m->sincr)) > 1023) *SAPORT(¶m->sinsl) = *SAPORT(¶m->sincr);
if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
- if(*SAFAMILY(¶m->sinsr) == AF_INET) memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+#ifndef NOIPV6
+ if(*SAFAMILY(¶m->sinsr) == AF_INET)
+#endif
+ memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
+#ifndef NOIPV6
else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
+#endif
if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
return 12;
}
diff --git a/src/datatypes.c b/src/datatypes.c
index 75c6279..19364c5 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -568,9 +568,11 @@ static void * ef_server_extsa(struct node * node){
return &((struct srvparam *)node->value) -> extsa;
}
+#ifndef NOIPV6
static void * ef_server_extsa6(struct node * node){
return &((struct srvparam *)node->value) -> extsa6;
}
+#endif
static void * ef_server_acl(struct node * node){
return ((struct srvparam *)node->value) -> acl;
@@ -747,18 +749,20 @@ static struct property prop_server[] = {
{prop_server + 4, "starttime", ef_server_starttime, TYPE_DATETIME, "service started seconds"},
{prop_server + 5, "intsa", ef_server_intsa, TYPE_SA, "ip address of internal interface"},
{prop_server + 6, "extsa", ef_server_extsa, TYPE_SA, "ip address of external interface"},
+ {prop_server + 7, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
+ {prop_server + 8, "acl", ef_server_acl, TYPE_ACE, "access control list"},
+ {prop_server + 9, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
+ {prop_server + 10, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
+ {prop_server + 11, "log", ef_server_log, TYPE_STRING, "type of logging"},
+ {prop_server + 12, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
+ {prop_server + 13, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
+ {prop_server + 14, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
+ {prop_server + 15, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
+ {prop_server + 16, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
+ {prop_server + 17, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
+#ifndef NOIPV6
{prop_server + 7, "extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"},
- {prop_server + 8, "auth", ef_server_auth, TYPE_STRING, "service authentication type"},
- {prop_server + 9, "acl", ef_server_acl, TYPE_ACE, "access control list"},
- {prop_server + 10, "singlepacket", ef_server_singlepacket, TYPE_INTEGER, "is single packet redirection"},
- {prop_server + 11, "usentlm", ef_server_usentlm, TYPE_INTEGER, "allow NTLM authentication"},
- {prop_server + 12, "log", ef_server_log, TYPE_STRING, "type of logging"},
- {prop_server + 13, "logtarget", ef_server_logtarget, TYPE_STRING, "log target options"},
- {prop_server + 14, "logformat", ef_server_logformat, TYPE_STRING, "logging format string"},
- {prop_server + 15, "nonprintable", ef_server_nonprintable, TYPE_STRING, "non printable characters"},
- {prop_server + 16, "replacement", ef_server_replacement, TYPE_CHAR, "replacement character"},
- {prop_server + 17, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
- {prop_server + 18, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
+#endif
{NULL, "next", ef_server_next, TYPE_SERVER, "next"}
};
diff --git a/src/proxymain.c b/src/proxymain.c
index b903654..fb87e6f 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -579,7 +579,11 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
}
if(srv->logtarget) srv->logtarget = (unsigned char *)mystrdup((char *)srv->logtarget);
memcpy(¶m->sincr, &srv->intsa, sizeof(param->sincr));
+#ifndef NOIPV6
memcpy(¶m->sinsr, (srv->family == 6 || srv->family == 64)? (void *)&srv->extsa6: (void *)&srv->extsa, sizeof(param->sinsl));
+#else
+ memcpy(¶m->sinsr, &srv->extsa, sizeof(param->sinsl));
+#endif
}
void srvfree(struct srvparam * srv){
diff --git a/src/socks.c b/src/socks.c
index e8aa81e..928f494 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -153,8 +153,12 @@ void * sockschild(struct clientparam* param) {
break;
case 2:
case 3:
-
+
+#ifndef NOIPV6
memcpy(¶m->sinsl, *SAFAMILY(¶m->req)==AF_INET6? (struct sockaddr *)¶m->srv->extsa6:(struct sockaddr *)¶m->srv->extsa, SASIZE(¶m->req));
+#else
+ memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
+#endif
if(!*SAPORT(¶m->sinsl))*SAPORT(¶m->sinsl) = port;
if ((param->remsock=so._socket(*SAFAMILY(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
param->operation = command == 2?BIND:UDPASSOC;
diff --git a/src/udppm.c b/src/udppm.c
index 4a609fb..0d3ef9b 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -71,7 +71,11 @@ void * udppmchild(struct clientparam* param) {
param->clisock = param->srv->srvsock;
#endif
+#ifndef NOIPV6
memcpy(¶m->sinsl, *SAFAMILY(¶m->req) == AF_INET? (struct sockaddr *)¶m->srv->extsa : (struct sockaddr *)¶m->srv->extsa6, SASIZE(¶m->req));
+#else
+ memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
+#endif
*SAPORT(¶m->sinsl) = 0;
if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsl), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {RETURN (12);}
diff --git a/src/version.h b/src/version.h
index 0bc5479..17afac9 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141109205515"
+#define BUILDDATE "141109215219"
From f82d1e296b09fc109e546e6f37ec14a50279d8ad Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 26 Nov 2014 01:50:14 +0300
Subject: [PATCH 040/122] Redirection fixes
---
src/auth.c | 14 ++++++++------
src/common.c | 6 ++----
src/version.h | 2 +-
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index cfbf500..912260c 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -267,14 +267,16 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
return 0;
}
else if(!cur->redirport && cur->redirip) {
- unsigned short port = *SAPORT(¶m->sinsl);
- memset(¶m->sinsl, 0, sizeof(param->sinsl));
- *SAFAMILY(¶m->sinsl) = AF_INET;
- *(unsigned long *)SAADDR(¶m->sinsl) = cur->redirip;
- *SAPORT(¶m->sinsl) = port;
+ unsigned short port = *SAPORT(¶m->sinsr);
+ memset(¶m->sinsl, 0, sizeof(param->sinsr));
+ *SAFAMILY(¶m->sinsr) = AF_INET;
+ *(unsigned long *)SAADDR(¶m->sinsr) = cur->redirip;
+ *SAPORT(¶m->sinsr) = port;
}
- else if(!cur->redirip && cur->redirport) *SAPORT(¶m->sinsl) = cur->redirport;
+ else if(!cur->redirip && cur->redirport) *SAPORT(¶m->sinsr) = cur->redirport;
else if(*SAFAMILY(¶m->req) == AF_INET){
+ memset(¶m->sinsr, 0, sizeof(param->sinsr));
+ *SAFAMILY(¶m->sinsr) = AF_INET;
*(unsigned long *)SAADDR(¶m->sinsr) = cur->redirip;
*SAPORT(¶m->sinsr) = cur->redirport;
}
diff --git a/src/common.c b/src/common.c
index fdf586a..bfe1146 100644
--- a/src/common.c
+++ b/src/common.c
@@ -619,12 +619,10 @@ int doconnect(struct clientparam * param){
if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
#ifndef NOIPV6
- if(*SAFAMILY(¶m->sinsr) == AF_INET)
+ if(*SAFAMILY(¶m->sinsr) == AF_INET6) memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
+ else
#endif
memcpy(¶m->sinsl, ¶m->srv->extsa, sizeof(param->srv->extsa));
-#ifndef NOIPV6
- else memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
-#endif
if (param->srv->targetport && !*SAPORT(¶m->sinsl) && ntohs(*SAPORT(¶m->sincr)) > 1023) *SAPORT(¶m->sinsl) = *SAPORT(¶m->sincr);
if(so._bind(param->remsock, (struct sockaddr*)¶m->sinsl, sizeof(param->sinsl))==-1) {
#ifndef NOIPV6
diff --git a/src/version.h b/src/version.h
index 17afac9..07ee2a2 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141109215219"
+#define BUILDDATE "141126014759"
From e3645ee9711770cf744c84d954648eaa4f9be107 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 10 Dec 2014 19:00:35 +0300
Subject: [PATCH 041/122] ftppr and -h option handling fixed
---
src/common.c | 1 +
src/ftppr.c | 8 ++++----
src/version.h | 2 +-
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/common.c b/src/common.c
index bfe1146..8052203 100644
--- a/src/common.c
+++ b/src/common.c
@@ -276,6 +276,7 @@ int parseconnusername(char *username, struct clientparam *param, int extpasswd,
if(!username || !*username) return 1;
if ((sb=strchr(username, conf.delimchar)) == NULL){
if(!param->hostname && param->remsock == INVALID_SOCKET) return 2;
+ if(param->hostname)parsehostname(param->hostname, param, port);
return parseusername(username, param, extpasswd);
}
while ((se=strchr(sb+1, conf.delimchar)))sb=se;
diff --git a/src/ftppr.c b/src/ftppr.c
index fe1fb47..597b458 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -132,12 +132,12 @@ void * ftpprchild(struct clientparam* param) {
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[1]),
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[2]),
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[3]),
- (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3]),
- (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3])
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
);
else sprintf((char *)buf, "227 OK (127,0,0,1,%u,%u)\r\n",
- (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3]),
- (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[3])
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
+ (unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
);
}
else {
diff --git a/src/version.h b/src/version.h
index 07ee2a2..9971bab 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141126014759"
+#define BUILDDATE "141210181747"
From 15f9f24f04ccbdc35a56d4b609329d4b0989f4f7 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Thu, 11 Dec 2014 03:06:34 +0300
Subject: [PATCH 042/122] Name resolution via TCP support
Supports _real_ name resolution via parent proxy over TCP in nserver /
dnspr.
Can be used to create UDP->TCP name proxy, e.g.
nserver 127.0.0.1/tcp
nscache 65535
auth none
dnspr
auth iponly
tcppm 53 77.88.8.8 53
now, all names are resolved via TCP connection to 77.88.8.8
(dns.yandex.ru).
---
src/3proxy.c | 11 +++++++--
src/auth.c | 58 +++++++++++++++++++++++++++++++++++++-----------
src/common.c | 2 +-
src/dnspr.c | 45 ++++++++++++++++++++++++-------------
src/proxy.h | 2 +-
src/socks.c | 2 +-
src/structures.h | 7 +++++-
src/udppm.c | 4 ++--
src/version.h | 2 +-
9 files changed, 96 insertions(+), 37 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index a25b882..426e027 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1003,10 +1003,17 @@ static int h_flushusers(int argc, unsigned char **argv){
static int h_nserver(int argc, unsigned char **argv){
int res;
+ char *str;
- for(res = 0; nservers[res] && res < MAXNSERVERS; res++);
+ for(res = 0; nservers[res].ip && res < MAXNSERVERS; res++);
if(res < MAXNSERVERS) {
- nservers[res] = getip(argv[1]);
+ if((str = strchr((char *)argv[1], '/')))
+ *str = 0;
+ nservers[res].ip = getip(argv[1]);
+ if(str) {
+ nservers[res].usetcp = strstr(str + 1, "tcp")? 1:0;
+ *str = '/';
+ }
}
resolvfunc = myresolver;
return 0;
diff --git a/src/auth.c b/src/auth.c
index 912260c..4ad77ba 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -950,7 +950,8 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
return 0;
}
-unsigned long nservers[MAXNSERVERS] = {0, 0, 0, 0, 0};
+struct nserver nservers[MAXNSERVERS] = {{0,0}, {0,0}, {0,0}, {0,0}, {0,0}};
+int tcpresolve = 0;
unsigned long authnserver;
@@ -964,34 +965,53 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
return retval;
}
- for(i=0; (i<(makeauth && authnserver)? 1 : MAXNSERVERS) && ((makeauth && authnserver) || nservers[i]); i++){
+ for(i=0; (i<(makeauth && authnserver)? 1 : MAXNSERVERS) && ((makeauth && authnserver) || nservers[i].ip); i++){
unsigned short nquery, nq, na;
- unsigned char buf[4096], *s1, *s2;
+ unsigned char b[4098], *buf, *s1, *s2;
int j, k, len, flen;
SOCKET sock;
unsigned ttl;
time_t t;
struct sockaddr_in sin, *sinsp;
+ int usetcp = 0;
- memset(&sin, 0, sizeof(sin));
- sinsp = (param && !makeauth && *SAFAMILY(¶m->sinsr) == AF_INET)? (struct sockaddr_in *)¶m->sinsr : &sin;
+ buf = b+2;
+
+ sinsp = (param && !makeauth)? (struct sockaddr_in *)¶m->sinsr : &sin;
+ memset(sinsp, 0, sizeof(struct sockaddr_in));
- if((sock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) break;
+ if(makeauth && authnserver){
+ if((sock=so._socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) break;
+ }
+ else {
+ usetcp = nservers[i].usetcp;
+ if((sock=so._socket(PF_INET, usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
+ }
sinsp->sin_family = AF_INET;
sinsp->sin_port = htons(0);
sinsp->sin_addr.s_addr = htonl(0);
- if(so._bind(sock,(struct sockaddr *)sinsp,sizeof(struct sockaddr_in))) {
+ if(so._bind(sock,(struct sockaddr *)sinsp,sizeof(struct sockaddr_in))){
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
break;
}
- sinsp->sin_addr.s_addr = (makeauth && authnserver)?authnserver : nservers[i];
+ if(makeauth && authnserver){
+ sinsp->sin_addr.s_addr = authnserver;
+ }
+ else {
+ sinsp->sin_addr.s_addr = nservers[i].ip;
+ }
sinsp->sin_port = htons(53);
-
+ if(usetcp){
+ if(so._connect(sock,(struct sockaddr *)sinsp,sizeof(struct sockaddr_in))) {
+ so._shutdown(sock, SHUT_RDWR);
+ so._closesocket(sock);
+ break;
+ }
+ }
len = (int)strlen((char *)name);
- nquery = myrand(name, len);
- *(unsigned short*)buf = nquery; /* query id */
+ *(unsigned short*)buf = htons(i+1); /* query id */
buf[2] = 1; /* recursive */
buf[3] = 0;
buf[4] = 0;
@@ -1012,6 +1032,12 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
buf[len++] = (makeauth == 1)? 0x0c : 0x01; /* PTR:host address */
buf[len++] = 0;
buf[len++] = 1; /* INET */
+ if(usetcp){
+ buf-=2;
+ *(unsigned short*)buf = htons(len);
+ len+=2;
+ }
+
if(socksendto(sock, (struct sockaddr *)sinsp, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
@@ -1021,9 +1047,15 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
len = sockrecvfrom(sock, (struct sockaddr *) sinsp, buf, 4096, 15000);
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
- if(len <= 13) continue;
+ if(len <= 13) {
+ continue;
+ }
if(param) param->statssrv64 += len;
- if(*(unsigned short *)buf != nquery)continue;
+ if(usetcp){
+ buf+=2;
+ len-=2;
+ }
+ if(*(unsigned short *)buf != htons(i+1))continue;
if((na = buf[7] + (((unsigned short)buf[6])<<8)) < 1) {
return 0;
}
diff --git a/src/common.c b/src/common.c
index 8052203..753119f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -617,7 +617,7 @@ int doconnect(struct clientparam * param){
memcpy(SAADDR(¶m->sinsr), SAADDR(¶m->req), SAADDRLEN(¶m->req));
}
if(!*SAPORT(¶m->sinsr))*SAPORT(¶m->sinsr) = *SAPORT(¶m->req);
- if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
+ if ((param->remsock=so._socket(SASOCK(¶m->sinsr), SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {return (11);}
so._setsockopt(param->remsock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
#ifndef NOIPV6
if(*SAFAMILY(¶m->sinsr) == AF_INET6) memcpy(¶m->sinsl, ¶m->srv->extsa6, sizeof(param->srv->extsa6));
diff --git a/src/dnspr.c b/src/dnspr.c
index 56e9d5b..55d1eee 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -14,11 +14,12 @@
#endif
#define RETURN(xxx) { param->res = xxx; goto CLEANRET; }
-#define BUFSIZE 4096
+#define BUFSIZE 16384
void * dnsprchild(struct clientparam* param) {
unsigned long ip = 0;
+ unsigned char *bbuf;
unsigned char *buf, *s1, *s2;
char * host = NULL;
unsigned char c;
@@ -32,10 +33,11 @@ void * dnsprchild(struct clientparam* param) {
#endif
- if(!(buf = myalloc(BUFSIZE))){
+ if(!(bbuf = myalloc(BUFSIZE+2))){
param->srv->fds.events = POLLIN;
RETURN (21);
}
+ buf = bbuf+2;
size = sizeof(param->sincr);
i = so._recvfrom(param->srv->srvsock, buf, BUFSIZE, 0, (struct sockaddr *)¶m->sincr, &size);
#ifdef _WIN32
@@ -44,9 +46,9 @@ void * dnsprchild(struct clientparam* param) {
}
ioctlsocket(param->clisock, FIONBIO, &ul);
size = sizeof(param->sinsl);
- if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sinsl, &size)) {RETURN(21);};
+ if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sincl, &size)) {RETURN(21);};
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
- if(so._bind(param->clisock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {
+ if(so._bind(param->clisock,(struct sockaddr *)¶m->sincl,sizeof(param->sincl))) {
RETURN(822);
}
@@ -103,7 +105,7 @@ void * dnsprchild(struct clientparam* param) {
memcpy(buf+len+12,(void *)&ip,4);
len+=16;
}
- if(type == 0x0c) {
+ else if(type == 0x0c) {
unsigned a, b, c, d;
sscanf(host, "%u.%u.%u.%u", &a, &b, &c, &d);
ip = htonl((d<<24) ^ (c<<16) ^ (b<<8) ^ a);
@@ -127,15 +129,10 @@ void * dnsprchild(struct clientparam* param) {
}
else ip = 0;
}
- if(!ip && nservers[0] && type!=1){
- if((param->remsock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
+ if(!ip && nservers[0].ip && type!=1){
+ if((param->remsock=so._socket(PF_INET, nservers[0].usetcp? SOCK_STREAM:SOCK_DGRAM, nservers[0].usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
-#ifdef _WIN32
- ioctlsocket(param->remsock, FIONBIO, &ul);
-#else
- fcntl(param->remsock,F_SETFL,O_NONBLOCK);
-#endif
*SAFAMILY(¶m->sinsl) = AF_INET;
*SAPORT(¶m->sinsl) = htons(0);
*(unsigned long*)SAADDR(¶m->sinsl) = htonl(0);
@@ -143,8 +140,22 @@ void * dnsprchild(struct clientparam* param) {
RETURN(819);
}
*SAFAMILY(¶m->sinsr) = AF_INET;
- *(unsigned long*)SAADDR(¶m->sinsr) = nservers[0];
+ *(unsigned long*)SAADDR(¶m->sinsr) = nservers[0].ip;
*SAPORT(¶m->sinsr) = htons(53);
+ if(nservers[0].usetcp) {
+ if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,sizeof(param->sinsr))) RETURN(830);
+ buf-=2;
+ *(unsigned short*)buf = htons(i);
+ i+=2;
+ }
+ else {
+#ifdef _WIN32
+/* ioctlsocket(param->remsock, FIONBIO, &ul); */
+#else
+/* fcntl(param->remsock,F_SETFL,O_NONBLOCK); */
+#endif
+ }
+
if(socksendto(param->remsock, (struct sockaddr *)¶m->sinsr, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
@@ -156,6 +167,10 @@ void * dnsprchild(struct clientparam* param) {
}
param->statssrv64 += len;
param->nreads++;
+ if(nservers[0].usetcp) {
+ buf += 2;
+ len -= 2;
+ }
if(buf[6] || buf[7]){
if(socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
RETURN(822);
@@ -168,7 +183,7 @@ void * dnsprchild(struct clientparam* param) {
buf[2] = 0x85;
buf[3] = 0x83;
}
- usleep(SLEEPTIME);
+ /* usleep(SLEEPTIME); */
res = socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
if(res != len){RETURN(819);}
if(!ip) {RETURN(888);}
@@ -186,7 +201,7 @@ CLEANRET:
);
(*param->srv->logfunc)(param, buf);
}
- if(buf)myfree(buf);
+ if(bbuf)myfree(bbuf);
if(host)myfree(host);
#ifndef _WIN32
param->clisock = INVALID_SOCKET;
diff --git a/src/proxy.h b/src/proxy.h
index 66b6c4b..b5898d1 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -184,7 +184,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
int myinet_ntop(int af, void *src, char *dst, socklen_t size);
-extern unsigned long nservers[MAXNSERVERS];
+extern struct nserver nservers[MAXNSERVERS];
extern unsigned long authnserver;
unsigned long getip(unsigned char *name);
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
diff --git a/src/socks.c b/src/socks.c
index 928f494..a813604 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -160,7 +160,7 @@ void * sockschild(struct clientparam* param) {
memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
#endif
if(!*SAPORT(¶m->sinsl))*SAPORT(¶m->sinsl) = port;
- if ((param->remsock=so._socket(*SAFAMILY(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
+ if ((param->remsock=so._socket(SASOCK(¶m->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
param->operation = command == 2?BIND:UDPASSOC;
break;
diff --git a/src/structures.h b/src/structures.h
index 06e8cdd..00a5cd0 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -297,6 +297,11 @@ struct trafcount {
time_t updated;
};
+struct nserver {
+ unsigned long ip;
+ int usetcp;
+};
+
typedef void * (* PROXYFUNC)(struct clientparam *);
typedef enum {
@@ -623,7 +628,7 @@ extern struct sockfuncs so;
struct pluginlink {
struct symbol symbols;
struct extparam *conf;
- unsigned long *nservers;
+ struct nserver *nservers;
int * linenum;
struct auth *authfuncs;
struct commands * commandhandlers;
diff --git a/src/udppm.c b/src/udppm.c
index 0d3ef9b..dc3d84f 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -57,7 +57,7 @@ void * udppmchild(struct clientparam* param) {
param->cliinbuf = i;
#ifdef _WIN32
- if((param->clisock=so._socket(*SAFAMILY(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
+ if((param->clisock=so._socket(SASOCK(¶m->sincr), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
@@ -77,7 +77,7 @@ void * udppmchild(struct clientparam* param) {
memcpy(¶m->sinsl, ¶m->srv->extsa, SASIZE(¶m->req));
#endif
*SAPORT(¶m->sinsl) = 0;
- if ((param->remsock=so._socket(*SAFAMILY(¶m->sinsl), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
+ if ((param->remsock=so._socket(SASOCK(¶m->sinsl), SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {RETURN (12);}
#ifdef _WIN32
ioctlsocket(param->remsock, FIONBIO, &ul);
diff --git a/src/version.h b/src/version.h
index 9971bab..dc2257c 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141210181747"
+#define BUILDDATE "141211025611"
From 8c95f4efcf3783d3a216b31da2ec080c3ead8992 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Thu, 11 Dec 2014 03:13:16 +0300
Subject: [PATCH 043/122] unused variables removed
---
src/auth.c | 3 +--
src/version.h | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index 4ad77ba..c149e1a 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -951,7 +951,6 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
}
struct nserver nservers[MAXNSERVERS] = {{0,0}, {0,0}, {0,0}, {0,0}, {0,0}};
-int tcpresolve = 0;
unsigned long authnserver;
@@ -966,7 +965,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
}
for(i=0; (i<(makeauth && authnserver)? 1 : MAXNSERVERS) && ((makeauth && authnserver) || nservers[i].ip); i++){
- unsigned short nquery, nq, na;
+ unsigned short nq, na;
unsigned char b[4098], *buf, *s1, *s2;
int j, k, len, flen;
SOCKET sock;
diff --git a/src/version.h b/src/version.h
index dc2257c..c2572d8 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141211025611"
+#define BUILDDATE "141211031205"
From efdbaee29ffb5be4dda9ce6753b9223d702b239d Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Thu, 11 Dec 2014 03:49:26 +0300
Subject: [PATCH 044/122] return more random serial generation
---
src/auth.c | 7 +++++--
src/version.h | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index c149e1a..0525f95 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -973,6 +973,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
time_t t;
struct sockaddr_in sin, *sinsp;
int usetcp = 0;
+ unsigned short serial = 1;
buf = b+2;
@@ -1010,7 +1011,9 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
}
}
len = (int)strlen((char *)name);
- *(unsigned short*)buf = htons(i+1); /* query id */
+
+ serial = myrand(name,len);
+ *(unsigned short*)buf = serial; /* query id */
buf[2] = 1; /* recursive */
buf[3] = 0;
buf[4] = 0;
@@ -1054,7 +1057,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
buf+=2;
len-=2;
}
- if(*(unsigned short *)buf != htons(i+1))continue;
+ if(*(unsigned short *)buf != serial)continue;
if((na = buf[7] + (((unsigned short)buf[6])<<8)) < 1) {
return 0;
}
diff --git a/src/version.h b/src/version.h
index c2572d8..b96ed57 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141211031205"
+#define BUILDDATE "141211034918"
From a4cb2f36b52bf66530433e837104b183347ec9ac Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Fri, 12 Dec 2014 23:51:47 +0300
Subject: [PATCH 045/122] -s switch support for dnspr
dnspr -s switch to act as a simple DNS proxy and do not use 3proxy's
resolver and DNS cache.
---
src/3proxy.c | 1 +
src/dnspr.c | 4 ++--
src/version.h | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 426e027..63a95d5 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -721,6 +721,7 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.port = 53;
childdef.isudp = 1;
childdef.service = S_DNSPR;
+ childdef.helpmessage = " -s - simple DNS forwarding - do not use 3proxy resolver / name cache\n";
if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize) || resolvfunc == fakeresolver){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, dnspr will not work as expected\n", linenum);
}
diff --git a/src/dnspr.c b/src/dnspr.c
index 55d1eee..f264fb7 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -82,7 +82,7 @@ void * dnsprchild(struct clientparam* param) {
*s2 = (len - (int)(s2 - buf)) - 1;
type = ((unsigned)buf[len+1])*256 + (unsigned)buf[len+2];
- if(type==1){
+ if(type==1 && !param->srv->singlepacket){
ip = udpresolve((unsigned char *)host, &ttl, param, 0);
}
@@ -129,7 +129,7 @@ void * dnsprchild(struct clientparam* param) {
}
else ip = 0;
}
- if(!ip && nservers[0].ip && type!=1){
+ if(!ip && nservers[0].ip){
if((param->remsock=so._socket(PF_INET, nservers[0].usetcp? SOCK_STREAM:SOCK_DGRAM, nservers[0].usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
diff --git a/src/version.h b/src/version.h
index b96ed57..c993aa2 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141211034918"
+#define BUILDDATE "141212231810"
From 042fc2afde7f364bd395ef442609ecfcb8dc6d8e Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 03:56:01 +0300
Subject: [PATCH 046/122] nserver address may be given as IPv6
---
src/3proxy.c | 11 +++++-----
src/auth.c | 52 +++++++++++++++++++++++++++++-------------------
src/common.c | 2 ++
src/dnspr.c | 25 ++++++++++++-----------
src/proxymain.c | 5 ++++-
src/structures.h | 7 ++++++-
src/version.h | 2 +-
7 files changed, 64 insertions(+), 40 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 63a95d5..fb99fb9 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1003,18 +1003,19 @@ static int h_flushusers(int argc, unsigned char **argv){
*/
static int h_nserver(int argc, unsigned char **argv){
- int res;
char *str;
- for(res = 0; nservers[res].ip && res < MAXNSERVERS; res++);
- if(res < MAXNSERVERS) {
+ if(numservers < MAXNSERVERS) {
if((str = strchr((char *)argv[1], '/')))
*str = 0;
- nservers[res].ip = getip(argv[1]);
+ if(!getip46(46, argv[1], (struct sockaddr *)&nservers[numservers].addr)) return 1;
+ *SAPORT(&nservers[numservers].addr) = htons(53);
if(str) {
- nservers[res].usetcp = strstr(str + 1, "tcp")? 1:0;
+ nservers[numservers].usetcp = strstr(str + 1, "tcp")? 1:0;
*str = '/';
}
+ numservers++;
+
}
resolvfunc = myresolver;
return 0;
diff --git a/src/auth.c b/src/auth.c
index 0525f95..2204e04 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -950,61 +950,68 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
return 0;
}
-struct nserver nservers[MAXNSERVERS] = {{0,0}, {0,0}, {0,0}, {0,0}, {0,0}};
-
+struct nserver nservers[MAXNSERVERS] = {{{0},0}, {{0},0}, {{0},0}, {{0},0}, {{0},0}};
unsigned long authnserver;
unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientparam* param, int makeauth){
- int i;
+ int i,n;
unsigned long retval;
if((retval = hashresolv(&dns_table, name, retttl))) {
return retval;
}
-
- for(i=0; (i<(makeauth && authnserver)? 1 : MAXNSERVERS) && ((makeauth && authnserver) || nservers[i].ip); i++){
+ n = (makeauth && authnserver)? 1 : numservers;
+ for(i=0; isinsr : &sin;
- memset(sinsp, 0, sizeof(struct sockaddr_in));
+ sinsl = (param && !makeauth)? (struct sockaddr *)¶m->sinsl : (struct sockaddr *)&addr;
+ sinsr = (param && !makeauth)? (struct sockaddr *)¶m->sinsr : (struct sockaddr *)&addr;
+ memset(sinsl, 0, sizeof(addr));
+ memset(sinsr, 0, sizeof(addr));
if(makeauth && authnserver){
if((sock=so._socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) break;
+ *SAFAMILY(sinsl) = AF_INET;
+ *SAFAMILY(sinsr) = AF_INET;
}
else {
usetcp = nservers[i].usetcp;
- if((sock=so._socket(PF_INET, usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
+ if((sock=so._socket(SASOCK(&nservers[i].addr), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
+ *SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr);
+
}
- sinsp->sin_family = AF_INET;
- sinsp->sin_port = htons(0);
- sinsp->sin_addr.s_addr = htonl(0);
- if(so._bind(sock,(struct sockaddr *)sinsp,sizeof(struct sockaddr_in))){
+ if(so._bind(sock,sinsl,sizeof(addr))){
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
break;
}
if(makeauth && authnserver){
- sinsp->sin_addr.s_addr = authnserver;
+ ((struct sockaddr_in *)sinsr)->sin_addr.s_addr = authnserver;
+ ((struct sockaddr_in *)sinsr)->sin_port = htons(53);
}
else {
- sinsp->sin_addr.s_addr = nservers[i].ip;
+ memcpy(sinsr, &nservers[i].addr, sizeof(addr));
}
- sinsp->sin_port = htons(53);
if(usetcp){
- if(so._connect(sock,(struct sockaddr *)sinsp,sizeof(struct sockaddr_in))) {
+ if(so._connect(sock,sinsr,sizeof(addr))) {
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
break;
@@ -1040,13 +1047,13 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
len+=2;
}
- if(socksendto(sock, (struct sockaddr *)sinsp, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
+ if(socksendto(sock, sinsr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
continue;
}
if(param) param->statscli64 += len;
- len = sockrecvfrom(sock, (struct sockaddr *) sinsp, buf, 4096, 15000);
+ len = sockrecvfrom(sock, sinsr, buf, 4096, 15000);
so._shutdown(sock, SHUT_RDWR);
so._closesocket(sock);
if(len <= 13) {
@@ -1054,8 +1061,13 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
}
if(param) param->statssrv64 += len;
if(usetcp){
- buf+=2;
+ unsigned short us;
+ us = ntohs(*(unsigned short*)buf);
len-=2;
+ buf+=2;
+ if(us > 4096 || us < len || (us > len && sockrecvfrom(sock, sinsr, buf+len, us-len, 15000) != us-len)) {
+ continue;
+ }
}
if(*(unsigned short *)buf != serial)continue;
if((na = buf[7] + (((unsigned short)buf[6])<<8)) < 1) {
diff --git a/src/common.c b/src/common.c
index 753119f..5ae3cac 100644
--- a/src/common.c
+++ b/src/common.c
@@ -88,6 +88,8 @@ struct extparam conf = {
'@'
};
+int numservers=0;
+
int myrand(void * entropy, int len){
int i;
unsigned short init;
diff --git a/src/dnspr.c b/src/dnspr.c
index f264fb7..db7e9f1 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -40,13 +40,13 @@ void * dnsprchild(struct clientparam* param) {
buf = bbuf+2;
size = sizeof(param->sincr);
i = so._recvfrom(param->srv->srvsock, buf, BUFSIZE, 0, (struct sockaddr *)¶m->sincr, &size);
+ size = sizeof(param->sinsl);
+ getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sincl, &size);
#ifdef _WIN32
if((param->clisock=so._socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
ioctlsocket(param->clisock, FIONBIO, &ul);
- size = sizeof(param->sinsl);
- if(so._getsockname(param->srv->srvsock, (struct sockaddr *)¶m->sincl, &size)) {RETURN(21);};
if(so._setsockopt(param->clisock, SOL_SOCKET, SO_REUSEADDR, (unsigned char *)&ul, sizeof(int))) {RETURN(820);};
if(so._bind(param->clisock,(struct sockaddr *)¶m->sincl,sizeof(param->sincl))) {
RETURN(822);
@@ -109,7 +109,7 @@ void * dnsprchild(struct clientparam* param) {
unsigned a, b, c, d;
sscanf(host, "%u.%u.%u.%u", &a, &b, &c, &d);
ip = htonl((d<<24) ^ (c<<16) ^ (b<<8) ^ a);
- if(*SAFAMILY(¶m->srv->intsa) == AF_INET && ip == *(unsigned long*)SAADDR(¶m->srv->intsa)){
+ if(*SAFAMILY(¶m->sincl) == AF_INET && ip == *(unsigned long*)SAADDR(¶m->sincl)){
buf[2] = 0x85;
buf[3] = 0x80;
buf[6] = 0;
@@ -129,19 +129,16 @@ void * dnsprchild(struct clientparam* param) {
}
else ip = 0;
}
- if(!ip && nservers[0].ip){
- if((param->remsock=so._socket(PF_INET, nservers[0].usetcp? SOCK_STREAM:SOCK_DGRAM, nservers[0].usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {
+ if(!ip && numservers){
+ if((param->remsock=so._socket(SASOCK(&nservers[0].addr), nservers[0].usetcp? SOCK_STREAM:SOCK_DGRAM, nservers[0].usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {
RETURN(818);
}
- *SAFAMILY(¶m->sinsl) = AF_INET;
- *SAPORT(¶m->sinsl) = htons(0);
- *(unsigned long*)SAADDR(¶m->sinsl) = htonl(0);
+ memset(¶m->sinsl, 0, sizeof(param->sinsl));
+ *SAFAMILY(¶m->sinsl) = *SAFAMILY(&nservers[0].addr);
if(so._bind(param->remsock,(struct sockaddr *)¶m->sinsl,sizeof(param->sinsl))) {
RETURN(819);
}
- *SAFAMILY(¶m->sinsr) = AF_INET;
- *(unsigned long*)SAADDR(¶m->sinsr) = nservers[0].ip;
- *SAPORT(¶m->sinsr) = htons(53);
+ memcpy(¶m->sinsr, &nservers[0].addr, sizeof(param->sinsr));
if(nservers[0].usetcp) {
if(so._connect(param->remsock,(struct sockaddr *)¶m->sinsr,sizeof(param->sinsr))) RETURN(830);
buf-=2;
@@ -168,8 +165,13 @@ void * dnsprchild(struct clientparam* param) {
param->statssrv64 += len;
param->nreads++;
if(nservers[0].usetcp) {
+ unsigned short us;
+ us = ntohs(*(unsigned short *)buf);
+ if(us > 4096) RETURN(833);
buf += 2;
len -= 2;
+ if(len < us) len += sockgetlinebuf(param, SERVER, buf+len, us - len, 0, conf.timeouts[SINGLEBYTE_L]);
+ if(len != us) RETURN(832);
}
if(buf[6] || buf[7]){
if(socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
@@ -183,7 +185,6 @@ void * dnsprchild(struct clientparam* param) {
buf[2] = 0x85;
buf[3] = 0x83;
}
- /* usleep(SLEEPTIME); */
res = socksendto(param->clisock, (struct sockaddr *)¶m->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
if(res != len){RETURN(819);}
if(!ip) {RETURN(888);}
diff --git a/src/proxymain.c b/src/proxymain.c
index fb87e6f..231d946 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -460,8 +460,9 @@ int MODULEMAINFUNC (int argc, char** argv){
so._setsockopt(new_sock, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
so._setsockopt(new_sock, SOL_SOCKET, SO_OOBINLINE, (unsigned char *)&opt, sizeof(int));
}
- else
+ else {
srv.fds.events = 0;
+ }
if(! (newparam = myalloc (sizeof(defparam)))){
if(!isudp) so._closesocket(new_sock);
defparam.res = 21;
@@ -896,6 +897,7 @@ void freeconf(struct extparam *confp){
confp->singlepacket = 0;
confp->maxchild = 100;
resolvfunc = NULL;
+ numservers = 0;
acl = confp->acl;
confp->acl = NULL;
confp->logtime = confp->time = 0;
@@ -927,6 +929,7 @@ void freeconf(struct extparam *confp){
for(i = 0; i < archiverc; i++) myfree(archiver[i]);
myfree(archiver);
}
+
}
FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
diff --git a/src/structures.h b/src/structures.h
index 00a5cd0..b195213 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -298,9 +298,14 @@ struct trafcount {
};
struct nserver {
- unsigned long ip;
+#ifndef NOIPV6
+ struct sockaddr_in6 addr;
+#else
+ struct sockaddr_in addr;
+#endif
int usetcp;
};
+extern int numservers;
typedef void * (* PROXYFUNC)(struct clientparam *);
diff --git a/src/version.h b/src/version.h
index c993aa2..1ae6423 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141212231810"
+#define BUILDDATE "141213035229"
From e39f4638cf2aa3ae44cb481f16771bd7ee9c6277 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 19:48:41 +0300
Subject: [PATCH 047/122] Corrected ACLs handling + network ranges in ACLS
ACL handling corrected (affected all ACL-based operations like
allow/deny/banlimin/etc).
Network ranges like
10.0.0.0-10.0.0.1.64
are winally supported in ACLS.
---
src/3proxy.c | 21 +++++++++++----------
src/auth.c | 8 ++++++--
src/common.c | 2 +-
src/version.h | 2 +-
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index fb99fb9..76700b1 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1186,27 +1186,28 @@ int scanipl(unsigned char *arg, struct iplist *dst){
if(dash){
if(!getip46(46, dash+1, (struct sockaddr *)&sa)) return 2;
memcpy(&dst->ip_to, SAADDR(&sa), SAADDRLEN(&sa));
+ if(*SAFAMILY(&sa) != dst->family || memcmp(&dst->ip_to, &dst->ip_from, SAADDRLEN(&sa)) < 0) return 3;
return 0;
}
+ memcpy(&dst->ip_to, &dst->ip_from, SAADDRLEN(&sa));
if(slash){
addrlen = SAADDRLEN(&sa);
masklen = atoi(slash+1);
- if(masklen >= 0 && masklen<(addrlen*8)){
- int i, nbytes = masklen / 8, nbits = masklen % 8;
-
- for(i = addrlen; i; i--){
+ if(masklen < 0 || masklen > (addrlen*8)) return 4;
+ else {
+ int i, nbytes = masklen / 8, nbits = (8 - (masklen % 8)) % 8;
+
+ for(i = addrlen; i>(nbytes + (nbits > 0)); i--){
((unsigned char *)&dst->ip_from)[i-1] = 0x00;
((unsigned char *)&dst->ip_to)[i-1] = 0xff;
}
- memcpy(&dst->ip_to, &dst->ip_from, addrlen - i);
for(;nbits;nbits--){
- ((unsigned char *)&dst->ip_from)[i-1] &= (0x01<<(nbits-1));
- ((unsigned char *)&dst->ip_to)[i-1] |= (0x01<<(nbits-1));
+ ((unsigned char *)&dst->ip_from)[nbytes] &= ~(0x01<<(nbits-1));
+ ((unsigned char *)&dst->ip_to)[nbytes] |= (0x01<<(nbits-1));
}
return 0;
}
}
- memcpy(&dst->ip_to, &dst->ip_from, SAADDRLEN(&sa));
return 0;
}
@@ -1257,7 +1258,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
}
memset(ipl, 0, sizeof(struct iplist));
if (scanipl(arg, ipl)) {
- fprintf(stderr, "Invalid IP or CIDR, line %d\n", linenum);
+ fprintf(stderr, "Invalid IP, IP range or CIDR, line %d\n", linenum);
return(NULL);
}
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
@@ -1315,7 +1316,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
}
memset(ipl, 0, sizeof(struct iplist));
if (scanipl(arg, ipl)) {
- fprintf(stderr, "Invalid IP or CIDR, line %d\n", linenum);
+ fprintf(stderr, "Invalid IP, IP range or CIDR, line %d\n", linenum);
return(NULL);
}
}
diff --git a/src/auth.c b/src/auth.c
index 2204e04..113f4ce 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -313,14 +313,18 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
int IPInentry(struct sockaddr *sa, struct iplist *ipentry){
- int i, addrlen;
+ int addrlen;
unsigned char *ip, *ipf, *ipt;
+
+
ip = (unsigned char *)SAADDR(sa);
ipf = (unsigned char *)&ipentry->ip_from;
ipt = (unsigned char *)&ipentry->ip_to;
+
if(!sa || ! ipentry || *SAFAMILY(sa) != ipentry->family) return 0;
addrlen = SAADDRLEN(sa);
- for(i=0; iipt[i]) return 0;
+
+ if(memcmp(ip,ipf,addrlen) < 0 || memcmp(ip,ipt,addrlen) > 0) return 0;
return 1;
}
diff --git a/src/common.c b/src/common.c
index 5ae3cac..69d1e5f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -224,7 +224,7 @@ int parsehostname(char *hostname, struct clientparam *param, unsigned short port
if(se){
*se = 0;
}
- if(hostname != param->hostname){
+ if(hostname != (char *)param->hostname){
if(param->hostname) myfree(param->hostname);
param->hostname = (unsigned char *)mystrdup(hostname + (se!=0));
}
diff --git a/src/version.h b/src/version.h
index 1ae6423..e426bdc 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141213035229"
+#define BUILDDATE "141213192542"
From d2437975b7cacde0abf46056c0be1fb9748322fd Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 20:30:20 +0300
Subject: [PATCH 048/122] Fail IPv6 client in dnsauth
before IPv6 for dnsauth is implemented
---
src/auth.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/auth.c b/src/auth.c
index 113f4ce..b544e1d 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -736,8 +736,12 @@ int userauth(struct clientparam * param){
int dnsauth(struct clientparam * param){
char buf[32];
+
/* FIX IT */
- unsigned u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
+ unsigned u ;
+
+ if(*SAFAMILY(¶m->sincr)!=AF_INET) return 6;
+ u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
sprintf(buf, "%u.%u.%u.%u.in-addr.arpa",
From 8a6632f0d1e578547679a4c8b45b49ad84c03d92 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 22:38:03 +0300
Subject: [PATCH 049/122] Support IPv6 for parent proxy
Parent proxy can be on IPv6 network (except SOCKS4).
---
src/3proxy.c | 9 ++++----
src/auth.c | 58 +++++++++++++++++++++++-------------------------
src/common.c | 10 ++++++---
src/datatypes.c | 19 ++++++----------
src/socks.c | 4 ++--
src/structures.h | 10 +++++++--
src/udppm.c | 2 +-
7 files changed, 58 insertions(+), 54 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 76700b1..6fb239b 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1147,8 +1147,8 @@ static int h_parent(int argc, unsigned char **argv){
fprintf(stderr, "Chaining error: bad chain type (%s)\n", argv[2]);
return(4);
}
- chains->redirip = getip(argv[3]);
- chains->redirport = htons((unsigned short)atoi((char *)argv[4]));
+ if(!getip46(46, argv[3], (struct sockaddr *)&chains->addr)) return 5;
+ *SAPORT(&chains->addr) = htons((unsigned short)atoi((char *)argv[4]));
if(argc > 5) chains->extuser = (unsigned char *)mystrdup((char *)argv[5]);
if(argc > 6) chains->extpass = (unsigned char *)mystrdup((char *)argv[6]);
return 0;
@@ -1523,13 +1523,14 @@ static int h_ace(int argc, unsigned char **argv){
switch(acl->action){
case REDIRECT:
acl->chains = myalloc(sizeof(struct chain));
+ memset(acl->chains, 0, sizeof(struct chain));
if(!acl->chains) {
fprintf(stderr, "No memory for ACL entry, line %d\n", linenum);
return(2);
}
acl->chains->type = R_HTTP;
- acl->chains->redirip = getip(argv[1]);
- acl->chains->redirport = htons((unsigned short)atoi((char *)argv[2]));
+ if(!getip46(46, argv[1], (struct sockaddr *)&acl->chains->addr)) return 5;
+ *SAPORT(&acl->chains->addr) = htons((unsigned short)atoi((char *)argv[2]));
acl->chains->weight = 1000;
acl->chains->extuser = NULL;
acl->chains->extpass = NULL;
diff --git a/src/auth.c b/src/auth.c
index b544e1d..ef1dbda 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -13,16 +13,13 @@
#define RECORDSIZE 18
-int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned long ip, unsigned short port){
+int clientnegotiate(struct chain * redir, struct clientparam * param, struct sockaddr * addr){
unsigned char buf[1024];
- struct in_addr ina;
int res;
int len=0;
unsigned char * user, *pass;
- ina.s_addr = ip;
-
user = redir->extuser;
pass = redir->extpass;
if(user) {
@@ -39,15 +36,17 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
case R_CONNECT:
case R_CONNECTP:
{
- sprintf((char *)buf, "CONNECT ");
+ len = sprintf((char *)buf, "CONNECT ");
if(redir->type == R_CONNECTP && param->hostname) {
- len = 8 + sprintf((char *)buf + 8, "%.256s", param->hostname);
+ len =+ sprintf((char *)buf + len, "%.256s", param->hostname);
}
else {
- len = 8 + myinet_ntop(AF_INET, &ina, (char *)buf+8, 256);
+ if(*SAFAMILY(addr) == AF_INET6) buf[len++] = '[';
+ len += myinet_ntop(AF_INET, SAADDR(addr), (char *)buf+8, 256);
+ if(*SAFAMILY(addr) == AF_INET6) buf[len++] = ']';
}
len += sprintf((char *)buf + len,
- ":%hu HTTP/1.0\r\nProxy-Connection: keep-alive\r\n", ntohs(port));
+ ":%hu HTTP/1.0\r\nProxy-Connection: keep-alive\r\n", *SAPORT(addr));
if(user){
unsigned char username[256];
len += sprintf((char *)buf + len, "Proxy-authorization: basic ");
@@ -73,14 +72,15 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
case R_SOCKS4B:
{
+ if(*SAFAMILY(addr) != AF_INET) return 44;
buf[0] = 4;
buf[1] = 1;
- memcpy(buf+2, &port, 2);
+ memcpy(buf+2, SAPORT(addr), 2);
if(redir->type == R_SOCKS4P && param->hostname) {
buf[4] = buf[5] = buf[6] = 0;
buf[7] = 3;
}
- else memcpy(buf+4, &ip, 4);
+ else memcpy(buf+4, SAADDR(addr), 4);
if(!user)user = (unsigned char *)"anonymous";
len = (int)strlen((char *)user) + 1;
memcpy(buf+8, user, len);
@@ -162,11 +162,12 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, unsigned l
len += 5;
}
else {
- buf[3] = 1;
- memcpy(buf+4, &ip, 4);
- len = 8;
+ len = 3;
+ buf[len++] = (*SAFAMILY(addr) == AF_INET)? 1 : 4;
+ memcpy(buf+len, SAADDR(addr), SAADDRLEN(addr));
+ len += SAADDRLEN(addr);
}
- memcpy(buf+len, &port, 2);
+ memcpy(buf+len, SAPORT(addr), 2);
len += 2;
if(socksend(param->remsock, buf, len, conf.timeouts[CHAIN_TO]) != len){
return 51;
@@ -210,7 +211,9 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
if(param->remsock != INVALID_SOCKET) {
return 0;
}
- if(!memcmp(SAADDR(¶m->req),"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",SAADDRLEN(¶m->req)) || !*SAPORT(¶m->req)) return 100;
+ if(SAISNULL(¶m->req) || !*SAPORT(¶m->req)) {
+ return 100;
+ }
r2 = (myrand(param, sizeof(struct clientparam))%1000);
@@ -231,7 +234,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
r2 = (myrand(param, sizeof(struct clientparam))%1000);
}
if(!connected){
- if(!cur->redirip && !cur->redirport){
+ if(SAISNULL(&cur->addr) && !*SAPORT(&cur->addr)){
if(cur->extuser){
if(param->extusername)
myfree(param->extusername);
@@ -266,19 +269,14 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
return 0;
}
- else if(!cur->redirport && cur->redirip) {
+ else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
unsigned short port = *SAPORT(¶m->sinsr);
- memset(¶m->sinsl, 0, sizeof(param->sinsr));
- *SAFAMILY(¶m->sinsr) = AF_INET;
- *(unsigned long *)SAADDR(¶m->sinsr) = cur->redirip;
+ memcpy(¶m->sinsr, &cur->addr, SASIZE(&cur->addr));
*SAPORT(¶m->sinsr) = port;
}
- else if(!cur->redirip && cur->redirport) *SAPORT(¶m->sinsr) = cur->redirport;
- else if(*SAFAMILY(¶m->req) == AF_INET){
- memset(¶m->sinsr, 0, sizeof(param->sinsr));
- *SAFAMILY(¶m->sinsr) = AF_INET;
- *(unsigned long *)SAADDR(¶m->sinsr) = cur->redirip;
- *SAPORT(¶m->sinsr) = cur->redirport;
+ else if(SAISNULL(&cur->addr) && *SAPORT(&cur->addr)) *SAPORT(¶m->sinsr) = *SAPORT(&cur->addr);
+ else {
+ memcpy(¶m->sinsr, &cur->addr, SASIZE(&cur->addr));
}
if((res = alwaysauth(param))){
@@ -286,7 +284,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
}
else {
- res = (redir && *SAFAMILY(¶m->req) == AF_INET)?clientnegotiate(redir, param, cur->redirip, cur->redirport):0;
+ res = (redir)?clientnegotiate(redir, param, (struct sockaddr *)&cur->addr):0;
if(res) return res;
}
redir = cur;
@@ -309,7 +307,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
}
if(!connected) return 9;
- return (redir && *SAFAMILY(¶m->req) == AF_INET)?clientnegotiate(redir, param, *(unsigned long *)SAADDR(¶m->req), *SAPORT(¶m->req)):0;
+ return (redir)?clientnegotiate(redir, param, (struct sockaddr *)¶m->req):0;
}
int IPInentry(struct sockaddr *sa, struct iplist *ipentry){
@@ -347,7 +345,7 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
}
if(!ipentry) return 0;
}
- if((acentry->dst && memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) || (acentry->dstnames && param->hostname)) {
+ if((acentry->dst && SAISNULL(¶m->req)) || (acentry->dstnames && param->hostname)) {
for(ipentry = acentry->dst; ipentry; ipentry = ipentry->next)
if(IPInentry((struct sockaddr *)¶m->req, ipentry)) {
break;
@@ -596,7 +594,7 @@ int checkACL(struct clientparam * param){
if(param->operation < 256 && !(param->operation & CONNECT)){
continue;
}
- if(param->redirected && acentry->chains && !acentry->chains->redirip && !acentry->chains->redirport) {
+ if(param->redirected && acentry->chains && SAISNULL(&acentry->chains->addr) && !*SAPORT(&acentry->chains->addr)) {
continue;
}
memcpy(&dup, acentry, sizeof(struct ace));
diff --git a/src/common.c b/src/common.c
index 69d1e5f..1a0006f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -36,7 +36,7 @@ int myinet_ntop(int af, void *src, char *dst, socklen_t size){
}
*dst = 0;
inet_ntop(af, src, dst, size);
- return strlen(dst);
+ return (int)strlen(dst);
#endif
}
@@ -90,6 +90,8 @@ struct extparam conf = {
int numservers=0;
+char* NULLADDR="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+
int myrand(void * entropy, int len){
int i;
unsigned short init;
@@ -613,8 +615,10 @@ int doconnect(struct clientparam * param){
else {
struct linger lg;
- if(!memcmp(SAADDR(¶m->sinsr), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->sinsr))){
- if(!memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) return 100;
+ if(SAISNULL(¶m->sinsr)){
+ if(SAISNULL(¶m->req)) {
+ return 100;
+ }
*SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->req);
memcpy(SAADDR(¶m->sinsr), SAADDR(¶m->req), SAADDRLEN(¶m->req));
}
diff --git a/src/datatypes.c b/src/datatypes.c
index 19364c5..4c51ed9 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -344,12 +344,8 @@ static void * ef_chain_type(struct node * node){
}
}
-static void * ef_chain_ip(struct node * node){
- return &((struct chain *)node->value) -> redirip;
-}
-
-static void * ef_chain_port(struct node * node){
- return &((struct chain *)node->value) -> redirport;
+static void * ef_chain_addr(struct node * node){
+ return &((struct chain *)node->value) -> addr;
}
static void * ef_chain_weight(struct node * node){
@@ -690,12 +686,11 @@ static struct property prop_pwlist[] = {
};
static struct property prop_chain[] = {
- {prop_chain + 1, "ip", ef_chain_ip, TYPE_IP, "parent ip address"},
- {prop_chain + 2, "port", ef_chain_port, TYPE_PORT, "parent port"},
- {prop_chain + 3, "type", ef_chain_type, TYPE_STRING, "parent type"},
- {prop_chain + 4, "weight", ef_chain_weight, TYPE_SHORT, "parent weight 0-1000"},
- {prop_chain + 5, "user", ef_chain_user, TYPE_STRING, "parent login"},
- {prop_chain + 6, "password", ef_chain_password, TYPE_STRING, "parent password"},
+ {prop_chain + 1, "addr", ef_chain_addr, TYPE_SA, "parent address"},
+ {prop_chain + 2, "type", ef_chain_type, TYPE_STRING, "parent type"},
+ {prop_chain + 3, "weight", ef_chain_weight, TYPE_SHORT, "parent weight 0-1000"},
+ {prop_chain + 4, "user", ef_chain_user, TYPE_STRING, "parent login"},
+ {prop_chain + 5, "password", ef_chain_password, TYPE_STRING, "parent password"},
{NULL, "next", ef_chain_next, TYPE_CHAIN, "next"}
};
diff --git a/src/socks.c b/src/socks.c
index a813604..6b68557 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -102,7 +102,7 @@ void * sockschild(struct clientparam* param) {
*SAFAMILY(¶m->sinsr) = *SAFAMILY(¶m->req) = (c == 1)? AF_INET:AF_INET6;
memcpy(SAADDR(¶m->sinsr), buf, size);
memcpy(SAADDR(¶m->req), buf, size);
- if(command==1 && !memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", size)) {
+ if(command==1 && SAISNULL(¶m->req)) {
RETURN(421);
}
myinet_ntop(*SAFAMILY(¶m->sinsr), SAADDR(¶m->sinsr), (char *)buf, 64);
@@ -269,7 +269,7 @@ fflush(stderr);
param->res = 462;
break;
}
- if(!memcmp(SAADDR(¶m->req),"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",SAADDRLEN(¶m->req)) &&
+ if(SAISNULL(¶m->req) &&
memcmp(SAADDR(¶m->req),SAADDR(¶m->sinsr),SAADDRLEN(¶m->req))) {
param->res = 470;
break;
diff --git a/src/structures.h b/src/structures.h
index b195213..4b7567c 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -108,14 +108,17 @@ int
#define SAADDRLEN(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)
#define SASOCK(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET)
#define SASIZE(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in))
+#define SAISNULL(sa) (!memcmp(((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.u.Byte : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr, NULLADDR, (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)))
#else
#define SAPORT(sa) (&((struct sockaddr_in *)sa)->sin_port)
#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDRLEN(sa) (4)
#define SASOCK(sa) (PF_INET)
#define SASIZE(sa) (sizeof(struct sockaddr_in))
+#define SAISNULL(sa) (((struct sockaddr_in *)sa)->sin_addr.s_addr == 0)
#endif
+extern char* NULLADDR;
typedef enum {
CLIENT,
SERVER
@@ -228,8 +231,11 @@ typedef enum {
struct chain {
struct chain * next;
int type;
- unsigned long redirip;
- unsigned short redirport;
+#ifndef NOIPV6
+ struct sockaddr_in6 addr;
+#else
+ struct sockaddr_in addr;
+#endif
unsigned short weight;
unsigned char * extuser;
unsigned char * extpass;
diff --git a/src/udppm.c b/src/udppm.c
index dc3d84f..9be913a 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -40,7 +40,7 @@ void * udppmchild(struct clientparam* param) {
if(!param->hostname)parsehostname((char *)param->srv->target, param, ntohs(param->srv->targetport));
- if (!memcmp(SAADDR(¶m->req), "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", SAADDRLEN(¶m->req))) {
+ if (SAISNULL(¶m->req)) {
param->srv->fds.events = POLLIN;
RETURN (100);
}
From 50db0015d3582ebb32761cf7f2208ce79a195afe Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 22:56:31 +0300
Subject: [PATCH 050/122] IPv6 support for authnserver
---
src/3proxy.c | 10 +++++++++-
src/auth.c | 35 +++++++++--------------------------
src/plugins.c | 2 ++
src/proxy.h | 2 +-
src/structures.h | 1 +
src/version.h | 2 +-
6 files changed, 23 insertions(+), 29 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 6fb239b..5909b2a 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1022,8 +1022,16 @@ static int h_nserver(int argc, unsigned char **argv){
}
static int h_authnserver(int argc, unsigned char **argv){
+ char *str;
- authnserver = getip(argv[1]);
+ if((str = strchr((char *)argv[1], '/')))
+ *str = 0;
+ if(!getip46(46, argv[1], (struct sockaddr *)&authnserver.addr)) return 1;
+ *SAPORT(&authnserver.addr) = htons(53);
+ if(str) {
+ authnserver.usetcp = strstr(str + 1, "tcp")? 1:0;
+ *str = '/';
+ }
return 0;
}
diff --git a/src/auth.c b/src/auth.c
index ef1dbda..2c2e5eb 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -957,7 +957,7 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
}
struct nserver nservers[MAXNSERVERS] = {{{0},0}, {{0},0}, {{0},0}, {{0},0}, {{0},0}};
-unsigned long authnserver;
+struct nserver authnserver;
unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientparam* param, int makeauth){
@@ -968,7 +968,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
if((retval = hashresolv(&dns_table, name, retttl))) {
return retval;
}
- n = (makeauth && authnserver)? 1 : numservers;
+ n = (makeauth && !SAISNULL(&authnserver.addr))? 1 : numservers;
for(i=0; isin_addr.s_addr = authnserver;
- ((struct sockaddr_in *)sinsr)->sin_port = htons(53);
+ if(makeauth && !SAISNULL(&authnserver.addr)){
+ memcpy(sinsr, &authnserver.addr, sizeof(addr));
}
else {
memcpy(sinsr, &nservers[i].addr, sizeof(addr));
@@ -1292,18 +1289,4 @@ void logsql(struct clientparam * param, const unsigned char *s) {
}
#endif
-
-#ifdef WITHMAIN
-int main(int argc, unsigned char * argv[]) {
- unsigned ip = 0;
- WSADATA wd;
- WSAStartup(MAKEWORD( 1, 1 ), &wd);
- if(argc == 2)ip=getip(argv[1]);
- if(!hp) {
- printf("Not found");
- return 0;
- }
- printf("Name: '%s'\n", getnamebyip(ip);
- return 0;
-}
-#endif
+
\ No newline at end of file
diff --git a/src/plugins.c b/src/plugins.c
index 7820822..098aab7 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -79,6 +79,7 @@ struct symbol symbols[] = {
{symbols+48, "parsestr", (void *) parsestr},
{symbols+49, "make_ace", (void *) make_ace},
{symbols+50, "freeacl", (void *) freeacl},
+ {symbols+51, "getip46", (void *) getip46},
{NULL, "", NULL}
};
@@ -109,6 +110,7 @@ struct pluginlink pluginlink = {
dobuf2,
scanaddr,
getip,
+ getip46,
sockmap,
ACLmatches,
alwaysauth,
diff --git a/src/proxy.h b/src/proxy.h
index b5898d1..9e13999 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -185,7 +185,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
int myinet_ntop(int af, void *src, char *dst, socklen_t size);
extern struct nserver nservers[MAXNSERVERS];
-extern unsigned long authnserver;
+struct nserver authnserver;
unsigned long getip(unsigned char *name);
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
unsigned long myresolver(unsigned char *);
diff --git a/src/structures.h b/src/structures.h
index 4b7567c..2d8f046 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -655,6 +655,7 @@ struct pluginlink {
int (*dobuf2)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
int (*scanaddr)(const unsigned char *s, unsigned long * ip, unsigned long * mask);
unsigned long (*getip)(unsigned char *name);
+ unsigned long (*getip46)(int family, unsigned char *name, struct sockaddr *sa);
int (*sockmap)(struct clientparam * param, int timeo);
int (*ACLMatches)(struct ace* acentry, struct clientparam * param);
int (*alwaysauth)(struct clientparam * param);
diff --git a/src/version.h b/src/version.h
index e426bdc..7e397da 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141213192542"
+#define BUILDDATE "141213225630"
From e37a7f48d7fdb0729260051f0f1d2297bb5bded8 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 13 Dec 2014 23:20:00 +0300
Subject: [PATCH 051/122] Older CVS comments removed
---
Makefile.Linux | 1 -
Makefile.Solaris | 1 -
Makefile.Solaris-gcc | 1 -
Makefile.ccc | 1 -
Makefile.debug | 1 -
Makefile.inc | 1 -
Makefile.intl | 1 -
Makefile.msvc | 1 -
Makefile.msvc64 | 1 -
Makefile.msvcCE | 1 -
Makefile.unix | 1 -
Makefile.win | 1 -
Makefile.winCE | 1 -
Release.notes | 1 -
cfg/0.scenario.txt | 1 -
cfg/3proxy.cfg.sample | 1 -
cfg/counters.sample | 1 -
copying | 1 -
doc/html/faqe.html | 3 ---
doc/html/faqr.html | 3 ---
doc/html/howtoe.html | 1 -
doc/html/howtor.html | 3 ---
doc/html/securityen.html | 1 -
doc/ru/example1.txt | 1 -
doc/ru/iodbc.txt | 1 -
src/3proxy.c | 1 -
src/Makefile.inc | 1 -
src/auth.c | 1 -
src/base64.c | 1 -
src/common.c | 1 -
src/countersutil.c | 1 -
src/datatypes.c | 1 -
src/dighosts.c | 1 -
src/dnspr.c | 1 -
src/ftp.c | 1 -
src/ftppr.c | 1 -
src/icqpr.c | 1 -
src/libs/md4.c | 2 --
src/msnpr.c | 1 -
src/myalloc.c | 1 -
src/mycrypt.c | 1 -
src/ntlm.c | 1 -
src/plugins.c | 1 -
src/plugins/FilePlugin/FilePlugin.c | 1 -
src/plugins/PCREPlugin/pcre_plugin.c | 1 -
src/plugins/SSLPlugin/ssl_plugin.c | 1 -
src/plugins/TransparentPlugin/transparent_plugin.c | 1 -
src/plugins/WindowsAuthentication/WindowsAuthentication.c | 1 -
src/plugins/utf8tocp1251/utf8tocp1251.c | 1 -
src/pop3p.c | 1 -
src/proxy.c | 1 -
src/proxy.h | 1 -
src/proxymain.c | 1 -
src/smtpp.c | 1 -
src/sockmap.c | 1 -
src/socks.c | 1 -
src/stringtable.c | 1 -
src/tcppm.c | 1 -
src/udppm.c | 1 -
src/version.h | 2 +-
src/webadmin.c | 1 -
61 files changed, 1 insertion(+), 68 deletions(-)
diff --git a/Makefile.Linux b/Makefile.Linux
index 9754446..6836464 100644
--- a/Makefile.Linux
+++ b/Makefile.Linux
@@ -1,4 +1,3 @@
-#$Id: Makefile.Linux,v 1.24 2014-04-07 20:34:57 vlad Exp $
#
# 3 proxy Makefile for GCC/Linux/Cygwin
#
diff --git a/Makefile.Solaris b/Makefile.Solaris
index 34c89ac..31644a7 100644
--- a/Makefile.Solaris
+++ b/Makefile.Solaris
@@ -1,4 +1,3 @@
-#$Id: Makefile.Solaris,v 1.18 2008/09/30 13:58:44 vlad Exp $
#
# 3 proxy Makefile for Solaris/SunCC
#
diff --git a/Makefile.Solaris-gcc b/Makefile.Solaris-gcc
index ac8e730..393d3ce 100644
--- a/Makefile.Solaris-gcc
+++ b/Makefile.Solaris-gcc
@@ -1,4 +1,3 @@
-#$Id: Makefile.Solaris-gcc,v 1.14 2008/09/30 13:58:44 vlad Exp $
#
# 3 proxy Makefile for Solaris/gcc
#
diff --git a/Makefile.ccc b/Makefile.ccc
index d350619..78bdf27 100644
--- a/Makefile.ccc
+++ b/Makefile.ccc
@@ -1,4 +1,3 @@
-#$Id: Makefile.ccc,v 1.12 2007/04/10 16:29:25 vlad Exp $
#
# 3 proxy Makefile for Compaq C Compiler
#
diff --git a/Makefile.debug b/Makefile.debug
index 99259ff..f9aabc5 100644
--- a/Makefile.debug
+++ b/Makefile.debug
@@ -1,4 +1,3 @@
-#$Id: Makefile.debug,v 1.7 2007/04/18 05:33:19 vlad Exp $
#
# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake)
#
diff --git a/Makefile.inc b/Makefile.inc
index d3bb6eb..4e088ee 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -1,4 +1,3 @@
-#$Id: Makefile.inc,v 1.3 2007/01/23 16:00:26 vlad Exp $
#
# 3 proxy common Makefile
#
diff --git a/Makefile.intl b/Makefile.intl
index 8d50fce..56ab7d9 100644
--- a/Makefile.intl
+++ b/Makefile.intl
@@ -1,4 +1,3 @@
-#$Id: Makefile.intl,v 1.8 2007/07/21 18:47:00 vlad Exp $
#
# 3 proxy Makefile for Intel C compiler for Windows (for both make and nmake)
#
diff --git a/Makefile.msvc b/Makefile.msvc
index 263c4af..9e27291 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -1,4 +1,3 @@
-#$Id: Makefile.msvc,v 1.17 2010-11-11 14:44:11 v.dubrovin Exp $
#
# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake)
#
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index 59d64a3..d6dced7 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -1,4 +1,3 @@
-#$Id: Makefile.msvc64,v 1.14 2007/07/21 18:47:05 vlad Exp $
#
# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake)
#
diff --git a/Makefile.msvcCE b/Makefile.msvcCE
index 8dc70a7..1e4056c 100644
--- a/Makefile.msvcCE
+++ b/Makefile.msvcCE
@@ -1,4 +1,3 @@
-#$Id: Makefile.msvc,v 1.14 2007/07/21 18:47:02 vlad Exp $
#
# 3 proxy Makefile for Microsoft Visual C compiler (for both make and nmake)
#
diff --git a/Makefile.unix b/Makefile.unix
index 1be4eba..0a4f458 100644
--- a/Makefile.unix
+++ b/Makefile.unix
@@ -1,4 +1,3 @@
-#$Id: Makefile.unix,v 1.20 2007/04/10 16:29:25 vlad Exp $
#
# 3 proxy Makefile for GCC/Unix
#
diff --git a/Makefile.win b/Makefile.win
index 7a1870d..edcb889 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -1,4 +1,3 @@
-#$Id: Makefile.win,v 1.9 2007/08/20 15:26:27 vlad Exp $
#
# 3 proxy Makefile for GCC/windows
#
diff --git a/Makefile.winCE b/Makefile.winCE
index 15d166a..0d5213d 100644
--- a/Makefile.winCE
+++ b/Makefile.winCE
@@ -1,4 +1,3 @@
-#$Id: Makefile.win,v 1.9 2007/08/20 15:26:27 vlad Exp $
#
# 3 proxy Makefile for GCC/windows
#
diff --git a/Release.notes b/Release.notes
index 3171f1f..e1bb2eb 100644
--- a/Release.notes
+++ b/Release.notes
@@ -104,4 +104,3 @@
- Addon antiviral, HTTP cache filters modules, authentication
modules for different protocols (RADIUS, PAM etc).
-$Id: Release.notes,v 1.9 2014-04-07 21:24:42 vlad Exp $
\ No newline at end of file
diff --git a/cfg/0.scenario.txt b/cfg/0.scenario.txt
index 4b89b41..0713f6d 100644
--- a/cfg/0.scenario.txt
+++ b/cfg/0.scenario.txt
@@ -15,4 +15,3 @@ on the provider's Web server.
Provider has proxy server 10.1.2.5. Traffic from proxy server is not free, but
is cheaper than traffic from non-free networks.
-$Id: 0.scenario.txt,v 1.2 2004/07/23 13:33:39 vlad Exp $
\ No newline at end of file
diff --git a/cfg/3proxy.cfg.sample b/cfg/3proxy.cfg.sample
index ed63303..b8063c2 100644
--- a/cfg/3proxy.cfg.sample
+++ b/cfg/3proxy.cfg.sample
@@ -199,4 +199,3 @@ admin
# now we needn't any root rights. We can chroot and setgid/setuid.
-###$Id: 3proxy.cfg.sample,v 1.7 2006/11/18 14:37:06 vlad Exp $#######
diff --git a/cfg/counters.sample b/cfg/counters.sample
index 03e537e..185d7a2 100644
--- a/cfg/counters.sample
+++ b/cfg/counters.sample
@@ -50,4 +50,3 @@ internal 127.0.0.1
allow user1
admin
-#$Id: counters.sample,v 1.2 2004/07/23 13:33:39 vlad Exp $
\ No newline at end of file
diff --git a/copying b/copying
index 6cf2b65..10d4184 100644
--- a/copying
+++ b/copying
@@ -59,4 +59,3 @@ terms of compatible license, including:
http://www.gnu.org/licenses/lgpl.txt
-$Id: License,v 1.3 2007/04/05 11:59:47 vlad Exp $
diff --git a/doc/html/faqe.html b/doc/html/faqe.html
index a4ea57c..581100e 100644
--- a/doc/html/faqe.html
+++ b/doc/html/faqe.html
@@ -153,6 +153,3 @@ A: First, I'm not programmer. Second, 3proxy was 'proof of concept' in reply for
Q: Why do you use insecure strcpy, sprintf, etc?
A: Why not? I try to use insecure function in secure manner. You're welcome to look for vulnerabilities.
-
-$Id: faqe.html,v 1.10 2007/07/31 08:42:38 vlad Exp $
-
\ No newline at end of file
diff --git a/doc/html/faqr.html b/doc/html/faqr.html
index 0e85252..c377706 100644
--- a/doc/html/faqr.html
+++ b/doc/html/faqr.html
@@ -278,6 +278,3 @@
пугать.
-
-$Id: faqr.html,v 1.28 2007/09/25 09:47:13 vlad Exp $
-
\ No newline at end of file
diff --git a/doc/html/howtoe.html b/doc/html/howtoe.html
index a8a0d33..438aebd 100644
--- a/doc/html/howtoe.html
+++ b/doc/html/howtoe.html
@@ -832,4 +832,3 @@ You can control 3proxy service via "Services" administration ot via "net" comman
-$Id: howtoe.html,v 1.41 2009/02/02 10:04:49 vlad Exp $
\ No newline at end of file
diff --git a/doc/html/howtor.html b/doc/html/howtor.html
index 4c75e23..788bcd5 100644
--- a/doc/html/howtor.html
+++ b/doc/html/howtor.html
@@ -1026,6 +1026,3 @@
Только не пытайтесь задавать какие-либо вопросы, если вы просто не поняли этот
HowTo.
-
-$Id: howtor.html,v 1.40 2010/01/21 13:34:20 v.dubrovin Exp $
-
\ No newline at end of file
diff --git a/doc/html/securityen.html b/doc/html/securityen.html
index 4a3db7e..1482bb3 100644
--- a/doc/html/securityen.html
+++ b/doc/html/securityen.html
@@ -34,4 +34,3 @@ ODBC logging to prevent SQL and log record injections.
-
$Id: securityen.html,v 1.4 2007/05/07 09:16:51 vlad Exp $
\ No newline at end of file
diff --git a/doc/ru/example1.txt b/doc/ru/example1.txt
index 4f7df15..7c426a8 100644
--- a/doc/ru/example1.txt
+++ b/doc/ru/example1.txt
@@ -96,4 +96,3 @@ setuid 65534
рПУМЕ ФПЗП ЛБЛ НЩ УПЪДБМЙ ЛПОЖЙЗХТБГЙПООЩК ЖБКМ УЕТЧЕТБ, ЪБРХУЛБЕН 3proxy ЛПНБОДПК:
/usr/local/3proxy/3proxy /usr/local/3proxy/3proxy.cfg
-$Id: example1.txt,v 1.7 2007/04/20 19:58:42 vlad Exp $
diff --git a/doc/ru/iodbc.txt b/doc/ru/iodbc.txt
index 7397978..627bb3e 100644
--- a/doc/ru/iodbc.txt
+++ b/doc/ru/iodbc.txt
@@ -98,4 +98,3 @@ LIBS = -L /usr/local/lib -lodbc
make clean
make -f Makefile.unix
-$Id: iodbc.txt,v 1.3 2006/02/08 17:59:07 vlad Exp $
\ No newline at end of file
diff --git a/src/3proxy.c b/src/3proxy.c
index 5909b2a..9497779 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: 3proxy.c,v 1.132 2011-08-15 19:52:26 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/Makefile.inc b/src/Makefile.inc
index f134c9f..a3422ef 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -1,4 +1,3 @@
-#$Id: Makefile.inc,v 1.19 2008/12/10 13:12:10 vlad Exp $
#
# 3 proxy common Makefile
#
diff --git a/src/auth.c b/src/auth.c
index 2c2e5eb..3608ef4 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: auth.c,v 1.108 2012-04-11 23:01:18 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/base64.c b/src/base64.c
index 734daec..90e2da0 100644
--- a/src/base64.c
+++ b/src/base64.c
@@ -3,7 +3,6 @@
*
* please read License Agreement
*
- * $Id: base64.c,v 1.6 2008/01/08 21:46:36 vlad Exp $
*/
#include
diff --git a/src/common.c b/src/common.c
index 1a0006f..137da1f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: common.c,v 1.94 2014-04-07 21:24:45 vlad Exp $
*/
diff --git a/src/countersutil.c b/src/countersutil.c
index 2d38f39..543fb3e 100644
--- a/src/countersutil.c
+++ b/src/countersutil.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: common.c,v 1.81 2007/12/18 09:26:44 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/datatypes.c b/src/datatypes.c
index 4c51ed9..640a05c 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -3,7 +3,6 @@
*
* please read License Agreement
*
- * $Id: datatypes.c,v 1.28 2009/08/14 09:56:21 v.dubrovin Exp $
*/
#include "proxy.h"
diff --git a/src/dighosts.c b/src/dighosts.c
index 0db6a71..5f4af9b 100644
--- a/src/dighosts.c
+++ b/src/dighosts.c
@@ -3,7 +3,6 @@
*
* please read License Agreement
*
- * $Id: dighosts.c,v 1.10 2009/10/06 08:38:00 v.dubrovin Exp $
*/
#include "proxy.h"
diff --git a/src/dnspr.c b/src/dnspr.c
index db7e9f1..b8caeaa 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: dnspr.c,v 1.22 2009/09/17 12:21:05 v.dubrovin Exp $
*/
#include "proxy.h"
diff --git a/src/ftp.c b/src/ftp.c
index 4f763bc..734fa93 100644
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -3,7 +3,6 @@
*
* please read License Agreement
*
- * $Id: ftp.c,v 1.34 2009/09/17 12:21:06 v.dubrovin Exp $
*/
#include "proxy.h"
diff --git a/src/ftppr.c b/src/ftppr.c
index 597b458..40d1297 100644
--- a/src/ftppr.c
+++ b/src/ftppr.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: ftppr.c,v 1.45 2011-08-15 19:52:27 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/icqpr.c b/src/icqpr.c
index 6aa5760..74ac8e7 100644
--- a/src/icqpr.c
+++ b/src/icqpr.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: icqpr.c,v 1.30 2012-04-11 23:01:19 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/libs/md4.c b/src/libs/md4.c
index b128f07..2e53711 100644
--- a/src/libs/md4.c
+++ b/src/libs/md4.c
@@ -1,8 +1,6 @@
/*
* md4c.c MD4 message-digest algorithm
*
- * Version: $Id: md4.c,v 1.1 2010-11-11 11:32:32 v.dubrovin Exp $
- *
* License to copy and use this software is granted provided that it
* is identified as the "RSA Data Security, Inc. MD4 Message-Digest
* Algorithm" in all material mentioning or referencing this software
diff --git a/src/msnpr.c b/src/msnpr.c
index 749847e..92ea54c 100644
--- a/src/msnpr.c
+++ b/src/msnpr.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: msnpr.c,v 1.3 2012-04-11 23:01:19 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/myalloc.c b/src/myalloc.c
index a44a48d..23fa944 100644
--- a/src/myalloc.c
+++ b/src/myalloc.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: myalloc.c,v 1.5 2008/01/08 21:46:38 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/mycrypt.c b/src/mycrypt.c
index 7cabf38..4381410 100644
--- a/src/mycrypt.c
+++ b/src/mycrypt.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: mycrypt.c,v 1.8 2008/01/08 21:46:38 vlad Exp $
*/
#include "libs/md5.h"
#include "libs/md4.h"
diff --git a/src/ntlm.c b/src/ntlm.c
index c13f62c..bde76f8 100644
--- a/src/ntlm.c
+++ b/src/ntlm.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: ntlm.c,v 1.9 2008/01/08 21:46:38 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/plugins.c b/src/plugins.c
index 098aab7..d9981ed 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: ntlm.c,v 1.8 2007/12/27 13:20:04 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/plugins/FilePlugin/FilePlugin.c b/src/plugins/FilePlugin/FilePlugin.c
index 2558d61..79354c5 100644
--- a/src/plugins/FilePlugin/FilePlugin.c
+++ b/src/plugins/FilePlugin/FilePlugin.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: FilePlugin.c,v 1.8 2012-04-11 23:01:22 vlad Exp $
*/
#include "../../structures.h"
diff --git a/src/plugins/PCREPlugin/pcre_plugin.c b/src/plugins/PCREPlugin/pcre_plugin.c
index 05515dc..e2ca258 100644
--- a/src/plugins/PCREPlugin/pcre_plugin.c
+++ b/src/plugins/PCREPlugin/pcre_plugin.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: pcre_plugin.c,v 1.11 2012-04-25 18:17:22 vlad Exp $
*/
#include "../../structures.h"
diff --git a/src/plugins/SSLPlugin/ssl_plugin.c b/src/plugins/SSLPlugin/ssl_plugin.c
index ffdee78..3889f1e 100644
--- a/src/plugins/SSLPlugin/ssl_plugin.c
+++ b/src/plugins/SSLPlugin/ssl_plugin.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: ssl_plugin.c,v 1.9 2010-11-11 11:32:33 v.dubrovin Exp $
*/
#include "../../structures.h"
diff --git a/src/plugins/TransparentPlugin/transparent_plugin.c b/src/plugins/TransparentPlugin/transparent_plugin.c
index d8fcabc..157b0bc 100644
--- a/src/plugins/TransparentPlugin/transparent_plugin.c
+++ b/src/plugins/TransparentPlugin/transparent_plugin.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: transparent_plugin.c,v 1.9 2010-11-11 11:32:33 v.dubrovin Exp $
*/
#include
diff --git a/src/plugins/WindowsAuthentication/WindowsAuthentication.c b/src/plugins/WindowsAuthentication/WindowsAuthentication.c
index e530e75..312fee4 100644
--- a/src/plugins/WindowsAuthentication/WindowsAuthentication.c
+++ b/src/plugins/WindowsAuthentication/WindowsAuthentication.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: WindowsAuthentication.c,v 1.12 2011-04-12 13:05:58 v.dubrovin Exp $
*/
#include "../../structures.h"
diff --git a/src/plugins/utf8tocp1251/utf8tocp1251.c b/src/plugins/utf8tocp1251/utf8tocp1251.c
index 3bdb7d2..4294065 100644
--- a/src/plugins/utf8tocp1251/utf8tocp1251.c
+++ b/src/plugins/utf8tocp1251/utf8tocp1251.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: utf8tocp1251.c,v 1.9 2009/09/03 05:32:56 v.dubrovin Exp $
*/
#include "../../structures.h"
diff --git a/src/pop3p.c b/src/pop3p.c
index b76a77a..46b4480 100644
--- a/src/pop3p.c
+++ b/src/pop3p.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: pop3p.c,v 1.17 2008/01/08 21:46:38 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/proxy.c b/src/proxy.c
index 1c073b8..e48f436 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: proxy.c,v 1.107 2014-04-07 20:35:07 vlad Exp $
*/
diff --git a/src/proxy.h b/src/proxy.h
index 9e13999..0341bdc 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: proxy.h,v 1.92 2012-04-11 23:01:20 vlad Exp $
*/
#define COPYRIGHT "(c)2000-2009 3APA3A, Vladimir Dubrovin & 3proxy.ru\n"\
diff --git a/src/proxymain.c b/src/proxymain.c
index 231d946..0306b99 100644
--- a/src/proxymain.c
+++ b/src/proxymain.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: proxymain.c,v 1.85 2012-04-15 22:46:09 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/smtpp.c b/src/smtpp.c
index 96b7a8c..7265a8e 100644
--- a/src/smtpp.c
+++ b/src/smtpp.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: smtpp.c,v 1.13 2011-06-10 20:48:46 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/sockmap.c b/src/sockmap.c
index 1479a48..e5203f5 100644
--- a/src/sockmap.c
+++ b/src/sockmap.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: sockmap.c,v 1.64 2014-04-07 20:35:09 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/socks.c b/src/socks.c
index 6b68557..48f48b4 100644
--- a/src/socks.c
+++ b/src/socks.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: socks.c,v 1.34 2009/09/17 12:21:09 v.dubrovin Exp $
*/
#include "proxy.h"
diff --git a/src/stringtable.c b/src/stringtable.c
index be59b75..a8bef1c 100644
--- a/src/stringtable.c
+++ b/src/stringtable.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: stringtable.c,v 1.16 2009/07/20 18:16:03 v.dubrovin Exp $
*/
#include
diff --git a/src/tcppm.c b/src/tcppm.c
index d6e237c..62cdf56 100644
--- a/src/tcppm.c
+++ b/src/tcppm.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: tcppm.c,v 1.15 2012-02-05 22:29:02 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/udppm.c b/src/udppm.c
index 9be913a..eb9164b 100644
--- a/src/udppm.c
+++ b/src/udppm.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: udppm.c,v 1.27 2012-02-05 22:29:03 vlad Exp $
*/
#include "proxy.h"
diff --git a/src/version.h b/src/version.h
index 7e397da..1362b4e 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141213225630"
+#define BUILDDATE "141213231838"
diff --git a/src/webadmin.c b/src/webadmin.c
index 8a41bd6..22aa6d2 100644
--- a/src/webadmin.c
+++ b/src/webadmin.c
@@ -4,7 +4,6 @@
please read License Agreement
- $Id: webadmin.c,v 1.44 2014-04-07 20:35:12 vlad Exp $
*/
#include "proxy.h"
From 7fc43e3fbd536f391438fc248d523e4bdae2d31d Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 14 Dec 2014 00:46:03 +0300
Subject: [PATCH 052/122] add some entropy to DNS hashtable
---
src/3proxy.c | 16 +++++++++++++++-
src/auth.c | 42 +++++++++++++++++++++++++++++++++---------
src/proxy.h | 3 +--
src/structures.h | 4 +++-
src/version.h | 2 +-
5 files changed, 53 insertions(+), 14 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 9497779..f07b8db 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1047,7 +1047,21 @@ static int h_nscache(int argc, unsigned char **argv){
fprintf(stderr, "Invalid NS cache size: %d\n", res);
return 1;
}
- if(initdnshashtable((unsigned)res)){
+ if(inithashtable(&dns_table, (unsigned)res)){
+ fprintf(stderr, "Failed to initialize NS cache\n");
+ return 2;
+ }
+ return 0;
+}
+static int h_nscache6(int argc, unsigned char **argv){
+ int res;
+
+ res = atoi((char *)argv[1]);
+ if(res < 256) {
+ fprintf(stderr, "Invalid NS cache size: %d\n", res);
+ return 1;
+ }
+ if(inithashtable(&dns6_table, (unsigned)res)){
fprintf(stderr, "Failed to initialize NS cache\n");
return 2;
}
diff --git a/src/auth.c b/src/auth.c
index 3608ef4..34596ef 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -459,6 +459,7 @@ unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nb
sec = tv.tv_sec;
msec = tv.tv_usec;
#endif
+
if(!nbytesin && !nbytesout) return 0;
pthread_mutex_lock(&bandlim_mutex);
if(param->srv->version != conf.paused){
@@ -829,15 +830,19 @@ struct auth authfuncs[] = {
-struct hashtable dns_table = {0, NULL, NULL, NULL};
+struct hashtable dns_table = {0, {0}, NULL, NULL, NULL};
+struct hashtable dns6_table = {0, {0}, NULL, NULL, NULL};
-void nametohash(const unsigned char * name, unsigned char *hash){
- unsigned i, j;
- memset(hash, 0, sizeof(unsigned)*4);
- for(i=0, j=0; name[j]; j++){
- hash[i] += toupper(name[j]) - 32;
- if(++i == sizeof(unsigned)*4) i = 0;
+void nametohash(const unsigned char * name, unsigned char *hash, unsigned char *rnd){
+ unsigned i, j, k;
+ memcpy(hash, 0, sizeof(unsigned)*4);
+ for(i=0, j=0, k=0; name[j]; j++){
+ hash[i] += (toupper(name[j]) - 32)+rnd[((toupper(name[j]))*29277+rnd[(k+j+i)%16]+k+j+i)%16];
+ if(++i == sizeof(unsigned)*4) {
+ i = 0;
+ k++;
+ }
}
}
@@ -867,6 +872,20 @@ void destroyhashtable(struct hashtable *ht){
int inithashtable(struct hashtable *ht, unsigned nhashsize){
unsigned i;
+ clock_t c;
+
+
+#ifdef _WIN32
+ struct timeb tb;
+
+ ftime(&tb);
+
+#else
+ struct timeval tb;
+ struct timezone tz;
+ gettimeofday(&tb, &tz);
+#endif
+ c = clock();
if(nhashsize<4) return 1;
if(ht->hashtable){
@@ -887,8 +906,13 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
return 3;
}
ht->hashsize = nhashsize;
+ ht->rnd[0] = myrand(&tb, sizeof(tb));
+ ht->rnd[1] = myrand(ht->hashtable, sizeof(ht->hashtable));
+ ht->rnd[2] = myrand(&c, sizeof(c));
+ ht->rnd[3] = myrand(ht->hashvalues,sizeof(ht->hashvalues));
memset(ht->hashtable, 0, (ht->hashsize>>2) * sizeof(struct hashentry *));
memset(ht->hashvalues, 0, ht->hashsize * sizeof(struct hashentry));
+
for(i = 0; i< (ht->hashsize - 1); i++) {
(ht->hashvalues + i)->next = ht->hashvalues + i + 1;
}
@@ -908,7 +932,7 @@ void hashadd(struct hashtable *ht, const unsigned char* name, unsigned long valu
pthread_mutex_lock(&hash_mutex);
he = ht->hashempty;
ht->hashempty = ht->hashempty->next;
- nametohash(name, he->hash);
+ nametohash(name, he->hash, (unsigned char *)ht->rnd);
he->value = value;
he->expires = expires;
he->next = NULL;
@@ -934,7 +958,7 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
if(!ht->hashtable || !name) return 0;
time(&t);
- nametohash(name, hash);
+ nametohash(name, hash, (unsigned char *)ht->rnd);
index = hashindex(ht, hash);
pthread_mutex_lock(&hash_mutex);
for(hep = ht->hashtable + index; (he = *hep)!=NULL; ){
diff --git a/src/proxy.h b/src/proxy.h
index 0341bdc..4558546 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -189,7 +189,7 @@ unsigned long getip(unsigned char *name);
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
unsigned long myresolver(unsigned char *);
unsigned long fakeresolver (unsigned char *name);
-int initdnshashtable(unsigned nhashsize);
+int inithashtable(struct hashtable *hashtable, unsigned nhashsize);
void freeparam(struct clientparam * param);
void clearstat(struct clientparam * param);
void dumpcounters(struct trafcount *tl, int counterd);
@@ -308,7 +308,6 @@ extern pthread_mutex_t pwl_mutex;
extern pthread_mutex_t odbc_mutex;
#endif
-extern struct hashtable dns_table;
extern struct datatype datatypes[64];
extern struct commands commandhandlers[];
diff --git a/src/structures.h b/src/structures.h
index 2d8f046..aaf4322 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -583,19 +583,21 @@ struct child {
struct hashentry {
unsigned char hash[sizeof(unsigned)*4];
- unsigned long value;
+ unsigned value;
time_t expires;
struct hashentry *next;
};
struct hashtable {
unsigned hashsize;
+ unsigned rnd[4];
struct hashentry ** hashtable;
struct hashentry * hashvalues;
struct hashentry * hashempty;
};
extern struct hashtable dns_table;
+extern struct hashtable dns6_table;
struct sockfuncs {
#ifdef _WIN32
diff --git a/src/version.h b/src/version.h
index 1362b4e..d0ce229 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141213231838"
+#define BUILDDATE "141214004331"
From 5844e165b5a799a3fb89f3ac7d45a6701ce71dbe Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 14 Dec 2014 05:33:08 +0300
Subject: [PATCH 053/122] nscache6 command support + nsrecord with IPv6
nscache6 - new command for IPv6 addresses cache
nsrecord supports IPv6 addresses
dnsauth should work with IPv6 servers and clients
+ caching is now more accurate
---
src/3proxy.c | 67 ++++++++++++---------
src/auth.c | 151 ++++++++++++++++++++++++++++-------------------
src/common.c | 20 ++++++-
src/dighosts.c | 3 +-
src/dnspr.c | 25 ++++----
src/plugins.c | 4 +-
src/proxy.h | 8 +--
src/structures.h | 8 +--
src/version.h | 2 +-
9 files changed, 168 insertions(+), 120 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index f07b8db..8f7a10d 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -1069,7 +1069,15 @@ static int h_nscache6(int argc, unsigned char **argv){
}
static int h_nsrecord(int argc, unsigned char **argv){
- hashadd(&dns_table, argv[1], getip(argv[2]), (time_t)0xffffffff);
+#ifndef NOIPV6
+ struct sockaddr_in6 sa;
+#else
+ struct sockaddr_in sa;
+#endif
+ memset(&sa, 0, sizeof(sa));
+ if(!getip46(46, argv[2], (struct sockaddr *)&sa)) return 1;
+
+ hashadd(*SAFAMILY(&sa)==AF_INET6?&dns6_table:&dns_table, argv[1], SAADDR(&sa), (time_t)0xffffffff);
return 0;
}
@@ -1819,34 +1827,35 @@ struct commands commandhandlers[]={
{commandhandlers+26, "nserver", h_nserver, 2, 2},
{commandhandlers+27, "fakeresolve", h_fakeresolve, 1, 1},
{commandhandlers+28, "nscache", h_nscache, 2, 2},
- {commandhandlers+29, "nsrecord", h_nsrecord, 3, 3},
- {commandhandlers+30, "dialer", h_dialer, 2, 2},
- {commandhandlers+31, "system", h_system, 2, 2},
- {commandhandlers+32, "pidfile", h_pidfile, 2, 2},
- {commandhandlers+33, "monitor", h_monitor, 2, 2},
- {commandhandlers+34, "parent", h_parent, 5, 0},
- {commandhandlers+35, "allow", h_ace, 1, 0},
- {commandhandlers+36, "deny", h_ace, 1, 0},
- {commandhandlers+37, "redirect", h_ace, 3, 0},
- {commandhandlers+38, "bandlimin", h_ace, 2, 0},
- {commandhandlers+39, "bandlimout", h_ace, 2, 0},
- {commandhandlers+40, "nobandlimin", h_ace, 1, 0},
- {commandhandlers+41, "nobandlimout", h_ace, 1, 0},
- {commandhandlers+42, "countin", h_ace, 4, 0},
- {commandhandlers+43, "nocountin", h_ace, 1, 0},
- {commandhandlers+44, "countout", h_ace, 4, 0},
- {commandhandlers+45, "nocountout", h_ace, 1, 0},
- {commandhandlers+46, "plugin", h_plugin, 3, 0},
- {commandhandlers+47, "logdump", h_logdump, 2, 3},
- {commandhandlers+48, "filtermaxsize", h_filtermaxsize, 2, 2},
- {commandhandlers+49, "nolog", h_nolog, 1, 1},
- {commandhandlers+50, "weight", h_nolog, 2, 2},
- {commandhandlers+51, "authcache", h_authcache, 2, 3},
- {commandhandlers+52, "smtpp", h_proxy, 1, 0},
- {commandhandlers+53, "icqpr", h_proxy, 4, 0},
- {commandhandlers+54, "msnpr", h_proxy, 4, 0},
- {commandhandlers+55, "delimchar",h_delimchar, 2, 2},
- {commandhandlers+56, "authnserver", h_authnserver, 2, 2},
+ {commandhandlers+29, "nscache6", h_nscache6, 2, 2},
+ {commandhandlers+30, "nsrecord", h_nsrecord, 3, 3},
+ {commandhandlers+31, "dialer", h_dialer, 2, 2},
+ {commandhandlers+32, "system", h_system, 2, 2},
+ {commandhandlers+33, "pidfile", h_pidfile, 2, 2},
+ {commandhandlers+34, "monitor", h_monitor, 2, 2},
+ {commandhandlers+35, "parent", h_parent, 5, 0},
+ {commandhandlers+36, "allow", h_ace, 1, 0},
+ {commandhandlers+37, "deny", h_ace, 1, 0},
+ {commandhandlers+38, "redirect", h_ace, 3, 0},
+ {commandhandlers+39, "bandlimin", h_ace, 2, 0},
+ {commandhandlers+40, "bandlimout", h_ace, 2, 0},
+ {commandhandlers+41, "nobandlimin", h_ace, 1, 0},
+ {commandhandlers+42, "nobandlimout", h_ace, 1, 0},
+ {commandhandlers+43, "countin", h_ace, 4, 0},
+ {commandhandlers+44, "nocountin", h_ace, 1, 0},
+ {commandhandlers+45, "countout", h_ace, 4, 0},
+ {commandhandlers+46, "nocountout", h_ace, 1, 0},
+ {commandhandlers+47, "plugin", h_plugin, 3, 0},
+ {commandhandlers+48, "logdump", h_logdump, 2, 3},
+ {commandhandlers+49, "filtermaxsize", h_filtermaxsize, 2, 2},
+ {commandhandlers+50, "nolog", h_nolog, 1, 1},
+ {commandhandlers+51, "weight", h_nolog, 2, 2},
+ {commandhandlers+52, "authcache", h_authcache, 2, 3},
+ {commandhandlers+53, "smtpp", h_proxy, 1, 0},
+ {commandhandlers+54, "icqpr", h_proxy, 4, 0},
+ {commandhandlers+55, "msnpr", h_proxy, 4, 0},
+ {commandhandlers+56, "delimchar",h_delimchar, 2, 2},
+ {commandhandlers+57, "authnserver", h_authnserver, 2, 2},
{specificcommands, "", h_noop, 1, 0}
};
diff --git a/src/auth.c b/src/auth.c
index 34596ef..155517d 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -733,24 +733,36 @@ int userauth(struct clientparam * param){
}
int dnsauth(struct clientparam * param){
- char buf[32];
+ char buf[128];
+ char addr[16];
+ char dig[]="0123456789abcdef";
-/* FIX IT */
- unsigned u ;
+ unsigned u;
+ int i;
- if(*SAFAMILY(¶m->sincr)!=AF_INET) return 6;
- u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
+ if(*SAFAMILY(¶m->sincr)!=AF_INET){
+ char *s = buf;
+ for(i=15; i>=0; i--){
+ unsigned char c=((unsigned char *)SAADDR(¶m->sincr))[i];
+ *s++ = dig[(c&0xf)];
+ *s++ = '.';
+ *s++ = dig[(c>>4)];
+ *s++ = '.';
+ }
+ sprintf(s, "ip6.arpa");
+ }
+ else {
+ u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
- sprintf(buf, "%u.%u.%u.%u.in-addr.arpa",
-
-
- ((u&0x000000FF)),
- ((u&0x0000FF00)>>8),
- ((u&0x00FF0000)>>16),
- ((u&0xFF000000)>>24));
+ sprintf(buf, "%u.%u.%u.%u.in-addr.arpa",
+ ((u&0x000000FF)),
+ ((u&0x0000FF00)>>8),
+ ((u&0x00FF0000)>>16),
+ ((u&0xFF000000)>>24));
-/* FIX IT */
- if(*(unsigned long *)SAADDR(¶m->sincr) != udpresolve(buf, NULL, param, 1)) return 6;
+ }
+ if(!udpresolve(*SAFAMILY(¶m->sincr), buf, addr, NULL, param, 1)) return 6;
+ if(!memcmp(SAADDR(¶m->sincr), addr, SAADDRLEN(¶m->sincr))) return 6;
return param->username? 0:4;
}
@@ -830,13 +842,13 @@ struct auth authfuncs[] = {
-struct hashtable dns_table = {0, {0}, NULL, NULL, NULL};
-struct hashtable dns6_table = {0, {0}, NULL, NULL, NULL};
+struct hashtable dns_table = {0, 4, {0}, NULL, NULL, NULL};
+struct hashtable dns6_table = {0, 16, {0}, NULL, NULL, NULL};
void nametohash(const unsigned char * name, unsigned char *hash, unsigned char *rnd){
unsigned i, j, k;
- memcpy(hash, 0, sizeof(unsigned)*4);
+ memcpy(hash, rnd, sizeof(unsigned)*4);
for(i=0, j=0, k=0; name[j]; j++){
hash[i] += (toupper(name[j]) - 32)+rnd[((toupper(name[j]))*29277+rnd[(k+j+i)%16]+k+j+i)%16];
if(++i == sizeof(unsigned)*4) {
@@ -870,6 +882,7 @@ void destroyhashtable(struct hashtable *ht){
pthread_mutex_unlock(&hash_mutex);
}
+#define hvalue(i) ((struct hashentry *)((char *)ht->hashvalues + i*(sizeof(struct hashentry) + ht->recsize - 4)))
int inithashtable(struct hashtable *ht, unsigned nhashsize){
unsigned i;
clock_t c;
@@ -897,10 +910,10 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
ht->hashvalues = NULL;
}
ht->hashsize = 0;
- if(!(ht->hashtable = myalloc((nhashsize>>2) * sizeof(struct hashentry *)))){
+ if(!(ht->hashtable = myalloc((nhashsize>>2) * sizeof(struct hashentry *)))){
return 2;
}
- if(!(ht->hashvalues = myalloc(nhashsize * sizeof(struct hashentry)))){
+ if(!(ht->hashvalues = myalloc(nhashsize * (sizeof(struct hashentry) + (ht->recsize-4))))){
myfree(ht->hashtable);
ht->hashtable = NULL;
return 3;
@@ -911,58 +924,57 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
ht->rnd[2] = myrand(&c, sizeof(c));
ht->rnd[3] = myrand(ht->hashvalues,sizeof(ht->hashvalues));
memset(ht->hashtable, 0, (ht->hashsize>>2) * sizeof(struct hashentry *));
- memset(ht->hashvalues, 0, ht->hashsize * sizeof(struct hashentry));
+ memset(ht->hashvalues, 0, ht->hashsize * (sizeof(struct hashentry) + ht->recsize -4));
for(i = 0; i< (ht->hashsize - 1); i++) {
- (ht->hashvalues + i)->next = ht->hashvalues + i + 1;
+ hvalue(i)->next = hvalue(i+1);
}
ht->hashempty = ht->hashvalues;
return 0;
}
-int initdnshashtable(unsigned nhashsize){
- return inithashtable(&dns_table, nhashsize);
-}
+void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires){
+ struct hashentry * hen, *he;
+ struct hashentry ** hep;
-void hashadd(struct hashtable *ht, const unsigned char* name, unsigned long value, time_t expires){
- struct hashentry * he;
unsigned index;
if(!value||!name||!ht->hashtable||!ht->hashempty) return;
pthread_mutex_lock(&hash_mutex);
- he = ht->hashempty;
+ hen = ht->hashempty;
ht->hashempty = ht->hashempty->next;
- nametohash(name, he->hash, (unsigned char *)ht->rnd);
- he->value = value;
- he->expires = expires;
- he->next = NULL;
- index = hashindex(ht, he->hash);
- if(!ht->hashtable[index] || !memcmp(he->hash, ht->hashtable[index]->hash, sizeof(he->hash))){
- he->next = ht->hashtable[index];
- ht->hashtable[index] = he;
- }
- else {
- memset(he, 0, sizeof(struct hashentry));
- he->next = ht->hashempty;
- ht->hashempty = he;
+ nametohash(name, hen->hash, (unsigned char *)ht->rnd);
+ memcpy(hen->value, value, ht->recsize);
+ hen->expires = expires;
+ hen->next = NULL;
+ index = hashindex(ht, hen->hash);
+
+ for(hep = ht->hashtable + index; (he = *hep)!=NULL; ){
+ if(he->expires < conf.time || !memcmp(hen->hash, he->hash, sizeof(he->hash))) {
+ (*hep) = he->next;
+ he->expires = 0;
+ he->next = ht->hashempty;
+ ht->hashempty = he;
+ }
+ else hep=&(he->next);
}
+ hen->next = ht->hashtable[index];
+ ht->hashtable[index] = hen;
pthread_mutex_unlock(&hash_mutex);
}
-unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsigned *ttl){
+unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsigned char* value, unsigned *ttl){
unsigned char hash[sizeof(unsigned)*4];
struct hashentry ** hep;
struct hashentry *he;
unsigned index;
- time_t t;
if(!ht->hashtable || !name) return 0;
- time(&t);
nametohash(name, hash, (unsigned char *)ht->rnd);
index = hashindex(ht, hash);
pthread_mutex_lock(&hash_mutex);
for(hep = ht->hashtable + index; (he = *hep)!=NULL; ){
- if((unsigned long)he->expires < (unsigned long)t) {
+ if(he->expires < conf.time) {
(*hep) = he->next;
he->expires = 0;
he->next = ht->hashempty;
@@ -970,8 +982,9 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
}
else if(!memcmp(hash, he->hash, sizeof(unsigned)*4)){
pthread_mutex_unlock(&hash_mutex);
- if(ttl) *ttl = (unsigned)(he->expires - t);
- return he->value;
+ if(ttl) *ttl = (unsigned)(he->expires - conf.time);
+ memcpy(value, he->value, ht->recsize);
+ return 1;
}
else hep=&(he->next);
}
@@ -983,12 +996,15 @@ struct nserver nservers[MAXNSERVERS] = {{{0},0}, {{0},0}, {{0},0}, {{0},0}, {{0}
struct nserver authnserver;
-unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientparam* param, int makeauth){
+unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth){
int i,n;
unsigned long retval;
- if((retval = hashresolv(&dns_table, name, retttl))) {
+ if((af == AF_INET) && (retval = hashresolv(&dns_table, name, value, retttl))) {
+ return retval;
+ }
+ if((af == AF_INET6) && (retval = hashresolv(&dns6_table, name, value, retttl))) {
return retval;
}
n = (makeauth && !SAISNULL(&authnserver.addr))? 1 : numservers;
@@ -1064,7 +1080,7 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
*s2 = (len - (int)(s2 - buf)) - 1;
len++;
buf[len++] = 0;
- buf[len++] = (makeauth == 1)? 0x0c : 0x01; /* PTR:host address */
+ buf[len++] = (makeauth == 1)? 0x0c : (af==AF_INET6? 0x1c:0x01); /* PTR:host address */
buf[len++] = 0;
buf[len++] = 1; /* INET */
if(usetcp){
@@ -1112,25 +1128,27 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
k += 4;
if(na > 255) na = 255; /* somebody is very evil */
for (j = 0; j < na; j++) { /* now there should be answers */
- if((k+16) > len) {
+ if((k+(af == AF_INET6?28:16)) > len) {
break;
}
flen = buf[k+11] + (((unsigned short)buf[k+10])<<8);
- if((k+12+flen) > len) break;
+ if((k+12+flen) > len) {
+ break;
+ }
if(makeauth != 1){
- if(buf[k+2] != 0 || buf[k+3] != 0x01 || flen != 4) {
+ if(buf[k+2] != 0 || buf[k+3] != (af == AF_INET6?0x1c:0x1) || flen != (af == AF_INET6?16:4)) {
k+= (12 + flen);
continue; /* we need A IPv4 */
}
- retval = *(unsigned long *)(buf + k + 12);
ttl = ntohl(*(unsigned long *)(buf + k + 6));
- t = time(0);
+ memcpy(value, buf + k + 12, af == AF_INET6? 16:4);
if(ttl < 60 || ((unsigned)t)+ttl < ttl) ttl = 300;
if(ttl){
- hashadd(&dns_table, name, retval, ((unsigned)t)+ttl);
+ hashadd(af == AF_INET6?&dns6_table:&dns_table, name, value, conf.time+ttl);
+
}
if(retttl) *retttl = ttl;
- return retval;
+ return 1;
}
else {
@@ -1147,19 +1165,30 @@ unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientpa
if(param->username)myfree(param->username);
param->username = mystrdup (buf + k + 13);
- return udpresolve(param->username, NULL, NULL, 2);
+ return udpresolve(af,param->username, value, NULL, NULL, 2);
}
}
}
return 0;
}
-unsigned long myresolver(unsigned char * name){
- return udpresolve(name, NULL, NULL, 0);
+unsigned long myresolver(int af, unsigned char * name, unsigned char * value){
+ return udpresolve(af, name, value, NULL, NULL, 0);
}
-unsigned long fakeresolver (unsigned char *name){
- return htonl(0x7F000002);
+unsigned long fakeresolver (int af, unsigned char *name, unsigned char * value){
+ memset(value, 0, af == AF_INET6? 16 : 4);
+ if(af == AF_INET6){
+ memset(value, 0, 16);
+ value[15] = 2;
+ }
+ else {
+ value[0] = 127;
+ value[1] = 0;
+ value[2] = 0;
+ value[3] = 2;
+ }
+ return 1;
}
#ifndef NOODBC
diff --git a/src/common.c b/src/common.c
index 137da1f..52287c2 100644
--- a/src/common.c
+++ b/src/common.c
@@ -693,6 +693,7 @@ struct hostent * my_gethostbyname(char *name, char *buf, struct hostent *hp){
}
#endif
+#ifdef NOIPV6
unsigned long getip(unsigned char *name){
unsigned long retval;
int i;
@@ -719,9 +720,9 @@ unsigned long getip(unsigned char *name){
}
}
if(resolvfunc){
- if((retval = (*resolvfunc)(name))) return retval;
+ if((*resolvfunc)(AF_INET, name, &retval)) return retval;
if(conf.demanddialprog) system(conf.demanddialprog);
- return (*resolvfunc)(name);
+ return (*resolvfunc)(AF_INET, name, &retval)?retval:0;
}
#if !defined(_WIN32) && !defined(GETHOSTBYNAME_R)
if(!ghbn_init){
@@ -744,6 +745,7 @@ unsigned long getip(unsigned char *name){
#endif
return retval;
}
+#endif
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
#ifndef NOIPV6
@@ -753,9 +755,11 @@ unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
if(!sa) return 0;
if(!family) {
-#endif
+ family = AF_INET;
+#else
((struct sockaddr_in *)sa)->sin_family = AF_INET;
return (((struct sockaddr_in *)sa)->sin_addr.s_addr = getip(name))? AF_INET:0;
+#endif
#ifndef NOIPV6
}
for(i=0; name[i]; i++){
@@ -786,6 +790,16 @@ unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
return inet_pton(AF_INET6, name, SAADDR(sa))?(family==4? 0:AF_INET6) : 0;
}
}
+ if(resolvfunc){
+ int f = (family == 6 || family == 64)?AF_INET6:AF_INET;
+ *SAFAMILY(sa) = f;
+ if(resolvfunc(f, name, SAADDR(sa))) return f;
+ if(family == 4 || family == 6) return 0;
+ f = (family == 46)? AF_INET6 : AF_INET;
+ *SAFAMILY(sa) = f;
+ if(resolvfunc(f, name, SAADDR(sa))) return f;
+ return 0;
+ }
memset(&hint, 0, sizeof(hint));
hint.ai_family = (family == 6 || family == 64)?AF_INET6:AF_INET;
if (getaddrinfo(name, NULL, &hint, &ai)) {
diff --git a/src/dighosts.c b/src/dighosts.c
index 5f4af9b..2d25989 100644
--- a/src/dighosts.c
+++ b/src/dighosts.c
@@ -83,12 +83,11 @@ int main(int argc, char *argv[]){
return 4;
}
*hostend = '/';
- if(!(sa.sin_addr.s_addr = getip(host))) {
+ if(!getip46(4, host, (struct sockaddr *)&sa)) {
fprintf(stderr, "Unable to resolve %s\n", host);
return 5;
}
sa.sin_port = htons(80);
- sa.sin_family = AF_INET;
if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) return 6;
sprintf((char *)buf, (char *)request, hostend, host);
if(connect(sock,(struct sockaddr *)&sa,sizeof(sa))) {
diff --git a/src/dnspr.c b/src/dnspr.c
index b8caeaa..bdee19e 100644
--- a/src/dnspr.c
+++ b/src/dnspr.c
@@ -27,6 +27,7 @@ void * dnsprchild(struct clientparam* param) {
int len;
unsigned type=0;
unsigned ttl;
+ unsigned char addr[16];
#ifdef _WIN32
unsigned long ul = 1;
#endif
@@ -81,8 +82,8 @@ void * dnsprchild(struct clientparam* param) {
*s2 = (len - (int)(s2 - buf)) - 1;
type = ((unsigned)buf[len+1])*256 + (unsigned)buf[len+2];
- if(type==1 && !param->srv->singlepacket){
- ip = udpresolve((unsigned char *)host, &ttl, param, 0);
+ if((type==0x01 || type==0x1c) && !param->srv->singlepacket){
+ ip = udpresolve((type==0x1c)?AF_INET6:AF_INET, (unsigned char *)host, addr, &ttl, param, 0);
}
len+=5;
@@ -96,13 +97,13 @@ void * dnsprchild(struct clientparam* param) {
memset(buf+len, 0, 16);
buf[len] = 0xc0;
buf[len+1] = 0x0c;
- buf[len+3] = 1;
+ buf[len+3] = type;
buf[len+5] = 1;
ttl = htonl(ttl);
memcpy(buf + len + 6, &ttl, 4);
- buf[len+11] = 4;
- memcpy(buf+len+12,(void *)&ip,4);
- len+=16;
+ buf[len+11] = type==1? 4:16;
+ memcpy(buf+len+12,(void *)&addr,type==1? 4:16);
+ len+=(type==1?16:28);
}
else if(type == 0x0c) {
unsigned a, b, c, d;
@@ -191,14 +192,12 @@ void * dnsprchild(struct clientparam* param) {
CLEANRET:
if(param->res!=813){
- sprintf((char *)buf, "%04x/%s(%u.%u.%u.%u)",
+ sprintf((char *)buf, "%04x/%s/",
(unsigned)type,
- host?host:"",
- (unsigned)(ntohl(ip)&0xff000000)>>24,
- (unsigned)(ntohl(ip)&0x00ff0000)>>16,
- (unsigned)(ntohl(ip)&0x0000ff00)>>8,
- (unsigned)(ntohl(ip)&0x000000ff)
- );
+ host?host:"");
+ if(ip && type == 0x01 || type == 0x1c){
+ myinet_ntop(type == 0x01? AF_INET:AF_INET6, addr, buf+strlen(buf), 64);
+ }
(*param->srv->logfunc)(param, buf);
}
if(bbuf)myfree(bbuf);
diff --git a/src/plugins.c b/src/plugins.c
index d9981ed..e7b0cc9 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -35,7 +35,7 @@ struct symbol symbols[] = {
{symbols+8, "myinet_ntop", (void *) myinet_ntop},
{symbols+9, "dobuf", (void *) dobuf},
{symbols+10, "scanaddr", (void *) scanaddr},
- {symbols+11, "getip", (void *) getip},
+ {symbols+11, "getip46", (void *) getip46},
{symbols+12, "sockmap", (void *) sockmap},
{symbols+13, "sockfuncs", (void *) &so},
{symbols+14, "ACLmatches", (void *) ACLmatches},
@@ -78,7 +78,6 @@ struct symbol symbols[] = {
{symbols+48, "parsestr", (void *) parsestr},
{symbols+49, "make_ace", (void *) make_ace},
{symbols+50, "freeacl", (void *) freeacl},
- {symbols+51, "getip46", (void *) getip46},
{NULL, "", NULL}
};
@@ -108,7 +107,6 @@ struct pluginlink pluginlink = {
dobuf,
dobuf2,
scanaddr,
- getip,
getip46,
sockmap,
ACLmatches,
diff --git a/src/proxy.h b/src/proxy.h
index 4558546..82b4dcf 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -187,8 +187,8 @@ extern struct nserver nservers[MAXNSERVERS];
struct nserver authnserver;
unsigned long getip(unsigned char *name);
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
-unsigned long myresolver(unsigned char *);
-unsigned long fakeresolver (unsigned char *name);
+unsigned long myresolver(int, unsigned char *, unsigned char *);
+unsigned long fakeresolver (int, unsigned char *, unsigned char*);
int inithashtable(struct hashtable *hashtable, unsigned nhashsize);
void freeparam(struct clientparam * param);
void clearstat(struct clientparam * param);
@@ -227,14 +227,14 @@ void mschap(const unsigned char *win_password,
const unsigned char *challenge, unsigned char *response);
struct hashtable;
-void hashadd(struct hashtable *ht, const unsigned char* name, unsigned long value, time_t expires);
+void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires);
int parsehostname(char *hostname, struct clientparam *param, unsigned short port);
int parseusername(char *username, struct clientparam *param, int extpasswd);
int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port);
int ACLmatches(struct ace* acentry, struct clientparam * param);
-unsigned long udpresolve(unsigned char * name, unsigned *retttl, struct clientparam* param, int makeauth);
+unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth);
struct ace * copyacl (struct ace *ac);
struct auth * copyauth (struct auth *);
diff --git a/src/structures.h b/src/structures.h
index aaf4322..9b0f26a 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -155,7 +155,7 @@ struct srvparam;
typedef void (*LOGFUNC)(struct clientparam * param, const unsigned char *);
typedef int (*AUTHFUNC)(struct clientparam * param);
typedef void * (*REDIRECTFUNC)(struct clientparam * param);
-typedef unsigned long (*RESOLVFUNC)(unsigned char *);
+typedef unsigned long (*RESOLVFUNC)(int af, unsigned char *name, unsigned char *value);
typedef unsigned (*BANDLIMFUNC)(struct clientparam * param, unsigned nbytesin, unsigned nbytesout);
typedef void (*TRAFCOUNTFUNC)(struct clientparam * param);
typedef void * (*EXTENDFUNC) (struct node *node);
@@ -583,16 +583,17 @@ struct child {
struct hashentry {
unsigned char hash[sizeof(unsigned)*4];
- unsigned value;
time_t expires;
struct hashentry *next;
+ char value[4];
};
struct hashtable {
unsigned hashsize;
+ unsigned recsize;
unsigned rnd[4];
struct hashentry ** hashtable;
- struct hashentry * hashvalues;
+ void * hashvalues;
struct hashentry * hashempty;
};
@@ -656,7 +657,6 @@ struct pluginlink {
int (*dobuf)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec);
int (*dobuf2)(struct clientparam * param, unsigned char * buf, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
int (*scanaddr)(const unsigned char *s, unsigned long * ip, unsigned long * mask);
- unsigned long (*getip)(unsigned char *name);
unsigned long (*getip46)(int family, unsigned char *name, struct sockaddr *sa);
int (*sockmap)(struct clientparam * param, int timeo);
int (*ACLMatches)(struct ace* acentry, struct clientparam * param);
diff --git a/src/version.h b/src/version.h
index d0ce229..2a103c2 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141214004331"
+#define BUILDDATE "141214052453"
From bf8522321f8291627d3955109e1e83db9c1028f2 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Wed, 17 Dec 2014 00:20:21 +0300
Subject: [PATCH 054/122] nscache bug fixed
nscache caused crash
---
src/3proxy.c | 6 ++++++
src/auth.c | 10 +++++-----
src/structures.h | 4 ++--
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 8f7a10d..09835e9 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -644,9 +644,11 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.isudp = 0;
childdef.service = S_PROXY;
childdef.helpmessage = " -n - no NTLM support\n";
+#ifdef NOIPV6
if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, proxy may run very slow\n", linenum);
}
+#endif
}
else if(!strcmp((char *)argv[0], "pop3p")) {
childdef.pf = pop3pchild;
@@ -675,9 +677,11 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.isudp = 0;
childdef.service = S_SOCKS;
childdef.helpmessage = " -n - no NTLM support\n";
+#ifdef NOIPV6
if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize)){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, socks may run very slow\n", linenum);
}
+#endif
}
else if(!strcmp((char *)argv[0], "tcppm")) {
childdef.pf = tcppmchild;
@@ -721,9 +725,11 @@ static int h_proxy(int argc, unsigned char ** argv){
childdef.isudp = 1;
childdef.service = S_DNSPR;
childdef.helpmessage = " -s - simple DNS forwarding - do not use 3proxy resolver / name cache\n";
+#ifndef NOIPV6
if(!resolvfunc || (resolvfunc == myresolver && !dns_table.hashsize) || resolvfunc == fakeresolver){
fprintf(stderr, "[line %d] Warning: no nserver/nscache configured, dnspr will not work as expected\n", linenum);
}
+#endif
}
return start_proxy_thread(&ch);
}
diff --git a/src/auth.c b/src/auth.c
index 155517d..7ebc99b 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -842,8 +842,8 @@ struct auth authfuncs[] = {
-struct hashtable dns_table = {0, 4, {0}, NULL, NULL, NULL};
-struct hashtable dns6_table = {0, 16, {0}, NULL, NULL, NULL};
+struct hashtable dns_table = {0, 4, {0,0,0,0}, NULL, NULL, NULL};
+struct hashtable dns6_table = {0, 16, {0,0,0,0}, NULL, NULL, NULL};
void nametohash(const unsigned char * name, unsigned char *hash, unsigned char *rnd){
@@ -882,7 +882,7 @@ void destroyhashtable(struct hashtable *ht){
pthread_mutex_unlock(&hash_mutex);
}
-#define hvalue(i) ((struct hashentry *)((char *)ht->hashvalues + i*(sizeof(struct hashentry) + ht->recsize - 4)))
+#define hvalue(I) ((struct hashentry *)((char *)ht->hashvalues + (I)*(sizeof(struct hashentry) + ht->recsize - 4)))
int inithashtable(struct hashtable *ht, unsigned nhashsize){
unsigned i;
clock_t c;
@@ -981,9 +981,9 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
ht->hashempty = he;
}
else if(!memcmp(hash, he->hash, sizeof(unsigned)*4)){
- pthread_mutex_unlock(&hash_mutex);
if(ttl) *ttl = (unsigned)(he->expires - conf.time);
memcpy(value, he->value, ht->recsize);
+ pthread_mutex_unlock(&hash_mutex);
return 1;
}
else hep=&(he->next);
@@ -1142,7 +1142,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
}
ttl = ntohl(*(unsigned long *)(buf + k + 6));
memcpy(value, buf + k + 12, af == AF_INET6? 16:4);
- if(ttl < 60 || ((unsigned)t)+ttl < ttl) ttl = 300;
+ if(ttl < 60 || ttl > (3600*12)) ttl = 300;
if(ttl){
hashadd(af == AF_INET6?&dns6_table:&dns_table, name, value, conf.time+ttl);
diff --git a/src/structures.h b/src/structures.h
index 9b0f26a..16b065e 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -104,11 +104,11 @@ int
#ifndef NOIPV6
#define SAPORT(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? &((struct sockaddr_in6 *)sa)->sin6_port : &((struct sockaddr_in *)sa)->sin_port)
-#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.u.Byte : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
+#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDRLEN(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)
#define SASOCK(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? PF_INET6:PF_INET)
#define SASIZE(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? sizeof(struct sockaddr_in6):sizeof(struct sockaddr_in))
-#define SAISNULL(sa) (!memcmp(((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)((struct sockaddr_in6 *)sa)->sin6_addr.u.Byte : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr, NULLADDR, (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)))
+#define SAISNULL(sa) (!memcmp(((struct sockaddr_in *)sa)->sin_family == AF_INET6? (unsigned char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr, NULLADDR, (((struct sockaddr_in *)sa)->sin_family == AF_INET6? 16:4)))
#else
#define SAPORT(sa) (&((struct sockaddr_in *)sa)->sin_port)
#define SAADDR(sa) ((unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
From 7951de875a7a5f1c664e2e3984d3238da0f67e32 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Tue, 17 Feb 2015 16:05:55 +0300
Subject: [PATCH 055/122] Move icon compilations to makefiles
---
3proxy.ico | Bin 32988 -> 32988 bytes
3proxy.rc | 4 ++--
Makefile.msvc | 12 ++++++------
Makefile.msvc64 | 7 +++++++
src/version.h | 2 +-
5 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/3proxy.ico b/3proxy.ico
index 44dc48143d48dcf29b781f062f63da9359954b73..b879bd139849135061178bdf072acc1984b5b02f 100644
GIT binary patch
literal 32988
zcmeHP3sjHU7XQ!OS##&b7&AjyOy0(0MCBPJl~j7@ty0lLl1NdJe=77KdPpy?k{)_X
zR3xtw8N4+C`%wVj(q2a%1Vt<22EJNHD^R?B+T8L9Ouhqod)`3{rFC@O}LkN8MIFaE6$x4
zY(@;g{?N#1As!%mTS8K^+$T?-3S*!bA3ZL_31Vj6LRZ1wTXna|a-TKic|~k11AM^`-NT|{1)XEIClJUhEk7glgF?ewU?$d&wP7RHgO06Bzi-D77k4iL9T@-X
z)YUcD1WbpFnLvOC!veaC<-k6y4clN7+F19uTXn?2#f?nUG7$KI+X%%eiW@)qle*F+m@K^}P9E1CwTf-bG+chs-^wMxJicH?;!`x%dP
zZ4jxte1-HMDKB7vwTg<53VJg9ARlo7KLI279(=E2KV-{KQES(3F(!x+@t(vw?LF`j
z_7h^0<-fGd9AQ1|Epa~dT#t}Nd4_0V0s
z|5lh6Y@YqJi=cr7LZ$zmmm*k1msP~#d!k{Fk|>bhS;AhFM;0P
zgSD{7AQ#vn4}amNe(XD@Ki*Fr+0DkW
zx7fVSR*U`5axH9N=SXH_do^-!XS18>E4H7VFEPf>k?q-yF}z>I=OE-*6uf^~5%LoRWM-RBifVIS;r6u_^u31d9y^8&uhaI$Tnsm5`iPzjJqL7S-Xy)>A3%
zQ_yJrRU2dPx284m{q-)+QIpGX70Yi
zg5qK~$~$#WT1I-w@v^v-jI1j9yP)Amj-I?(eDqk(kChj*Xg_3EQfl$Ja~JY6_vI&L
z=H~g)IUhBx-6d#qM6Q~i3F$RtH0e2TB+)asA*orp`zTM>);ds{Y;=4={qEFs61XXn
ztXi`!iqbwbw{d7p+M7ij7B3^a(=v(Ke1{$Gt9%Sq|3)_3nagiO;mB>9Dh{93PHa;#M9DP2oaGIEGd
zKpH-SNA$C1GA030YMi{Z0zsTHAh<6
zIW_8=Lk-=+N)7(9FSOd+q}
z&@U&-PG>H1_q-b(9ZzhWT*;hy3&@7>DB|NENc@90k%exaflEDC)-G7$u|sW^QB7KQ
zPVJ@3)uD48UC6Ihm+Gk8Ub*=PJ-?f%N}QLhxFuePw!4|wI6RS?q)G~ljuadyI^w(U
zK#@=|=hW%bVJFK^2btR1KX7sPCN>LPh_TgtLgR;cO8qG|*~Hp$(WwbhiAz`FHfoay=>danuCFGFKt)C6TR
zQB9jnn64$1@v1ZF&oI@A!c+|+J3^lH8Z?p&9zC9XGkh%RO?@~-ZUPx5KS`+Zd+7s5
zDN??%bbJhrtr5Z;;5}SH$zR9BQaV*@Hi?Xl_ZF{@ww{TV%P<8c@=1?=jgUuK}cM?*XJsul_<|ylaYoz9ltzZiPx_~4SEe>jaDuY$XG@A+P~P{G^}i1+-sVH&
zS*ogIM7sAIBH*bx+njvfXAsdgwjd?POAV-wZ#B?4@&39AxW?DXY
z@L=%qvNJ0AhmKgDC@Zr(f4CS#n$L_C6&0VvZc9ptPe>-A5m61hb|>qsl&;O(61U^e$k^?T
z^q%!Ya9HHE(z1%{!QoN$yLYFaa`W~%Z#vguVAjE`zM6*SKgug>5Y<@*hsI7;t)8l>
zPr|muxHBy1TL0Ldn3|rHmigE}Xycz!|B#Zo_Rd!VLN=4N8^VaQyJxPoqjRy-Vvobi
ze0-}SqT_=WxO&v=OimuSWcf;W$n#ja#uxIE($fbkY3STEwz99ieEI6k%Brdf73V7_
z(0l6Y<7MT0DBtZB(f~5o!I^mbt|ho*N!JA*TOF|O!W?_2>ZrKwzpoFCs7g#pC%@Iz
zxfxp8r5Mbytv-A9L~o|AgR6Teu%dSTOGDr6mWIA@9sNDaYL%J#SLy$;XdI!aM81`u
zOuki^Oq4ZsiQ*Ksr{k10o{v$QPR6Ndkl}P(Nkf-t8(Qp`rZYR)*xK<_L&LQ%nEW}`
zjyC;ADUcrYj?`z^7}95`9KHXHruW$In#w5BdkEU2NDq3xmZ7x_y-)O}rN@Bb!d(dW
z?Y_gtCOW!$B+`4v-SC(gq(po>c;CulQI4Xr#vlG6n@;$LY(C*1NbA52C;Vs;Xia^A
z4j!TZf(LCsT0$bC%QkF|^bU>OYB7oaKN594v+SEUZ_N)5+p>0?iYBpfb}goB^>~9K
zL+5@*OE>zv{`+v3R5vgqiqo{n3_a6(S$PL1F}&WizVqM#-CLotMsw}XELgIlFfk)T
z`%PuGHJ{o7o0|7kTRfb`5%@b1KvJN8idp!X3O^@xj67)|&3PK!IXMRh#l-D&I$3ZM
zx$ff|H*S3S`0?XDwB3U=G<3gGSJ(3@{T@pDA6Yss+^B72QMq`ru
zZl!b`zRkX0UtcemmtXWl;D(5L7Z0!No43Z}8{x&pD?H2ngF`QEjEt_@k(lhMXJ%bw
zLq9q~=UFC}%jx^-p|+vbfmx;&2aPRlD<-RHKgV}CHC-d3Wnl7XqT0-dQ#Ez}oMk$f
z*t;y-r(r5wNHLtDZ+^zo-YGLVD|dQEcAoa$%p4v1O+-68`+#-^t%XAA
z7|Ys!P(Qz@NHKitw$bKx3oG^J*fi>y+n$Y$P3R9@Ugt^9%pACEm7h^sQBl9wna6oK
z0vrL307rl$z!BgGa0EC490861M}Q;15#R`L1ULd50geDifFr;W;0SO8I0762jsQo1
TBft^h2yg^A0vv(Ph`@gU<@t}U
literal 32988
zcmeI4J&znk5QZCM@gWEtS|Zu(j6{I=1t%d9Lk1Cnb0o_#vSkZ7wuDT0h{S@7Kj46f
zfQX22QvV8g-@Sd#FKV|x4L_3_Ey{4TkTdmJ#D%!+Ff10Xss<4
ztNYuneW$TIcUJfBxAy$Y)^2Nj$$zW0m*2E@S2AL2k3=4?RtOXVg+L)t2owT^Kp{{F
z6as}nAy5bu0);>!PzV$Pg+L)t2=pNEKx3~&Cp~jlHT1R&|0McX)QLV2&DE}Z{Knu{
z(K|B%a2?~1q1r!V@Od1Zuz%g-|46a^BYHYv%uyBbf2=|Fobm3n_m##k%LVx|U!R^K
z9iOfE@9CPGb#|gT&H>{8P5SYfYqmM$yF~Smz1IE|Aserq#_=7#xTiVqBA-N-jr?2R
z9D9I##b*Hi*k)V@WAUS>FRrX7=Xy*pb6LkZI=lbH?~E;Z>STi4;mbO_c-E%}e63sm
z-CeGmh#Ru-dG2db%n>}hULAiYBF3oCbJ6Bd{H)QqR>t&r4jJb)+K6)S_)LiX$g^vI
zEdCsCzQ;DcZ4$p_S$pfq#kDYHEie}UocU*8IR9SXIVR@gobex8E1KG>k%PRa!Ml@I
z_6GU)dW;QUI}O6i{Lmb_z89l0$U5^GX??7-%PL
zdWgfk?}=P@bfSoz^<_Kg%e-RUy4g-AdLpu)k+OZq--#kG@sj5#Pv0_Qv4IB|<$H-=
zG;$Dgbuqa`hxqLuIkexMDEh41M*KXph%fpQb$FhbEbqp;&f_tz*guzg{dWwT*Id;r
z1PXydpb#ho3IQWP?Zh*?@7a8)NR8EI)Nh9xyW^rJyO)Bb&dRk|V!P3|Oa$|GZF%nde~NxsYWJ=|0APY_Z2Y@;SsYW58O7
zpWj4`4xvAG#veoc&LMHeI*-rMUTOa15E4BS19cu}e!S+Ictp*Oo?;)w*bjN%-{@qO
z^MybmPzdaTfPW`oAvzV+?*s^hYK6cs0|dhz8Ck5UyVV>uCUvFXv3bAt+_M#*F8^!j;~gc+_SyI6melT<_e^vCUdfLl
z@@XA^hkJG3Xv7b{{Y5_8H}6Xkcw|}o=I`|oi@M8qFpuH0$70JmJZC+|GTYDh(O1jm
zSegGsbI(QjyH=L5eSd$I+#zE;vc1dV=Y5k{&5zyt>VvVm7Y+NY7w5DS8Drb`ccAf2
z-6b~YkNL+pe@BHJc|P*ew;mdD-)f+5{r{rzpGBR>KH;x<8B_NSzl_7v)fm1z7O&5~
z9B8=O6(Zm@AHM_7THJ?A*k+yBW?a{E`w;gVwpioQC+7BXy=wb?n9LnF>%iyAKG$E4
z>#DK0KR!SAg+YF1?%TfY`FZc>g&X+yJ*&<+rvDq)p4Z<#ZBHLfXvE9BiM8
z*7%$t)>3QfA7HW`uQAp;Y*XpCKGt)5ep&wuk!^P(*K*M&GMvBfYTh*gdm*1mu4f;M
zsOPMUn9$2rQ_C|g>T=&U{jOm@&qV0*neq
z(d#QQIsWXwhL&eneCP4`Mg2{D=CiIJM6TyM5%|AY-G8VnH5h)xbCJHU_@VAnudme#
zf$NTd*RIbO6Z>i^pV_nMi~E(aDX(+s2cx*hr}W#p;u$rS?s!(tq2GRjjn|K#8P)cH
zfa@fGsI(BRQ74IO^2R%X^WKU4?A)})nqX5|^IP7}Zq6@1qc>@mKMMkzo*%i6*+d@v
zewTe>81g^Yfz)Kd_0g{VVsGX%c~r1xa$9-g-Q^i$9G;0bU2DW885GVu+fkL1VCR1PXydpb#ho3V}kP5GVu+fkL1VCR1PXyd
Spb#ho3V}kP5GVwe2>b_IV3_Ct
diff --git a/3proxy.rc b/3proxy.rc
index 5a9b43c..3ff2cfa 100644
--- a/3proxy.rc
+++ b/3proxy.rc
@@ -3,8 +3,8 @@
LANGUAGE 0x09, 0x01
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,7,0,0
- PRODUCTVERSION 0,7,0,0
+ FILEVERSION 0,8,0,0
+ PRODUCTVERSION 0,8,0,0
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
diff --git a/Makefile.msvc b/Makefile.msvc
index 9e27291..84fe8ec 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -29,14 +29,14 @@ MAKEFILE = Makefile.msvc
PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin lastFripper FilePlugin
VERFILE = $(VERFILE)
-#../3proxy.res:
-# rc /fo../3proxy.res ../3proxy.rc
-
-#3proxyres.obj: ../3proxy.res
-# cvtres /out:3proxyres.obj /MACHINE:I386 ../3proxy.res
-
include Makefile.inc
+../3proxy.res:
+ rc /fo../3proxy.res ../3proxy.rc
+
+3proxyres.obj: ../3proxy.res
+ cvtres /out:3proxyres.obj /MACHINE:I386 ../3proxy.res
+
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
\ No newline at end of file
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index d6dced7..8a1e98d 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -37,6 +37,13 @@ VERFILE = $(VERFILE)
include Makefile.inc
+../3proxy.res:
+ rc /fo../3proxy.res ../3proxy.rc
+
+3proxyres.obj: ../3proxy.res
+ cvtres /out:3proxyres.obj /machine:x64 ../3proxy.res
+
+
allplugins:
for /D %%i in ($(PLUGINS)) do (copy Makefile plugins\%%i && copy Makefile.var plugins\%%i && cd plugins\%%i && nmake && del *.obj *.idb &&cd ..\..)
diff --git a/src/version.h b/src/version.h
index 2a103c2..383b4b6 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "141214052453"
+#define BUILDDATE "150216013249"
From 522e6732fe22f5f22d342e8c5d83a97e890d665b Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 2 Mar 2015 21:05:29 +0300
Subject: [PATCH 056/122] SSLPlugin race condition fix
+ minor corrections to PCREPlugin
---
Makefile.msvc | 4 ++--
src/plugins/PCREPlugin/pcre_plugin.c | 11 +++++----
src/plugins/SSLPlugin/my_ssl.c | 36 +++++++++++++++++++++-------
src/plugins/SSLPlugin/ssl_plugin.c | 10 ++++----
src/version.h | 2 +-
5 files changed, 42 insertions(+), 21 deletions(-)
diff --git a/Makefile.msvc b/Makefile.msvc
index 84fe8ec..da95036 100644
--- a/Makefile.msvc
+++ b/Makefile.msvc
@@ -14,7 +14,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386
DLFLAGS = /DLL
DLSUFFICS = .dll
-LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib
+LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libeay32MT.lib ssleay32MT.lib
LIBSOLD = libeay32MT.lib ssleay32MT.lib
LIBEXT = .lib
LNOUT = /out:
@@ -26,7 +26,7 @@ REMOVECOMMAND = del 2>NUL >NUL
TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc
-PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin lastFripper FilePlugin
+PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin lastFripper FilePlugin SSLPlugin
VERFILE = $(VERFILE)
include Makefile.inc
diff --git a/src/plugins/PCREPlugin/pcre_plugin.c b/src/plugins/PCREPlugin/pcre_plugin.c
index e2ca258..f04d9c1 100644
--- a/src/plugins/PCREPlugin/pcre_plugin.c
+++ b/src/plugins/PCREPlugin/pcre_plugin.c
@@ -229,12 +229,12 @@ static int h_pcre(int argc, unsigned char **argv){
struct filter *newf;
char *replace = NULL;
- if(!strcmp(argv[2], "allow")) action = PASS;
- else if(!strcmp(argv[2], "deny")) action = REJECT;
- else if(!strcmp(argv[2], "remove")) action = REMOVE;
- else if(!strcmp(argv[2], "dunno")) action = CONTINUE;
+ if(!strncmp(argv[2], "allow",5)) action = PASS;
+ else if(!strncmp(argv[2], "deny",4)) action = REJECT;
+ else if(!strncmp(argv[2], "remove",6)) action = REMOVE;
+ else if(!strncmp(argv[2], "dunno",5)) action = CONTINUE;
else return 1;
- if(!strcmp(argv[0], "pcre_rewrite")) {
+ if(!strncmp(argv[0], "pcre_rewrite", 12)) {
int i,j;
offset = 5;
replace = pl->mystrdup(argv[4]);
@@ -266,6 +266,7 @@ static int h_pcre(int argc, unsigned char **argv){
replace[j] = 0;
}
if(!(acl = pl->make_ace(argc - offset, argv + offset))) return 2;
+ acl->nolog = (strstr(argv[2],"log") == 0);
if(*argv[3] && !(*argv[3] == '*' && !argv[3][1]) ){
re = pcre_compile((char *)argv[3], pcre_options, &errptr, &offset, NULL);
if(!re) {
diff --git a/src/plugins/SSLPlugin/my_ssl.c b/src/plugins/SSLPlugin/my_ssl.c
index d3a4799..0e7bca7 100644
--- a/src/plugins/SSLPlugin/my_ssl.c
+++ b/src/plugins/SSLPlugin/my_ssl.c
@@ -8,6 +8,9 @@
#include
#include
#include
+#ifndef _WIN32
+#include
+#endif
#include
#include
@@ -110,20 +113,23 @@ SSL_CERT ssl_copy_cert(SSL_CERT cert)
static char hash_name[sizeof(src_cert->sha1_hash)*2 + 1];
static char cache_name[200];
- pthread_mutex_lock(&ssl_file_mutex);
bin2hex(src_cert->sha1_hash, sizeof(src_cert->sha1_hash), hash_name, sizeof(hash_name));
sprintf(cache_name, "%s%s.pem", cert_path, hash_name);
/* check if certificate is already cached */
fcache = fopen(cache_name, "rb");
if ( fcache != NULL ) {
+#ifndef _WIN32
+ flock(fileno(fcache), LOCK_SH);
+#endif
dst_cert = PEM_read_X509(fcache, &dst_cert, NULL, NULL);
+#ifndef _WIN32
+ flock(fileno(fcache), LOCK_UN);
+#endif
fclose(fcache);
if ( dst_cert != NULL ){
- pthread_mutex_unlock(&ssl_file_mutex);
return dst_cert;
}
}
- pthread_mutex_unlock(&ssl_file_mutex);
/* proceed if certificate is not cached */
dst_cert = X509_dup(src_cert);
@@ -163,13 +169,17 @@ SSL_CERT ssl_copy_cert(SSL_CERT cert)
/* write to cache */
- pthread_mutex_lock(&ssl_file_mutex);
fcache = fopen(cache_name, "wb");
if ( fcache != NULL ) {
+#ifndef _WIN32
+ flock(fileno(fcache), LOCK_EX);
+#endif
PEM_write_X509(fcache, dst_cert);
+#ifndef _WIN32
+ flock(fileno(fcache), LOCK_UN);
+#endif
fclose(fcache);
}
- pthread_mutex_unlock(&ssl_file_mutex);
return dst_cert;
}
@@ -212,6 +222,10 @@ SSL_CONN ssl_handshake_to_server(SOCKET s, SSL_CERT *server_cert, char **errSSL)
}
cert = SSL_get_peer_certificate(conn->ssl);
+ if(!cert) {
+ ssl_conn_free(conn);
+ return NULL;
+ }
/* TODO: Verify certificate */
@@ -312,10 +326,14 @@ void ssl_conn_free(SSL_CONN connection)
{
ssl_conn *conn = (ssl_conn *) connection;
- SSL_shutdown(conn->ssl);
- SSL_free(conn->ssl);
- SSL_CTX_free(conn->ctx);
- free(conn);
+ if(conn){
+ if(conn->ssl){
+ SSL_shutdown(conn->ssl);
+ SSL_free(conn->ssl);
+ }
+ if(conn->ctx) SSL_CTX_free(conn->ctx);
+ free(conn);
+ }
}
void _ssl_cert_free(SSL_CERT cert)
diff --git a/src/plugins/SSLPlugin/ssl_plugin.c b/src/plugins/SSLPlugin/ssl_plugin.c
index 3889f1e..172969c 100644
--- a/src/plugins/SSLPlugin/ssl_plugin.c
+++ b/src/plugins/SSLPlugin/ssl_plugin.c
@@ -53,13 +53,15 @@ struct SSLqueue {
/*
- Todo: use hashtable
+ TO DO: use hashtable
*/
static struct SSLqueue *searchSSL(SOCKET s){
- struct SSLqueue *sslq;
+ struct SSLqueue *sslq = NULL;
+ pthread_mutex_lock(&ssl_mutex);
for(sslq = SSLq; sslq; sslq = sslq->next)
- if(sslq->s == s) return sslq;
- return NULL;
+ if(sslq->s == s) break;
+ pthread_mutex_lock(&ssl_mutex);
+ return sslq;
}
static void addSSL(SOCKET s, SSL_CERT cert, SSL_CONN conn, struct clientparam* param){
diff --git a/src/version.h b/src/version.h
index 383b4b6..a97b453 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150216013249"
+#define BUILDDATE "150302205552"
From 57876336655a276a2430803012894e4465b30c1a Mon Sep 17 00:00:00 2001
From: User
Date: Sun, 29 Mar 2015 14:29:50 +0300
Subject: [PATCH 057/122] increasing length of proxy username specified in
config
---
src/proxy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/proxy.c b/src/proxy.c
index e48f436..281bfa4 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -830,7 +830,7 @@ for(;;){
if(keepalive <= 1) sprintf((char*)buf+strlen((char *)buf), "%s: %s\r\n", (param->redirtype == R_HTTP)?"Proxy-Connection":"Connection", keepalive? "keep-alive":"close");
if(param->extusername){
sprintf((char*)buf + strlen((char *)buf), "%s: basic ", (redirect)?"Proxy-Authorization":"Authorization");
- sprintf((char*)username, "%.32s:%.64s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)"");
+ sprintf((char*)username, "%.128s:%.64s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)"");
en64(username, buf+strlen((char *)buf), (int)strlen((char *)username));
sprintf((char*)buf + strlen((char *)buf), "\r\n");
}
From 252d481299540150f97c0e435edd174bebddb637 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 4 May 2015 17:23:26 +0300
Subject: [PATCH 058/122] allow larger request size in HTTP proxy
allow larger request size in HTTP proxy & correctly nullify request
buffer
---
src/proxy.c | 4 ++--
src/version.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/proxy.c b/src/proxy.c
index 281bfa4..32715e2 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -239,7 +239,7 @@ void * proxychild(struct clientparam* param) {
bufsize = BUFSIZE;
anonymous = param->srv->singlepacket;
for(;;){
- memset(buf, 0, BUFSIZE);
+ memset(buf, 0, bufsize);
inbuf = 0;
@@ -494,7 +494,7 @@ for(;;){
}
inbuf += i;
if((bufsize - inbuf) < LINESIZE){
- if (bufsize > 20000){
+ if (bufsize > (LINESIZE * 16)){
RETURN (516);
}
if(!(newbuf = myrealloc(buf, bufsize + BUFSIZE))){RETURN (21);}
diff --git a/src/version.h b/src/version.h
index a97b453..2c2453f 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150302205552"
+#define BUILDDATE "150302210600"
From 8e6d8b33147757db782e39c6c3a38081ddeb667b Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 4 May 2015 17:33:30 +0300
Subject: [PATCH 059/122] increase max address length in X-Forwarded-For
---
src/proxy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/proxy.c b/src/proxy.c
index 32715e2..ddb58e9 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -817,7 +817,7 @@ for(;;){
sprintf((char*)buf+strlen((char *)buf), "Via: 1.1 ");
gethostname((char *)(buf+strlen((char *)buf)), 256);
sprintf((char*)buf+strlen((char *)buf), ":%d (%s %s)\r\nX-Forwarded-For: ", (int)ntohs(*SAPORT(¶m->srv->intsa)), conf.stringtable?conf.stringtable[2]:(unsigned char *)"", conf.stringtable?conf.stringtable[3]:(unsigned char *)"");
- if(!anonymous)myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + strlen((char *)buf), 64);
+ if(!anonymous)myinet_ntop(*SAFAMILY(¶m->sincr), SAADDR(¶m->sincr), (char *)buf + strlen((char *)buf), 128);
else {
unsigned long tmp;
From aa4125a6f00dee733b2b34d8c2ce32143247f2ab Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 4 May 2015 17:39:24 +0300
Subject: [PATCH 060/122] Avoid some potential hashtables race conditions
---
src/auth.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index 7ebc99b..939f0fd 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -901,6 +901,7 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
c = clock();
if(nhashsize<4) return 1;
+ pthread_mutex_lock(&hash_mutex);
if(ht->hashtable){
myfree(ht->hashtable);
ht->hashtable = NULL;
@@ -911,11 +912,13 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
}
ht->hashsize = 0;
if(!(ht->hashtable = myalloc((nhashsize>>2) * sizeof(struct hashentry *)))){
+ pthread_mutex_unlock(&hash_mutex);
return 2;
}
if(!(ht->hashvalues = myalloc(nhashsize * (sizeof(struct hashentry) + (ht->recsize-4))))){
myfree(ht->hashtable);
ht->hashtable = NULL;
+ pthread_mutex_unlock(&hash_mutex);
return 3;
}
ht->hashsize = nhashsize;
@@ -930,6 +933,7 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
hvalue(i)->next = hvalue(i+1);
}
ht->hashempty = ht->hashvalues;
+ pthread_mutex_unlock(&hash_mutex);
return 0;
}
@@ -969,10 +973,13 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
struct hashentry *he;
unsigned index;
- if(!ht->hashtable || !name) return 0;
+ pthread_mutex_lock(&hash_mutex);
+ if(!ht || !ht->hashtable || !name) {
+ pthread_mutex_unlock(&hash_mutex);
+ return 0;
+ }
nametohash(name, hash, (unsigned char *)ht->rnd);
index = hashindex(ht, hash);
- pthread_mutex_lock(&hash_mutex);
for(hep = ht->hashtable + index; (he = *hep)!=NULL; ){
if(he->expires < conf.time) {
(*hep) = he->next;
From bc725189e3f065a81315d59035446375d1440037 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 4 May 2015 18:06:07 +0300
Subject: [PATCH 061/122] bit more thread safety
One more potential race condition in hashtables
---
src/auth.c | 5 ++++-
src/version.h | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/auth.c b/src/auth.c
index 939f0fd..28f95b9 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -943,8 +943,11 @@ void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* val
unsigned index;
- if(!value||!name||!ht->hashtable||!ht->hashempty) return;
pthread_mutex_lock(&hash_mutex);
+ if(!ht||!value||!name||!ht->hashtable||!ht->hashempty) {
+ pthread_mutex_unlock(&hash_mutex);
+ return;
+ }
hen = ht->hashempty;
ht->hashempty = ht->hashempty->next;
nametohash(name, hen->hash, (unsigned char *)ht->rnd);
diff --git a/src/version.h b/src/version.h
index 2c2453f..c770653 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150302210600"
+#define BUILDDATE "150504180421"
From d4f4e4a8072ae3e0f2972cec436fb8f63db7d3a9 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 4 May 2015 18:12:46 +0300
Subject: [PATCH 062/122] Deadlock in SSLPlugin corrected
deadlock due to typo in previous SSL patch
---
src/plugins/SSLPlugin/ssl_plugin.c | 2 +-
src/version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/plugins/SSLPlugin/ssl_plugin.c b/src/plugins/SSLPlugin/ssl_plugin.c
index 172969c..a8e16c8 100644
--- a/src/plugins/SSLPlugin/ssl_plugin.c
+++ b/src/plugins/SSLPlugin/ssl_plugin.c
@@ -60,7 +60,7 @@ static struct SSLqueue *searchSSL(SOCKET s){
pthread_mutex_lock(&ssl_mutex);
for(sslq = SSLq; sslq; sslq = sslq->next)
if(sslq->s == s) break;
- pthread_mutex_lock(&ssl_mutex);
+ pthread_mutex_unlock(&ssl_mutex);
return sslq;
}
diff --git a/src/version.h b/src/version.h
index c770653..a74b143 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150504180421"
+#define BUILDDATE "150504181054"
From 1ab94fa0024c3e3afa340d0f6c2e7eaee2635575 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sat, 16 May 2015 18:14:35 +0300
Subject: [PATCH 063/122] SSLPlugin: add SNI to server request
---
Makefile.msvc64 | 4 ++--
src/plugins/SSLPlugin/my_ssl.c | 13 ++++++++-----
src/plugins/SSLPlugin/my_ssl.h | 2 +-
src/plugins/SSLPlugin/ssl_plugin.c | 5 ++---
src/proxy.h | 8 +++++++-
src/version.h | 2 +-
6 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/Makefile.msvc64 b/Makefile.msvc64
index 8a1e98d..b5d4a57 100644
--- a/Makefile.msvc64
+++ b/Makefile.msvc64
@@ -14,7 +14,7 @@ LN = link
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:x64
DLFLAGS = /DLL
DLSUFFICS = .dll
-LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib
+LIBS = ws2_32.lib advapi32.lib odbc32.lib user32.lib kernel32.lib Gdi32.lib libeay32MT.lib ssleay32MT.lib
LIBSOLD = libeay32MT.lib ssleay32MT.lib
LIBEXT = .lib
LNOUT = /out:
@@ -26,7 +26,7 @@ REMOVECOMMAND = del 2>NUL >NUL
TYPECOMMAND = type
COMPATLIBS =
MAKEFILE = Makefile.msvc64
-PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin
+PLUGINS = utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin PCREPlugin SSLPlugin
VERFILE = $(VERFILE)
#../3proxy.res:
diff --git a/src/plugins/SSLPlugin/my_ssl.c b/src/plugins/SSLPlugin/my_ssl.c
index 0e7bca7..1590cc4 100644
--- a/src/plugins/SSLPlugin/my_ssl.c
+++ b/src/plugins/SSLPlugin/my_ssl.c
@@ -2,11 +2,7 @@
#define _CRT_SECURE_NO_WARNINGS
#include "../../structures.h"
-#include "../../proxy.h"
-#include "my_ssl.h"
-
#include
-#include
#include
#ifndef _WIN32
#include
@@ -19,6 +15,12 @@
#include
#include
+#include "../../proxy.h"
+#include "my_ssl.h"
+
+
+
+
typedef struct _ssl_conn {
SSL_CTX *ctx;
SSL *ssl;
@@ -184,7 +186,7 @@ SSL_CERT ssl_copy_cert(SSL_CERT cert)
}
-SSL_CONN ssl_handshake_to_server(SOCKET s, SSL_CERT *server_cert, char **errSSL)
+SSL_CONN ssl_handshake_to_server(SOCKET s, char * hostname, SSL_CERT *server_cert, char **errSSL)
{
int err = 0;
X509 *cert;
@@ -214,6 +216,7 @@ SSL_CONN ssl_handshake_to_server(SOCKET s, SSL_CERT *server_cert, char **errSSL)
ssl_conn_free(conn);
return NULL;
}
+ if(hostname && *hostname)SSL_set_tlsext_host_name(conn->ssl, hostname);
err = SSL_connect(conn->ssl);
if ( err == -1 ) {
*errSSL = ERR_error_string(ERR_get_error(), errbuf);
diff --git a/src/plugins/SSLPlugin/my_ssl.h b/src/plugins/SSLPlugin/my_ssl.h
index 6e41929..8a89e9e 100644
--- a/src/plugins/SSLPlugin/my_ssl.h
+++ b/src/plugins/SSLPlugin/my_ssl.h
@@ -18,7 +18,7 @@ SSL_CERT ssl_copy_cert(SSL_CERT cert);
//
// SSL/TLS handshakes
//
-SSL_CONN ssl_handshake_to_server(SOCKET s, SSL_CERT *server_cert, char **errSSL);
+SSL_CONN ssl_handshake_to_server(SOCKET s, char * hostname, SSL_CERT *server_cert, char **errSSL);
SSL_CONN ssl_handshake_to_client(SOCKET s, SSL_CERT server_cert, char **errSSL);
//
diff --git a/src/plugins/SSLPlugin/ssl_plugin.c b/src/plugins/SSLPlugin/ssl_plugin.c
index a8e16c8..40ef8a8 100644
--- a/src/plugins/SSLPlugin/ssl_plugin.c
+++ b/src/plugins/SSLPlugin/ssl_plugin.c
@@ -7,13 +7,12 @@
*/
#include "../../structures.h"
-#include "../../proxy.h"
#include /* SSLeay stuff */
#include
#include
#include
#include
-#include
+#include "../../proxy.h"
#include "my_ssl.h"
#ifndef _WIN32
@@ -236,7 +235,7 @@ int dossl(struct clientparam* param, SSL_CONN* ServerConnp, SSL_CONN* ClientConn
ul = ((unsigned long)ssl_connect_timeout)*1000;
setsockopt(param->remsock, SOL_SOCKET, SO_SNDTIMEO, (char *)&ul, 4);
}
- ServerConn = ssl_handshake_to_server(param->remsock, &ServerCert, &errSSL);
+ ServerConn = ssl_handshake_to_server(param->remsock, (char *)param->hostname, &ServerCert, &errSSL);
if ( ServerConn == NULL || ServerCert == NULL ) {
param->res = 8011;
param->srv->logfunc(param, (unsigned char *)"SSL handshake to server failed");
diff --git a/src/proxy.h b/src/proxy.h
index 82b4dcf..f72519a 100644
--- a/src/proxy.h
+++ b/src/proxy.h
@@ -58,13 +58,13 @@
#ifndef FD_SETSIZE
#define FD_SETSIZE 4096
#endif
-#include
#include
#include
#include
#include
#include
#include
+#include
#endif
#ifdef __CYGWIN__
@@ -77,7 +77,13 @@
#undef errno
#endif
#define errno WSAGetLastError()
+#ifdef EAGAIN
+#undef EAGAIN
+#endif
#define EAGAIN WSAEWOULDBLOCK
+#ifdef EINTR
+#undef EINTR
+#endif
#define EINTR WSAEWOULDBLOCK
#define SLEEPTIME 1
#define usleep Sleep
diff --git a/src/version.h b/src/version.h
index a74b143..dfd75a5 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150504181054"
+#define BUILDDATE "150516170531"
From 2d6b43f488bb107676165926676bd30d16a42c0c Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 1 Jun 2015 00:50:57 +0300
Subject: [PATCH 064/122] 3proxy for dummies updated
---
doc/ru/3proxy_for_dummies.rtf | 3557 ++++++++++++++++-----------------
1 file changed, 1735 insertions(+), 1822 deletions(-)
diff --git a/doc/ru/3proxy_for_dummies.rtf b/doc/ru/3proxy_for_dummies.rtf
index 50389d0..13d1021 100644
--- a/doc/ru/3proxy_for_dummies.rtf
+++ b/doc/ru/3proxy_for_dummies.rtf
@@ -1,1825 +1,1738 @@
-{\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}{\f39\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial CYR;}{\flomajor\f31500\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\fdbmajor\f31501\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset204\fprq2{\*\panose 02040503050406030204}Cambria;}
-{\fbimajor\f31503\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\fdbminor\f31505\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}
-{\fbiminor\f31507\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f44\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\f42\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\f45\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\f49\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f54\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f52\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
-{\f55\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f56\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f57\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f58\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
-{\f59\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f60\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f54\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f52\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f55\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}
-{\f56\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f57\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f58\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f59\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}
-{\f60\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f434\fbidi \fswiss\fcharset0\fprq2 Arial CYR;}{\f432\fbidi \fswiss\fcharset238\fprq2 Arial CYR CE;}{\f435\fbidi \fswiss\fcharset161\fprq2 Arial CYR Greek;}
-{\f436\fbidi \fswiss\fcharset162\fprq2 Arial CYR Tur;}{\f437\fbidi \fswiss\fcharset177\fprq2 Arial CYR (Hebrew);}{\f438\fbidi \fswiss\fcharset178\fprq2 Arial CYR (Arabic);}{\f439\fbidi \fswiss\fcharset186\fprq2 Arial CYR Baltic;}
-{\f440\fbidi \fswiss\fcharset163\fprq2 Arial CYR (Vietnamese);}{\flomajor\f31510\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
-{\fdbmajor\f31520\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
-{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31530\fbidi \froman\fcharset0\fprq2 Cambria;}
-{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
-{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31540\fbidi \froman\fcharset0\fprq2 Times New Roman;}
-{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
-{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
-{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31550\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
-{\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
-{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31570\fbidi \fswiss\fcharset0\fprq2 Calibri;}
-{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
-{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31580\fbidi \froman\fcharset0\fprq2 Times New Roman;}
-{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
-{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
-{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
-\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp
-\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext0 \sqformat \spriority0 Normal;}
-{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
-\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext11 \ssemihidden \sunhideused
-Normal Table;}}{\*\rsidtbl \rsid3764488\rsid11355186}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator vlad}{\creatim\yr2011\mo7\dy9\hr1\min32}
-{\revtim\yr2011\mo7\dy9\hr1\min34}{\version2}{\edmins2}{\nofpages18}{\nofwords7180}{\nofchars40932}{\nofcharsws48016}{\vern49255}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
-\paperw12240\paperh15840\margl1701\margr850\margt1134\margb1134\gutter0\ltrsect
-\deftab709\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120
-\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot3764488 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}
-{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
-{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
-\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
-\fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-Kurmaeff Halit
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e8\'fe\'ed\'fc}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\hich\af39\dbch\af31505\loch\f39 2006
-\par
-\par \hich\af39\dbch\af31505\loch\f39 halit_at_mail_dot_ru
-\par }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d1\'e5\'ec\'fc\loch\f39 \hich\f39 \'f1\'eb\'ee\'e5\'e2\loch\f39 \hich\f39 \'ec\'e0\'f2\'f0\'e5\'f8\'ea\'e8\loch\f39 \hich\f39 , \'e8\'eb\'e8
-\loch\f39 \hich\f39 \'cd\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\loch\f39 \hich\f39 3proxy \'e4\'eb\'ff\loch\f39 \hich\f39 \'f7\'e0\'e9\'ed\'e8\'ea\'ee\'e2
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 \hich\f39 1.3, \'e8\'f1\'ef\'f0\'e0\'e2\'eb\'e5\'ed\'ed\'e0\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'ee\'ef\'ee\'eb\'ed\'e5\'ed\'ed\'e0\'ff\loch\f39 \hich\f39 ,
-\'ec\'e0\'f0\'f2\loch\f39 , 2010)
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \loch\af39\dbch\af31505\hich\f39 \'d5\'ee\'f7\'f3\loch\f39 \hich\f39 \'ef\'ee\'e4\'e5\'eb\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'f1\'e2\'ee\'e8\'ec\loch\f39 \hich\f39 \'ee\'ef\'fb\'f2\'ee\'ec\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'ed\'e0
-\'f1\'f2\'f0\'ee\'e9\'ea\'e5\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'c7\'e0\'f0\'e0\'e7\'fb
-\loch\f39 \hich\f39 - 3proxy. \'c4\'ee\'eb\'e3\'ee\'e5\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'eb\'f1\'ff\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8\'ec\loch\f39 \hich\f39 \'e8
-\'ed\'f2\'e5\'f0\'e5\'f1\'ed\'fb\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'ee\'ec\loch\f39 \hich\f39 ES Proxy http://esproxy.org.ua \'ee\'f2\loch\f39 \hich\f39 \'c3\'e5\'ee\'f0\'e3\'e8\'ff\loch\f39 \hich\f39 \'cf\'e0
-\'e2\'eb\'e5\'ed\'ea\'ee\loch\f39 \hich\f39 - \'ec\'e0\'eb\'e5\'ed\'fc\'ea\'ee\'e3\'ee\loch\f39 \hich\f39 (\'e2\'f1\'e5\'e3\'ee\loch\f39 \hich\f39 \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 exe-\'f8\'ed\'e8\'ea\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 300 \'ea\'c1\loch\f39 \hich\f39 ), \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e5\loch\f39 \hich\f39 \'e8\loch\f39
-\hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'ed\'e5\'f2\'f0\'e5\'e1\'ee\'e2\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f0\'e5\'f1\'f3\'f0\'f1\'e0\'ec\loch\f39 \hich\f39 - \'ef\'ee\loch\f39 \hich\f39 \'ea
-\'f0\'e0\'e9\'ed\'e5\'e9\loch\f39 \hich\f39 \'ec\'e5\'f0\'e5\loch\f39 \hich\f39 , \'ef\'f0\'e8\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39 \'f1\'ee\'f2\'ed\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\loch\af39\dbch\af31505\hich\f39 \'fc
-\loch\af39\dbch\af31505\hich\f39 \'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 \'f3\'ec\'f3\'e4\'f0\'ff\'eb\'f1\'ff\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 \'f1\'f2\'e0\'f0\'e8\'ed\'ed\'ee\'ec\loch\f39 \hich\f39 P133, \'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'f2\'fb\'ea\'e0\'ff\'f1\'fc\loch\f39 \hich\f39 . \'c8\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee
-\loch\f39 \hich\f39 \'e2\'ee\'f2\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 <\'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39 > - \'e8\'ed\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea
-\'f1\'e8\'ea\loch\f39 \hich\f39 \'f1\'e0\'ec\'ee\'ef\'f0\'ee\'e8\'e7\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ef\'ee\'e6\'e8\'f0\'e0\'eb\loch\f39 \hich\f39 100% \'ef\'f0\'ee\'f6\'e5\'f1\'f1\'ee\'f0\'e0\loch\f39 \hich\f39 , \'f5\'ee\'f2\'ff
-\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'f0\'ee\'e4\'ee\'eb\'e6\'e0\'eb\loch\f39 \hich\f39 \'f7\'e0\'f1\'f2\'e8\'f7\'ed\'ee\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'ee\'f1\'f2\'fc\'fe\loch\f39 \hich\f39 \'f1\'ef
-\'f0\'e0\'e2\'eb\'ff\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'f1\'ee\loch\f39 \hich\f39 \'f1\'e2\'ee\'e8\'ec\'e8\loch\f39 \hich\f39 \'ee\'e1\'ff\'e7\'e0\'ed\'ed\'ee\'f1\'f2\'ff\'ec\'e8\loch\f39 \hich\f39 - \'e0\loch\f39 \hich\f39 \'f2\'e0\'ea\'e6\'e5
-\loch\f39 \hich\f39 \'f2\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e0\loch\af39\dbch\af31505\hich\f39 \'e2\'f2\'ee\'f0\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39
- 4 \'e3\'ee\'e4\'e0\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'ee\'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'ed\'e8\'ea\'e0\'ea\'e8\'f5\loch\f39 \hich\f39 \'ef\'f0\'e8\'e7\'ed\'e0\'ea\'ee\'e2\loch\f39 \hich\f39
-\'e6\'e8\'e7\'ed\'e8\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'e4\'f3\'ea\'f2\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f0\'e0\'e7\'e2\'e8\'f2\'e8\'e8
-\loch\f39 \hich\f39 - \'ef\'f0\'e8\'e2\'e5\'eb\'e8\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ef\'ee\'e8\'f1\'ea\'e0\'ec\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'e4\'f5\'ee\'e4\'ff\'f9\'e5\'e3\'ee\loch\f39
-\hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 . \'d1\'ea\'e0\'e6\'f3\loch\f39 \hich\f39 \'f1\'f0\'e0\'e7\'f3\loch\f39 \hich\f39 - \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ea\'f0
-\'e0\'f1\'e8\'e2\'fb\'ec\'e8\loch\f39 \hich\f39 GUI \'ec\'e5\'ed\'ff\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'eb\'e5\'ea\'e0\'eb\'e8\loch\f39 \hich\f39 \'ec\'e0\'eb\'ee\loch\f39 \hich\f39 , \'ff\loch\f39 \hich\f39 \'f1\'f2\'ee\'f0\'ee\'ed\'ed\'e8\'ea
-\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'e0\loch\f39 \hich\f39 <\'cc\'ed\'e5\loch\f39 \hich\f39 \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'e5\'f5\'e0\'f2\'fc\loch\f39 \hich\f39 >, \'e0\loch\f39 \hich\f39 \'ea\'f0\'e0
-\loch\af39\dbch\af31505\hich\f39 \'f1\loch\af39\dbch\af31505\hich\f39 \'e8\'e2\'fb\'e9\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\loch\f39 \hich\f39 - \'fd\'f2\'ee\loch\f39 \hich\f39 , \'ea\'ee\'ed\'e5\'f7\'ed\'ee\loch\f39 \hich\f39 , \'f5
-\'ee\'f0\'ee\'f8\'ee\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f3\'f9\'e5\'f0\'e1\loch\f39 \hich\f39 \'ef\'f0\'ee\'e8\'e7\'e2\'ee\'e4\'e8\'f2\'e5\'eb\'fc\'ed\'ee\'f1\'f2\'e8\loch\f39
-\hich\f39 . \'cf\'e5\'f0\'e5\'ef\'f0\'ee\'e1\'ee\'e2\'e0\'e2\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'f5\'ee\'f0\'ee\'f8\'e5\'e9\loch\f39 \hich\f39 \'e6\'e8\'e7\'ed\'e8\loch\f39 \hich\f39 5-6 \'f0\'e0\'e7\'ed\'fb
-\'f5\loch\f39 \hich\f39 \'ef\'f0\'ee\'e4\'f3\'ea\'f2\'ee\'e2\loch\f39 \hich\f39 (\'f1\'f0\'e5\'e4\'e8\loch\f39 \hich\f39 \'ed\'e8\'f5\loch\f39 \hich\f39 Usergate, Proxy+, Lan4net....) \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'f1\'f2
-\'e0\'e2\'f8\'e8\'f1\'fc\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'fb\'ec\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e0\'e5\'ec\'fb\'ec\'e8\loch\f39 \hich\f39 \'f0\'e5\'e7\'f3\'eb\'fc\'f2\'e0\'f2\'e0\'ec\'e8\loch\f39 \hich\f39 (\'e4\'ee\'eb\'e6
-\'e5\'ed\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e8\'e7\'e2\'e5\'f1\'f2\'ed\'fb\'e9\loch\f39 \hich\f39 \'ef\'f0\'ee\'e4\loch\af39\dbch\af31505\hich\f39 \'f3
-\loch\af39\dbch\af31505\hich\f39 \'ea\'f2\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 Microsoft \'ff\loch\f39 \hich\f39 \'f0\'e5\'f8\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ee\'f2\'ec\'e5\'eb\loch\f39 \hich\f39 \'e2\'e2\'e8\'e4\'f3
-\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'e2\'fb\'f1\'ee\'ea\'ee\'e9\loch\f39 \hich\f39 \'f1\'f2\'ee\'e8\'ec\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 ), \'f0\'e5\'f8\'e8\'eb\loch\f39 \hich\f39 \'ef\'ee\'ef\'f0\'ee\'e1\'ee\'e2\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'f2\'e0\'ea\'e8\loch\f39 \hich\f39 3proxy, \'f2\'e5\'ec\loch\f39 \hich\f39 \'ef\'e0\'f7\'e5\loch\f39 \hich\f39 \'f1\'eb\'fb\'f8\'e0\'eb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'ee\'ec\loch\f39
-\hich\f39 \'f5\'ee\'f0\'ee\'f8\'e8\'e5\loch\f39 \hich\f39 \'ee\'f2\'ea\'eb\'e8\'ea\'e8\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ea\'f2\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e6\'e0\'eb\'ee\'e2\'e0\'eb\'f1\'ff\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ed\'e5\'e3\'ee\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'eb\'ee\'e6\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2
-\'f0\'ee\'e9\'ea\'e8\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'f7\'e5\'ec\loch\f39 \hich\f39 , \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 , \'ed\'e5\'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e7\'e0
-\'e1\'e5\'e3\'e0\'ff\loch\f39 \hich\f39 \'e2\'ef\'e5\'f0\'e5\'e4\loch\f39 \hich\f39 , \'ff\loch\f39 \hich\f39 \'e8\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e8\loch\af39\dbch\af31505\hich\f39 \'ec\'e5\'eb\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6
-\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'f3\'e1\'e5\'e4\'e8\'f2\'fc\'f1\'ff\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\'e9\'e4\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\'e5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e0\'e1\'ee\'f2\'f7\'e8\'ea\'e0\loch\f39
-\hich\f39 http://3proxy.ru/, \'ef\'ee\'f7\'e8\'f2\'e0\'eb\loch\f39 \hich\f39 \'ef\'f0\'ee\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 - \'e8\loch\f39 \hich\f39 \'e2\'ee\'e7\'f0\'e0\'e4\'ee\'e2\'e0\'eb\'f1\'ff
-\loch\f39 \hich\f39 . \'d2\'f3\'f2\loch\f39 \hich\f39 \'f2\'e5\'e1\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'e5\loch\f39 \hich\f39 \'eb\'e8\'ec\'e8\'f2\'fb\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'ee
-\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 , \'e8
-\loch\f39 \hich\f39 FTP, \'e8\loch\f39 \hich\f39 SOCKS, \'e8\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2-\'ec\'e0\'ef\'ef\'e5\'f0\'fb\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\loch\f39
-\hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ef\'ee\'e4\loch\f39 Win\hich\af39\dbch\af31505\loch\f39 \hich\f39 dows, \'f2\'e0\'ea\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'e4\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'ec\'e8\loch\f39 \hich\f39
-\'ed\'e8\'ea\'f1\'e0\'ec\'e8\loch\f39 \hich\f39 . \'c1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'f3
-\'ed\'e8\'ea\'e0\'eb\'fc\'ed\'fb\'e5\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 - \'e2\'f0\'ee\'e4\'e5\loch\f39 \hich\f39 \'e2\'e5\'e4\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e6\'f3\'f0\'ed\'e0\'eb\'ee\'e2
-\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 ODBC \'e8\'eb\'e8\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'e8\'e7\'e2\'ee\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e0
-\loch\f39 \hich\f39 \'eb\'ee\'e3\'ee\'e2\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 <\'f1
-\'ea\'ee\'f0\'ec\'e8\'f2\'fc\loch\f39 \hich\f39 > \'eb\'fe\'e1\'ee\'ec\'f3\loch\f39 \hich\f39 \'eb\'ee\'e3-\'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\'f3\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'ee\'e1\'f9\'e5\'ec\loch\f39 \hich\f39 , \'e2\'f1\'b8
-\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'ed\'e0\'e4\'ee\'e1\'e8\'f2\'fc\loch\af39\dbch\af31505\hich\f39 \'f1\loch\af39\dbch\af31505\hich\f39 \'ff\loch\f39 \hich\f39 \'f1\'e8\'f1\'f2\'e5\'ec
-\'ed\'ee\'ec\'f3\loch\f39 \hich\f39 \'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e0\'f2\'ee\'f0\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39
-\'f3\'e4\'ee\'e2\'eb\'e5\'f2\'e2\'ee\'f0\'e8\'f2\'fc\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'f3\'f1\'ea\'e0\'f2\'fc\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ea\'f3\'e4\'e0
-\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee\loch\f39 \hich\f39 ... \'cd\'e5\loch\f39 \hich\f39 \'f5\'e2\'e0\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'f0\'e0\'e7\'e2\'e5\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \hich\f39 \'ea\'fd
-\'f8\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'e4\'e0\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ef\'e0\'f0\'fb\loch\f39 \hich\f39 \'ec\'e5\'eb\'ee\'f7\'e5\'e9\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'fd\'f2\'ee
-\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'ee\'e1\'e5\'f9\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'ec\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f9\'e5\'ec\loch\f39
-\hich\f39 , \'e4\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f1\'ee\'e4\'e5\'f0\'e6\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'f4\'ee\'f0\'f3\'ec\'e0\loch\f39 \hich\f39 , \'ee\'ef\'e5\'f0\'e0\'f2\'e8\'e2\'ed\'fb\'ec
-\loch\f39 \hich\f39 \'ee\'f2\'e2\'e5\'f2\'e0\'ec\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\loch\af39\dbch\af31505\hich\f39 \'f1\loch\af39\dbch\af31505\hich\f39 \'fb\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5
-\'eb\'e5\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f1\'ee\'e4\'e5\'f0\'e6\'e8\'ec\'ee\'ec\'f3\loch\f39 \hich\f39 changelog'\'e0\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 0.6 \'e2\'e8\'e4\'ed\'ee\loch\f39 \hich\f39 , \'f7
-\'f2\'ee\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\loch\f39 \hich\f39 \'ed\'e0\'e4\loch\f39 \hich\f39 \'f1\'ee\'e2\'e5\'f0\'f8\'e5\'ed\'f1\'f2\'e2\'ee\'e2\'e0\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e8
-\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'fb\'ec\loch\f39 \hich\f39 \'f5\'ee\'e4\'ee\'ec\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ea\'e0\'f7\'e0\'e2\loch\f39 \hich\f39 \'e4\'e8\'f1\'f2\'f0\'e8\'e1\'f3\'f2\'e8\'e2\loch\f39 \hich\f39 (555 \'ea\'c1\loch\f39 \hich\f39 ! \'e2\loch\f39 \hich\f39 \'e0\'ea\'f2\'f3\'e0\'eb\'fc\'ed\'ee\'e9\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\loch\f39 \hich\f39 \'ed\'e0\'ef\'e8\'f1\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'fc\'e8\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 devel 0.6), \'ff
-\loch\f39 \hich\f39 \'ef\'ee\'e3\'f0\'f3\'e7\'e8\'eb\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e8\'e7\'f3\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e7\'f6\'e0\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6\'e8
-\'ee\'ed\'ed\loch\af39\dbch\af31505\hich\f39 \'ee\'e3\'ee\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'e0\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'ef\'f0\'e8\'eb\'e0\'e3\'e0\'eb\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39
-\'ea\'ee\'ec\'ef\'eb\'e5\'ea\'f2\'e5\loch\f39 \hich\f39 . \'cf\'ee\loch\f39 \hich\f39 \'f5\'ee\'e4\'f3\loch\f39 \hich\f39 \'e8\'e7\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\'ee\'e7\'ed\'e8\'ea\'eb\'ee\loch\f39 \hich\f39 \'ed\'e5\'ec\'e0\'eb\'ee
-\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'ee\'e2\loch\f39 \hich\f39 . \'d1\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8\'f8\'eb\'ee\'f1\'fc\loch\f39
-\hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f0\'e0\'f1\'ef\'e5\'f7\'e0\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ed\'e5\'f1\'ef\'e5\'f8\'ed\'ee\loch\f39 \hich\f39 \'e8\'e7
-\'f3\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 , FAQ \'e8\loch\f39 \hich\f39 HowTo. \'ca\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'fd\'f2\'e8\loch\f39 \hich\f39 \'ec\'e0\'f2\'e5\'f0\'e8\'e0\'eb\'fb\loch\f39 \hich\f39 \'e1\'fb\'eb\'e8
-\loch\f39 \hich\f39 \'e8\'e7\'f3\'f7\'e5\'ed\'fb\loch\f39 \hich\f39 , \'ee\'ea\'e0\'e7\'e0\'eb\'ee\'f1\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'ee\'e2\loch\f39 \hich\f39 \'ec\'e5\'ed\'fc\'f8\'e5\loch\f39
-\hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'eb\'ee\loch\f39 \hich\f39 . \'cf\'ee\'ef\'fb\'f2\'ea\'e8\hich\af39\dbch\af31505\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1
-\'e8\loch\f39 \hich\f39 \'e1\'fb\'eb\'e8\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'ee\'ed\'e0\'f7\'e0\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e1\'e5\'e7\'f3\'f1\'ef\'e5\'f8\'ed\'fb\'ec\'e8\loch\f39 \hich\f39 , \'ef\'f0\'e8\'f8\'eb\'ee\'f1\'fc\loch\f39
-\hich\f39 \'ef\'ee\'f7\'e8\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ec\'e0\'f2\'e5\'f0\'e8\'e0\'eb\'fb\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e5\'f0\'e5\'ed\'f6\'e8\'e8\loch\f39 \hich\f39 , \'e3\'e4\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e1\'fb
-\'eb\loch\f39 \hich\f39 \'ed\'e0\'e9\'e4\'e5\'ed\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e7\'e5\'f6\loch\f39 \hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6
-\'e8\'ee\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'e0\loch\f39 \hich\f39 , \'ef\'ee\'f1\'f2\'f0\'ee\'e5\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'f3\loch\f39 \hich\f39 <\'f0\'e0\'e7
-\'f0\'e5\'f8\'e8\'f2\'fc\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'f1\'e5\'ec\loch\f39 \hich\f39 >. \'ca\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'e2\'ee\'f2\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 (\'e2
-\'e5\'f0\'f1\'e8\'ff\loch\f39 0):
-\par \hich\af39\dbch\af31505\loch\f39 auth none
-\par \hich\af39\dbch\af31505\loch\f39 log
-\par \hich\af39\dbch\af31505\loch\f39 proxy
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'f1\'e5\loch\f39 \hich\f39 \'e3\'e5\'ed\'e8\'e0\'eb\'fc\'ed\'ee\'e5\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'e3\'ee\'e2\'ee\'f0\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 , \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39
-\hich\f39 . \'c0\loch\f39 \hich\f39 \'ec\'ee\'ff\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1\'ea\'e0\loch\f39 \hich\f39 \'e7\'e0\'ea\'eb\'fe\'f7\'e0\'eb\'e0\'f1\'fc\loch\f39 \hich\f39 , \'ea\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39
-\hich\f39 \'f0\'e0\'e7\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f2\'ee\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ff\loch\f39 \hich\f39 \'ef\'fb\'f2\'e0\'eb\'f1\'ff\loch\f39 \hich\f39 \'f1\'f0\'e0\'e7\'f3\loch\f39 \hich\f39 \'ed
-\'e0\'ef\'e8\'f1\'e0\'f2\'fc\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f7\'e8\'e9\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'f1\'ee\loch\f39 \hich\f39 \'e2\'f1\'e5\'ec\'e8\loch\f39 \hich\f39 \'eb\'e8\'ec\'e8\'f2\'e0\'ec\'e8\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'f2.\'e4\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'e0\'e6\'ed\'ee\loch\f39 \hich\f39 ! \'ca\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'e1\'f9\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5
-\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'ed\'e0\'f5\'ee\'e4\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'e9\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'e5\loch\f39 \hich\f39 \'f1\loch\f39
-\hich\f39 \'e8\'f1\'ef\'ee\'eb\'ed\'ff\'e5\'ec\'fb\'ec\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'ee\'ec\loch\f39 3proxy.exe \hich\af39\dbch\af31505\loch\f39 \hich\f39 (\'ef\'ee\loch\f39 \hich\f39 \'f3\'ec\'ee\'eb\'f7\'e0\'ed\'e8\'fe\loch\f39 \hich\f39
-\'e2\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'e5\loch\f39 \hich\f39 bin). \'c8\'ed\'e0\'f7\'e5\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'f2\'fc\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'ed\'ff\'e5\'ec\'fb\'e9
-\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ef\'f3\'f2\'e8\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 90% \'f1\'eb\'f3\'f7\'e0\'ff\'f5\loch\f39 \hich\f39 \'fd\'f2\'ee\'f2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2
-\'e0\'f2\'fc\loch\f39 \hich\f39 . \'d0\'e0\'e7\'e1\'e5\'f0\'e5\'ec\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e5\'ec\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'ee\'e9\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'e5\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'fb\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e0
-\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'ff\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'f0\'e5\'e1\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 , \'e4\'ee\'f1\'f2\'f3\'ef
-\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e0\'fe\'f2\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'fe\'e7\'e5\'f0\loch\af39\dbch\af31505\hich\f39 \'fb\loch\f39 \hich\f39 \'e1\'e5\'e7\loch\f39 \hich\f39 \'e8\'f1\'ea\'eb\'fe\'f7\'e5\'ed\'e8\'ff
-\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e2\'fb\loch\f39 \hich\f39 \'ef\'ee\'ef\'fb\'f2\'e0\'e5\'f2\'e5\'f1\'fc\loch\f39 \hich\f39 \'e2\'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\'e9
-\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 \'ea\'e0\'ea\'e8\'e5-\'f2\'ee\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 , \'f2\'ee\loch\f39
-\hich\f39 \'ee\'ed\'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f0\'e0\'e1\'ee\'f2\'e0\'fe\'f2\loch\f39 \hich\f39 , \'ee\loch\f39 \hich\f39 \'f7\'e5\'ec\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f1\'ee\'ee\'e1\'f9\'e0\'e5\'f2\'f1\'ff
-\loch\f39 \hich\f39 \'e2\loch\f39 FAQ.
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'ee\loch\f39 \hich\f39 \'e2\'f2\'ee\'f0\'ee\'e9\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e5\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e5\'ec\loch\f39 \hich\f39 \'e2\'e5\'e4\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'eb\'ee
-\'e3\'e0\loch\f39 \hich\f39 , \'ef\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'fb\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 \'ef\'f3\'f2\'fc\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f4
-\'e0\'e9\'eb\'f3\loch\f39 \hich\f39 , \'f1\'eb\'e5\'e4\'ee\'e2\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 , \'eb\'ee\'e3\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e2\'ee\'e4\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'fd\loch\af39\dbch\af31505\hich\f39 \'ea\'f0\'e0\'ed\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\loch\f39 \hich\f39 , \'ed\'e0\'ea\'ee\'ed\'e5\'f6\loch\f39 \hich\f39 , \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'e5\'ec\loch\f39 \hich\f39 \'f1\'e0\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'e4\'e0\'f0\'f2\'ed\'ee\'ec\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'f3\loch\f39 3128.
-\par \loch\af39\dbch\af31505\hich\f39 \'cc\'ed\'ee\'e3\'e8\'e5\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'fb\loch\f39 \hich\f39 \'ee\'ef\'f3\'f9\'e5\'ed\'fb\loch\f39 \hich\f39 , \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39
-\hich\f39 , \'e4\'eb\'ff\loch\f39 \hich\f39 \'ed\'e8\'f5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'e2\'ee\'e7\'fc\'ec\'e5\'f2\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39
-\'f3\'ec\'ee\'eb\'f7\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 . \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\'e5\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5
-\'eb\'fc\'f1\'ea\'e8\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\'f5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e8\'f2\'fc\loch\f39 \hich\f39 \'e2\'e0\'f8\loch\f39 \hich\f39 \'eb\'fe\'e1\'e8\'ec\'fb\'e9\loch\f39 \hich\f39 \'e1
-\'f0\'e0\'f3\'e7\'e5\'f0\loch\f39 \hich\f39 - \'ed\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'fe\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'e2\'e0\loch\af39\dbch\af31505\hich\f39 \'f1\loch\f39 \hich\f39 , \'e0\loch\f39
-\hich\f39 \'f3\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'ef\'ee\'f7\'e5\'f2\'ed\'ee\'e5\loch\f39 \hich\f39 \'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'eb\'e5\'f2\loch\f39
-\hich\f39 8 \'e7\'e0\'ed\'e8\'ec\'e0\'e5\'f2\loch\f39 \hich\f39 Opera - \'e2\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'f1\'e5\'f2\'e5\'e2\'fb\'f5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'ef\'ee\'f1
-\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e3\'e0\'eb\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 "\'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 ", \'e0\loch\f39 \hich\f39 \'e7\'e0\'f2\'e5
-\'ec\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'f0\'ee\'f2\'ee\'ea\'ee\'eb\'ee\'e2\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 IP \'e2\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39
-\'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 3128.
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e2\'e0\'ec\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ed\'f3\'e6\'e5\'ed\loch\f39 \hich\f39 \'f3\'f7\'e5\'f2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ea\'ee
-\'ed\'f2\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 , \'ec\'e0\'eb\'ee\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'e5\'f1\'f3\'e5\'f2\loch\f39 \hich\f39 \'e1\'e5\'e7\'ee\'ef\'e0\loch\af39\dbch\af31505\hich\f39 \'f1\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'f1\'e5
-\'f2\'e8\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'e2\'e0\'f1\loch\f39 \hich\f39 \'e1\'e5\'e7\'eb\'e8\'ec\'e8\'f2\'ed\'fb\'e9\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39
-\'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'fd\'f2\'e8\'ec\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 , \'ef\'ee\loch\f39 \hich\f39 \'ea\'f0\'e0\'e9\'ed\'e5\'e9\loch\f39 \hich\f39 \'ec
-\'e5\'f0\'e5\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'ee\'e5\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'ff\loch\f39 \hich\f39 . \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'f3\'e4\'e0\'eb\'e8\'f2\'fc
-\loch\f39 \hich\f39 \'e2\'f2\'ee\'f0\'f3\'fe\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 , \'ee\'ed\'e0\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'e1\'ff\'e7\'e0\'f2\'e5\'eb\'fc\'ed\'e0\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e5\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e1\'fb\loch\f39
-\hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 service, \'e4\'eb\'ff\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb
-\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'eb\'f1\'ff\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'e0\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39
-\'ed\'e5\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'fb\'ec\loch\f39 \hich\f39 \'ef\'f0\'e8\'eb\'ee\'e6\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39
-\hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'e2\'e0\'f0\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'ee\'e2\'e8\'f2\'fc\loch\f39
-\hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'f3\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39 3proxy --install.
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'ef\'e5\'f8\'e8\'f2\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 ! \'c4\'e5\'eb\'ee\loch\f39
-\hich\f39 \'e2\loch\f39 \hich\f39 \'f2\'ee\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f7\'e8\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f9\'e5\'ed\loch\f39 \hich\f39 \'ef\'f0\'e8\'eb\'ee\'e6\'e5\'ed\'e8\'e5\'ec\loch\f39
-\hich\f39 , 3proxy \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f1\'f0\'e0\'e7\'f3\loch\f39 \hich\f39 \'e2\'fb\'e4\'e0\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'fd\'ea\'f0\'e0\'ed\loch\f39 \hich\f39 \'f1\'ee\'ee\'e1\'f9\'e5\'ed
-\'e8\'ff\loch\f39 \hich\f39 \'ee\'e1\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'e5\'ec\'fb\'f5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'e0\'f5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1
-\'ea\'e0\'f5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'e0\'ec\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'e4\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'ec\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e5\'ea\'f1\'f2\'ee\'e2
-\'fb\'e5\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 . \'cf\'f0\'e8\'f7\'e5\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ee\'f1\'ee\'e1\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'f0\'e0\'e4\'f3\'e5\'f2\loch\f39 \hich\f39 , \'f1
-\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'e4\'e0\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1\'ea\'e8\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'ee\'ec\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e8
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 , \'e3\'e4\'e5\loch\f39 \hich\f39 \'fd\'f2\'e0\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1\'ea\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8\'f1\'f3\'f2\'f1\'f2\'e2\'f3\'e5\'f2
-\loch\f39 \hich\f39 . \'c0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'e0\'e4\'e8\'e8\loch\f39 \hich\f39 \'ee\'e1\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'ef
-\'ee\'ec\'ee\'e3\'e0\'e5\'f2\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'e0\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\loch\f39 \hich\f39 \'e2\'e0\'e6\'ed\'ee\'e5\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0
-\loch\af39\dbch\af31505\hich\f39 \'ed\'e8\'e5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f7\'e5\'f2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 - \'ed\'e8\'ea\'e0\'ea\'e8\'f5\loch\f39 \hich\f39 \'eb\'e8\'f8\'ed\'e8\'f5\loch\f39 \hich\f39
- \'ef\'f0\'ee\'e1\'e5\'eb\'ee\'e2\loch\f39 \hich\f39 , \'f2\'e0\'e1\'f3\'eb\'ff\'f6\'e8\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2.\'ef\loch\f39 \hich\f39 . \'e7\'ed\'e0\'ea\'ee\'e2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0
-\'eb\'e5\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e8\loch\f39 \hich\f39 , \'e8\'ed\'e0\'f7\'e5\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e0\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f1
-\'f7\'e8\'f2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'e7\'e0\'ea\'ee\'ec\'e5\'ed\'f2\'e8\'f0\'ee\'e2\'e0\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e8\'f2\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'e1\'f3\'e4
-\'e5\'f2\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 .
-\par
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ce\'ef\'e8\'f8\'e5\'ec\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'ef\'ee\'eb\'e0\'e3\'e0\'e5\'ec\'f3\'fe\loch\f39 \hich\f39 \'f1\'e8\'f2\'f3\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 . \'cd\'e0\'e4\'ee\loch\f39 \hich\f39 "\'ef\'f3
-\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\loch\f39 \hich\f39 " \'ed\'e0\loch\f39 \hich\f39 3 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\hich\af39\dbch\af31505\loch\f39 \hich\f39 IP \'e0\'e4\'f0\'e5
-\'f1\'e0\'ec\'e8\loch\f39 \hich\f39 192.168.0.2,192.168.0.3,192.168.0.4, \'e2\loch\f39 \hich\f39 \'ea\'e0\'f7\'e5\'f1\'f2\'e2\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e2\'fb\'f1\'f2\'f3\'ef\'e0
-\'e5\'f2\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e4\'e2\'f3\'ec\'ff\loch\f39 \hich\f39 \'f1\'e5\'f2\'e5\'e2\'fb\'ec\'e8\loch\f39 \hich\f39 \'ea\'e0\'f0\'f2\'e0\'ec\'e8\loch\f39 \hich\f39 ,
-\'e2\'ed\'f3\'f2\'f0\'e5\'ed\'ed\'e8\'ec\loch\f39 \hich\f39 IP-\'e0\'e4\'f0\'e5\'f1\'ee\'ec\loch\f39 \hich\f39 192.168.0.1 \'e8\loch\f39 \hich\f39 "\'e2\'ed\'e5\'f8\'ed\'e8\'ec\loch\f39 \hich\f39 ", \'f2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc
-\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'ed\'fb\'ec\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'ee\'ec\loch\f39 \hich\f39 211.80.11.12. \'ce\'f2\loch\f39
-\hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'fb\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\af39\dbch\af31505\hich\f39 \'e0\hich\af39\dbch\af31505\loch\f39 \hich\f39
- DNS-\'f1\'e5\'f0\'e2\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 : 213.153.100.1 \'e8\loch\f39 213.153.101.1.
-\par \loch\af39\dbch\af31505\hich\f39 \'d3\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e5\'ed\loch\f39 \hich\f39 SMTP-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 smtp.provider.ru.
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e5\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'e0\'ec\'e8\loch\f39 \hich\f39 192.168.0.2-192.168.0.4 \'f0\'e0\'e1\'ee\'f2\'e0\'fe
-\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e8\loch\f39 \hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2\loch\f39 \hich\f39 , \'cf\'e5\'f2\'f0\'ee\'e2\loch\f39 \hich\f39 , \'d1\'e8\'e4\'ee\'f0\'ee\'e2\loch\f39 \hich\f39 \'f1\'ee\'ee\'f2\'e2
-\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'ee\'e2\'e8\'ec\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'f3\loch\f39 c:\\\hich\f39 3proxy, \'f5
-\loch\af39\dbch\af31505\hich\f39 \'ee\'f2\'ff\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'ee\'e2\'e8\'ec\loch\f39 \hich\f39 - \'fd\'f2\'ee\loch\f39 \hich\f39 \'e3\'f0\'ee\'ec\'ea\'ee\loch\f39 \hich\f39 \'f1\'ea\'e0\'e7\'e0\'ed\'ee\loch\f39 \hich\f39 ,
-\'e4\'eb\'ff\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e0\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 \'f0\'e0\'f1\'ef\'e0\'ea\'ee\'e2\'e0\'f2\'fc\loch\f39
-\hich\f39 \'e8\'e7\loch\f39 \hich\f39 zip-\'e0\'f0\'f5\'e8\'e2\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'ed\'f3\'fe\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'f3\loch\f39 \hich\f39 , \'ef\'f3\'f1\'f2\'fc\loch\f39 \hich\f39 \'fd
-\'f2\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 c:\\\hich\f39 3proxy (\'ef\'f0\'ee\loch\f39 \hich\f39 \'e8\'ed\'f1\'f2\'e0\'eb\'eb\'ff\'f6\'e8\'fe\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39
-\hich\f39 \'f1\'ea\'e0\'e7\'e0\'ed\'ee\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\loch\f39 ).
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ee\'e2\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'e9\'ec\'e5\'ec\'f1\'ff\loch\f39 \hich\f39 \'e4\'e0\'eb\'fc\'ed\'e5\'e9\'f8\'e8\'ec
-\loch\f39 \hich\f39 \'f3\'eb\'f3\'f7\'f8\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0
-\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'eb\'ff\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e0\loch\f39 \hich\f39 \'f3\'ea\'e0\'e6\'e5\'ec\loch\f39 \hich\f39 \'e2\'ed\'f3\'f2\'f0\'e5\'ed\'ed\'e8\'e9\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e2\'fb\loch\f39 \hich\f39 \'e2\'e5\'e4\'fc\loch\f39 \hich\f39 \'ef\'ee\'ed\'e8\'ec\'e0\'e5\'f2\'e5\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 \'e4\'ee\'eb
-\'e6\'e5\'ed\loch\f39 \hich\f39 \'f1\'f2\'ee\'ff\'f2\'fc\loch\f39 \hich\f39 IP \'f1\'e5\'f2\'e5\'e2\'ee\'e9\loch\f39 \hich\f39 \'ea\'e0\'f0\'f2\'fb\loch\f39 \hich\f39 \'c2\'c0\'d8\'c5\'c3\'ce\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39
-\hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 , \'ed\'e0\'f1\'f2\'f0\'ee\'e5\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'ee\'ea\'e0\'eb\'fc\'ed\'f3\'fe\loch\f39 \hich\f39 \'f1\'e5\'f2\'fc\loch\f39 \hich\f39 . \'dd
-\'f2\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'e8\'ec\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'f2\'ee\'f2\loch\f39 \hich\f39 IP \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'e2
-\loch\f39 \hich\f39 \'eb\'ee\'ea\'e0\'eb\'fc\'ed\'ee\'e9\loch\f39 \hich\f39 \'f1\'e5\'f2\'e8\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'ee\'ec\'f3\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2\loch\f39 \hich\f39 \'ee
-\loch\af39\dbch\af31505\hich\f39 \'e1\'f0\'e0\'f9\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'fb\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 , \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2
-\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 , \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'ef\'e8\'f1\'e0\'ed\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e0\'f5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'e0\'f7\'e5
-\'f1\'f2\'e2\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'ed\'e5\'f8\'ed\'e8\'e9\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\'fb\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0
-\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'fd\'f2\'ee\'f2\loch\f39 \hich\f39 IP \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'e2\'fb\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'fb\loch\f39 \hich\f39 \'e1
-\'fb\'eb\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'ee\loch\f39
-\hich\f39 , \'e2\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e2\'fb\'e4\'e5\'eb\'e5\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'eb\loch\af39\dbch\af31505\hich\f39 \'e8\'ed\'e8\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'f2
-\'e0\'ea\loch\f39 \hich\f39 \'ed\'e0\'e7\'fb\'e2\'e0\'e5\'ec\'fb\'e9\loch\f39 \hich\f39 "\'f0\'e5\'e0\'eb\'fc\'ed\'fb\'e9\loch\f39 \hich\f39 " IP, \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'e1\'fb\'f2
-\'fc\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e5\'ed\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\'e0\loch\f39 \hich\f39 (\'f5\'ee\'f2\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39
-\hich\f39 \'ee\'e1\'ff\'e7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 ).
-\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e6\'e5\loch\f39
-\hich\f39 \'f3\loch\f39 \hich\f39 \'e2\'e0\'f1\loch\f39 \hich\f39 \'ea\'ee\'ec\'ec\'f3\'f2\'e8\'f0\'f3\'e5\'ec\'fb\'e9\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 : dial-up \'e8\'eb\'e8\loch\f39 \hich\f39 vpn \'e8\loch\f39
-\hich\f39 \'e2\'e0\'f8\loch\f39 \hich\f39 \'e2\'ed\'e5\'f8\'ed\'e8\'e9\loch\f39 \hich\f39 IP \'f0\'e5\'e3\'f3\'eb\'ff\'f0\'ed\'ee\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc
-\loch\f39 \hich\f39 2 \'f1\'ef\'ee\'f1\'ee\'e1\'e0\loch\f39 \hich\f39 \'f0\'e5\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'eb\'e5\'ec\'fb\loch\f39 \hich\f39 . \'cf\'e5\'f0\'e2\'fb\'e9\loch\f39 \hich\f39 \emdash \loch\f39 \hich\f39 \'ed
-\'e0\'ef\'e8\'f1\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'ea\loch\af39\dbch\af31505\hich\f39 \'f0\'e8\'ef\'f2\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'e4\'f1\'f2\'e0\'e2\'eb\'ff
-\'f2\'fc\loch\f39 \hich\f39 \'e2\'ed\'e5\'f8\'ed\'e8\'e9\loch\f39 \hich\f39 IP \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 include \'eb\'e8\'e1\'ee\loch\f39 \hich\f39 $ (\'fd\'f2\'ee\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'ee\'e1\'f1\'f3\'e4
-\'e8\'ec\loch\f39 \hich\f39 \'ef\'ee\'e7\'e6\'e5\loch\f39 \hich\f39 ). \'c2\'f2\'ee\'f0\'ee\'e9\loch\f39 \hich\f39 \emdash \loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39
+{\rtf1\ansi\deff3\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset204 Liberation Serif{\*\falt Times New Roman};}{\f4\froman\fprq2\fcharset204 Liberation Sans{\*\falt Arial};}{\f5\froman\fprq2\fcharset204 Calibri;}{\f6\froman\fprq2\fcharset204 Arial CYR;}{\f7\froman\fprq2\fcharset204 Arial;}{\f8\fnil\fprq2\fcharset204 Mangal;}{\f9\fnil\fprq2\fcharset204 Calibri;}{\f10\fnil\fprq2\fcharset204 Arial CYR;}{\f11\fnil\fprq2\fcharset204 Arial;}{\f12\fnil\fprq2\fcharset204 Times New Roman;}{\f13\fnil\fprq2\fcharset204 Liberation Serif{\*\falt Times New Roman};}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049 Normal;}
+{\*\cs15\snext15 Default Paragraph Font;}
+{\*\cs16\snext16\cf2\ul\ulc0\langfe255\lang255 \u1048\'c8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2-\u1089\'f1\u1089\'f1\u1099\'fb\u1083\'eb\u1082\'ea\u1072\'e0;}
+{\s17\sbasedon0\snext18\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb240\sa120\keepn\ltrpar\cf1\kerning1\dbch\af8\langfe1025\dbch\af13\afs24\loch\f4\fs28\lang1049 \u1047\'c7\u1072\'e0\u1075\'e3\u1086\'ee\u1083\'eb\u1086\'ee\u1074\'e2\u1086\'ee\u1082\'ea;}
+{\s18\sbasedon0\snext18\sl288\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa140\ltrpar\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\loch\f5\fs22\lang1049 \u1054\'ce\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9 \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2;}
+{\s19\sbasedon18\snext19\sl288\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa140\ltrpar\cf1\kerning1\dbch\af8\langfe1025\dbch\af13\afs24\loch\f5\fs22\lang1049 \u1057\'d1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea;}
+{\s20\sbasedon0\snext20\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa120\ltrpar\cf1\i\kerning1\dbch\af8\langfe1025\dbch\af13\afs24\loch\f5\fs24\lang1049 \u1053\'cd\u1072\'e0\u1079\'e7\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5;}
+{\s21\sbasedon0\snext21\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar\cf1\kerning1\dbch\af8\langfe1025\dbch\af13\afs24\loch\f5\fs22\lang1049 \u1059\'d3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc;}
+{\s22\snext22\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049 DocumentMap;}
+}{\*\generator LibreOffice/4.4.3.2$Windows_x86 LibreOffice_project/88805f81e9fe61362df02b9941de8e38a9b5fd16}{\info{\creatim\yr2011\mo7\dy9\hr1\min32}{\revtim\yr2015\mo5\dy25\hr12\min23}{\printim\yr0\mo0\dy0\hr0\min0}}\deftab720\deftab720
+\viewscale100
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse451\pgwsxn12240\pghsxn15840\marglsxn1701\margrsxn850\margtsxn1134\margbsxn1134\pgdscnxt0 \u1041\'3f\u1072\'3f\u1079\'3f\u1086\'3f\u1074\'3f\u1099\'3f\u1081\'3f;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1701\margr850\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1701\margrsxn850\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+{\*\ftnsep}\pgndec\pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+Kurmaeff Halit}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-\par }{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 external 0.0.0.0
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'e5\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 - \'ea\'ee\'ec\'e0\'ed\'e4\'e0\'ec\'e8\loch\f39 \hich\f39 external \'e8\loch\f39 \hich\f39
- internal \'ec\'fb\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e5\'ec\loch\f39 \hich\f39 \'e2\'ed\'f3\'f2\'f0\'e5\'ed\'ed\'e8\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'ed\'e5\'f8\'ed\'e8\'e5\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1
-\'fb\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'f1\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 , \'e3\'eb\'ee\'e1\'e0\'eb\'fc\loch\af39\dbch\af31505\hich\f39 \'ed\'ee\loch\f39 \hich\f39 , \'ed\'e0\loch\f39 \hich\f39 \'e2\'e5\'f1\'fc\loch\f39
-\hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39
-\hich\f39 \'ed\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'fb\'f5\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e2\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'f1\'e2\'ee\'e8\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\'fb\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef\'ee\'ec\'ee\'f9\'fc\'fe\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'ee\'e2\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 -e \'e8\loch\f39 \hich\f39 -i, \'ed\'e0\'ef\'f0\'e8
-\'ec\'e5\'f0\loch\f39 \hich\f39 , \'e0\'ed\'e0\'eb\'ee\'e3\'ee\'ec\loch\f39 \hich\f39 \'f1\'ee\'e2\'ee\'ea\'f3\'ef\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\loch\f39
-\par
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 proxy
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e1\'f3\'e4\'e5\'f2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 proxy -i192.168.0.1 -e211.80.11.12
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f3\'f1\'ea\'ee\'f0\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee
-\'f6\'e5\'f1\'f1\'e0\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e8\'ec\'e5\'ed\loch\f39 \hich\f39 \'f5\'ee\'f1\'f2\'ee\'e2\loch\f39 \hich\f39 \'f3\'ea\'e0\'e6\'e5\'ec\loch\f39 \hich\f39 DNS-\'f1\'e5\'f0\'e2\'e5
-\'f0\'e0\loch\f39 \hich\f39 - \'eb\'f3\'f7\'f8\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'ee\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 DNS-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e2\'e0\'f8\'e5\'e3\'ee\loch\f39
-\hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 - \'e8\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'ec\loch\f39 \hich\f39 \'ea\'fd\'f8\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'e5\loch\f39 DNS:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nsc\hich\af39\dbch\af31505\loch\f39 ache 65536
-\par \loch\af39\dbch\af31505\hich\f39 \'e3\'e4\'e5\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 65536 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e5\loch\f39 \hich\f39 , \'e6\'e5\'eb\'e0
-\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'f1\'f2\'e0\'e2\'eb\'ff\'fe\'f9\'e5\'e5\loch\f39 \hich\f39 \'f1\'f2\'e5\'ef\'e5\'ed\'fc\loch\f39 \hich\f39 \'f7\'e8\'f1\'eb\'e0\loch\f39 \hich\f39 2 \'e8\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2
-\'e0\'f2\'ee\'f7\'ed\'ee\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'ee\'e5\loch\f39 \hich\f39 . \'ca\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'ee\'f2\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 nscache \'ed\'e0\'ef\'f0\'ff\'ec
-\'f3\'fe\loch\f39 \hich\f39 \'e7\'e0\'e2\'e8\'f1\'e8\'f2\loch\f39 \hich\f39 \'ea\'ee\'eb\'e8\'f7\'e5\'f1\'f2\'e2\'ee\loch\f39 \hich\f39 \'ee\'ef\'e5\'f0\'e0\'f2\'e8\'e2\'ed\'ee\'e9\loch\f39 \hich\f39 \'ef\'e0\'ec\'ff\'f2\'e8\loch\f39 \hich\f39 , \'e7
-\'e0\'ed\'e8\'ec\'e0\'e5\'ec\'ee\'e9\loch\f39 \hich\f39 3proxy. \'c8\'f2\'e0\'ea\loch\f39 \hich\f39 , \'ed\'e0\loch\f39 \hich\f39 \'e4\'e0\'ed\'ed\'ee\'ec\loch\f39 \hich\f39 \'fd\'f2\'e0\'ef\'e5\loch\f39 \hich\f39 \'ed\'e0\'f8\loch\f39 \hich\f39 \'ea
-\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e8\'f2\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'ec\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e7\'ee\'ec\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff
-\loch\f39 1):
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 log
-\par \hich\af39\dbch\af31505\loch\f39 auth none
-\par \hich\af39\dbch\af31505\loch\f39 proxy
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'e6\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'ed\'e0\'ec\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f5\'e2\'e0\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'ee\'f6\'e5
-\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'ee\'e2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1\'ee\'ea\loch\f39
-\hich\f39 , \'e2\'e5\'e4\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'fd\'ea\'f0\'e0\'ed\'e5\loch\f39 \hich\f39 \'eb\'ee\'e3\loch\f39 \hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'e1\'fb\'f1\'f2\'f0\'ee\loch\f39
-\loch\af39\dbch\af31505\hich\f39 \'ef\'f0\'ee\'eb\'e5\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 ! \'cf\'ee\'ec\'e5\'ed\'ff\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 log \'ed\'e0\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5
-\loch\f39 \hich\f39 \'f0\'e0\'f1\'f8\'e8\'f0\'e5\'ed\'ed\'f3\'fe\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'e0\'ea\'e8\'ec\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e7\'ee\'ec\loch\f39 \hich\f39 , \'ec\'fb\loch\f39 \hich\f39 \'e4\'e0\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 \'f1\'ee\'f5\'f0
-\'e0\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'e5\loch\f39 c:\\3proxy\\\hich\f39 logs \'e8\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'fb\'e9\loch\f39 \hich\f39 \'e4\'e5\'ed\'fc
-\loch\f39 \hich\f39 \'ed\'e0\'f7\'e8\'ed\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'ee\'e2\'fb\'e9\loch\f39 \hich\f39 \'eb\'ee\'e3\loch\f39 \hich\f39 (\'ee\'ef\'f6\'e8\'ff\loch\f39 \hich\f39 D). \'c5\'f9\'e5\loch\f39 \hich\f39 \'f0\'e0\'e7\loch\f39
-\hich\f39 \'ed\'e0\'ef\'ee\'ec\'ed\'fe\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'e0\'e4\'e8\'e8\loch\f39 \hich\f39 \'f2\'e5\'f1\'f2\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'eb\'f3\'f7\'f8
-\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e6\'e5\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\'fb\'e2\'ee\'e4\loch\f39 \hich\f39 \'eb\'ee\'e3\'ee\'e2\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'fd\'ea\'f0\'e0\'ed\loch\f39 \hich\f39 - \'f2\'e0\'ea\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1\'ed\'e5\'e5\loch\f39 \hich\f39 \'e8\'f1\'ea\'e0\'f2\'fc\loch\f39 \hich\f39 \'ee\'f8\'e8\'e1\'ea\'e8\loch\f39 \hich\f39 . \'c8\loch\f39
-\hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'e4\'ee\'e1\'e0\'e2\'e8\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par \loch\af39\dbch\af31505\hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'e5\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'eb\'ee\'e3\'e0
-\'ec\'e8\loch\f39 \hich\f39 \'f1\'ee\'f5\'f0\'e0\'ed\'ff\'eb\'e8\'f1\'fc\loch\f39 \hich\f39 \'eb\'e8\'f8\'fc\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ed\'e8\'e5\loch\f39 \hich\f39 30 \'f4\'e0\'e9\'eb\'ee\'e2\loch\f39 \hich\f39 , \'e0\loch\f39
-\hich\f39 \'f2\'ee\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 \hich\f39 \'e1\'fb\'f1\'f2\'f0\'ee\loch\f39 \hich\f39 \'f0\'e0\'f1\'f2\'f3\'f2\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'e4\'e8\'f1\'ea\loch\f39
-\hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f0\'e5\'e7\'e8\'ed\'ee\'e2\'fb\'e9\loch\f39 !
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'f1\'ef\'ee\'ec\'e8\'ed\'e0\'e5\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 3proxy \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'e2\'e8\'e4
-\loch\af39\dbch\af31505\hich\f39 \'ee\'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\loch\f39 \hich\f39 \'eb\'ee\'e3\'ee\'e2\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39
-\hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'ec\loch\f39 \hich\f39 \'eb\'ee\'e3-\'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\'ee\'ec
-\loch\f39 \hich\f39 . \'ca\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'ec\'ee\'e3\'f3\loch\f39 \hich\f39 \'ef\'ee\'f1\'ee\'e2\'e5\'f2\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f1
-\'e0\'e9\'f2\'e0\loch\f39 \hich\f39 www.wrspy.ru \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'eb\'e8\'f7\'ed\'fb\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'f1\'e5\'e9\'f7\'e0\'f1\loch\f39
-\hich\f39 \'ed\'e5\'ec\'e0\'eb\'ee\'e2\'e0\'e6\'ed\'ee\loch\f39 \hich\f39 , \'e1\'e5\'f1\'ef\'eb\'e0\'f2\'ed\'fb\'e9\loch\f39 \hich\f39 \'eb\'ee\'e3-\'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\loch\f39 \hich\f39 Wrspy \'ed\'e0\'f8\'e5\'e3\'ee\loch\f39
-\hich\f39 \'ee\'f2\'e5\'f7\'e5\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'e8\'f1\'f2\'e0\loch\f39 \hich\f39 . \'d2\'e5\'ec\loch\f39 \hich\f39 \'e1\loch\af39\dbch\af31505\hich\f39 \'ee
-\loch\af39\dbch\af31505\hich\f39 \'eb\'e5\'e5\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\loch\f39 \hich\f39 \'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\'e0\loch\f39 \hich\f39 \'eb\'fe\'e1\'e5\'e7\'ed\'ee\loch\f39 \hich\f39
-\'ef\'ee\'f8\'e5\'eb\loch\f39 \hich\f39 \'ed\'e0\'e2\'f1\'f2\'f0\'e5\'f7\'f3\loch\f39 \hich\f39 \'ec\'ee\'e5\'e9\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'fc\'e1\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e0\'f7\'e8\'ed\'e0\'ff\loch\f39
-\hich\f39 \'f1\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 1.65 \'ef\'ee\'ff\'e2\'e8\'eb\'e0\'f1\'fc\loch\f39 \hich\f39 , \'ed\'e0\'ea\'ee\'ed\'e5\'f6\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'f1\'ea\'e0\'e7\'e0\'f2\'fc
-\loch\f39 \hich\f39 , \'ee\'ef\'f2\'e8\'ec\'e8\'e7\'e8\'f0\'ee\'e2\'e0\'ed\'ed\'e0\'ff\loch\f39 \hich\f39 \'ef\'ee\'e4\'e4\'e5\'f0\'e6\'ea\'e0\loch\f39 \hich\f39 3proxy - \'e8\'ec\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'eb
-\'ee\'e3\'ee\'e2\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'e5\'e4\'e5\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ed\'e8\'e6\'e5\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e0\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I\hich\af39\dbch\af31505\loch\f39 %O %N/%R:%r"
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8\u1102\'fe\u1085\'ed\u1100\'fc}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ 2006}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'f2\'fc\loch\f39 \hich\f39
-\'e2\loch\f39 \hich\f39 \'e2\'e8\'e4\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e4\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'f2
-\'fc\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e5\'e9\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 0.6.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'f3\'f2\loch\f39 \hich\f39 \'e2\'e8\'e4\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 192.168.0.4 - ivanov - [02/Jun/2006:11:13:56 +0500]
-\par \hich\af39\dbch\af31505\loch\f39 "GET http://svalka.biz/uploads/posts/1147559374_00.jpg HTTP/1.0" 000 17\hich\af39\dbch\af31505\loch\f39 497 457 PROXY/http://svalka.biz:3128
-\par
-\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e3\'e4\'e5\loch\f39 \hich\f39 \'e8\'e4\'f3\'f2\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'ef\'ee\'f0\'ff\'e4\'ea\'f3\loch\f39 \hich\f39 : IP \'f0\'e0\'e1\'ee\'f7\'e5\'e9
-\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'f6\'e8\'e8\loch\f39 \hich\f39 - \'e8\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 - \'f7\'e8\'f1\'eb\'ee\loch\f39 \hich\f39 , \'ec\'e5\'f1\'ff\'f6\loch\f39
-\hich\f39 , \'e3\'ee\'e4\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'ff\loch\f39 \hich\f39 - \'e2\'e8\'e4\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'e0\loch\f39 \hich\f39 - URL - \'ed\'ee\'ec\'e5\'f0\loch\f39 \hich\f39 \'ee\'f8
-\'e8\'e1\'ea\'e8\loch\f39 \hich\f39 (\'e5\'f1\'eb\'e8\loch\f39 \hich\f39 000 - \'e7\'ed\'e0\'f7\'e8\'f2\loch\f39 \hich\f39 , \'ee\'f8\'e8\'e1\'ee\'ea\loch\f39 \hich\f39 \'ed\'e5\'f2\loch\f39 \hich\f39 ) - \'ef\'f0\'e8\'ed\'ff\'f2\'ee\loch\f39
-\hich\f39 \'e1\'e0\'e9\'f2\loch\f39 \hich\f39 - \'ee\'f2\'ef\'f0\'e0\'e2\'eb\'e5\'ed\'ee\loch\f39 \hich\f39 \'e1\'e0\'e9\'f2\loch\f39 \hich\f39 - \'f1\'e5\'f0\'e2\'e8\'f1\loch\f39 \hich\f39 - \'f5\'ee\'f1\'f2\loch\f39 \hich\f39 - \'ef\'ee\'f0\'f2
-\loch\f39 \hich\f39 , \'ef\'ee\loch\f39 \hich\f39 \'ea\loch\af39\dbch\af31505\hich\f39 \'ee\'f2\'ee\'f0\'ee\'ec\'f3\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\loch\f39 \hich\f39 \'f1\'e2\'ff\'e7\'e0\'eb\'f1\'ff\loch\f39 \hich\f39 \'f1\loch\f39
-\hich\f39 \'f1\'e5\'f0\'e2\'e8\'f1\'ee\'ec.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cd\'e5\'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e7\'e0\'e1\'e5
-\'e3\'e0\'ff\loch\f39 \hich\f39 \'e2\'ef\'e5\'f0\'e5\'e4\loch\f39 \hich\f39 , \'f1\'ea\'e0\'e6\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 3proxy \'ef
-\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'f3\'e4\'ee\'e2\'eb\'e5\'f2\'e2\'ee\'f0\'ff\'f2\'fc\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'ee\'ee\'e1\'f0\'e0\'e7\'ed\'fb\'e5\loch\f39 \hich\f39
-\'e7\'e0\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 , , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'fb\'e5\loch\f39
-\hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'fb\'e5\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'e4
-\'eb\'ff\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'e9\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'fb\'ec\'e8\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e0\'ec\'e8.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'f3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e0\'ea\'ee\'ed\'e5\'f6\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e2\'fb\loch\f39 \hich\f39 \'f5\'ee\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 \'e5
-\'f9\'e5\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'e5\loch\f39 \hich\f39 \'f1\'fd\'ea\'ee\'ed\'ee\'ec\'e8\'f2\'fc\loch\f39 \hich\f39 \'ec\'e5\'f1\'f2\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e4\'e8\'f1\'ea\'e5\loch\f39 \hich\f39 \'ef\'ee
-\'e4\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e0\'f0\'f5\'e8\'e2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39
- \'ef\'ee\'ec\'ee\'f9\'fc\'fe\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e3\'ee\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e0\'f0\'f5\'e8\'e2\'e0\'f2\'ee\'f0\'e0\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0
-\loch\f39 \hich\f39 , \'e2\'ee\'f2\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488
-\loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94\hich\af39\dbch\af31505\loch\f39 " }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 (\'ef\'ee\'e4\'f1\'ea\'e0\'e7\'ea\'f3\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ee\'ef\'f6\'e8\'e9\loch\f39 \hich\f39 \'ea
-\'ee\'ec\'e0\'ed\'e4\'ed\'ee\loch\af39\dbch\af31505\hich\f39 \'e9\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e8\loch\f39 \hich\f39 WinRAR \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ed\'e0\'e9\'f2\'e8\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e5\'e3
-\'ee\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 Help'\'e5\loch\f39 )
-\par \loch\af39\dbch\af31505\hich\f39 \'ce\'e1\'f0\'e0\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 \'e2\'ed\'e8\'ec\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f2\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ef\'f3\'f2\'fc
-\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'f3\loch\f39 \hich\f39 \'e7\'e0\'ea\'eb\'fe\'f7\'e5\'ed\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ea\'ee\'e1\'ea\'e8\loch\f39 \hich\f39 . \'dd\'f2\'ee\loch\f39 \hich\f39 \'f1\'e2
-\'ff\'e7\'e0\'ed\'ee\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ed\'e0\'eb\'e8\'f7\'e8\'e5\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'e5\'eb\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'f3\'f2\'e8\loch\f39 \hich\f39 . \'c0\'ed\'e0\'eb\'ee\'e3
-\'e8\'f7\'ed\'ee\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e7\'e0\'ea\'eb\'fe\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'e0\'e2\'fb\'f7\'ea\'e8\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'e5\loch\f39 \hich\f39 \'ef\'f3
-\'f2\'e8\loch\f39 \hich\f39 Windows, \'f1\'ee\'e4\'e5\'f0\'e6\'e0\'f9\'e8\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'e1\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'e5\'eb\'fb\loch\f39 \hich\f39 \'eb\'e8\'e1\'ee\loch\f39 $.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'f1\'ee\'e1\'e8\'f0\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'e4\loch\af39\dbch\af31505\hich\f39 \'e2\'e8\'ed\'f3\'f2\'f3\'fe\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'fe
-\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 \hich\f39 2) \'ed\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par \hich\af39\dbch\af31505\loch\f39 archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39
-\'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 auth none
-\par \hich\af39\dbch\af31505\loch\f39 proxy -t
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c7\'e0\'ef\'f3\'f1\'ea\'e0\'e5\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ee\'ef\'f6\'e8\'e5\'e9\loch\f39 \hich\f39 -t , \'ea\'ee\'f2\'ee\'f0\'e0\'ff\loch\f39
-\hich\f39 \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e2\'fb\'e2\'ee\'e4\'e8\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'eb\'ee\'e3\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e5\'e1\'ed\'fb\'e5\loch\f39
-\hich\f39 \'f1\'ee\'ee\'e1\'f9\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ee\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e5\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\loch\f39 \hich\f39 . \'dd\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'e3\'ee\'e4\'e8\'f2\'f1
-\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e4\'e0\'eb\'fc\'ed\'e5\'e9\'f8\'e5\'ec\loch\f39 \hich\f39 , \'ea\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0
-\'f2\'fb\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\loch\f39 \hich\f39 \'ea\loch\af39\dbch\af31505\hich\f39 \'e0\'ea\'e8\'ec-\'ed\'e8\'e1\'f3\'e4\'fc\loch\f39 \hich\f39 \'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\'ee\'ec.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'f1\'e5\loch\f39 \hich\f39 \'eb\'f3\'f7\'f8\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'f3\'f7\'f8\'e5\loch\f39 \hich\f39 ! \'cf\'f0\'ee\'e4\'ee\'eb\'e6\'e0\'e5\'ec\loch\f39 \hich\f39 . \'cf\'ee\'e4\'f3
-\'ec\'e0\'e5\'ec\loch\f39 \hich\f39 \'ee\loch\f39 \hich\f39 \'f2\'ee\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 , \'e0
-\loch\f39 \hich\f39 \'ea\'e0\'ed\'e0\'eb\loch\f39 \hich\f39 , \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'f2\'ee\'eb\'f1\'f2\'fb\'e9\loch\f39 \hich\f39 , \'f5
-\'ee\'f0\'ee\'f8\'ee\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f5\'ee\'f2\'ff\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 128 \'ea\'e1\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e4\'e8\'e0
-\'eb\'e0\'ef\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 33.6? \'cd\'e0\'f7\'e8\'ed\'e0\'e5\'ec\loch\f39 \hich\f39 \'f0\'e5\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 , \'f2\'ee\'e2\'e0\'f0\'e8\'f9\'e8\loch\f39 !
-\par
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 240000 * 192.168.0.2,192.168.0\hich\af39\dbch\af31505\loch\f39 .3
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'f0\'e0\'e7\'f0\'e5\'f8\'e0\'e5\'ec\loch\f39 \hich\f39 \'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\'ec\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 IP-\'e0\'e4\'f0
-\'e5\'f1\'e0\'ec\'e8\loch\f39 \hich\f39 192.168.0.2 \'e8\loch\f39 \hich\f39 192.168.0.3 \'f1\'ee\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'f1\'f2\'fc\'fe\loch\f39 \hich\f39 24 \'ea\'e1\'e8\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'ea
-\'f3\'ed\'e4\'f3\loch\f39 \hich\f39 , \'ef\'f0\'e8\'f7\'e5\'ec\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 24 \'ea\'e1\'e8\'f2\loch\f39 \hich\f39 \'ef\'f0\'e8\'f5\'ee\'e4\'ff\'f2\'f1\'ff\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'fb\'e9\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'fd\'f2\'e8\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39
-\'ee\'e1\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ee\'e2\'ee\'ea\'f3\'ef\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 , \'f2.\'e5\loch\f39 \hich\f39 . \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ee\'e1\'e0\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2
-\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'e2\'f0\'e5\'ec\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'fb\loch\f39 \hich\f39 \'f1
-\loch\f39 \hich\f39 \'e4\'ee\loch\af39\dbch\af31505\hich\f39 \'f1\'f2\'e0\'f2\'ee\'f7\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'f1\'f2\'f0\'fb\'f5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'ee\'e2\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4
-\'ee\'ec\'f3\loch\f39 \hich\f39 \'ef\'f0\'e8\'e4\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 12 \'ea\'e1\'e8\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'ea\'f3\'ed\'e4\'f3
-\loch\f39 \hich\f39 (\'e7\'e0\'ec\'e5\'f2\'fc\'f2\'e5\loch\f39 \hich\f39 , \'ea\'e8\'eb\'ee\'e1\'e8\'f2\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ea\'e8\'eb\'ee\'e1\'e0\'e9\'f2\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8
-\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'f1\'f7\'e8\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'e8\'eb\'ee\'e1\'e0\'e9\'f2\'fb\loch\f39 \hich\f39 , \'f0\'e0\'e7\'e4\'e5\'eb\'e8\'f2\'e5\loch\f39
-\hich\f39 \'f7\'e8\'f1\'eb\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 8)
-\par
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e0\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\'f3\loch\f39 \hich\f39 \'f1\'f7\'e0\'f1\'f2\'eb\'e8\'e2\'f7\'e8\'ea\'f3\loch\f39 \hich\f39 \'e5\'e4\'e8\'ed\'ee\'eb\'e8\'f7\'ed\'ee\loch\f39 \hich\f39 \'f1\'ea\'ee
-\'f0\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 48 \'ea\'e1\'e8\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'ea\'f3\'ed\'e4\loch\af39\dbch\af31505\hich\f39 \'f3\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e8\'f1\'f5\'ee\'e4\'ff\'f9\'f3\'fe\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'f2\'ee\'e6\'e5\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e8\'ec\loch\f39 \hich\f39 \'e2
-\'f1\'e5\'ec\loch\f39 \hich\f39 \'e4\'ee\loch\f39 \hich\f39 24 \'ea\'e8\'eb\'ee\'e1\'e8\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'ea\'f3\'ed\'e4\'f3\loch\f39 \hich\f39 (\'f1\'e5\'e9\'f7\'e0\'f1\loch\f39 \hich\f39 \'fd\'f2\'e0
-\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 devel 0.6) \'cd
-\'f3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e0\'ea\'ee\'ed\'e5\'f6\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e2\'fb\loch\f39 \hich\f39 \'f5\'ee\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39
-\'fd\'f2\'e8\loch\f39 \hich\f39 \'e6\'e5\'f1\'f2\'ea\'e8\'e5\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ea\'e0\'f1\'e0\'eb\'e8\'f1\'fc\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39
-\'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'f1\'ea\'e0\'f7\'e8\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'f1\'ed\'e8\'ec\'e8\'f2\'e5\hich\af39\dbch\af31505\loch\f39 \hich\f39
-\'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 110:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 nobandlimin * * * 110
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'e1\'f3\'e4\'fc\'f2\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'fd\'f2\'f3\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4
-\'f3\loch\f39 \hich\f39 \'cf\'c5\'d0\'c5\'c4\loch\f39 \hich\f39 \'ef\'f0\'ee\'f7\'e8\'ec\'e8\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\'ec\'e8\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0
-\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 - \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ee\'e2\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e4\'ee
-\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'f3\'e4\'ee\'e2\'eb\'e5\'f2\'e2\'ee\'f0\'ff\'fe\'f9\'e5\'e3\'ee\loch\f39 \hich\f39 \'f3\'f1\'eb\'ee\'e2\'e8\'ff\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ea\'ee\'f0\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e8\'e2\'e0\'ed\'e8\'ff-\'e7\'e0\'ea\'e0\'f7\'e8\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39
-\'e7\'e0\'e4\'e0\'eb\'e8\hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'ef\'f0\'ee\'e4\'ee\'eb\'e6\'e0\'e5\'ec\loch\f39 \hich\f39 \'e7\'e0\'ea\'f0\'f3\'f7\'e8\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e3\'e0\'e9\'ea\'e8\loch\f39 \hich\f39 . \'c2\loch\f39
-\hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'ef\'ee\'ec\'ee\'e3\'f3\'f2\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 deny \'e8\loch\f39 allow
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e7\'e0\'ef\'f0\'e5\'f9\'e0\'e5\'ec\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe
-\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 IP .4 \'e2\loch\f39 \hich\f39 \'ed\'e5\'f0\'e0\'e1\'ee\'f7\'e5\'e5\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'ed\'ff\'ec\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'f0\'e0\'e7\'f0\'e5\'f8\'e0\'e5\'ec\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2
-\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 IP .4 \'e8\'f1\'ea\'eb\'fe\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef\'ee\'ed\'e5\'e4\'e5\'eb\'fc\'ed\'e8\'ea\'e0\loch\f39 \hich\f39 \'ef\'ee
-\loch\f39 \hich\f39 \'ef\'ff\'f2\'ed\'e8\'f6\'f3\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 9 \'f7\'e0\'f1\'ee\'e2\loch\f39 \hich\f39 \'f3\'f2\'f0\'e0\loch\f39 \hich\f39 \'e4\'ee\loch\f39 \hich\f39 6 \'e2\'e5\'f7\'e5\'f0\'e0\loch\f39 \hich\f39 ,
-\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'f2\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'fb\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'e5\loch\f39 \hich\f39 \'ef\'ee\'f0
-\'f2\'fb\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 FTP-\'f1\'e5\'f0\'e2\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 \'ea\'e0
-\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 , \'e8\loch\f39 HTTP\hich\af39\dbch\af31505\loch\f39 \hich\f39 S, \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'e4\'eb\'ff\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'e4\'ee
-\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 FTP \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'fe\'f9\'e5\'ec\loch\f39
-\hich\f39 \'ee\'ea\'ed\'e5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e5\'ea\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e0\loch\f39 \hich\f39 (\'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'fb\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2
-\'e5\'f0\'e0\loch\f39 \hich\f39 ) \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e3\'e0\'eb\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 \'ed\'e0\'ef\'f0\'ee\'f2\'e8\'e2\loch\f39 \hich\f39 FTP \'e8\loch\f39
-\hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 IP \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39
-\hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 HTTP (\'e2\loch\f39 \hich\f39 \'ed\'e0\loch\af39\dbch\af31505\hich\f39 \'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3
-\'f7\'e0\'e5\loch\f39 \hich\f39 3128), \'e0\loch\f39 \hich\f39 \'e2\'ee\'e2\'f1\'e5\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 21, \'ea\'e0\'ea\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'ef
-\'ee\'e4\'f3\'ec\'e0\'f2\'fc\loch\f39 \hich\f39 . \'c8\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\loch\f39 \hich\f39 \'e3\'f0\'f3\'f1\'f2\'ed\'ee\'e5\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'ed\'e8\'e5\loch\f39 \hich\f39
-. \'d2\'e5\'ea\'f3\'f9\'e0\'ff\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e0\loch\f39 \hich\f39 Opera \'ef\'ee\'e4\loch\f39 \hich\f39 \'ed\'ee\'ec\'e5\'f0\'ee\'ec\loch\f39 \hich\f39 9 \'ed\'e5\'ea\'ee
-\'f0\'f0\'e5\'ea\'f2\'ed\'ee\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f4\'f2\'ef-\'f1\'e5\'f0\'e2\'e5\'f0\'e0
-\'ec\'e8\loch\f39 \hich\f39 , \'f2\'f0\'e5\'e1\'f3\'fe\'f9\'e8\'ec\'e8\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \hich\f39 \'eb\'e8\'e1\'ee\loch\f39
-\hich\f39 \'ef\'f0\'e8\'e4\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e2\'e5\'f0\'ed\'f3\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 8, \'eb\'e8\'e1\loch\af39\dbch\af31505\hich\f39 \'ee
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 IE \'e8\'eb\'e8\loch\f39 FireFox.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e0\loch\f39 \hich\f39 \'e7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e0\'e5\'ec\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 WEB-\'f1\'e5\'f0\'f4\'e8\'ed\'e3\loch\f39
-\hich\f39 , \'e7\'e0\'f2\'ee\loch\f39 \hich\f39 \'ea\'f0\'f3\'e3\'eb\'ee\'f1\'f3\'f2\'ee\'f7\'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e9\loch\f39 \hich\f39 \'e4\'e5\'ed\'fc\loch\f39 \hich\f39 \'ed\'e5\'e4\'e5\'eb\'e8
-\loch\f39
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 \'e2\'f1\'ef\'ee\'ec\'e8\'ed\'e0\'e5\'ec\loch\f39 \hich\f39 (\'e2\'fb\loch\f39 \hich\f39 \'e2\'e5\'e4\'fc\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'ec\'e5\'e4\'e8
-\'f2\'e8\'f0\'ee\'e2\'e0\'eb\'e8\loch\f39 \hich\f39 \'ed\'e0\'e4\loch\f39 \hich\f39 man, FAQ \'e8\loch\f39 \hich\f39 HowTO, \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e4\'e0\loch\f39 \hich\f39 \'eb\'e8\hich\af39\dbch\af31505\loch\f39 \hich\f39
-?), \'f7\'f2\'ee\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 auth none
-\par \loch\af39\dbch\af31505\hich\f39 \'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'ed\'e8\'ea\'e0\'ea\'f3\'fe\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e4\'e0\'e5\'f2
-\loch\f39 \hich\f39 , \'f2.\'ea\loch\f39 \hich\f39 . \'ee\'f2\'ea\'eb\'fe\'f7\'e0\'e5\'f2\loch\f39 \hich\f39 \'eb\'fe\'e1\'f3\'fe\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 \'f1\'ee\'e2\'f1\'e5\'ec\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 allow \'e8\loch\f39 \hich\f39 deny \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ed\'e5\'e5\loch\f39 \hich\f39 \'f2\'e5\'f0\'ff\'fe\'f2\loch\f39 \hich\f39 \'e2\'f1\'ff
-\'ea\'e8\'e9\loch\f39 \hich\f39 \'f1\'ec\'fb\'f1\'eb\loch\f39 \hich\f39 . \'cf\'ee\'f0\'e0\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'e9\'f2\'e8\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f7\'f2\'ee-\'ed\'e8\'e1\'f3\'e4\'fc\loch\f39 \hich\f39 \'e1
-\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'ef\'ee\'e4\'f5\'ee\'e4\'ff\'f9\'e5\'e5\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'e0\'e2\'f2
-\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\loch\f39 IP:
-\par
-\par \hich\af39\dbch\af31505\loch\f39
-\par \hich\af39\dbch\af31505\loch\f39 auth ip\hich\af39\dbch\af31505\loch\f39 only
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ed\'ee\'e2\'e0\loch\f39 \hich\f39 \'f1\'ee\'e1\'e8\'f0\'e0\'e5\'ec\loch\f39 \hich\f39 \'ee\'f7\'e5\'f0\'e5\'e4\'ed\'f3\'fe\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'fe\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3
-\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f3\'f7\'e5\'f2\'ee\'ec\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\'ed\'e0\'ef\'e8\'f1\'e0\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 3):
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 l\hich\af39\dbch\af31505\loch\f39 og c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0\pararsid3764488 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-nobandlimin * * * 110
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 24000 * 192.168.0.2,192.168.0.3
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 deny *
-\par \hich\af39\dbch\af31505\loch\f39 proxy -t
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 ACL (access client list \hich\f39 \emdash \loch\f39 \hich\f39 \'f1\'ef\'e8\'f1
-\'ee\'ea\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ea\'eb\'e8\loch\af39\dbch\af31505\hich\f39 \'e5\'ed\'f2\'ee\'e2\loch\f39 \hich\f39 ), \'f2.\'e5\loch\f39 \hich\f39 . \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 allow \'e8\loch\f39
-\hich\f39 deny \'e4\'ee\'e1\'e0\'e2\'e8\'eb\'e8\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 deny * - \'fd\'f2\'ee\loch\f39 \hich\f39 \'ef\'ee\'e7\'e2\'ee\'eb\'e8\'f2\loch\f39 \hich\f39 \'e8\'e7\'e1\'e0\'e2
-\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\'e5\'e4\'eb\'e8\'e2\'fb\'f5\loch\f39 \hich\f39 \'ee\'ea\'ee\'ed\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'e0\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'ed\'e0\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'ff\loch\f39 \hich\f39 , \'e2\'fb\'f1\'ea\'e0\'ea\'e8\'e2\'e0\'fe\'f9\'e8\'f5\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'ef\'ee\'ef\'fb\'f2\'ea\'e5\loch\f39 \hich\f39 \'e7\'e0\'e3\'f0
-\'f3\'e7\'ea\'e5\loch\f39 \hich\f39 \'ea\'e0\'ea\'ee\'e3\'ee-\'ed\'e8\'e1\'f3\'e4\'fc\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5\'f9\'e5\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'f0
-\'e5\'f1\'f3\'f0\'f1\'e0.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'ee\'e4\'ee\'eb\'e6\'e8\'ec\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\loch\f39 \hich\f39 \'f3\'e2\'eb\'e5\'ea\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'e5\loch\f39 \hich\f39 \'e7\'e0\'ed\'ff\'f2\'e8\'e5\loch\f39 \hich\f39 . \'d3
-\'f7\'e5\'f2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ea\'ee\loch\af39\dbch\af31505\hich\f39 \'ed\'f2\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 - \'e2\'ee\'f2\loch\f39 \hich\f39 \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'ee\'f1
-\'ed\'ee\'e2\'ed\'fb\'f5\loch\f39 \hich\f39 \'ed\'e0\'f8\'e8\'f5\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'ee\'e2\loch\f39 \hich\f39 . \'c0\loch\f39 \hich\f39 \'ea\'e0\'ea\'ee\'e9\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'f3\'f7\'e5\'f2
-\loch\f39 \hich\f39 \'e1\'e5\'e7\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'ee\'e2\loch\f39 \hich\f39 ? \'ce\'ed\'e8\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'ff\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\'ec\'e8
-\loch\f39 \hich\f39 counter, countin \'e8\loch\f39 nocountin.
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf"
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'fd\'f2\'e8\'ec\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e5\'ec\loch\f39 \hich\f39 , \'e3\'e4\'e5\loch\f39
-\hich\f39 \'f3\loch\f39 \hich\f39 \'ed\'e0\'f1\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f5\'f0\'e0\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'ee\'e1\'f9\'e8\'e9\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'f5\'f0\'e0\'ed
-\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'ee\'e2\loch\f39 \hich\f39 . \'ce\'ed\loch\f39 \hich\f39 \'ef\'f0\loch\af39\dbch\af31505\hich\f39 \'e5\'e4\'f1\'f2
-\'e0\'e2\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'f1\'ee\'e1\'ee\'e9\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e4\'e2\'ee\'e8\'f7\'ed\'ee\'ec\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e5\loch\f39 \hich\f39 , \'ef
-\'f0\'e8\'f7\'e5\'ec\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'e4\'e0\loch\f39 \hich\f39 \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'dd\'f2\'f3\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e5\loch\f39
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"
-\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'f2\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'fb\'e9\loch\f39 \hich\f39 \'e4\'e5\'ed\'fc\loch\f39 \hich\f39 (\'f7\'e0\'f1\'f2\'ee\'f2\'e0\loch\f39 \hich\f39 \'e7\'e0\'e4
-\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e4\'e0\'ed\'ed\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'ee\'ec\loch\f39 \hich\f39 D(\'e5\'e6\'e5\'e4\'ed\'e5\'e2\'ed\'ee
-\loch\f39 \hich\f39 ) - \'ed\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'ec\'e5\'f1\'f2\'e5\loch\f39 \hich\f39 D \'ec\'ee\'e3\'eb\'e8\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 W(\'e5\'e6\'e5\'ed\'e5\'e4\'e5\'eb\'fc\'ed\'ee
-\loch\f39 \hich\f39 ), M(\'e5\'e6\'e5\'ec\'e5\'f1\'ff\'f7\'ed\'ee\loch\f39 \hich\f39 ) \'e8\'eb\'e8\loch\f39 \hich\f39 H(\'e5\'e6\'e5\'f7\'e0\'f1\'ed\'ee\loch\f39 \hich\f39 )) \'e2\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'e5\loch\f39 C:\\3proxy\\traf\\
-\hich\f39 traf \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e3\'e5\'ed\'e5\'f0\'e8\'f0\'ee\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'ee\'f2\'f7\'e5\'f2\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f2\'e5\'ea
-\'f1\'f2\'ee\'e2\'ee\'ec\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'e5\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'ef\'ee\'e7\'e2\'ee\'eb\'e8\'f2\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39
-\hich\f39 \'ed\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'ee\'f1\'ec\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'f3\loch\f39 \hich\f39 \'e7\'e0\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e9
-\loch\f39 \hich\f39 \'e4\'e5\'ed\'fc\loch\f39 \hich\f39 . \'cf\'ee\'f1\'ec\'ee\'f2\'f0\'e8\'f2\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e0\'e5\'ec\'fb\'e5\loch\f39 \hich\f39 \'ee\'f2\'f7\'e5\'f2\'fb\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e2
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e1\'eb\'ee\'ea\'ed\'ee\'f2\'e5\loch\f39 \hich\f39 , \'f2\'e0\'ec\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'ef\'ee\'ed\'ff\'f2\'ed\'ee.
-\par }\pard \ltrpar\ql \li360\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d3\'f7\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 , \'f7\'f2\'ee
-\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'ee\'f2\'f7\'e5\'f2\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39
-\'e3\'e5\'ed\'e5\'f0\'e8\'f0\'ee\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e5\loch\f39 \hich\f39 \'f1\'f3\'f2\'ee\'ea\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'f1\'f2\'ee\'e8\'f2\loch\f39 \hich\f39
-\'e6\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'ff\'e2\'eb\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'f1\'f0\'e0\'e7\'f3\loch\f39 .
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 countin "1/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\loch\af39\dbch\af31505\hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 50 * 192.168.0.2 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "2/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f2\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 80 * 192.168.0.3 * * *
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 countin "3/\'d1\'e8\'e4\'ee\'f0\'ee\'e2\hich\af39\dbch\af31505\loch\f39 " M 30 * 192.168.0.4 * * *
-\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'fd\'f2\'e8\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'fe\'f2\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'fb\'e5\loch\f39
-\hich\f39 \'ec\'e5\'f1\'ff\'f7\'ed\'fb\'e5\loch\f39 \hich\f39 (M) \'eb\'e8\'ec\'e8\'f2\'fb\loch\f39 \hich\f39 \'e2\'f5\'ee\'e4\'ff\'f9\'e5\'e3\'ee\loch\f39 \hich\f39 (\'f1\'f7\'e5\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e8
-\'f1\'f5\'ee\'e4\'ff\'f9\'e8\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 , \'ea\'f1\'f2\'e0\'f2\'e8\loch\f39 \hich\f39 , \'e0\'e2\'f2\'ee\'f0\loch\f39 \hich\f39 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'fb\loch\f39 \hich\f39 \'f2\'ee\'e6
-\'e5\loch\f39 \hich\f39 \'ee\'e1\'e5\'f9\'e0\'e5\'f2\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 ) \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ec\'e5\'e3\'e0\'e1\'e0\'e9\'f2\'e0\'f5\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'fb\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 IP-\'e0\'e4\'f0\'e5\'f1\'e0\'ec\'e8\loch\f39 \hich\f39 192.168.0.2-192.168.0.4, \'ef\'f0\'e8\'f7\'e5\'ec\loch\f39 \hich\f39
-\'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\loch\af39\dbch\af31505\hich\f39 \'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'f1\'f7\'e8\'f2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'e0\'f5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'f0\'ee\'f2\'ee\'ea\'ee\'eb\'ee\'e2.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8\'ed\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee
-\loch\f39 \hich\f39 \'ea\'e0\'ea\'ee\'ec\'f3-\'f2\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e5\'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'ed\'fb\'e9\loch\f39
-\hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'f3\'f7\'e5\'f2\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8
-\'ea\'e0\loch\f39 \hich\f39 . \'d7\'f2\'ee\loch\f39 \hich\f39 \'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 ? \'d1\'e0\'ec\'ee\'e5\loch\f39
-\hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\'e5\loch\f39 \hich\f39 \'f0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \emdash \loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'f2\'e0
-\'ea\'ee\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'ee\'e5\loch\f39 \hich\f39 \'ee\loch\af39\dbch\af31505\hich\f39 \'ed\loch\f39 \hich\f39 \'ed\'e5
-\loch\f39 \hich\f39 \'f1\'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'e2\'f1\'e5\'ec\loch\f39 \hich\f39 \'e6\'e5\'eb\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8
-\'ec\'e5\'f0\loch\f39 \hich\f39 , \'ef\'e0\'f0\'f3\loch\f39 \hich\f39 \'f2\'e5\'f0\'e0\'e1\'e0\'e9\'f2\loch\f39 \hich\f39 . \'c8\'eb\'e8\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc
-\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'e5\'ed\'ed\'f3\'fe\loch\f39 \hich\f39 \'ea\'e2\'ee\'f2\'f3\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 , \'ed\'ee
-\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ed\'e5\'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'ef\'e5\'f0\'e8\'ee\'e4\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'e5\'ed\'e8\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'f2\'e0
-\'ea\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef
-\'e5\'f0\'e8\'ee\'e4\'ee\'ec\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'e8\'ff\loch\f39 \hich\f39 N (\'ed\'e8\'ea\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 ) \'eb\'e8\'e1\'ee\loch\f39 \hich\f39 Y(\'e3\'ee\'e4\loch\f39 ).
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'e0\'e6\'ed\'ee\loch\f39 \hich\f39 - \'ed\'ee\'ec\'e5\'f0\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'ee\'e2\loch\f39 \hich\f39 (\'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5
-\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 1,2,3) \'ed\'e5\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'fb\loch\f39 \hich\f39 \'f1\'ee\'e2\'ef\'e0\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 . \'c8\'ec\'e5\'ed\'e0\loch\f39 \hich\f39 , \'e2
-\'e5\'f0\'ed\'e5\'e5\loch\f39 \hich\f39 , \'f4\'e0\'ec\'e8\'eb\'e8\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\'e0\loch\f39 \hich\f39 , \'e8\'e4\'f3\'f9\'e8\'e5
-\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ea\'ee\'f1\'ee\'e9\loch\f39 \hich\f39 \'f7\'e5\'f0\'f2\'fb\loch\f39 \hich\f39 - \'ef\'f0\'e8\'e2\'e5\'e4\'e5\'ed\'fb\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1
-\'f1\'f2\'e2\'e0\loch\f39 \hich\f39 , \'e8\'ec\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'ee\'ed\'e8\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2\loch\f39 \hich\f39 \'f7\'e8\'f2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0
-\'ed\'e8\'f6\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'e8\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'ef\'ee\'e7\'e6\'e5\loch\f39 ...
-\par \loch\af39\dbch\af31505\hich\f39 \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'e2\'e0\'f1\loch\f39 \hich\f39 \'ef\'ee\'ff\'e2\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 \'e6\'e5\'eb\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'f2\'fc
-\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'f2\'e5\'ea\'f3\'f9\'e8\'e9\loch\f39 \hich\f39 \'ee\'e1\'f9\'e8\'e9\loch\f39 \hich\f39 \'e8\'e7\'f0\'e0\'f1\'f5\'ee\'e4\'ee\'e2\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39
-\hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'ef\'e5\'f8\'e8\'f2\'e5\loch\f39
-\hich\f39 \'e2\'ee\'ee\'f0\'f3\'e6\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ea\'e0\'eb\'fc\'ea\'f3\'eb\'ff\'f2\'ee\'f0\'ee\'ec\loch\f39 \hich\f39 , \'fd\'f2\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'f1\'f0\'e5\'e4\'f1\'f2\'e2\'e0\'ec\'e8\loch\f39 \hich\f39 3proxy. \'c4\'ee\'f1\'f2\'e0\'f2\'ee\'f7\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 , \'f3\'f7
-\'e8\'f2\'fb\'e2\'fe\'f9\'e8\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39
-\hich\f39 , \'f2\'e0\'ea\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 countin 100/month M 1000000 *
-\par \hich\af39\dbch\af31505\loch\f39 coun\hich\af39\dbch\af31505\loch\f39 tin 101/day D 1000000 *
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f0\'e2\'e0\'ff\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'e0\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'ee\'e1\'f9\'e8\'e9\loch\f39 \hich\f39 \'ec\'e5\'f1\'ff\'f7\'ed\'fb\'e9\loch\f39
-\hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 , \'e2\'f2\'ee\'f0\'e0\'ff\loch\f39 \hich\f39 \'ee\'e1\'f9\'e8\'e9\loch\f39 \hich\f39 \'e4\'ed\'e5\'e2\'ed\'ee\'e9\loch\f39 \hich\f39 . \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f7\'ea\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'e8\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5
-\'eb\'ff\loch\f39 \hich\f39 (\'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e0\'f2\'ee\'f0\'e0\loch\f39 \hich\f39 ) \'ef\'ee\'ff\'e2\'ff\'f2\'f1\'ff\loch\f39
-\hich\f39 \'e4\'e2\'e5\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'e8\loch\f39 \hich\f39 , \'f3\'ea\'e0\'e7\'fb\'e2\'e0\'fe\'f9\'e8\'e5\loch\f39 \hich\f39 \'f2\'e5\'ea\'f3\'f9\'e8\'e5\loch\f39 \hich\f39 \'ec\'e5\'f1\'ff\'f7\'ed\'fb\'e9\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'ed\'e5\'e2\'ed\'ee\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e8\loch\f39 \hich\f39 , \'ef\'f0\'ee\'f5\'ee\'e4\'ff\'f9\'e8\'e5\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39
-\hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 nocountin, \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 , \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'ed\'e5\loch\f39
-\hich\f39 \'f1\'f7\'e8\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'ed\'ee\'ec\'f3\loch\f39 \hich\f39 \'f0\'ff\'e4\'f3\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5
-\'f2\'f0\'ee\'e2\loch\f39 \hich\f39 . \'cd\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 nocountin * 192.168.0.4 * 110 *
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'ec\'e5\'f9\'e5\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'cf\'c5\'d0\'c5\'c4\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'e0\'ec\'e8\loch\f39 \hich\f39 countin, \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ee\'f2
-\'ea\'eb\'fe\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'e4\'f1\'f7\'e5\'f2\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\loch\f39
- \hich\af39\dbch\af31505\loch\f39 \hich\f39 IP .4 \'ef\'f0\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'e8\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 110 \'ef\'ee\'f0\'f2\'f3\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\'e4\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e8\'e4\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'ef\'ee
-\'f1\'eb\'e5\loch\f39 \hich\f39 \'e8\'f1\'f7\'e5\'f0\'ef\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 \'f1\'f3\'f9\'e5\'f1\'f2\'e2\'f3\'fe\'f9\'e8\'e5\loch\f39 \hich\f39 \'f1\'ee\'e5\'e4\'e8\'ed\'e5\'ed\'e8\'ff
-\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'e1\'f0\'fb\'e2\'e0\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'e0\'f1\'fc\'ea
-\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'e8\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'e4\'ee\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e0\loch\f39
-\hich\f39 \'e4\'ed\'ff\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'ef\'f0\'e5\'e2\'fb\'f8\'e5\'ed\'e8\'e8\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 . \'c8\'eb\'e8\loch\f39
-\hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'ea\'e0\'f7\'e0\'f2\'fc\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'ee\'e9\loch\f39 \hich\f39
-\'f4\'e0\'e9\'eb\loch\f39 \hich\f39 , \'e7\'ed\'e0\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'e5\'e2\'fb\'f8\'e0\'fe\'f9\'e8\'e9\loch\f39 \hich\f39 \'e2\'fb\'e4\'e5\'eb\'e5\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea
-\loch\f39 \hich\f39 \emdash \loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'f3\'f1\'eb\'ee\'e2\'e8\'e8\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'ec\'ee
-\'e6\'e5\'f2\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'e8\'f2\'fc\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'ec\'e5\'f0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee
-\'f6\'e5\'f1\'f1\'e0\loch\f39 \hich\f39 \'e7\'e0\'ea\'e0\'f7\'ea\'e8\loch\f39 \hich\f39 . \'c0\loch\f39 \hich\f39 \'e2\'ee\'f2\loch\f39 \hich\f39 \'f1\'ee\'e7\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'ee\'e2\'ee\'e5\loch\f39 \hich\f39 \'f1\'ee\'e5\'e4
-\'e8\'ed\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ef\'f0\'e5\'e2\'fb\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'ed\'e5\loch\f39
-\hich\f39 \'f3\'e4\'e0\'f1\'f2\'f1\'ff.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ed\'ee\'e2\'e0\loch\f39 \hich\f39 \'f1\'ee\'e1\'e8\'f0\'e0\'e5\'ec\loch\f39 \hich\f39 \'ee\'f7\'e5\'f0\'e5\'e4\'ed\'f3\'fe\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'fe\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3
-\'e0\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f3\'f7\'e5\'f2\'ee\'ec\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\'ed\'e0\'ef\'e8\'f1\'e0\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 4):
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0\pararsid3764488 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-nobandlimin * * * 110
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 24000 * 192.168.0.2,192.168.0.3
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"
-\par \hich\af39\dbch\af31505\loch\f39 nocountin * 192.168.0.4\hich\af39\dbch\af31505\loch\f39 * 110 *
-\par \hich\af39\dbch\af31505\loch\f39 countin "1/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 50 * 192.168.0.2 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "2/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f2\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 80 * 192.168.0.3 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "3/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d1\'e8\'e4\'ee\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 30 * 192.168.0.4 * * *
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 allow * 192.168.200.4 * * * 1-5 \hich\af39\dbch\af31505\loch\f39 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 proxy -t
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'f3\loch\f39 \hich\f39 \'e2\'ee\'f2\loch\f39 \hich\f39 , \'ec\'fb\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0
-\'ee\'e8\'eb\'e8\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'e2\'e5\'e4\'fc\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\loch\f39 \hich\f39 - \'fd\'f2\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39
-\hich\f39 WEB-\'f1\'e5\'f0\'f4\'e8\'ed\'e3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 FTP. \'dd\'eb\'e5\'ea\'f2\'f0\'ee\'ed\'ed\'e0\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'e0\loch\f39 \hich\f39 ! \'c2\'ee\'f2\loch\f39 \hich\f39 \'e5\'e9\loch\f39
-\hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e7\'e0\'e9\'ec\'e5\'ec\'f1\'ff\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e0\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e8\'ec\loch\f39 \hich\f39 \'ef
-\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\hich\af39\dbch\af31505\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ee\'f1\'f2\'e0\'e2\'e5\loch\f39
-\hich\f39 3proxy \'e8\'ec\'e5\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'e2\'ee\'e9\loch\f39 \hich\f39 pop3-\'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 :
-\par
-\par
-\par \hich\af39\dbch\af31505\loch\f39 pop3p
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e8\'f2\'fc
-\loch\f39 \hich\f39 \'e2\'e0\'f8\'e8\loch\f39 \hich\f39 \'ec\'fd\'e9\'eb-\'ea\'eb\'e8\'e5\'ed\'f2\'fb\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'e4\'eb\'ff
-\loch\f39 \hich\f39 \'ff\'f9\'e8\'ea\'e0\loch\f39 \hich\f39 vasya.pupkin@mail.ru \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'ec\'ee\'e5\'e3\'ee\loch\f39 \hich\f39 \'eb\'fe\'e1\'e8\'ec\'ee\'e3\'ee\loch\f39
-\hich\f39 TheBat! \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'e0\'e2\'ea\'e8\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 (\'e7\'e0\'ea\'eb\'e0\'e4\'ea\'e0\loch\f39 \hich\f39
-\'d2\'f0\'e0\'ed\'f1\'ef\'ee\'f0\'f2\loch\f39 \hich\f39 ) \'f0\'e0\'ed\'fc\'f8\loch\af39\dbch\af31505\hich\f39 \'e5\loch\f39 \hich\f39 \'f1\'f2\'ee\'ff\'eb\'e8\loch\f39 \hich\f39 \'f2\'e0\'ea\'e8\'e5\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0
-\'fb\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : pop.mail.ru
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 : vasya.pupkin
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'f2\'ee\loch\f39 \hich\f39 \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'f3\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea
-\'f1\'e8\loch\f39 \hich\f39 , \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'ef\'ee\'ec\'e5\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'e5
-\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : 192.168.0.1
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 : vasya.pupkin@pop.mail.ru
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e2\'ed\'e8\'ec\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 , \'e8\'ec\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ee\'e2\'e0\'f2\loch\af39\dbch\af31505\hich\f39 \'e5\'eb\'fc\'ed\'ee\'f1\'f2\'fc
-\loch\f39 \hich\f39 "\'e8\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 "@"POP3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 \'e2\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'ff\'f9\'e8\'ea\'e0\loch\f39
-\hich\f39 ", \'e0\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e2\'e0\'f8\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'eb\'ff\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'e5\'e9\loch\f39 \hich\f39 \'ed\'e0\'e3\'eb\'ff\'e4\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'f0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec\loch\f39 \hich\f39 \'e5\'f9\'e5
-\loch\f39 \hich\f39 \'e2\'e0\'f0\'e8\'e0\'ed\'f2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e8\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'e0\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : mail.example.com
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 : vasya.pupkin@example.com
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0
-\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\af39\dbch\af31505\hich\f39 \'f8\'eb\'ee\'f1\'fc\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'ef\'ee\'ec\'e5\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e8\loch\f39
-\hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'e5\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : 192.168.0.1
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 : vasya.pupkin@example.com@mail.example.com
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ea\'e0\'f7\'e5\'f1\'f2\'e2\'e5\loch\f39 \hich\f39 \'f0\'e0\'e7\'e4\'e5\'eb\'e8\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'e7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 \'e2\'fb\'f1\'f2\'f3\'ef\'e0\'e5\'f2
-\loch\f39 \hich\f39 @, \'ed\'ee\loch\f39 \hich\f39 \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee\loch\f39 \hich\f39 , \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e4\'f0\'f3
-\'e3\'ee\'e9\loch\f39 \hich\f39 \'f1\'e8\'ec\'e2\'ee\'eb\loch\f39 \hich\f39 , \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'ff\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 d
-\hich\af39\dbch\af31505\loch\f39 elimchar:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 delimchar #
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d7\'f2\'ee\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ea\'e0\'f1\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ee\'f2\'ef\'f0\'e0\'e2\'ea\'e8\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 , \'f2\'ee
-\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e0\'e1\'ee\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5
-\'f0\'e0\loch\f39 \hich\f39 \'f0\'e5\'ea\'ee\'ec\'e5\'ed\'e4\'f3\'e5\'f2\loch\f39 \hich\f39 \'e2\'ee\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef
-\'ee\'f0\'f2\'ec\'e0\'ef\'ef\'e8\'ed\'e3\'ee\'ec\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 25 smtp.provider.ru 25
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'f2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'ec\'f3\'e4\'f0\'f1\'f2\'e2\'f3\'ff\loch\f39
-\hich\f39 \'eb\'f3\'ea\'e0\'e2\'ee\loch\f39 \hich\f39 , \'ec\'fb\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\loch\af39\dbch\af31505\hich\f39 \'fb\loch\f39 \hich\f39 \'ef\'ee
-\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'f3\loch\f39 \hich\f39 25, \'ef\'ee\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'ee\'ec\'f3\loch\f39 \hich\f39 , \'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39 \'ee\'f2\'ef\'f0
-\'e0\'e2\'eb\'ff\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'fb\'e5\loch\f39 \hich\f39 \'f1\'ee\'ee\'e1\'f9\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 , \'ef\'e5\'f0\'e5\'ea\'e8\'e4\'fb\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 25-\'fb\'e9\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9\'e4\'e5\'f0\'e0
-\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'e2\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'e0
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f3\'ef\'ee\'ec\'ff\'ed\'f3\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\loch\f39
-\hich\f39 \'ff\'f9\'e8\'ea\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'e1\'f9\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'ee\'ec\'e5\'ed\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e7\'e0\'ef\'e8\'f1\'fc
-\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 SMTP-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 SMTP-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : 192.168.0.1
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'e5\'ec\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'ec
-\'e0\'ef\'ef\'e8\'ed\'e3\'ee\'ec\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39
-\'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee
-\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 2110 pop.mail.ru 110
-\par \loch\af39\dbch\af31505\hich\f39 \'c5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'e2\'e0\'f0\'e8\'e0\'ed\'f2\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'e0\loch\f39 \hich\f39 \'ed\'e5\'ef\'f0\'e8\'ff\'f2\'ed
-\'e0\'ff\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'f1\'f2\'ee\'f0\'ee\'ed\'e0\loch\f39 \hich\f39 - \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e8\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2\loch\f39 \hich\f39 \'ef
-\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ff\'f9\'e8\'ea\'e0\'ec\'e8\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'fb\'f5\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'fb\'f5\loch\f39 \hich\f39 \'f1\'e5\'f0
-\'e2\'e5\'f0\'e0\'f5\loch\f39 \hich\f39 , \'e1\'eb\'e0\'e3\'ee\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'e2\'e5\'eb\'ee\'f1\'fc\loch\f39 \hich\f39
- (yandex, rambler,newmail...), \'f2\'ee\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'ef
-\'f0\'e8\'e4\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e7\'e0\'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ed\'ee\'e2\'f3\'fe\loch\f39 \hich\f39 \'e7\'e0\'ef\'e8\'f1\'fc\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'ec\'e0\'ef\'ef\'e8\'ed\'e3\'e0\loch\f39 \hich\f39
-\'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 tcppm \hich\af39\dbch\af31505\loch\f39 -i192.168.0.1 3110 pop.yandex.ru 110
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c2\'ef\'f0\'ee\'f7\'e5\'ec\loch\f39 \hich\f39 , \'e2\'f0\'ff\'e4\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'f7
-\'e8\'f1\'eb\'ee\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'ee\'ec\loch\f39 \hich\f39 \'ee\'f4\'e8\'f1\'e5\loch\f39 \hich\f39 \'ef\'f0\'e5\'e2\'fb\'f1\'e8\'f2\loch\f39 10-15.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'fb\loch\f39 \hich\f39 \'ff\'f9\'e8\'ea\'e0\loch\f39 \hich\f39 \'e2\loch\f39
-\hich\f39 \'ec\'fd\'e9\'eb-\'ea\'eb\'e8\'e5\'ed\'f2\'e5\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'e5\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 : 192.168.0.1
-\par \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39 : vasya.pupkin
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'ee\'ef\'ee\'eb\'ed\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'ec\'e5\'ed\'ff\'f2\'fc
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 2110 \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'e1\'fb\'f2\'fc\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef
-\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\'ec\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'fd\'f2\'ee\'f2\loch\f39 \hich\f39 \'ed\'e5\'f1\'f2\'e0\'ed\'e4\'e0\'f0\'f2\'ed\'fb\'e9
-\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'ea\'ee\'e9\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'f1\'ef\'ee\'f1\'ee\'e1\'ee\'e2\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39
-\'e2\'fb\'e1\'e8\'f0\'e0\'f2\'fc\loch\f39 \hich\f39 - \'e4\'e5\'eb\'ee\loch\f39 \hich\f39 \'e2\'ea\'f3\'f1\'e0\loch\f39 \hich\f39 , \'ec\'ed\'e5\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'fb\'f7\'e5\'ed\loch\f39
-\hich\f39 \'ef\'ee\'f0\'f2\'ec\'e0\'ef\'ef\'e8\'ed\'e3\loch\f39 \hich\f39 , \'e5\'e3\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'ec\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc
-\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'ef\'f0\'ee\'f7\'e5\'ec\loch\f39 \hich\f39 , \'ef\'f0\'ee\'e3\'f0\'e5\'f1\'f1\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f2\'ee\'e8\'f2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ec\'e5\'f1\'f2\'e5
-\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ee\'f2\'ef\'f0\'e0\'e2\'ea\'e8\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39
- smtp-\'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 , \'f0\'e0\'e1\'ee\'f2\'e0\'fe\'f9\'e8\'e9\loch\f39 \hich\f39 \'e0\'ed\'e0\'eb\'ee\'e3\'e8\'f7\'ed\'ee\loch\f39 pop3p:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 smtpp
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'ee\'f7\'f2\'ee\'e2\'fb\'e5\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'fb\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'e0\'e8\'e2\'e0\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'e0\'ed\'e0\'eb\'ee\'e3\'e8\'f7\'ed\'ee
-\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e5\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 pop3p: \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 \'ee\'f1\'f2\'e0\'fe\'f2\'f1\'ff
-\loch\f39 \hich\f39 \'e1\'e5\'e7\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 , \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 pop3-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'f3\loch\af39\dbch\af31505\hich\f39 \'ea
-\'e0\'e7\'fb\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 IP \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'ee\'eb\'e5\loch\f39 \hich\f39 \'e8\'ec\'e5\'ed\'e8\loch\f39 \hich\f39
-\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'e7\'e0\'e1\'e8\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 \'e8\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 @POP_SERVER.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'e5\loch\f39 \hich\f39 \'ff\'f9\'e8\'ea\'e0\loch\f39 }{\field{\*\fldinst {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39
-HYPERLINK "mailto:ivan@mail.ru"}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid3764488 {\*\datafield
-00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b400000006d00610069006c0074006f003a006900760061006e0040006d00610069006c002e00720075000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\ul\cf9\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ivan@mail.ru}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\hich\af39\dbch\af31505\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ef\'ee\'eb\'e5\loch\f39 \hich\f39 \'ab\'d3\'f7\'e5\'f2\'ed\'e0\'ff\loch\f39 \hich\f39 \'e7\'e0\'ef\'e8\'f1\'fc\'bb\loch\f39 \hich\f39 \'e2\'ed\'ee\'f1\'e8\'ec\loch\f39 }{\field{\*\fldinst {
-\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 HYPERLINK "mailto:ivan@smtp.mail.ru"}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid3764488 {\*\datafield
-00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4a0000006d00610069006c0074006f003a006900760061006e00400073006d00740070002e006d00610069006c002e00720075000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {
-\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\ul\cf9\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ivan@smtp.mail.ru}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 25 \'ee\'f1\'f2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e1\'e5\'e7\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 . \'c0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'ee\'eb\'e5\loch\f39 \hich\f39 \'ab\'d1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 \'e8\'f1\'f5\'ee\'e4\'ff\'f9\'e5\'e9
-\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\'bb\loch\f39 \hich\f39 \'e7\'e0\'e1\'e8\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 IP \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ee\'e1\'e8\'f0\'e0\'e5\'ec\loch\f39 \hich\f39 \'ee\'f7\'e5\'f0\'e5\'e4\'ed\'f3\'fe\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'fe\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'f1\loch\f39
-\hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 pop3p (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 5):
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.10\hich\af39\dbch\af31505\loch\f39 0.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0\pararsid3764488 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 nobandlimin * * * 110
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 24000 * \hich\af39\dbch\af31505\loch\f39 192.168.0.2,192.168.0.3
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"
-\par \hich\af39\dbch\af31505\loch\f39 nocountin * 192.168.0.4 * 110 *
-\par \hich\af39\dbch\af31505\loch\f39 countin "1/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 50 * 192.168.0.2 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "2/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f2\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 80 * 192.168.0.3 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin \hich\af39\dbch\af31505\loch\f39 "3/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d1\'e8\'e4\'ee\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 30 * 192.168.0.4 * * *
-\par
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 proxy
-\par
-\par \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'ce\'d7\'d2\'c0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 25}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186 00}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 smtp.provider.ru 25
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 pop3p
-\par \hich\af39\dbch\af31505\loch\f39 smtpr
-\par \loch\af39\dbch\af31505\hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'fb\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ef\'ee\'f0
-\'f2\'ec\'e0\'ef\'ef\'e8\'ed\'e3\loch\f39 \hich\f39 \'f1\'e5\'ea\'f6\'e8\'ff\loch\f39 \hich\f39 \'ea\'ee\'ed\loch\af39\dbch\af31505\hich\f39 \'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'e8\'e4\'f3\'f9\'e0\'ff\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5
-\loch\f39 \hich\f39 \'ea\'ee\'ec\'e5\'ed\'f2\'e0\'f0\'e8\'ff\loch\f39 \hich\f39 # \'cf\'ce\'d7\'d2\'c0\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'eb\'e0\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'ed\'e5\'ec\'ed\'ee\'e3\'ee\loch\f39
-\hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'ec\'f3\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\loch\af39\dbch\af31505\hich\f39 \'cf\'ce\'d7\'d2\'c0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192\hich\af39\dbch\af31505\loch\f39 .168.0.1 25}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186 00}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 smtp.provider.ru 25
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 2110 pop.mail.ru 110
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 3110 pop.yandex.ru 110
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c2\'fb\loch\f39 \hich\f39 , \'ed\'e0\'e2\'e5\'f0\'ed\'ee\'e5\loch\f39 \hich\f39 , \'e7\'e0\'ec\'e5\'f2\'e8\'eb\'e8\loch\f39 \hich\f39 \'ed\'ee\'e2
-\'f3\'fe\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 flush. \'cc\'fb\loch\f39 \hich\f39 \'e5\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'ed\'e8\'eb\'e8\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f1\'e1\'f0\'ee\'f1
-\'e0\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e0\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39
-\'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\loch\af39\dbch\af31505\hich\f39 \'ff\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0
-\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 . \'c7\'e0\'ec\'e5\'f7\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'f1\'e1\'f0\'ee\'f1\loch\f39 \hich\f39 \'ed
-\'e5\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'ee
-\'e5\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 . \'c8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0
-\'e1\'fb\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'ed\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'ef\'ee\'f1\'ee
-\'e1\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e8\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d3\'f7\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 smtpr}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f3\'ec\'ee\'eb\'f7\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'e7\'e0\'ed\'e8\'ec\'e0\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 \hich\f39
- 25, \'ef\'ee\'fd\'f2\'ee\'ec\'f3\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'f3\loch\f39 \hich\f39 \'ed\loch\af39\dbch\af31505\hich\f39 \'e5\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'fb
-\loch\f39 \hich\f39 \'e2\'e8\'f1\'e5\'f2\'fc\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8\'e5\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\loch\f39 \hich\f39 \'ed\'e0\'ea\'ee\'ed\'e5\'f6\loch\f39 \hich\f39 , \'f0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec\loch\f39 \hich\f39 \'e2\'e0\'e6\'ed\'f3\'fe\loch\f39 \hich\f39 \'f1\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'fe\'f9
-\'f3\'fe\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 - WEB-\'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\loch\f39 \hich\f39 \'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39
-. \'c4\'eb\'ff\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ed\'e5\'ec\'f3\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec
-\'e0\'ed\'e4\'f3\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 admin
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'eb\'ff\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'ef\'e8\'f8\'e8\'f2\'e5\loch\f39
-\hich\f39 \'e2\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'ed\'ee\'e9\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e5\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e8\'e9\loch\f39 \hich\f39 \'e0\'e4
-\'f0\'e5\'f1\hich\af39\dbch\af31505\loch\f39 \hich\f39 : http://192.168.0.1:80, \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'e1\'fb\'e2\loch\f39 \hich\f39 , \'ea\'ee\'ed\'e5\'f7\'ed\'ee\loch\f39 \hich\f39 , \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0
-\'e5\'f8\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'e4\'e0\'f0\'f2\'ed
-\'ee\'e3\'ee\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 admin \'ef\'ee\'f0\'f2\'e0\loch\f39 \hich\f39 80. \'c2\loch\f39 \hich\f39 \'ee\'f2\'ea\'f0\'fb\'e2\'f8\'e5\'ec\'f1\'ff\loch\f39 \hich\f39
-\'ee\'ea\'ed\'e5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'e8\'ed\'f4
-\'ee\'f0\'ec\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 \'ee\loch\f39 \hich\f39 \'ec\'e0\'ea\'f1\'e8\'ec\'e0\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e4\'ee\'ef\'f3\'f1\'f2\'e8\'ec\'ee\'ec\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e5\loch\f39 \hich\f39 \'e8
-\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'f2\'e5\'ea\'f3\'f9\'e5\'ec\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'e8\loch\f39 \hich\f39 , \'ef\'ee\'f1\'ec\'ee\'f2\'f0\'e5\loch\af39\dbch\af31505\hich\f39 \'f2
-\loch\af39\dbch\af31505\hich\f39 \'fc\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'f6\'e5\'eb\'e8\'ea\'ee\'ec\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'e7\'e0\'ef\'f3\'f1\'f2
-\'e8\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 . \'cf\'ee\'fd\'f2\'ee\'ec\'f3\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'fd\'f2\'f3
-\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'f3\loch\f39 \hich\f39 \'f0\'e0\'e7\'e4\'e0\'e2\'e0\'e9\'f2\'e5\loch\f39 \hich\f39 \'ea\'f0\'e0\'e9\'ed\'e5\loch\f39 \hich\f39 \'e2\'ed\'e8\'ec\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 ! \'c2\'ef\'f0\'ee
-\'f7\'e5\'ec\loch\f39 \hich\f39 , \'f3\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 admin \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'ea\'eb\'fe\'f7\loch\f39 \hich\f39 -s, \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'ed\'e5\loch\f39
-\hich\f39 \'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'ed\'e8\'f7\'e5\'e3\'ee\loch\f39 \hich\f39 \'ed\'e5\'e4\'ee\'e7\'e2\'ee\'eb\'e5\'ed\'ed\'ee
-\'e3\'ee.
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\'e4\'ee\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e8\'e4\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39
-\'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'ec\'ee\'f2\'f0\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'e8\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e5\loch\f39
-\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e3\'e0\'eb\'ee\'f7\'ea\'f3
-\loch\f39 \hich\f39 \'cd\'e5\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e8\'e6\'e5\'f1\'f2\'ee\'ff\'f9\'e5\'ec\loch\f39 \hich\f39 \'ef\'ee\'eb\'e5\loch\f39 \hich\f39 \'e0\'e9-\'ef\'e8\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-
-\'f1\'e5\'f0\'e2\'e5\'f0\'e0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \u8203\'3f}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39
-\hich\f39 , \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 \'d1\'f7\'e8\'f2\'e0\'fe\loch\f39 \hich\f39 \'f1\'e2\'ee\'e8\'ec\loch\f39 \hich\f39 \'e4\'ee\'eb\'e3\'ee\'ec\loch\f39 \hich\f39 \'f3\'ef\'ee\'ec\'ff\'ed\'f3\'f2\'fc\loch\f39 \hich\f39 \'ee\loch\f39
-\hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e5\loch\f39 \hich\f39 writable, \'ea\'ee\'f2\'ee\'f0\'e0\'ff\loch\f39 \hich\f39 , \'e1\'f3\'e4\'f3\'f7\'e8\loch\f39 \hich\f39 \'f0\'e0\'e7\'ec\'e5\loch\af39\dbch\af31505\hich\f39 \'f9\'e5\'ed\'e0\loch\f39 \hich\f39
-\'e2\loch\f39 \hich\f39 \'f1\'e0\'ec\'ee\'ec\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e5\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'fc\loch\f39
-\hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f7\'e8\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 WEB-\'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9
-\'f1\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 ! \'c0\'e2\'f2\'ee\'f0\loch\f39 \hich\f39 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'fb\loch\f39
-\hich\f39 \'ef\'f0\'e5\'e4\'eb\'e0\'e3\'e0\'e5\'f2\loch\f39 \hich\f39 \'e4\'e2\'e0\'e6\'e4\'fb\loch\f39 \hich\f39 \'ef\'ee\'e4\'f3\'ec\'e0\'f2\'fc\loch\f39 \hich\f39 , \'ef\'f0\'e5\'e6\'e4\'e5\loch\f39 \hich\f39 \'f7\'e5\'ec\loch\f39 \hich\f39 \'e2
-\'ea\'eb\'fe\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'fd\'f2\'f3\loch\f39 \hich\f39 \'ee\'ef\'f6\'e8\'fe\loch\f39 \hich\f39 . \'d7\'f2\'ee\loch\f39 \hich\f39 \'ea\'e0\'f1\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39
-\hich\f39 , \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'e0\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'e0\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 , \'ec\'e8\'ec
-\'ee\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'ee\'e9\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ff\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'e9\'f2\'e8\loch\f39 \hich\f39
-. \'dd\'f2\'ee\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 monitor, \'ea\'ee\'f2\'ee\'f0\'e0\'ff\loch\f39 \hich\f39 \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'f3
-\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'e8\'f2\'fc\loch\f39 \hich\f39 \'e7\'e0\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'ee\'ec\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 (\'e8\loch\f39 \hich\f39 \'ed\'e5
-\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'fb\'ec\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'ee\'ec\loch\f39 \hich\f39 3proxy.cfg, \'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'ec
-\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8\'ec\loch\f39 \hich\f39 , \'e2\'ea\'eb\'fe\'f7\'e0\'e5\'ec\'fb\'ec\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 ) \'e8\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1
-\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ee\'e1\'ed\'e0\'f0\'f3\'e6\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e5\'e9\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 \'ed\'e5\'e7\'e0\'ec\'e5\'e4\'eb
-\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 (\'ef\'ee\loch\f39 \hich\f39 \'ec\'ee\'e8\'ec\loch\f39 \hich\f39 \'ed\'e0\'e1\'eb\'fe\'e4\'e5\loch\af39\dbch\af31505\hich\f39 \'ed\loch\af39\dbch\af31505\hich\f39 \'e8\'ff\loch\f39 \hich\f39 , \'f7\'e5
-\'f0\'e5\'e7\loch\f39 \hich\f39 2-3 \'f1\'e5\'ea\'f3\'ed\'e4\'fb\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'f1\'ee\'f5\'f0\'e0\'ed\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 ) \'e7\'e0\'e3\'f0\'f3\'e6\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'ee
-\'e2\'f3\'fe\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 . \'cf\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 \'ee\'f2\'eb\'e8\'f7\'ed\'e0\'ff\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'fc\loch\f39
-\hich\f39 , \'ea\'ee\'f2\'ee\'f0\'ee\'e9\loch\f39 \hich\f39 \'ec\'ed\'e5\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f5\'e2\'e0\'f2\'e0\'eb\'ee\loch\f39 \hich\f39 \'e2\loch\f39 ES Proxy!
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e8\'e4\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39
-\'fd\'f2\'e8\loch\f39 \hich\f39 \'e4\'e2\'e5\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 \emdash \loch\f39 \hich\f39 writable \'e8\loch\f39 \hich\f39 monitor - \'ed\'e5\'eb\'fc\'e7\'ff\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5
-\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'e5.
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 monitor "c:\\3proxy\\bin\\\hich\af39\dbch\af31505\loch\f39 3proxy.cfg"
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d0\'e0\'e7\'f3\'ec\'e5\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 \'ec\'ee\'ed\'e8\'f2\'ee\'f0\loch\f39
-\hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'fb\'ec\loch\f39
-\hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'ee\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 . \'c4\'e5\'eb\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f2\'ee\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e2\'ea\'eb\'fe\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'fb\'e5\loch\f39 \hich\f39 \'f2\'e5\'ea
-\'f1\'f2\'ee\'e2\'fb\'e5\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'fb\loch\f39 \hich\f39 \'f1\'ee\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e0\'ec\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 , \'f1\'e5\'f2
-\'e5\'e9\loch\f39 \hich\f39 , \'ef\'e0\'f0\'ee\'eb\'e5\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2.\'e4\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1
-\'ff\loch\f39 \hich\f39 \'ec\'e0\'ea\'f0\'ee\'f1\loch\f39 \hich\f39 $. \'cd\'e0\'ef\'f0\'e8\'ec\loch\af39\dbch\af31505\hich\f39 \'e5\'f0\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'e8\'f1\'fb
-\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'ee\'e9\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'ee\'e9\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ee\'ea\loch\f39 \hich\f39
- IP \'e0\'e4\'f0\'e5\'f1\'ee\'e2\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 , \'e8\'ec\'e5\'fe\'f9\'e8\'f5\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2
-\'e5\loch\f39 \hich\f39 , \'ec\'fb\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'ec\loch\f39 \hich\f39 \'f1\'ee\'e7\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'f2\'e5\'ea\'f1\'f2\'ee\'e2\'ee\'e9\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 IP_list.txt,
-\'e2\loch\f39 \hich\f39 \'ed\'e5\'e3\'ee\loch\f39 \hich\f39 \'e2\'ed\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'e7\'e0\'ef\'ff\'f2\'f3\'fe\loch\f39 \hich\f39 (\'e1\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'e5\'eb
-\'ee\'e2\loch\f39 \hich\f39 !) \'e2\'f1\'e5\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'fb\'e5\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 IP, \'f2\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 , \'e7\'e0\'e4\'e0
-\'fe\'f9\'e0\'ff\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ee\'ea\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ef\loch\af39\dbch\af31505\hich\f39 \'ee\loch\af39\dbch\af31505\hich\f39 \'f7\'f2\'e5\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'ff\'f9\'e0\'ff\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 2110,25,110 * 1-5
-\par \hich\af39\dbch\af31505\loch\f39 00:00:00-20:00:00
-\par \loch\af39\dbch\af31505\hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'ed\'e5\'ed\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow * $"c:\\3proxy\\IP_list.txt" * 2110,25,110 * 1-5 00:00:00-20:00:00
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'ec\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'eb\'e5\'e6\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'e8
-\loch\f39 \hich\f39 \'e7\'e0\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'ee\'ec\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\loch\af39\dbch\af31505\hich\f39 \'f1\'ee\'e2\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'e0\loch\f39 \hich\f39
- IP_list.txt \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 monitor "c:\\3proxy\\bin\\IP_list.txt"
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'e0\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'e0\'ff\loch\f39 \hich\f39 \'ee
-\'f1\'ee\'e1\'e5\'ed\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 - \'ef\'f0\'e8\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 \'ea\'ee\'ec
-\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 monitor \'ec\'fb\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'ec\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ea\'ee\'f0\'f0\'e5\'ea\'f2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f39
-\hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e1\'f3\'e4\'f3\'f2\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'e8\'ec\'e0\'f2\'fc\'f1
-\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'e5\'f2\'f3\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\loch\af39\dbch\af31505\hich\f39 \'f3\loch\f39 \hich\f39 ,
-\'ef\'ee\'e4\'ec\'e5\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8\'ec\loch\f39 \hich\f39 \'e2\'e0\'f0\'e8\'e0\'ed\'f2\'ee\'ec\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39
-\hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e1\'eb\'ee\'ea\'e8\'f0\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'ee\'ec\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39
-\hich\f39 \'ee\'f2\'f1\'eb\'e5\'e6\'e8\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ed\'e0\'eb\'e8\'f7\'e8\'e5\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 . \'dd\'f2\'ee\loch\f39 \hich\f39
-\'e1\'fb\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'ee\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1\'ed\'ee\loch\f39 \hich\f39 . \'cd\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'f3\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff\loch\f39 \hich\f39 \'e5
-\'f1\'f2\'fc\loch\f39 \hich\f39 \'e4\'e2\'e0\loch\f39 \hich\f39 \'e3\'ee\'f2\'ee\'e2\'fb\'f5\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 - \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee
-\'f2\'fb\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 ADSL, \'e2\'f2\'ee\'f0\'ee\'e9\loch\f39 \hich\f39 - \'e4\'eb\'ff\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'fb\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'f3\'f1\'ea
-\'ee\'f0\'e8\'f2\'e5\'eb\'fc\loch\f39 \hich\f39 \'f1\'ef\'f3\loch\af39\dbch\af31505\hich\f39 \'f2\loch\af39\dbch\af31505\hich\f39 \'ed\'e8\'ea\'ee\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\'e0\loch\f39 \hich\f39 , \'ea\'ee\'ed
-\'f4\'e8\'e3\'e8\loch\f39 \hich\f39 \'ee\'f2\'eb\'e8\'f7\'e0\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 . \'cf\'f0\'e8\loch\f39 \hich\f39 \'ed
-\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ea\'eb\'fe\'f7\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'e9\loch\f39 \hich\f39 \'ea\'e0\'ed\'e0\'eb\loch\f39
-\hich\f39 \'ff\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'e8\'ec\'e5\'ed\'ee\'e2\'fb\'e2\'e0\'fe\loch\f39 \hich\f39 (\'e8\'eb\'e8\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ed\'ee\'f8\'f3\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'f3\'fe
-\loch\f39 \hich\f39 \'ef\'e0\'ef\'ea\'f3\loch\f39 \hich\f39 ) \'e8\'f1\'f5\'ee\'e4\'ed\'fb\'e9\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 , \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'ed\'e5\'e3\'ee\loch\f39 \hich\f39 \'f1\'f2
-\'e0\'e2\'eb\'fe\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'e9\loch\f39 \hich\f39 - \'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e8\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'ed\'e8\'f7\'e5\'e3\'ee\loch\f39
-\hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f3\'f1\'ef\'e5\'e2\'e0\'fe\'f2\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 , \'f2\'e0\'ea\loch\f39 \hich\f39 \'ea\loch\af39\dbch\af31505\hich\f39 \'e0\loch\af39\dbch\af31505\hich\f39
-\'ea\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee\loch\f39 \hich\f39 \'ed\'e8\loch\f39 \hich\f39 \'ee\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 , \'ed\'e8
-\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'e0\'f3\'e7\'f3\loch\f39 \hich\f39 . \'ce\'f2\'eb\'e8\'f7\'ed\'e0\'ff\loch\f39 \hich\f39 \'f4\'e8\'f7\'e0
-\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'fe\loch\f39 \hich\f39 \'ed\'e8\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2
-\'e5\'f0\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f2\'e0\'ea\'ee\'e9\loch\f39 \hich\f39 ! \'cd\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'e5\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 : \'fd\'f2\'e0\loch\f39 \hich\f39
- \'f4\'e8\'f7\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'e5\'f2\'f3\loch\f39 \hich\f39 \'ed\'e5
-\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ee\'f7\'e5\'f2\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 \'f1\loch\f39 writable.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'e0\loch\f39 \hich\f39 , \'f7\'f3\'f2\'fc\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'e1\'fb\'eb\'e8\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'e4\'e2\'e5\loch\f39 \hich\f39 \'f1\'eb\'f3
-\loch\af39\dbch\af31505\hich\f39 \'e6\'e1\'fb\loch\f39 \hich\f39 - FTP-\'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 SOCKS-\'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 , \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'e5\'ec\'fb\'e5\loch\f39
-\hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\'ec\'e8\loch\f39
-\par
-\par \hich\af39\dbch\af31505\loch\f39 ftppr
-\par \hich\af39\dbch\af31505\loch\f39 socks
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'ee\loch\f39 \hich\f39 \'f3\'ec\'ee\'eb\'f7\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'ee\'ed\'e8\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 \'ef\'ee\'f0\'f2\'fb\loch\f39 \hich\f39 21 \'e8\loch\f39 \hich\f39 1080 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee.
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 \'d1\'eb\'f3\'e6\'e1\'e0\loch\f39 \hich\f39 ftppr \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5\'f2\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 "\'ed\'e0\'f1\'f2\'ee\'ff\'f9\'e8\'e9
-\loch\f39 \hich\f39 " FTP-\'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 , \'f1\loch\f39 \hich\f39 \'ef\'ee\'e4\'e4\'e5\'f0\'e6\'ea\'ee\'e9\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'ee\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'e4\'e0\'f0\'f2\'ed\'ee\'e3\'ee
-\loch\f39 \hich\f39 \'ed\'e0\'e1\'ee\'f0\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\loch\f39 \hich\f39 \'ef\'f0\'ee\'f2\'ee\'ea\'ee\'eb\'e0\loch\f39 FTP,\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e7\'e0\'e1\'f3\'e4
-\'fc\'f2\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'e2\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 FTP-\'ea\'eb\'e8\'e5\'ed\'f2\'e0\loch\f39 \hich\f39 (\'e2\loch\f39 \hich\f39 \'ec\'ee\'e5
-\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 FAR) \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 192.168.0.1 \'ed\'e0
-\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'f3\loch\f39 \hich\f39 21. \'c0\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'e0\loch\f39 \hich\f39 SOCKS \'ef\'ee\'e7\'e2\'ee\'eb\'e8\'f2\loch\f39 \hich\f39 \'e2\'e0\'ec\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee
-\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'e2\'e0\'f8\'e5\'e9\loch\f39 \hich\f39 \'eb\'fe\'e1\'e8\'ec\'ee\'e9\loch\f39 \hich\f39 \'e0\'f1\'fc\'ea\'ee\'e9\loch\f39 \hich\f39
-, \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e5\'e5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2
-\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'f3\loch\f39 SOCKS5,\hich\af39\dbch\af31505\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 192.168.0.1 \'e8\loch\f39
-\hich\f39 \'ef\'ee\'f0\'f2\loch\f39 1080.
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'ee\loch\f39 \hich\f39 ICQ \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f7\'e5\'f0
-\'e5\'e7\loch\f39 \hich\f39 SOCKS, \'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'f1\'ef\'e5\'f6\'e8\'e0\'eb\'fc\'ed\'fb\'e9\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 icqpr. \'cd
-\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39
-\hich\f39 \'ed\'ee\'ec\'e5\'f0\loch\f39 \hich\f39 ICQ 123456789, \'f2\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39
-\'ed\'e0\'ef\'e8\'f1\'e0\'f2\'fc\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth useronly
-\par \hich\af39\dbch\af31505\loch\f39 allow 123456789
-\par \hich\af39\dbch\af31505\loch\f39 icqpr 5190 login.icq.com 5190
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ce\'e1\'f0\'e0\'f2\'e8\'f2\'e5\loch\f39 \hich\f39 \'e2\'ed\'e8\'ec\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'ef\'e5
-\'f6\'e8\'e0\'eb\'fc\'ed\'fb\'e9\loch\f39 \hich\f39 \'e2\'e8\'e4\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 useronly. \'d2\'e5\loch\f39 \hich\f39 , \'ea\'ee\'ec\'f3\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2
-\loch\f39 \hich\f39 \'eb\'e5\'ed\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ef\'e8\'f1\'fb\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'ee\'ec\'e5\'f0\'e0\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef
-\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 , \'e2\'f2\'ee\'f0\'f3\'fe\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'ef\'e8\'f1\'e0\'f2\'fc\loch\f39
-\hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 icqpr, \'f2\'ee\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed
-\'f2\'e0\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f1\'ef\'e5\loch\af39\dbch\af31505\hich\f39 \'f6\'e8\'f4\'e8\'f7\'e5\'f1\'ea\'ee\'e9\loch\f39 \hich\f39 . \'cd\'e5\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'f1\'f2\'e0
-\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e3\'e0\'eb\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 \'ab\'c8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\'bb\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'e2\'ee\'f2
-\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'eb\'e0\'e3\'e0\'fe\'f9\'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f3\'ec\'ee\'eb\'f7\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0
-\loch\f39 \hich\f39 login.icq.com \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'ed\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 IP \'ed\'e0\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0
-\'e0.\'ce\'f1\'f2\'e0\'eb\'ee\'f1\'fc\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e8\'e2\'f8\'e8\'e9\'f1\'ff\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f7\'e8\'e9\loch\f39 \hich\f39 \'e2\'e0\'f0\'e8\'e0\'ed
-\'f2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 6):
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 service
-\par \hich\af39\dbch\af31505\loch\f39 internal 192.16\hich\af39\dbch\af31505\loch\f39 8.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 65536
-\par \hich\af39\dbch\af31505\loch\f39 monitor "c:\\3proxy\\bin\\3proxy.cfg"
-\par \hich\af39\dbch\af31505\loch\f39 monitor "c:\\3proxy\\IP_list.txt"
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 r\hich\af39\dbch\af31505\loch\f39 otate 30
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0\pararsid3764488 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 nobandlimin * * * 110
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 24000 * 192.168.0.2,192.168.0.3
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"
-\par \hich\af39\dbch\af31505\loch\f39 nocountin * 192.168.0.4 * 110 *
-\par \hich\af39\dbch\af31505\loch\f39 countin "1/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 50 * 192.168.0.2 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "2/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f2\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 80 * 192.168.0.3 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "3/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d1\'e8\'e4\'ee\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 30 * 192.168.0.4 * * *
-\par
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168\hich\af39\dbch\af31505\loch\f39 .0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 proxy
-\par
-\par \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'ce\'d7\'d2\'c0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 2500 smtp.provider\hich\af39\dbch\af31505\loch\f39 .ru 25
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 2110 pop.mail.ru 110
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 3110 pop.yandex.ru 110
-\par \hich\af39\dbch\af31505\loch\f39 pop3p
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 21,1080 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 ftppr
-\par \hich\af39\dbch\af31505\loch\f39 socks
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par \hich\af39\dbch\af31505\loch\f39 icqpr
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 admin
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'e5\'ec\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39
-\hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'eb\'ee\'e6\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'f3\loch\f39 \hich\f39 , \'e4\'eb\'ff
-\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 service. \'cd\'e0\'ef\'ee\'ec\'e8\'ed\'e0\'fe\loch\f39 \hich\f39 , \'f7\'f2
-\'ee\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'ee\'e2\'ea\'e0\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 \'ef\'f0\'ee\'e8\'e7\'e2\'ee\'e4\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39 \hich\f39 \'e8
-\'e7\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ed\'ee\'e9\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e8\loch\f39 \hich\f39 Windows \'eb\'e8\'e1\'ee\loch\f39 \hich\f39 \'eb\'fe\loch\af39\dbch\af31505\hich\f39 \'e1\'ee\'e3\'ee\loch\f39 \hich\f39 \'f4
-\'e0\'e9\'eb-\'ec\'e5\'ed\'e5\'e4\'e6\'e5\'f0\'e0\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 3proxy --install
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'e1\'ff\'e7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'fb\loch\f39 \hich\f39 \'e2\'e8\'f1\'e5\'f2\'fc\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'e4\'e0\'f0\'f2\'ed\'fb\'f5\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'e0\'f5\loch\f39 \hich\f39 , \'eb\'fe\'e1\'f3\'fe\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'ed\'e8\'f5\loch\f39 \hich\f39
-\'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'f1\'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'e9\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\loch\f39 \hich\f39 \'ee\'ef\'f6\'e8
-\'e5\'e9\loch\f39 \hich\f39 -p\'cd\'ce\'cc\'c5\'d0\loch\f39 \hich\f39 _\'cf\'ce\'d0\'d2\'c0\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 proxy -p8080
-\par \hich\af39\dbch\af31505\loch\f39 ftppr -p2121
-\par \hich\af39\dbch\af31505\loch\f39 admin -p8081
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d5\'ee\'f7\'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'ff\'f1\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0
-\'e0\'f5\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ee\'e4\'e8\'ed\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'ff\loch\f39 \hich\f39 \'f1\'e0\'ec
-\loch\f39 \hich\f39 \'ef\'ee\'ed\'ff\'eb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f0\'e0\'e7\'f3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'ed\'e8\'ec\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'ee\'e3\'ee
-\loch\f39 \hich\f39 , \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 , \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e7\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'eb\'e5\'ec\'fb\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f3
-\loch\f39 \hich\f39 \'e2\'e0\'f1\loch\f39 \hich\f39 . \'dd\'f2\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 auth strong. \'cf\'f0\'e5\'e4
-\'ef\'ee\'eb\'ee\'e6\'e8\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'f5\'ee\'f7\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea
-\loch\f39 \hich\f39 WEB-\'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'e1\'fb\'eb\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e5\'ed\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f1
-\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 192.168.0\hich\af39\dbch\af31505\loch\f39 \hich\f39 .4, \'ef\'f0\'e8\'f7\'e5\'ec\loch\f39 \hich\f39 \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec
-\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e0\'f8\'e8\'e2\'e0\'eb\'f1\'ff\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39
-\'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'fe\'f9\'e0\'ff\loch\f39 \hich\f39 \'f1\'e5\'ea\'f6\'e8\'ff\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39
-\hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth strong
-\par \hich\af39\dbch\af31505\loch\f39 allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 deny *
-\par \hich\af39\dbch\af31505\loch\f39 admin
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\loch\f39 \hich\f39 \'f0\'e0\'e7\'f3\'ec\'e5\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'ef\'f0\'e5\'e6\'e4\'e5\loch\f39 \hich\f39 \'f7\'e5\'ec\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\'f1\'ff
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e5\'e9\loch\f39 \hich\f39 strong, \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e7\'e0\'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff
-\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 Administrator:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 users Administrator:CL:password
-\par \loch\af39\dbch\af31505\hich\f39 \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'ef\'ee\'ef\'fb\'f2\'ea\'e5\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0
-\'ed\'e8\'f6\'f3\loch\f39 \hich\f39 WEB-\'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 \hich\f39 \'d1\'e8\'e4\'ee\'f0\'ee\'e2\'e0
-\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e0\'f8\'e8\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8
-\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\loch\af39\dbch\af31505\hich\f39 \'ef\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'ee\'f1\'f2\'fc\'fe\loch\f39
-\hich\f39 \'e7\'e0\'ea\'f0\'fb\'f2\loch\f39 \hich\f39 . \'ca\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 deny * \'e2\'f1\'e5\'e3\'e4\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8\'f1\'f3\'f2\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'ed\'e5\'ff\'e2\'ed\'ee
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e5\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e3\'ee\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e0\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 , \'e8\loch\f39 \hich\f39
-\'e5\'e5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'fb\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39
-\'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e5\'e5\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39
-\'e7\'e0\'ef\'f0\'e0\'f8\'e8\'e2\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f1\loch\f39
-\hich\f39 \'eb\'fe\'e1\'ee\'e9\loch\f39 \hich\f39 \'ec\'e0\'f8\'e8\'ed\'fb\loch\f39 \hich\f39 , \'f5\'ee\'f2\'ff\loch\f39 \hich\f39 \'ef\'f3\'f1\'f2\'ff\'f2\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'f0\'e0\'e2\'ed\'ee\loch\f39 \hich\f39
-\'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e0\loch\af39\dbch\af31505\hich\f39 \'e4\loch\af39\dbch\af31505\hich\f39 \'f0\'e5\'f1\'e0\loch\f39 \hich\f39 192.168.0.4. \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e6\'e5\loch\f39
-\hich\f39 \'f2\'f0\'e5\'f2\'fc\'ff\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'e5\'e4\'e5\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\loch\f39 \hich\f39 \'f1\'e5\'ea\'f6\'e8
-\'e8\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 allow Administrator * * 80 * 1-5 00:00:00-20:00:00
-\par \loch\af39\dbch\af31505\hich\f39 \'f2\'ee\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e8\'f0\'ee\'e2\'e0\'ed\'e8\'fe\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39
-\hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e3\'ee\loch\f39 \hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8
-\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'fa\'ff\'e2\'eb\'e5\'ed\'e8\'e8\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'ff\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\loch\af39\dbch\af31505\hich\f39 \'f2\'e5\'eb\'ff
-\loch\f39 Administrator.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'e6\'e4\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39
-\hich\f39 , \'ef\'ee\loch\f39 \hich\f39 \'e2\'f1\'e5\'e9\loch\f39 \hich\f39 \'e2\'e8\'e4\'e8\'ec\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 , \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'e5\'f1\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f2\'f0
-\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 , \'e8\'e7\'f0\'e0\'f1\'f5\'ee\'e4\'ee\'e2\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'e8\'ec\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f2\'e5\'ea\'f3\'f9\'e8\'e9\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2
-\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'f2\'e0\'ea
-\'f3\'fe\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 , \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'ee\loch\f39 \hich\f39 \'eb\'e8\'f8\'fc\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'e5\'ec
-\'f3\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f6\'f3\loch\f39 \hich\f39 WEB-\'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e8\'f0\'ee\loch\af39\dbch\af31505\hich\f39 \'e2\'e0\'ed\'e8
-\'ff\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'ed\'fb\'ec\'e8\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e0\'ec\'e8\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ee\'ed
-\loch\f39 \hich\f39 \'ec\'ee\'e3\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'ec\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e5\'ea\'f3\'f9\'e8\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'ff\loch\f39
-\hich\f39 \'f1\'e2\'ee\'e5\'e3\'ee\loch\f39 \hich\f39 (\'e8\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'f1\'e2\'ee\'e5\'e3\'ee\loch\f39 \hich\f39 !) \'e8\'e7\'f0\'e0\'f1\'f5\'ee\'e4\'ee\'e2\'e0\'ed\'ed\'ee\'e3\'ee\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'ec\'e0\'ea\'f1\'e8\'ec\'e0\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e4\'ee\'ef\'f3\'f1\'f2\'e8\'ec\'ee\'e3\'ee\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd
-\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'f3\loch\f39 \hich\f39 admin \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39
- \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'f0\'e0\'e7\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'ee\'ec\loch\f39 \hich\f39 \'ef\'ee
-\'f0\'f2\'f3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f1\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ea\loch\af39\dbch\af31505\hich\f39 \'eb\'fe\'f7\'ee\'ec\loch\f39 \hich\f39 -s (\'f1\'ee\'ea\'f0\'e0\'f9\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ee
-\'f2\loch\f39 \hich\f39 \'f1\'eb\'ee\'e2\'e0\loch\f39 \hich\f39 security), \'e4\'eb\'ff\loch\f39 \hich\f39 \'f7\'e5\'e3\'ee\loch\f39 \hich\f39 \'e4\'ee\'ef\'e8\'f1\'fb\'e2\'e0\'e5\'ec\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8
-\'e3\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'f7\'ea\'e8\loch\f39 :
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par \hich\af39\dbch\af31505\loch\f39 admin -p8081 -s
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ea\'e0\'e6\'e4\'fb\'e9\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\loch\f39
-\hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'ee\'f2\'ea\'f0\'fb\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e5\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f6\'f3\loch\f39 \hich\f39
- http://192.168.0.1:8081/C \'e8\loch\f39 \hich\f39 \'f3\'e2\'e8\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e0\'ec\loch\f39 \hich\f39 \'f1\'e2\'ee\'fe\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'f3\loch\f39 \hich\f39 . \'c0\loch\f39
-\hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fc\hich\af39\dbch\af31505\loch\f39 \hich\f39 Administrator \'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f6\'e5\loch\f39 \hich\f39 http://192.168.0.1:8080/C \'ec\'ee\'e6\'e5\'f2\loch\f39
-\hich\f39 \'ef\'ee\'f1\'ec\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'f3\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 . \'cf\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec
-\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'e5\'ed\'ed\'e0\'ff\loch\f39 \hich\f39 \'f5\'e8\'f2\'f0\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 : \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2
-\'e5\'eb\'fc\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 IP-\'e0\'e4\'f0\'e5\'f1\'f3\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5
-\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 , \'f2\'ee\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 \'e2\'e8\'e4
-\'e5\'eb\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'e8\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'f1\'e2\'ee\'fe\loch\f39 \hich\f39 \'f1\'f2\'e0\'f2\'e8\'f1\'f2\'e8\'ea\'f3\loch\f39 \hich\f39 , \'ed\'e5\'ee\loch\af39\dbch\af31505\hich\f39 \'e1
-\loch\af39\dbch\af31505\hich\f39 \'f5\'ee\'e4\'e8\'ec\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'e1\'f0\'e0\'f3\'e7\'e5\'f0\'e0\loch\f39
-\hich\f39 (\'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 Internet Explorer) \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 http://192.168.0.1 \'ef\'f0\'ee\'e8\'f1\'f5\'ee\'e4\'e8\'eb\loch\f39 \hich\f39 \'e1\'e5\'e7
-\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 . \'c8\'ed\'e0\'f7\'e5\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'e0\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'e0
-\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'e0\loch\f39 \hich\f39 admin \'f3\'e2\'e8\'e4\'e8\'f2\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'f1\'e0\'ec\'ee\'e3\'ee\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 ,
-\'f2.\'ea\loch\f39 \hich\f39 . \'ea\'eb\'e8\'e5\'ed\'f2\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'f2\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'ed\'e5\'e9\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1
-\'e8\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ee\'f2\'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'ed\'e5\'ef\'f0\'e0\'e2\'e8\loch\af39\dbch\af31505\hich\f39 \'eb\loch\af39\dbch\af31505\hich\f39 \'fc\'ed\'ee\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\'e7\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'e5\'e4\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'ee\'e2\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 \'ff\'f1\'ed
-\'ee\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'ff\loch\f39 \hich\f39 strong \'ef\'f0\'e5\'e4\'ef\'ee\'eb\'e0\'e3\'e0\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e5\'f0\'ea\'f3\loch\f39 \hich\f39
-\'ef\'ee\loch\f39 \hich\f39 \'ed\'e0\'e8\'e1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'ee\'ec\'f3\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'f3\loch\f39 \hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'ee\'e2\loch\f39 \hich\f39 : IP \'f0\'e0\'e1
-\'ee\'f7\'e5\'e9\loch\f39 \hich\f39 \'f1\'f2\'e0\'ed\'f6\'e8\'e8\loch\f39 \hich\f39 , \'e8\'ec\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'e0\'f0\'ee\'eb\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39
-\hich\f39 , \'f1\'ef\'e8\'f1\'ee\'ea\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'f5\'ee\'f1\'f2\'ee\'e2\loch\f39 \hich\f39 , \'ef\'ee\'f0\'f2\'ee\'e2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2.\'e4
-\loch\f39 \hich\f39 ., \'e2\loch\f39 \hich\f39 \'ee\'f2\'eb\'e8\'f7\'e8\'e5\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 iponly, \'ea\'ee\loch\af39\dbch\af31505\hich\f39 \'e3\'e4\'e0
-\loch\f39 \hich\f39 \'e8\'ec\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e5\'f0\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 - \'ed\'ee\loch\f39 \hich\f39 \'e7
-\'e2\'e5\'e7\'e4\'ee\'f7\'ea\'f3\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'ed\'e8\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed
-\'e4\'e5\loch\f39 \hich\f39 allow \'ec\'fb\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'e2\'fb\'ed\'f3\'e6\'e4\'e5\'ed\'fb\loch\f39 \hich\f39 \'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39
-\hich\f39 \'f1\'ee\'e2\'ec\'e5\'f1\'f2\'e8\'ec\'ee\'f1\'f2\'e8\loch\f39 !
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c0\loch\f39 \hich\f39 \'f2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'ef\'ee\'eb\'ee\'e6\'e8\'ec\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee
-\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f0\'ff\'e4\'f3\loch\f39 \hich\f39 \'ef\'f0\'e8\'f7\'e8\'ed\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'fb\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'ee\'e1\'f9\'e5\'e8\'e7\'e2\'e5\'f1\'f2\'ed\'fb\'e9\loch\f39 ww
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 w.anekdot.ru. \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 nsrecord:
-\par
-\par \hich\af39\dbch\af31505\loch\f39 nsrecord www.anekdot.ru 127.0.0.3
-\par \loch\af39\dbch\af31505\hich\f39 \'f2\'e5\'ec\loch\f39 \hich\f39 \'f1\'e0\'ec\'fb\'ec\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ed\'e0\'ef\'f0\'e0\'e2\'eb\'ff\'e5\'ec\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'fb
-\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e0\'ed\'e5\'ea\'e4\'ee\'f2\'e0\'ec\'e8\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'ee\'ea\'e0\'eb\'fc\'ed\'fb\'e9\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1
-\loch\f39 \hich\f39 . \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'fd\'f2\'f3\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5
-\'e5\loch\f39 \hich\f39 \'e8\'e7\'ee\'f9\'f0\'e5\'ed\'ed\'ee\'ec\loch\f39 \hich\f39 \'e2\'e0\'f0\'e8\'e0\'ed\'f2\'e5\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 ,
-\par
-\par \hich\af39\dbch\af31505\loch\f39 nsrecord www.ane\hich\af39\dbch\af31505\loch\f39 kdot.ru 87.250.251.11
-\par \loch\af39\dbch\af31505\hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'e0\loch\f39 \hich\f39 www.anekdot.ru \'ef\'e5\'f0\'e5\'ed\'e0\'ef\'f0\'e0\'e2\'eb\'ff\'f2\'fc\loch\f39 \hich\f39
-\'ed\'e0\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\loch\f39 \hich\f39 www.yandex.ru. \'c2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'ff\'ed\'e4\'e5\'ea\'f1\'e0\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39 \hich\f39
-\'e1\'fb\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ed\'e0\'ef\'f0\'e0\'e2\'eb\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'ed\'e0\loch\f39
-\hich\f39 \'ea\'ee\'f0\'ef\'ee\'f0\'e0\'f2\'e8\'e2\'ed\'fb\'e9\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'ef\'f0\'ee\'f7\'e5\'ec\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 0.6 \'ef\'ee\'ff\'e2\'e8\'eb\'e0\'f1\'fc\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2
-\'fc\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1\'ed\'ee\loch\f39 \hich\f39 \'f3\'ef\'f0\'e0\'e2\'eb\'ff\'f2\'fc\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'ee\loch\af39\dbch\af31505\hich\f39 \'ec\loch\f39 \hich\f39 \'e4
-\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'fb\loch\f39 \hich\f39 . \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc
-\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'f5\'ee\'f0\'ee\'f8\'ee\loch\f39 \hich\f39 \'e7\'ed\'e0\'ea\'ee\'ec\'f3\'fe\loch\f39 \hich\f39 \'ed\'e0\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39
-\hich\f39 deny \'f1\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'f8\'e0\'e1\'eb\'ee\'ed\'ee\'e2\loch\f39 \hich\f39 , \'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 deny * * www.anekdot.ru *
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'e1\'e5\'e7\'f3\'f1\'eb\'ee\'e2\'ed\'ee\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5\'f9\'e0\'e5\'f2\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2
-\loch\f39 }{\field{\*\fldinst {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 HYPERLINK "http://www.anekdot.ru/"}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid3764488
-{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e0061006e0065006b0064006f0074002e00720075002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}
-}{\fldrslt {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\ul\cf9\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 www.anekdot.ru}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186
-\par
-\par \hich\af39\dbch\af31505\loch\f39 deny * * anekdot* *
-\par
-\par }\pard \ltrpar\ql \fi-360\li360\ri0\nowidctlpar\tx360\wrapdefault\hyphpar0\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\kerning1\insrsid11355186\charrsid3764488 -\tab }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e7\'e0\'ef\'f0\'e5\'f9\'e0\'e5\'f2\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'fb
-\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'ed\'e0\'e7\'e2\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 \'ea\'ee\'f2\'ee\'f0\'fb\'f5\loch\f39 \hich\f39 \'e2\'f1\'f2\'f0\'e5\'f7\'e0\'e5\'f2\'f1\'ff\loch\f39 anekdot.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'ef\'f0\'ee\'f7\'e5\'ec\loch\f39 \hich\f39 , \'ef\'f0\'ee\'e4\'e2\'e8\'ed\'f3\'f2\'fb\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e8\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\'f2\loch\f39
-\hich\f39 \'ee\'e1\'ee\'e9\'f2\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'f2\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5\'f2\loch\f39 \hich\f39 , \'ee\'e1\'f0\'e0\'f9\'e0\'ff\'f1\'fc\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'f3\loch\f39
-\hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'e5\'e3\'ee\loch\f39 \hich\f39 IP \'e8\'eb\'e8\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'ff\loch\f39 \hich\f39 \'e0\'ed\'ee\'ed\'e8\'ec\'ed\'fb\'e5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'fb.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d3\loch\f39 \hich\f39 \'f1\'e5\'e1\'ff\loch\f39 \hich\f39 \'ff\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'fe\loch\f39 \hich\f39 \'f6\'e5\'eb\'fb\'e9\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ee\'ea\loch\f39
-\hich\f39 \'f8\'e0\'e1\'eb\'ee\'ed\'ee\'e2,\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 , \'ea\'ee\'ec\'f3-\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\'e3\'ee\'e4\'e8\'f2\'f1\'ff\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39
-deny * * *sex*,*porn*,*adult*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*
-\hich\af39\dbch\af31505\loch\f39
-,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banner*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.n
-\hich\af39\dbch\af31505\loch\f39 e\hich\af39\dbch\af31505\loch\f39 t*
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d7\'f2\'ee\'e1\'fb\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e7\'e0\'e3\'f0\'ee\'ec\'ee\'e6\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e4\'eb\'e8\'ed\'ed\'fb\'ec\'e8
-\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e0\'ec\'e8\loch\f39 \hich\f39 , \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 \hich\f39 include \'e8
-\loch\f39 \hich\f39 \'ec\'e0\'ea\'f0\'ee\'f1\loch\f39 \hich\f39 $. \'cd\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'ef\'f0\'e5\'e4\'fb\'e4\'f3\'f9\'e0\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 \'ec\'ee\'e3\'eb\'e0
-\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par \hich\af39\dbch\af31505\loch\f39 deny * * $c:\\3proxy\\ban.txt
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'e3\'e4\'e5\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 ban.txt \hich\f39 \emdash \loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'f2\'e5\'ea\'f1\'f2\'ee\'e2\'fb\'e9\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb
-\loch\f39 \hich\f39 , \'f1\'ee\'e4\'e5\'f0\'e6\'e0\'f9\'e8\'e9\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ee\'ea\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5\'f2\'ed\'fb\'f5\loch\f39 \hich\f39 \'f0\'e5\'f1\'f3\'f0\'f1\'ee\'e2\hich\af39\dbch\af31505\loch\f39
-\hich\f39 (\'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'e7\'e0\'ef\'ff\'f2\'f3\'fe\loch\f39 \hich\f39 , \'e1\'e5\'e7\loch\f39 \hich\f39 \'ef\'f0\'ee\'e1\'e5\'eb\'ee\'e2\loch\f39 )
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'eb\'e8\'e1\'ee}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'f2\'e0\'ea}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 include c\\3proxy\\ban\-include.txt
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e3\'e4\'e5\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 ban_include.txt \'f1\'ee\'e4\'e5\'f0\'e6\'e0\'eb\loch\f39 \hich\f39 \'e1\'fb
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'e5\'e1\'e5\loch\f39 \hich\f39 \'e2\'f1\'fe\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'f3\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'e5
-\'f2\'e0\'ec\'e8.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c6\'e5\'eb\'e0\'fe\'f9\'e8\'e5\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\'f2\loch\f39 \hich\f39 \'ed\'e0\'e9\'f2\'e8\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e8\loch\f39 \hich\f39 \'e1\'e0\'ed-\'eb\'e8\'f1\'f2\'ee\'e2
-\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'e0\'e4\'e0\'ef\'f2\'e8\'f0\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\'f3
-\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 3proxy, \'e1\'eb\'e0\'e3\'ee\loch\f39 \hich\f39 \'f7\'f2\'ee\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'f0\'e0\'e7\'ec\'e5\'f0\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 \'ed\'e5\'f2\loch\f39 \hich\f39 . \'d2\'e0\'ea\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ed\'e5
-\'f2\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e9\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'fb\loch\f39 \hich\f39 , \'e2\'ea\'eb\'fe\'f7\'e5\'ed\'ed\'fb\'e5\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39
-\hich\f39 include. \'cd\'e0\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'fb\loch\f39 \hich\f39 , \'e2\'ea\'eb\'fe\'f7\'e5\'ed\'ed\'fb\'e5\loch\f39 \hich\f39 \'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'ec\'e0\'ea\'f0\'ee\'f1\loch\f39 \hich\f39 $, \'f1\'f3\'f9
-\'e5\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 64 \'ea\'e8\'eb\'ee\'e1\'e0\'e9\'f2\'e0.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'eb\'ff\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1\'f1\'f2\'e2\'e0\loch\f39 \hich\f39 \'e4\'e0\'eb\'fc\'ed\'e5\'e9\'f8\'e5\'e3\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'ea
-\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'e1\'e8\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'f7\'e5\'f1\'ea\'e8\'e5\loch\f39 \hich\f39 \'f0\'e0\'e7\'e4\'e5\'eb\'fb
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'ef\'ee\'eb\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec\'ec\'e5\'ed\'f2\'e0\'f0\'e8\'ff\'ec\'e8\loch\f39 \hich\f39 . \'df\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39
-\hich\f39 \'e4\'e5\'eb\'e0\'fe\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef\'ee\'ec\'ee\'f9\'fc\loch\f39 \hich\f39 \'f1\'e8\'ec\'e2\'ee\'eb\'e0\loch\f39 \hich\f39 #. \'cd\'e0\'ef\'ee\'ec\'ed\'fe\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39
-\hich\f39 \'eb\'fe\'e1\'e0\'ff\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e0\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'ed\'e0\'f7\'e8\'ed\'e0\'fe\'f9\'e0\'ff\'f1\'ff\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'ef\'f0\'ee
-\'e1\'e5\'eb\'e0\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f1\'e8\'ec\'e2\'ee\'eb\'e0\loch\f39 \hich\f39 #, \'e2\'ee\'f1\'ef\'f0\'e8\'ed\'e8\'ec\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'ee
-\'ec\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ea\'ee\'ec\'ec\'e5\'ed\'f2\'e0\'f0\'e8\'e9\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ee\'ea\'ee\'ed\'f7
-\'e0\'f2\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 "\'e2\'fb\'eb\'e8\'e7\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 " \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'f2\'fc\loch\f39 \hich\f39
-\'f2\'e0\'ea\loch\f39 \hich\f39 (\'e2\'e5\'f0\'f1\'e8\'ff\loch\f39 7):\hich\af39\dbch\af31505\loch\f39
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ce\'c1\'d9\'c8\'c5}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'c0\'d0\'c0\'cc\'c5\'d2\'d0
-\'db}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 service
-\par \hich\af39\dbch\af31505\loch\f39 internal 192.168.0.1
-\par \hich\af39\dbch\af31505\loch\f39 external 211.80.11.12
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.100.1
-\par \hich\af39\dbch\af31505\loch\f39 nserver 213.153.101.1
-\par \hich\af39\dbch\af31505\loch\f39 nscache 655\hich\af39\dbch\af31505\loch\f39 36
-\par \hich\af39\dbch\af31505\loch\f39 deny * * anekdot* *monitor "c:\\3proxy\\bin\\3proxy.cfg"
-\par \hich\af39\dbch\af31505\loch\f39 monitor "c:\\3proxy\\IP_list.txt"
-\par \hich\af39\dbch\af31505\loch\f39 logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
-\par \hich\af39\dbch\af31505\loch\f39 log c:\\3proxy\\logs\\3proxy.log D
-\par \hich\af39\dbch\af31505\loch\f39 rotate 30
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0\pararsid3764488 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39
-archiver }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \hich\af39\dbch\af31505\loch\f39 rar \loch\af39\dbch\af31505\hich\f39 \'93\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "c:\\Program Files\\WinRAR\\rar.exe}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'94\loch\af39\dbch\af31505\hich\f39 \'94}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid3764488\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 "\hich\af39\dbch\af31505\loch\f39 a -df -inul %A %F
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 # \'c7\'c0\'c4\'c0\'c5\'cc\loch\f39 \hich\f39 \'cf\'ce\'cb\'dc\'c7\'ce\'c2\'c0\'d2\'c5\'cb\'c5\'c9\loch\f39 \hich\f39 , \'ce\'c3\'d0\'c0\'cd\'c8\'d7\'c5\'cd\'c8\'df\loch\f39 \hich\f39 \'d1\'ca\'ce\'d0\'ce\'d1
-\'d2\'c8\loch\f39 \hich\f39 \'c8\loch\f39 \hich\f39 \'d1\'d7\'c5\'d2\'d7\'c8\'ca\'c8
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 users Administrator:CL:password
-\par \hich\af39\dbch\af31505\loch\f39 nobandlimin * * * 110
-\par \hich\af39\dbch\af31505\loch\f39 bandli\hich\af39\dbch\af31505\loch\f39 min 24000 * 192.168.0.2,192.168.0.3
-\par \hich\af39\dbch\af31505\loch\f39 bandlimin 48000 * 192.168.0.4
-\par \hich\af39\dbch\af31505\loch\f39 bandlimout 24000 *
-\par \hich\af39\dbch\af31505\loch\f39 counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"
-\par \hich\af39\dbch\af31505\loch\f39 nocountin * 192.168.0.4 * 110 *
-\par \hich\af39\dbch\af31505\loch\f39 countin "1/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8\'e2\'e0\'ed\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 50 * 192.168.0.2 * * *
-\par \hich\af39\dbch\af31505\loch\f39 countin "2/}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'e5\'f2\'f0\'ee\'e2}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 " M 80 * 192.168.0.3 * * *
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 countin "3/\'d1\'e8\'e4\'ee\'f0\'ee\'e2\loch\f39 " M 30 * 192.168.0.4 * * *
-\par
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 # \'d0\'c0\'c7\'c4\'c0\'c5\'cc\loch\f39 WEB
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * * *sex*,*porn*,*adul\hich\af39\dbch\af31505\loch\f39
-t*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banne
-\hich\af39\dbch\af31505\loch\f39 r\hich\af39\dbch\af31505\loch\f39
-*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.net*
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.4 * * * 1-5 09:00:00-18:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow *\hich\af39\dbch\af31505\loch\f39 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59
-\par \hich\af39\dbch\af31505\loch\f39 proxy \hich\f39 \endash \loch\f39 a -t
-\par
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d0\'c0\'c7\'c4\'c0\'c5\'cc}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'ce\'d7\'d2\'d3}{
-\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 deny * 192.168.200.4 *\hich\af39\dbch\af31505\loch\f39 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00
-\par \hich\af39\dbch\af31505\loch\f39 allow * $"c:\\3proxy\\IP_list.txt" * 3110,25,110 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 25 smtp.provider.ru 25
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 2110 pop.mail.ru 110
-\par \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 3110 pop.yandex.ru 110
-\par
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 # }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d0\'c0\'c7\'c4\'c0\'c5\'cc}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 FTP }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c8}{\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c0\'d1
-\'dc\'ca\'d3}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 ftppr
-\par \hich\af39\dbch\af31505\loch\f39 socks
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flu\hich\af39\dbch\af31505\loch\f39 sh
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 icqpr
-\par
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 # \'c0\'c4\'cc\'c8\'cd\'c8\'d1\'d2\'d0\'c0\'d2\'c8\'c2\'cd\'db\'c9\loch\f39 \hich\f39 \'c4\'ce\'d1\'d2\'d3\'cf
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth strong
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00
-\par \hich\af39\dbch\af31505\loch\f39 admi\hich\af39\dbch\af31505\loch\f39 n
-\par
-\par \hich\af39\dbch\af31505\loch\f39 flush
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par \hich\af39\dbch\af31505\loch\f39 admin -p8081 -s
-\par \hich\af39\dbch\af31505\loch\f39 dnspr
-\par
-\par \hich\af39\dbch\af31505\loch\f39 end
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 # \'ca\'ce\'cd\'c5\'d6\loch\f39 \hich\f39 \'ca\'ce\'cd\'d4\'c8\'c3\'c0
-\par \hich\af39\dbch\af31505\loch\f39 ###############################################################
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ee\'e3\'eb\'e0\'f1\'e8\'f2\'e5\'f1\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'ed\'e0\'ec\'ed\'ee\'e3\'ee\loch\f39
-\hich\f39 \'e8\'ed\'f4\'ee\'f0\'ec\'e0\'f2\'e8\'e2\'ed\'e5\'e5\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'e5\'e3\loch\af39\dbch\af31505\hich\f39 \'f7\'e5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'ee\'f1\'ef\'f0\'e8\'ff\'f2\'e8\'e8
-\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'eb\'fe\'f7\loch\f39 \hich\f39 -\'e0\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'ef\'ee\'e7\'e2\'ee\'eb\'ff\'e5
-\'f2\loch\f39 \hich\f39 \'f1\'ea\'f0\'fb\'f2\'fc\loch\f39 \hich\f39 \'e2\'ed\'f3\'f2\'f0\'e5\'ed\'ed\'e8\'e9\loch\f39 \hich\f39 IP \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'f7\'e5\'ec\loch\f39
-\hich\f39 \'eb\'e5\'e3\'ea\'ee\loch\f39 \hich\f39 \'f3\'e1\'e5\'e4\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 \hich\f39 , \'e7\'e0\'e9\'e4\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 2ip.ru
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+halit_at_mail_dot_ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1077\'e5\u1084\'ec\u1100\'fc \u1089\'f1\u1083\'eb\u1086\'ee\u1077\'e5\u1074\'e2 \u1084\'ec\u1072\'e0\u1090\'f2\u1088\'f0\u1077\'e5\u1096\'f8\u1082\'ea\u1080\'e8, \u1080\'e8\u1083\'eb\u1080\'e8 \u1053\'cd\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0 3proxy \u1076\'e4\u1083\'eb\u1103\'ff \u1095\'f7\u1072\'e0\u1081\'e9\u1085\'ed\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+(\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 1.}{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1033\loch\f6
+4}{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+, \u1080\'e8\u1089\'f1\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff \u1080\'e8 \u1076\'e4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1077\'e5\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff, \u1084\'ec\u1072\'e0\u1081\'e9, 2015 \u8212\'97 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1077\'e5 }{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1033\loch\f6
+c }{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1081\'e9 \u1085\'ed\u1072\'e0 }{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1033\loch\f6
+mail.ru }{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+\u1080\'e8 }{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1033\loch\f6
+yandex.ru}{\cf1\b\kerning1\dbch\af10\langfe1025\afs18\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+) }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\b\kerning1\dbch\af12\langfe1049\dbch\af10\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+(\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 1.3, \u1080\'e8\u1089\'f1\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff \u1080\'e8 \u1076\'e4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1077\'e5\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff, \u1084\'ec\u1072\'e0\u1088\'f0\u1090\'f2, 2010 \u8212\'97 }{\b\kerning1\dbch\af12\langfe1049\dbch\af10\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+\u1076\'e4\u1086\'ee\u1073\'e1\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed }{\b\kerning1\dbch\af12\langfe1049\dbch\af10\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1033\loch\f6
+FAQ}{\b\kerning1\dbch\af12\langfe1049\dbch\af10\afs18\alang1025\ab\rtlch \ltrch\loch\fs18\lang1049\loch\f6
+) }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'eb\'e8\loch\f39 \hich\f39 \'ed\'e5\'ee\'e1\'ff\'e7\'e0\'f2\'e5\'eb\'fc\'ed\'f3\'fe\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed
-\'e4\'f3\loch\f39 \hich\f39 end. \'c2\'f1\'e5\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ed\'e0\'f5\'ee\'e4\'e8\'f2\'f1\'ff\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ed\'e5\'e5\loch\f39 \hich\f39 , \'f1\'e5\'f0\'e2\'e5
-\'f0\'ee\'ec\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 . \'ca\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 en\hich\af39\dbch\af31505\loch\f39 \hich\f39 d - \'fd\'f2\'ee\loch\f39
-\hich\f39 \'f1\'e2\'ee\'e5\'e3\'ee\loch\f39 \hich\f39 \'f0\'ee\'e4\'e0\loch\f39 \hich\f39 \'e7\'ed\'e0\'ea\loch\f39 \hich\f39 \'e3\'eb\'ee\'e1\'e0\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 , \'e4\'ee\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e0\loch\f39
-\hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'ea\'ee\'ec\'ec\'e5\'ed\'f2\'e0\'f0\'e8\'ff\loch\f39 \hich\f39 . \'c1\'fb\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'e8\'ed\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'f3\'e4\'ee\'e1\'ed\'ee\loch\f39
-\hich\f39 \'ee\'f2\'ea\'eb\'fe\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'f3\'fe\loch\f39 \hich\f39 \'f7\'e0\'f1\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39
-\'ef\'ee\'f1\'f2\'e0\'e2\'e8\'e2\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'e4\loch\f39 \hich\f39 \'ed\'e5\'e9\loch\f39 \hich\f39 \'fd\'f2\'f3\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 .
-\par \loch\af39\dbch\af31505\hich\f39 \'ca\'f0\'ee\'ec\'e5\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'eb
-\'e8\loch\f39 \hich\f39 \'ea\'fd\'f8\'e8\'f0\'f3\'fe\'f9\'e8\'e9\loch\f39 \hich\f39 dns \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 dnspr, \'f2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'f1\'ea\'e8\'f5\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ea\'ee\'ec\'ef\'fc\'fe\'f2\'e5\'f0\'e0\'f5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e9\'ea\'e0\'f5\loch\f39 \hich\f39 \'f1\'e5
-\'f2\'e8\loch\f39 \hich\f39 \'ed\'e0\'e7\'ed\'e0\'f7\'e8\'f2\'fc\loch\f39 \hich\f39 IP \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 DNS \'f1\'e5\'f0\'e2\'e5\'f0\loch\f39
-.
-\par \loch\af39\dbch\af31505\hich\f39 \'d0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec\loch\f39 \hich\f39 \'f2\'e5\'ef\'e5\'f0\'fc\loch\f39 \hich\f39 \'ed\'e5\'f0\'e5\'e4\'ea\'e8\'e9\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e9\loch\f39 \hich\f39 , \'ea\'ee\'e3\'e4
-\'e0\loch\f39 \hich\f39 \'ed\'f3\'e6\'ed\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed\'e5\'f2\loch\f39 \hich\f39 , \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'e2\'e0\'e9
-\'e4\'e5\'f0\'e0\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\loch\f39 \hich\f39 , \'f2.\'e5\loch\f39 \hich\f39 . \'f1\'eb\'f3\'f7\'e0\'e9\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\'f1\'f2\'ee\'ff\'f9\'e5\'e3\'ee
-\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 . \'ca\'f0\'ee\'ec\'e5\loch\f39 \hich\f39 \'f2\'ee\'e3\'ee\loch\f39 \hich\f39 , \'fd\'f2\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'e8\'e3\'ee\'e4\'e8\'f2
-\'fc\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\loch\af39\dbch\af31505\hich\f39 \'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39
-\'f7\'e5\'f0\'e5\'e7\loch\f39 \hich\f39 \'f3\'f1\'ea\'ee\'f0\'e8\'f2\'e5\'eb\'fc\loch\f39 \hich\f39 \'f1\'ef\'f3\'f2\'ed\'e8\'ea\'e0\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'fd\'f2\'ee\loch\f39 \hich\f39 \'e1\'fb\'eb\'ee\loch\f39
-\hich\f39 \'f3\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1
-\'e2\'ff\'e7\'ea\'e0\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ed\'e0\'ef\'f0\'e0\'e2\'eb\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 parent \'e8\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 allow. \'d0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec
-\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'ea\'ee\'e3\'e4\'e0\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f9\'e5\'ed\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'eb\'ee\'ea\'e0\'eb\'fc
-\'ed\'ee\'ec\loch\f39 \hich\f39 \'f5\'ee\'f1\'f2\'e5\loch\f39 \hich\f39 127.0.0.1, \'ef\'ee\'f0\'f2\loch\f39 3128 \hich\f39 \emdash \loch\f39 \hich\f39 \'f2\'e8\'ef\'e8\'f7\'ed\'fb\'e9\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e9\loch\f39 \hich\f39
-\'e4\'eb\'ff\loch\f39 \hich\f39 \'f3\'f1\'ea\'ee\'f0\'e8\'f2\'e5\'eb\'ff\loch\f39 \hich\f39 \'f1\'ef\'f3\'f2\'ed\'e8\loch\af39\dbch\af31505\hich\f39 \'ea\loch\af39\dbch\af31505\hich\f39 \'ee\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'ed
-\'e5\'f2\'e0\loch\f39 \hich\f39 . \'c2\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'e5\'e9\'f8\'e8\'e9\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e1
-\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'e3\'eb\'ff\'e4\'e5\'f2\'fc\loch\f39 \hich\f39 \'f2\'e0\'ea\loch\f39 :
-\par
-\par \hich\af39\dbch\af31505\loch\f39 fakeresolve
-\par \hich\af39\dbch\af31505\loch\f39 auth iponly
-\par \hich\af39\dbch\af31505\loch\f39 allow *
-\par \hich\af39\dbch\af31505\loch\f39 parent 1000 http 127.0.0.1 3128
-\par \hich\af39\dbch\af31505\loch\f39 proxy -p8080
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 fakeresolve, \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'ec\'e0\'ff
-\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e8\'ec\'e5\'ed\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'eb\'f3\'f7\'e0\'e5\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ed\'e0\'ef\'f0
-\'e0\'e2\'eb\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'ee\'e2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\'f1\'f2\'ee\'ff\'f9\'e8\'e9\loch\f39 \hich\f39
- \'ef\'f0\'ee\'ea\'f1\'e8.
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e5\'ee\'e1\'f5\'ee\'e4\'e8\'ec\'ee\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'f1\'eb\'ee\'e2\'e8\'e5
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'e8\'e2\'e5\'e4\'e5\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'e2\'fb\'f8\'e5\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e1\'eb\'e8\'e7\'ee
-\'ea\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f2\'ee\'ec\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ff\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'fe\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'f4\'e8\'f1\'e5
-\loch\f39 \hich\f39 , \'e7\'e0\loch\f39 \hich\f39 \'e8\'f1\'ea\'eb\'fe\'f7\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 \'ea\'ee\'eb\'e8\'f7\'e5\'f1\'f2\'e2\'e0\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 \'e8
-\loch\f39 \hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'f5\loch\f39 \hich\f39 \'f1\'ef\'e5\'f6\'e8\'f4\'e8\'f7\'ed\'fb\'f5\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\'ee\'e2\loch\f39 \hich\f39 . \'cf\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec
-\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'e8\'ec\'e5\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e8\'e4\'f3\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'f7\'e0\'f1\'f2\'fc\loch\f39 \hich\f39 \'f4\'f3\'ed\'ea
-\'f6\'e8\'e9\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'f0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'e0\'f5\loch\f39 \hich\f39 ,
-\'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e2\'e5\'f0\'f1\'e8\'e8\loch\f39 \hich\f39 0.6, \'f3\'f2\'ee\'f7\'ed\'e8\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39
-\'ea\'ee\'ed\'ea\'f0\'e5\'f2\'ed\'fb\'ec\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\'ec\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e2\loch\f39 changelog: http://3proxy.ru/current/Changelog.txt
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'ef\'f0\'e8\'e7\'ed\'e0\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'ec\'fb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f0\'e0\'f1\'f1\'ec\'ee
-\'f2\'f0\'e5\'eb\'e8\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2\'f0\'e5\'f2\'e8\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'fb\'f5\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e5\'ea\loch\f39 \hich\f39
-\'f1\'e5\'f0\'e2\'e5\'f0\'e0\loch\f39 \hich\f39 . \'c5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'fb\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\loch\af39\dbch\af31505\hich\f39 \'e0
-\'ed\'e4\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'e2\'e0\'ec\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\'f2\loch\f39 \hich\f39 \'ef\'ee\'ed\'e0\'e4\'ee\'e1\'e8\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 - dialer, maxconn, system, i,
-\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'ee\'f1\'f2\'e0\'eb\'e8\'f1\'fc\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e5\'ed\'ed\'fb\'ec\'e8\loch\f39 \hich\f39 \'e2\'ee\'ee\'e1\'f9\'e5\loch\f39 \hich\f39 ,
-\'e4\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f0\'e0\'e7\'ed\'ee\'ee\'e1\'f0\'e0\'e7\'e8\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'ec\'ee\'e7\'ec\'ee\'e6\'ed\'fb\'f5\loch\f39 \hich\f39 \'f1\'ee\'f7\'e5\'f2\'e0\'ed\'e8\'e9\loch\f39 \hich\f39 \'f0
-\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\loch\f39 \hich\f39 \'ed\'e0\'ec\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e1\'ee\'e3\'e0\'f7\'e5\loch\f39 \hich\f39 . \'cd\'ee\loch\f39 \hich\f39 \'ff\loch\f39
-\hich\f39 \'e8\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'e2\'e8\'eb\loch\f39 \hich\f39 \'f1\'e5\'e1\'e5\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'f7\'f3\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5-\'ec
-\'e5\'ed\'e5\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'ed\'ee\'e5\loch\f39 \hich\f39 \'ee\'ef\'e8\'f1\'e0\'ed\'e8\'e5\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\loch\af39\dbch\af31505\hich\f39 \'e3\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 , \'ee
-\'e3\'f0\'e0\'ed\'e8\'f7\'e8\'e2\'f8\'e8\'f1\'fc\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'f1\'ea\'f0\'ee\'ec\'ed\'ee\'e9\loch\f39 \hich\f39 - \'f0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\loch\f39
-\hich\f39 \'f0\'ff\'e4\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'ee\'e2\loch\f39 \hich\f39 , \'ef\'ee\'f1\'f2\'f0\'ee\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'ea\'e0\'ea\loch\f39 \hich\f39 \'ec\'e0\'f2\'f0\'e5\'f8\'ea\'e0\loch\f39 \hich\f39 -
-\'ee\'f2\loch\f39 \hich\f39 \'f1\'e0\'ec\'ee\'e3\'ee\loch\f39 \hich\f39 \'ec\'e0\'eb\'e5\'ed\'fc\'ea\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'e4\'ee\loch\f39 \hich\f39 \'e4\'ee\'f1
-\'f2\'e0\'f2\'ee\'f7\'ed\'ee\loch\f39 \hich\f39 \'f1\'eb\'ee\'e6\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 "\'ef\'f0\'e0\'e2\'e8\'eb\'fc\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 " - \'ea\'ee\'ed\'f4\'e8\'e3\loch\f39 \hich\f39 , \'f7\'f2\'ee
-\'e1\'fb\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'e5\loch\f39 \hich\f39 \'ef\'ee\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'fb\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'f6\'e8
-\'ef\'fb\loch\f39 \hich\f39 . \'cd\'e5\'f1\'ec\'ee\'f2\'f0\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ea\'e0\'e6\'f3\'f9\'f3\'fe\'f1\'ff\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'fb\'e9\loch\f39 \hich\f39 \'e2\'e7\'e3
-\'eb\'ff\'e4\hich\af39\dbch\af31505\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'f1\'eb\'ee\'e6\'ed\'ee\'f1\'f2\'fc\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'ea\'e8\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'ed\'e0\'e4\'e5\'fe\'f1
-\'fc\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'ef\'f0\'ee\'f6\'e5\'f1\'f1\'e5\loch\f39 \hich\f39 \'f7\'f2\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'f2\'e5\'ea\'f1\'f2\'e0\loch\f39 \hich\f39 \'e2\'fb\loch\f39
-\hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'f3\'e1\'e5\'e4\'e8\'eb\'e8\'f1\'fc\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e5\'ec\loch\f39 \hich\f39 \'e2\'f1\'e5\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed
-\'ee\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'e3\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'f7\'ed\'ee\loch\f39 \hich\f39 . \'ce\'ef\'ff\'f2\'fc\loch\f39 \hich\f39 \'e6\'e5\loch\f39 \hich\f39 \'e0\'e2\'f2\'ee\'f0\loch\f39 \hich\f39
- \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'fb\loch\f39 \hich\f39 \'ee\'e1\'e5\'f9\'e0\'e5\'f2\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f0\'e5\'eb\'e8\'e7\'f3\loch\f39 \hich\f39 \'f1\'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3
-\loch\f39 \hich\f39 \'e1\'ee\'eb\'e5\'e5\loch\f39 \hich\f39 \'f7\'e8\'f2\'e0\'e5\'ec\'fb\'ec\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'ee\'ed\'ff\'f2\'ed\'fb\'ec\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'e0\'e6\'ed\'ee\loch\f39 \hich\f39 \'ef\'ee\'ed\'ff\'f2\'fc\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'ee\'f2\'f7\'e8\'ea
-\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\hich\af39\dbch\af31505\loch\f39 \hich\f39 . \'ce\'f7\'e5\'ed\'fc\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 - \'e2\loch\f39 \hich\f39 \'ef\'ee\'f0\'ff\'e4\'ea\'e5\loch\f39 \hich\f39
- \'f1\'eb\'e5\'e4\'ee\'e2\'e0\'ed\'e8\'ff\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f1\'e5\'f0\'e2\'e5\'f0\'f3
-\loch\f39 \hich\f39 \'ed\'e0\'e4\'ee\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'e8\'f2\'fc\loch\f39 \hich\f39 , \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'f2\'ee\'f2\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'e8\'ed\'ee\'e9\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\loch\f39 \hich\f39 - \'ee\'ed\loch\f39 \hich\f39 \'e8\'f9\'e5\'f2\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2
-\'ee\'e5\loch\f39 \hich\f39 \'f3\'e4\'ee\'e2\'eb\'e5\'f2\'e2\'ee\'f0\'ff\'fe\'f9\'e5\'e5\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'ee\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'f1\'ef\'e8\'f1\'ea\'e0\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3
-\'ef\'e0\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'ee\'e2\loch\f39 \hich\f39 (ACL) \'e8\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e8\'e8\loch\f39
-\hich\f39 \'f1\loch\f39 \hich\f39 \'ed\'e8\'ec\loch\f39 \hich\f39 , \'e4\'e0\'e6\'e5\loch\f39 \hich\f39 \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ed\'e5\'e3\loch\af39\dbch\af31505\hich\f39 \'ee
-\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e4\'f0\'f3\'e3\'e8\'e5\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'e0\loch\f39 \hich\f39 . \'c8\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee
-\loch\f39 \hich\f39 - \'e2\'f1\'e5\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'fb\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'fb\loch\f39 \hich\f39 \'e2
-\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'c4\'ce\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\loch\f39 \hich\f39 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'fe\'f9\'e5\'e9\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb
-\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e5\'f1\'f2\'fc\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 - \'e4\'ee\'e1\'f0\'ee\loch\f39 \hich\f39 \'ef\'ee\'e6\'e0\'eb\'ee\'e2\'e0\'f2\'fc\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'f4\'ee\'f0\'f3\'ec\loch\f39 \hich\f39 http://3proxy.ru/board.html. \'c2\'ef\'f0\'ee\'f7\'e5\'ec\loch\f39 \hich\f39 , \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'f3\'ef\'f0\'e5\'e4\'e8\'f2\'fc
-\loch\f39 \hich\f39 , \'f7\'f2\'ee\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 \'f2\'e8\'ef\'e0\loch\f39 \hich\f39 "\'e0\loch\f39 \hich\f39 \'ef\'ee\'f7\'e5\'ec\'f3\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'ec\'e5\'ed\'ff
-\loch\f39 \hich\f39 \'ed\loch\af39\dbch\af31505\hich\f39 \'e8\'f7\'e5\'e3\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'e5\'f2\loch\f39 \hich\f39 ?" \'e7\'e4\'e5\'f1\'fc\loch\f39 \hich\f39 , \'ea\'e0\'ea\loch\f39
-\hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'ee\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'e2\'e0\'f0\'e8\'f2\'e5\'eb\'fc\'ed\'ee\'e5
-\loch\f39 \hich\f39 \'f7\'f2\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'f5\'ee\'f2\'ff\loch\f39 \hich\f39 \'e1\'fb\loch\f39 \hich\f39 FAQ \'e8\loch\f39 \hich\f39 HowTO \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8
-\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ff\'e2\'eb\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'ee\'e1\'ff\'e7\'e0\'f2\'e5\'eb\'fc\'ed\'fb\'ec\loch\f39 \hich\f39 . \'cd\'e0
-\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 \'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 \'ee\'ef\'fb\'f2\'e0\loch\f39 \hich\f39 \'ec\'ee\'e3\'f3\loch\f39 \hich\f39 \'ef\'ee\'f1\'ee\'e2\'e5\'f2
-\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'f0\'f3\'f1\'f1\'ea\'ee\'ff\'e7\'fb\'f7\'ed\'fb\'f5\loch\f39 \hich\f39 FAQ \'e8\loch\f39 \hich\f39 HowTO, \'e7\'e0\'f2\'e5\'ec\loch\f39
-\hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'f1\'f0\loch\af39\dbch\af31505\hich\f39 \'e0\loch\af39\dbch\af31505\hich\f39 \'e2\'ed\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'f7\'e8\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e0\'ed\'e3\'eb\'ee\'ff\'e7
-\'fb\'f7\'ed\'fb\'e5\loch\f39 \hich\f39 FAQ \'e8\loch\f39 \hich\f39 HowTO, \'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'e8\'f5\loch\f39 \hich\f39 \'ed\'e0\'f8\'e5\'eb\loch\f39 \hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39
-\hich\f39 \'e2\'e7\'e0\'e8\'ec\'ee\'e4\'ee\'ef\'ee\'eb\'ed\'ff\'fe\'f9\'e8\'e5\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\'fb\loch\f39 \hich\f39 . \'cd\'f3\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f0\'e0\'e7\'f3\'ec\'e5\'e5\'f2\'f1\'ff\loch\f39
-\hich\f39 , \'ec\'e5\'e4\'e8\'f2\'e0\'f6\'e8\'ff\loch\f39 \hich\f39 \'ed\'e0\'e4\loch\f39 \hich\f39 man (\'f3\'e2\'fb\loch\f39 \hich\f39 , \'ee\'ed\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e0\'ed
-\'e3\'eb\'e8\'e9\'f1\'ea\'ee\'ec\loch\f39 \hich\f39 ) \'e4\'e0\'f1\'f2\loch\f39 \hich\f39 \'e2\'e0\'ec\loch\f39 \hich\f39 \'ee\'f2\'e2\'e5\'f2\'fb\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'e8\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'f1\'e5
-\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\'f3\loch\f39 \hich\f39 \'e7\'e0\'ec\'e5\'f7\'e0\'f2\'e5\'eb\'fc\'ed\'ee\'ec\'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0
-\'e2\'e5\'f0\'f3\loch\f39 \hich\f39 . \'cc\'ee\'e3\'f3\loch\f39 \hich\f39 \'f3\'f2\'e2\'e5\'f0\'e6\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'fd\'f2\loch\af39\dbch\af31505\hich\f39 \'ee\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39
-\'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'ec\'f3\loch\f39 \hich\f39 \'ee\'ef\'fb\'f2\'f3\loch\f39 \hich\f39 . \'cd\'e0\loch\f39 \hich\f39 \'ee\'f1\'f2\'e0\'e2\'f8\'e8\'e5\'f1\'ff\loch\f39 \hich\f39 \'e5\'f9\'e5\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee
-\'f1\'fb\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\'e9\'f2\'e8\loch\f39 \hich\f39 \'ee\'f2\'e2\'e5\'f2\'fb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 changelog, \'ed\'f3\loch\f39
-\hich\f39 \'e0\loch\f39 \hich\f39 \'e5\'f1\'eb\'e8\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'f2\'e0\'ec\loch\f39 \hich\f39 \'e2\'fb\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ed\'e0\'e9\'e4\'e5\'f2\'e5\loch\f39 \hich\f39 \'ee\'f2\'e2\'e5
-\'f2\'e0\loch\f39 \hich\f39 - \'e7\'ed\'e0\'f7\'e8\'f2\loch\f39 \hich\f39 , \'f3\'e6\'e5\loch\f39 \hich\f39 \'ef\'ee\'f0\'e0\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\loch\f39 \hich\f39 \'ed\'e0
-\loch\f39 \hich\f39 \'f4\'ee\'f0\'f3\'ec\'e5\loch\f39 .
-\par
-\par
-\par }{\rtlch\fcs1 \ab\af39\afs20 \ltrch\fcs0 \b\f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'c4\'ee\'ef\'ee\'eb\'ed\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 30 \'ec\'e0\'f0\'f2\'e0\loch\f39 \hich\f39 2010 \'e3
-\'ee\'e4\'e0.
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \loch\af39\dbch\af31505\hich\f39 \'d0\'e0\'f1\'f1\'ec\'ee\'f2\'f0\'e8\'ec\loch\f39 \hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'f7
-\'e0\'f9\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\loch\af39\dbch\af31505\hich\f39 \'ee\loch\f39 \hich\f39 \'e2\'ee\'e7\'ed\'e8\'ea\'e0\'fe\'f2\loch\f39 \hich\f39 \'f3\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 }{
-\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 3}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 proxy
-}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 . \'c0\loch\f39 \hich\f39 \'f2\'e0\'ea\'e6\'e5\loch\f39 \hich\f39 \'ed\'e5\'ea\'ee\'f2\'ee\'f0\'fb\'e5\loch\f39 \hich\f39 \'e8\'ed\'f2
-\'e5\'f0\'e5\'f1\'ed\'fb\'e5\loch\f39 \hich\f39 , \'ed\'ee\loch\f39 \hich\f39 \'ed\'e5\'ee\'f7\'e5\'e2\'e8\'e4\'ed\'fb\'e5\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8-\'f1\'e5\'f0\'e2\'e5
-\'f0\'e0.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 1. \'ca\'e0\'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'ff\'e7\'e0\'f2\'fc\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186
-\hich\af1\dbch\af31505\loch\f1 MAC}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488 -}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e0\'e4\'f0\'e5\'f1
-\loch\f39 \hich\f39 \'f1\'e5\'f2\'e5\'e2\'ee\'e9\loch\f39 \hich\f39 \'ea\'e0\'f0\'f2\'fb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'eb\'ff\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39
- }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 system}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488
-\hich\af1\dbch\af31505\loch\f1 :
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 system arp -s 1.2.3.4 AA:BB:CC:DD:EE:FF}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'fd\'f2\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\loch\af39\dbch\af31505\hich\f39 \'f7\'ea\'e0\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed
-\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'e4\'e0\'e5\'f2\loch\f39 \hich\f39 \'ee\'f2\'f1\'fb\'eb\'ea\'f3\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f1\'e8\'f1\'f2\'e5\'ec\'ed\'ee\'e9\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e5}{\rtlch\fcs1
-\af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 arp}{\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'e0\'ff\loch\f39 \hich\f39 \'ef\'f0\'e8\'e2\'ff\'e7\'fb\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'ed\'ed\'fb\'e9
-\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 IP}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1
-}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'ed\'ed\'ee\'ec\'f3\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 MAC}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 -}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186
-\loch\af39\dbch\af31505\hich\f39 \'e0\'e4\'f0\'e5\'f1\'f3.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 2. \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'f6\'e5\'eb\'fb
-\'e5\loch\f39 \hich\f39 \'f1\'e5\'f2\'ea\'e8\loch\f39 \hich\f39 , \'f2.\'e5\loch\f39 \hich\f39 . \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ec\'e0\'f1\'ea\'f3\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 192.168.100.* }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e2\'ec\'e5\'f1\'f2\'ee\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5
-\'f7\'e8\'f1\'eb\'e5\'ed\'e8\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 IP}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e0\'e4\'f0\'e5\'f1\'ee\'e2\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'c4\'e0\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e8\loch\af39\dbch\af31505\hich\f39 \'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2
-\'fc\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 CIDR}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39
-\hich\f39 , \'ea\loch\f39 \hich\f39 \'ef\'f0\'e8\'ec\'e5\'f0\'f3\loch\f39 :
-\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 allow}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1
- * 192.168.100/32
-\par
-\par \hich\af1\dbch\af31505\loch\f1 3}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 . \'c5\'f1\'f2\'fc\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e4\'e8\'ed\'e0\'ec\'e8\'f7\'e5\'f1\'ea\'e8
-\'e9\loch\f39 \hich\f39 \'f8\'e5\'e9\'ef\'e5\'f0\loch\f39 \hich\f39 \'e2\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 3}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 proxy}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'f2.\'e5\loch\f39 \hich\f39 . \'ec\'ee\'e6
-\'ed\'ee\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'f0\'e8\'ee\'f0\'e8\'f2\'e5\'f2\'fb\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f1\'ea\'ee\'f0\'ee\'f1\'f2\'e8\loch\f39 \hich\f39
-\'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\loch\f39 \hich\f39 \'e4\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\loch\f39 \hich\f39 (\'ec\'e0\'f0\'f2\loch\f39 \hich\f39 2010) \'ed\'e5\'f2\loch\f39 \hich\f39 , \'ed\'ee\loch\f39
-\hich\f39 \'e0\'e2\'f2\'ee\'f0\loch\f39 \hich\f39 \'ee\'e1\'e5\'f9\'e0\'eb\loch\f39 \hich\f39 \'ef\'f0\'e8\'ea\'f0\'f3\'f2\'e8\'f2\'fc.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 4. \'c5\'f1\'f2\'fc\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e0\'ed\'f2\'e8\'e2\'e8\'f0\'f3\'f1\'ed\'fb\'e9\loch\f39 \hich\f39 \'ec\'ee\'e4\'f3\'eb\'fc\loch\f39 \hich\f39 \'e2\loch\f39 }{\rtlch\fcs1
-\af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 3}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 proxy}{\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'ec\'ee\'f2\'f0\'e8\loch\f39 \hich\f39 \'ee\'f2\'e2\'e5\'f2\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e2\'ee\'ef\'f0\'ee\'f1\loch\f39 3.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 5. \'c3\'e4\'e5\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e0\'ed\'e0\'eb\'e8\'e7\'e0\'f2\'ee\'f0\loch\f39 \hich\f39 \'eb\'ee\'e3\'ee\'e2\loch\f39 }{\rtlch\fcs1 \af1\afs20
-\ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 WRSpy}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 :
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 http://www.wrspy.ru/download/WrSpySetup.rar - \'f1\'f1\'fb\'eb\'ea\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'e8\'ed\'f1\'f2\'e0\'eb
-\'eb\'ff\'f2\'ee\'f0
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 http://www.wrspy.ru/download/WrSpyUp166.rar - \'f1\'f1\'fb\'eb\'ea\'e0\loch\f39 \hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ed\'e5\'e5\loch\f39 \hich\f39 \'ee\'e1\'ed\'ee\'e2\'eb\'e5\'ed
-\'e8\'e5.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 6. \'ca\'e0\'ea\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e3\'eb\'ee\'e1\'e0\'eb\'fc\'ed\'fb\'e5\loch\f39
-\loch\af39\dbch\af31505\hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'fb\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0\loch\f39 \hich\f39 , \'ee\'f2\'ed\'ee\'f1\'ff\'f9\'e8\'e5\'f1\'ff\loch\f39 \hich\f39 \'ea\'ee\loch\f39 \hich\f39 \'e2\'f1\'e5\'ec
-\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\'e5\'ec\'fb\'ec\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'e0\'ec\loch\f39 ?
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'ee\'ec\'e0\'ed\'e4\'fb\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e0
-\loch\f39 \hich\f39 \'e2\'fb\'ef\'ee\'eb\'ed\'ff\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'ed\'e5\'ef\'ee\'f1\'f0\'e5\'e4\'f1\'f2\'e2\'e5\'ed\'ed\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e8\'ff\loch\f39
-\hich\f39 , \'f2.\'e5\loch\f39 \hich\f39 . \'ea\'e0\'ea\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e5\'ed\'e0\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 "proxy" - \'f1\'eb\'f3\'e6\'e1
-\'e0\loch\f39 \hich\f39 \'f1\'f2\'e0\'f0\'f2\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'ed\'ed\'ee\'e9\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6\'e8\'e5\'e9\loch\f39 \hich\f39 \'e8\loch\f39
-\hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'fd\'f2\'ee\'e3\'ee\loch\f39 \hich\f39 \'f1\'f7\'e8\'f2\'fb\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e0\'ff\loch\f39
-\hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 . \'cf\'ee\'fd\'f2\'ee\'ec\'f3\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'e4
-\'e0\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\'e4\'ed\'e5\'e9\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39 \hich\f39 , \'ef\'ee\'f1\'eb\'e5\loch\f39
-\hich\f39 \'ed\'e5\'e3\'ee\loch\f39 \hich\f39 \'ed\'e8\'f7\'e5\'e3\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'ed\'ee\loch\f39 \hich\f39 \'e1\'fb\'f2\'fc\loch\f39 \hich\f39 , \'ea\'f0\'ee\'ec\'e5\loch\f39 \hich\f39 \'ea\'ee
-\'ed\'f4\'e8\'e3\'f3\'f0\'e0\'f6\'e8\'e8\loch\f39 \hich\f39 \'f1\'eb\'e5\'e4\'f3\'fe\'f9\'e5\'e9\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39 \hich\f39 . \'c5\'f1\'eb\'e8\loch\f39 \hich\f39 \'f7\'f2\'ee-\'f2\'ee\loch\f39 \hich\f39 \'e8
-\loch\f39 \hich\f39 \'ef\'ee\'eb\'f3\'f7\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f3\'ea\'e0\'e7\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e0\loch\f39 \hich\f39 \'f1\'eb\'f3\'e6\'e1\'fb\loch\f39
-\hich\f39 - \'fd\'f2\'ee\loch\f39 \hich\f39 \'ef\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 \'f1\'ee\'e2\'ef\'e0\'e4\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 , \'e2\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee\'e9\loch\f39 \hich\f39 \'ec\'ee\'ec\'e5\'ed\'f2\loch\f39
-\hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'f1\'f2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f0\'e0\'e1\'ee\'f2\'e0\'f2\'fc.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 7. \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'ed\'e5\'f1\'ea\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'e2\'ed\'e5
-\'f8\'ed\'e8\'f5\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\'ee\'e2\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8\loch\f39 ?
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'ee\'ec\'e0\'ed\'e4\'e0\loch\f39 \hich\f39 parent \'f1\loch\f39 \hich\f39
-\'ed\'f3\'eb\'e5\'e2\'fb\'ec\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'ee\'ec\loch\f39 \hich\f39 \'f3\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'ec\'ee
-\'e3\'ee\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\'e0\loch\f39 \hich\f39 . \'cd\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39
-\par \hich\af39\dbch\af31505\loch\f39 allow vasya
-\par \hich\af39\dbch\af31505\loch\f39 parent 1000 http 192.168.1.1 0
-\par \hich\af39\dbch\af31505\loch\f39 allow petya
-\par \hich\af39\dbch\af31505\loch\f39 parent 1000 http 192.168.2.1 0
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'f3\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0
-\loch\af39\dbch\af31505\hich\f39 \'e5\'f2\loch\f39 \hich\f39 \'e2\'ed\'e5\'f8\'ed\'e8\'e9\loch\f39 \hich\f39 \'e8\'ed\'f2\'e5\'f0\'f4\'e5\'e9\'f1\loch\f39 \hich\f39 192.168.1.1 \'e4\'eb\'ff\loch\f39 \hich\f39 vasya \'e8\loch\f39 \hich\f39
- 192.168.2.1 \'e4\'eb\'ff\loch\f39 petya
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 8. \'ca\'e0\'ea\loch\f39 \hich\f39 \'ed\'e0\'f1\'f2\'f0\'ee\'e8\'f2\'fc\loch\f39 \hich\f39 \'f4\'e8\'eb\'fc\'f2\'f0\'e0\'f6\'e8\'fe\loch\f39 \hich\f39 \'ed\'e5\'e6\'e5\'eb\'e0\'f2\'e5\'eb\'fc\'ed\'fb\'f5
-\loch\f39 \hich\f39 \'f0\'e5\'f1\'f3\'f0\'f1\'ee\'e2\loch\f39 \hich\f39 (\'ed\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'e4\'eb\'ff\loch\f39 \hich\f39 \'f8\'ea\'ee\'eb\'fb\loch\f39 )?
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'ee\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e9\'f2\'e5\'f1\'fc\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 DNS}{\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 \'d1\'e8\'f1\'f2\'e5\'ec\'fb\loch\f39 \hich\f39 \'ea\'ee\'ed\'f2\'e5\'ed\'f2\'ed\'ee\'e9\loch\f39 \hich\f39 \'f4\'e8\'eb\'fc\'f2\'f0\'e0\'f6\'e8\'e8
-\loch\f39 :
-\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 nserver}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1
- 81.176.72.82
-\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 nserver}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1
- 81.176.72.83}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \loch\af39\dbch\af31505\hich\f39 \'c2\'f1\'e5\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'fb\loch\f39 \hich\f39 \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\loch\af39\dbch\af31505\hich\f39 \'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'f1\'e8\'f1\'f2\'e5\'ec\'ee
-\'e9\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'f0\'e0\'ea\'f2\'e8\'f7\'e5\'f1\'ea\'e8\loch\f39 \hich\f39 \'ed\'e8\loch\f39 \hich\f39 \'ee\'e4\'ed\'e0\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f6\'e0\loch\f39 \hich\f39 \'f1\loch\f39
-\hich\f39 \'ef\'ee\'f0\'ed\'ee\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'ed\'e0.
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'e0\'e2\'e4\'e0\loch\f39 \hich\f39 , \'f1\'e8\'f1\'f2\'e5\'ec\'e0\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'e6\'e5\'f1\'f2\'ea\'ee\loch\f39 \hich\f39 \'f4\'e8\'eb\'fc\'f2\'f0\'f3
-\'e5\'f2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f2\'e5\'ed\'f2\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'ef\'e5\'f0\'e5\'ea\'f0\'fb\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'e4\'ee\'e2\'ee\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ec\'ed\'ee\'e3\'ee\loch\f39
-\hich\f39 \'f1\'f0\'e0\'e2\'ed\'e8\'f2\'e5\'fc\'ed\'ee\loch\f39 \hich\f39 \'e1\'e5\'e7\'ee\'ef\'e0\'f1\'ed\'fb\'f5\loch\f39 \hich\f39 \'f1\'e0\'e9\'f2\'ee\'e2.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 9. \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 \hich\f39 \'f0\'e0\'e7\'e4\'e5\'eb\'e8\'f2\'e5\'eb\'fc\loch\f39 \hich\f39 \'e2
-\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\'ee\'e2\'ee\'ec\loch\f39 \hich\f39 \'ea\'eb\'e8\'e5\'ed\'f2\'e5\loch\f39 \hich\f39 , \'ee\'f2\'eb\'e8\'f7\'ed\'fb\'e9\loch\f39 \hich\f39 \'ee\'f2\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\kerning1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 #}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\loch\af39\dbch\af31505\hich\f39 \'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e9\'f2\'e5\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 delimchar}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488
-\par
-\par \hich\af1\dbch\af31505\loch\f1 10. }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'ea\loch\f39 \hich\f39 \'e7\'e0\'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2
-\'e5\'eb\'fe\loch\f39 \hich\f39 \'e1\'e5\'e7\'eb\'e8\'ec\'e8\'f2\'ed\'fb\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e9\'f2\'e5\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'ee\'e5\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 \'ed\'e5\loch\f39
-\hich\f39 \'f1\'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'e2\'fb\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'e5.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 11. \'ca\'e0\'ea\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \hich\f39 \'ee\'ef\'f0\'e5\'e4\'e5\'eb\'e5\'ed\'ed\'fb\'e9\loch\f39 \hich\f39
-\'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 , \'ea\'ee\'f2\'ee\'f0\'fb\'e9\loch\f39 \hich\f39 \'ee\'ed\loch\f39 \hich\f39 \'ec\'ee\'e6\'e5\'f2\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e0\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'eb\'fe\'e1\'ee
-\'e5\loch\f39 \hich\f39 \'e2\'f0\'e5\'ec\'ff\loch\f39 \hich\f39 , \'e0\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f2\'ee\'eb\'fc\'ea\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'e4\'e0\'ed\'ed\'fb\'e9\loch\f39 \hich\f39 \'ec\'e5\'f1\'ff
-\'f6\hich\af39\dbch\af31505\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'e4\'e5\'ed\'fc\loch\f39 ?
-\par \loch\af39\dbch\af31505\hich\f39 \'c8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e9\'f2\'e5}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1
-\af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 Y - }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ed\'e0}{
-\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e3
-\'ee\'e4}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 , N - }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186
-\loch\af39\dbch\af31505\hich\f39 \'ed\'e8\'ea\'ee\'e3\'e4\'e0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'e4\'eb\'ff}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ef\'e0\'f0\'e0\'ec\'e5\'f2\'f0\'e0}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488
-\hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 type: }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 countin }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\kerning1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 2}{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 . \'cf\'ee\'f7\'e5\'ec\'f3\loch\f39 \hich\f39 \'ee\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\'e0\loch\f39 \hich\f39 \'ed
-\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'e3\'e4\'e0\loch\f39 \hich\f39 \'e4\'e5\'e9\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'f1\'ea\'e0\'f7\'e8\'e2\'e0\'ed\'e8\'e8\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'ee\'e2\loch\f39
-?
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 3proxy \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\loch\af39\dbch\af31505\hich\f39 \'e5\'f0\'fb\'e2\'e0\'e5\'f2\loch\f39 \hich\f39 \'e7\'e0\'ea\'e0
-\'f7\'ea\'f3\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'e0\loch\f39 \hich\f39 \'e8\loch\f39 \hich\f39 \'eb\'e8\'ec\'e8\'f2\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ff\'e2\'eb\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e6\'e5\'f1\'f2\'ea\'e8\'ec
-\loch\f39 \hich\f39 . \'cd\'ee\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'ed\'e0\'f7\'e0\'eb\'e5\loch\f39 \hich\f39 \'e7\'e0\'ea\'e0\'f7\'ea\'e8\loch\f39 \hich\f39 , \'ef\'ee\loch\f39 \hich\f39 \'e2\'ee\'e7\'ec\'ee\'e6\'ed\'ee\'f1\'f2\'e8
-\loch\f39 \hich\f39 , \'ef\'f0\'ee\'e2\'e5\'f0\'ff\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'f3\'ea\'eb\'e0\'e4\'fb\'e2\'e0\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\loch\f39 \hich\f39 \'ef\'ee\loch\f39 \hich\f39 \'f0
-\'e0\'e7\'ec\'e5\'f0\'e0\'ec\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ed\'ee\'f0\'ec\'f3.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 3}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39
-\hich\f39 . \'ca\'e0\'ea\'ee\'e9\loch\f39 \hich\f39 \'f4\'ee\'f0\'ec\'e0\'f2\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f4\'e0\'e9\'eb\'e0\'f5\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2
-\'f7\'e8\'ea\'ee\'e2\loch\f39 \hich\f39 , \'e7\'e0\'e4\'e0\'e2\'e0\'e5\'ec\'fb\'f5\loch\f39 \hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'ee\'e9\loch\f39 counter ?
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cd\'ee\'ec\'e5\'f0\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'e0
-\loch\f39 \hich\f39 - \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 *4GB + \'f2\loch\af39\dbch\af31505\hich\f39 \'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 . \'cf\'f0\'ee\'f1\'f2\'ee\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'f6\'e5\'eb\'fb\'e9\loch\f39
-\hich\f39 \'f2\'e8\'ef\loch\f39 \hich\f39 \'e1\'ee\'eb\'fc\'f8\'e5\loch\f39 \hich\f39 4GB \'ed\'e5\loch\f39 \hich\f39 \'e2\'eb\'e0\'e7\'e8\'f2.
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'e0\'ef\'f0\'e8\'ec\'e5\'f0\loch\f39 \hich\f39 , \'f1\'f2\'f0\'ee\'f7\'ea\'e0\loch\f39 \hich\f39 00100 0000000021 3468801478 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'f3\'e5\'f2\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2
-\'f7\'e8\'ea\'f3\loch\f39 \hich\f39 \'ed\'ee\'ec\'e5\'f0\loch\f39 \hich\f39 100 \'f1\'ee\loch\f39 \hich\f39 \'e7\'ed\'e0\'f7\'e5\'ed\'e8\'e5\'ec\loch\f39 \hich\f39 21*4 + 3=89\'c3\'e1.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 4}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39
-\hich\f39 . \'cc\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'eb\'e8\loch\f39 \hich\f39 \'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5
-\loch\f39 \hich\f39 \'e7\'e2\'e5\'e7\'e4\'ee\'f7\'ea\'e8\loch\f39 \hich\f39 \'e2\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 ACL}{\rtlch\fcs1 \af1\afs20
-\ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 ?
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 * \'e2\loch\f39 \hich\f39 \'ea\'ee\'ed\'f6\'e5\loch\f39 \hich\f39 ACL \'ec\'ee\'e6\'ed\'ee\loch\f39 \hich\f39 \'e2\'ee\'ee\'e1\'f9\'e5
-\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 \hich\f39 . \'d2\'ee\loch\f39 \hich\f39 \'e5\'f1\'f2\loch\af39\dbch\af31505\hich\f39 \'fc\loch\f39 \hich\f39 \'e2\'ef\'ee\'eb\'ed\'e5\loch\f39 \hich\f39 \'f0\'e0
-\'e1\'ee\'f7\'e5\'e9\loch\f39 \hich\f39 \'e1\'f3\'e4\'e5\'f2\loch\f39 \hich\f39 \'f1\'f2\'f0\'ee\'ea\'e0\loch\f39 \hich\f39 \'e2\'e8\'e4\'e0\loch\f39 :
-\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 allow}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{
-\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 user}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488
-\par
-\par \hich\af1\dbch\af31505\loch\f1 15. }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'ea\loch\f39 \hich\f39 \'e0\'e4\'ec\'e8\'ed\'e8\'f1\'f2\'f0\'e0\'f2\'ee\'f0\'f3\loch\f39 \hich\f39 \'f1\'ec
-\'ee\'f2\'f0\'e5\'f2\'fc\loch\f39 \hich\f39 \'ee\'e1\'f9\'e8\'e9\loch\f39 \hich\f39 (\'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'e5\'e9\loch\f39 \hich\f39 ) \'f1\'f3\'f2\'ee\'f7\'ed
-\'fb\'e9\loch\f39 \hich\f39 \'e8\'eb\'e8\loch\f39 \hich\f39 \'ec\'e5\'f1\'ff\'f7\'ed\'fb\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 ?
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 countin 100/month M 1000000 *
-\par \hich\af39\dbch\af31505\loch\f39 countin 101/day D 1000000 *
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 6}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\cf1\insrsid11355186 .}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'e0
-\'ea\loch\f39 \hich\f39 \'f0\'e0\'e7\'f0\'e5\'f8\'e8\'f2\'fc\loch\f39 \hich\f39 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff\'ec\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'ea\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 ICQ}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'ed\'e5\loch\f39 \hich\f39 \'e4\'e0\'e2\'e0
-\loch\af39\dbch\af31505\hich\f39 \'ff\loch\f39 \hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\'e0\loch\f39 \hich\f39 \'ea\loch\f39 \hich\f39 \'eb\'fe\'e1\'fb\'ec\loch\f39 \hich\f39 \'f1\'e0\'e9
-\'f2\'e0\'ec\loch\f39 ?
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 allow * [\'f1\'ef\'e8\'f1\'ee\'ea\loch\f39 \hich\f39 \'f1\'e2\'ee\'e8\'f5\loch\f39 \hich\f39 \'f1\'e5\'f2\'e5\'e9\loch\f39 ] 64.12.0.0/16,205.188.0.0/16 3190
-\par \hich\af39\dbch\af31505\loch\f39 deny *
-\par \loch\af39\dbch\af31505\hich\f39 \'cd\'ee\loch\f39 \hich\f39 \'eb\'f3\'f7\'f8\'e5\loch\f39 \hich\f39 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'fc\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 icqpr}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 .
-\par
-\par \hich\af1\dbch\af31505\loch\f1 17. }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ca\'e0\'ea\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 3proxy \'f0\'e0\'e7\'f0\'e5\'f8\'e8\'f2\'fc\loch\f39
-\hich\f39 \'f0\'e0\'e1\'ee\'f2\'f3\loch\f39 \hich\f39 \'ef\'f0\'ee\'f2\'ee\'ea\'ee\'eb\'e0\loch\f39 \hich\f39 IMAP \'e4\'eb\'ff\loch\f39 outlook?
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'e4\'e5\'eb\'e0\'e9\loch\f39 \hich\f39 tcppm \'e4\'eb\'ff\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'e0\loch\f39 143.
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 18. \'cf\'ee\'f7\'e5\'ec\'f3\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'f0\'e8\'f5\'ee\'e4\'e8\'f2\loch\f39 \hich\f39 \'ef\'ee\'f7\'f2\loch\af39\dbch\af31505\hich\f39 \'e0\loch\f39 \hich\f39 \'ef
-\'f0\'e8\loch\f39 \hich\f39 \'f2\'e0\'ea\'ee\'ec\loch\f39 \hich\f39 \'ea\'ee\'ed\'f4\'e8\'e3\'e5\loch\f39 ?
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186\charrsid3764488 \hich\af39\dbch\af31505\loch\f39 tcppm -i192.168.0.1 25 mail.infobox.ru 25
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 smtpp
-\par
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'d2\'fb\loch\f39 \hich\f39 \'ef\'fb\'f2\'e0\'e5\'f8\'fc\'f1\'ff\loch\f39
-\hich\f39 \'ed\'e0\loch\f39 \hich\f39 \'ee\'e4\'ed\'ee\'ec\loch\f39 \hich\f39 25-\'ee\'ec\loch\f39 \hich\f39 \'ef\'ee\'f0\'f2\'f3\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'f2\'e8\'f2\'fc\loch\f39 \hich\f39 2 \'f0\'e0\'e7\'ed\'fb\'f5\loch\f39
-\hich\f39 \'f1\'e5\'f0\'e2\'e8\'f1\'e0.
-\par
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 19. \'c5\'f1\'f2\'fc\loch\f39 \hich\f39 \'f1\'e5\'f2\'fc\loch\f39 \hich\f39 10.10.1.0/24, \'e4\'eb\'ff\loch\f39 \hich\f39 \'ed\'e5\'e5\loch\f39 \hich\f39 \'e7\'e0\'e2\'e5\'e4\'e5\'ed\loch\f39 \hich\f39 \'f1
-\'f7\'e5\'f2\'f7\'e8\'ea\loch\f39 \hich\f39 : countin "60/\'d5\'d5\'d5\loch\f39 \hich\f39 " M 5000 * 10.10.1.0/24 * * *, \'f2\'f0\'e5\'e1\'f3\'e5\'f2\'f1\'ff\loch\f39 \hich\f39 \'e2\'e5\'f1\'f2\'e8\loch\f39 \hich\f39 \'ef\'ee\'e4\'f1\'f7
-\loch\af39\dbch\af31505\hich\f39 \'e5\'f2\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e4\'e2\'f3\'f5\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'ee\'e2\loch\f39 \hich\f39 \'e8\'e7\loch\f39 \hich\f39 \'fd\'f2\'ee\'e9\loch\f39 \hich\f39 \'f1\'e5
-\'f2\'e8\loch\f39 \hich\f39 \'ee\'f2\'e4\'e5\'eb\'fc\'ed\'ee\loch\f39 \hich\f39 \'ee\'f2\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'ee\'e3\'ee\loch\f39 \hich\f39 . \'cf\'f0\'e8\loch\f39 \hich\f39 \'fd\'f2\'ee\'ec\loch\f39 \hich\f39 , \'e5\'f1\'eb
-\'e8\loch\f39 \hich\f39 \'ee\'f1\'ed\'ee\'e2\'ed\'e0\'ff\loch\f39 \hich\f39 \'f1\'e5\'f2\'fc\loch\f39 \hich\f39 \'f3\'e6\'e5\loch\f39 \hich\f39 \'e2\'fb\'e1\'f0\'e0\'eb\'e0\loch\f39 \hich\f39 \'f1\'e2\'ee\'e9\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8
-\'ea\loch\f39 \hich\f39 , \'f3\loch\f39 \hich\f39 \'fd\'f2\'e8\'f5\loch\f39 \hich\f39 \'e4\'e2\'f3\'f5\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'ee\'e2\loch\f39 \hich\f39 \'e4\'ee\'f1\'f2\'f3\'ef\loch\f39 \hich\f39 \'e4\'ee\'eb\'e6\'e5\'ed\loch\f39
-\hich\f39 \'f1\'ee\'f5\'f0\'e0\'ed\'ff\'f2\'fc\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'f0\'e5\'e4\'e5\'eb\'e0\'f5\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'eb
-\'e8\'ec\'e8\'f2\'ee\'e2\loch\f39 .
-\par
-\par \loch\af39\dbch\af31505\hich\f39 \'d1\'e4\'e5\'eb\'e0\'f2\'fc\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'fb\'e5\loch\f39 \hich\f39 \'e4\'e2\'e0\loch\f39 \hich\f39 \'f1\'f7\'e5\'f2\'f7\'e8\'ea\'e0\loch\f39 \hich\f39 \'e4\'eb\'ff\loch\f39 \hich\f39 \'e2\'fb
-\'e4\'e5\'eb\'e5\'ed\'ed\'fb\'f5\loch\f39 \hich\f39 \'e0\'e4\'f0\'e5\'f1\'ee\'e2\loch\f39 \hich\f39 , \'e7\'e0\'f2\'e5\'ec\loch\f39 \hich\f39 \'e4\'e0\'f2\'fc\loch\f39 \loch\af39\dbch\af31505\hich\f39 \'ea\'ee\'ec\'e0\'ed\'e4\'f3\loch\f39 nocount}{
-\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 in}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \hich\af39\dbch\af31505\loch\f39 \hich\f39 , \'f7\'f2\'ee
-\'e1\'fb\loch\f39 \hich\f39 \'e8\'f5\loch\f39 \hich\f39 \'f2\'f0\'e0\'f4\'e8\'ea\loch\f39 \hich\f39 \'ed\'e5\loch\f39 \hich\f39 \'ef\'ee\'ef\'e0\'e4\'e0\'eb\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ee\'f1\'f2\'e0\'eb\'fc\'ed\'ee\'e9.
-\par \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'e0\'e2\'e8\'eb\'e0\loch\f39 \hich\f39 countin \'e8\loch\f39 \hich\f39 nocountin \'ee\'e1\'f0\'e0\'e1\'e0\'f2\'fb\'e2\'e0\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'e2\loch\f39 \hich\f39 \'ef\'ee\'f0\'ff\'e4\'ea\'e5
-\loch\f39 \hich\f39 \'ee\'f7\'e5\'f0\'e5\'e4\'e8\loch\f39 \hich\f39 \'e4\'ee\loch\f39 \hich\f39 \'ef\'e5\'f0\'e2\'ee\'e3\'ee\loch\f39 \hich\f39 \'ef\'f0\'e0\'e2\'e8\'eb\'e0\loch\f39 nocountin/nocountout.
-\par
-\par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 20. }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'cf\'f0\'e8\loch\f39 \hich\f39 \'e0
-\'e2\'f2\'ee\'f0\'e8\'e7\'e0\'f6\'e8\'e8\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 strong}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ef\'e5\'f0\'e8\'ee\'e4\'e8\'f7\'e5\'f1\'ea\'e8\loch\f39 \hich\f39 \'ef\'f0
-\'e8\loch\f39 \hich\f39 \'e7\'e0\'e3\'f0\'f3\'e7\'ea\'e5\loch\f39 \hich\f39 \'f1\'f2\'f0\'e0\'ed\'e8\'f6\loch\f39 \hich\f39 \'ef\'ee\'ff\'e2\'eb\'ff\'fe\'f2\'f1\'ff\loch\f39 \hich\f39 \'ee\'ea\'ed\'e0\loch\f39 \hich\f39 \'e7\'e0\'ef\'f0\'ee\'f1\'e0
-\loch\f39 \hich\f39 \'eb\'ee\'e3\'e8\'ed\'e0-\'ef\'e0\loch\af39\dbch\af31505\hich\f39 \'f0\'ee\'eb\'ff\loch\f39 \hich\f39 . \'ca\'e0\'ea\loch\f39 \hich\f39 \'e8\'e7\'e1\'e0\'e2\'e8\'f2\'fc\'f1\'ff\loch\f39 ?
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'cf\'ee\'ef\'f0\'ee\'e1\'f3\'e9\'f2\'e5\loch\f39 \hich\f39 \'ef\'ee\'f1\'eb\'e5\loch\f39 \hich\f39 \'e2\'f1\'e5\'f5\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0
-\f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 allow}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0
-\f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ef\'ee\'f1\'f2\'e0\'e2\'e8\'f2\'fc\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 deny}{
-\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 *}{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 .
-\par \hich\af39\dbch\af31505\loch\f39 \hich\f39 - \'c8\'f1\'ef\'ee\'eb\'fc\'e7\'f3\'e9\'f2\'e5\loch\f39 \hich\f39 \'ee\'ef\'f6\'e8\'fe\loch\f39 }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 -}{\rtlch\fcs1 \af1\afs20
-\ltrch\fcs0 \f1\fs20\cf1\lang1033\langfe1049\langnp1033\insrsid11355186 \hich\af1\dbch\af31505\loch\f1 n}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\cf1\insrsid11355186\charrsid3764488 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af39\afs20
-\ltrch\fcs0 \f39\fs20\cf1\insrsid11355186 \loch\af39\dbch\af31505\hich\f39 \'ef\'f0\'e8\loch\f39 \hich\f39 \'e7\'e0\'ef\'f3\'f1\'ea\'e5\loch\f39 \hich\f39 \'ef\'f0\'ee\'ea\'f1\'e8.
-\par
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\hyphpar0\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\kerning1\insrsid11355186
-\par
-\par }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488 \loch\af39\dbch\af31505\hich\f39 \'a9\loch\f39 2006-2010 by Kurmaeff Halit
-\par \hich\af39\dbch\af31505\loch\f39 }{\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \f39\fs20\lang1033\langfe1049\kerning1\langnp1033\insrsid11355186\charrsid3764488
-\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
-9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
-5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
-b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
-0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
-a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
-c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
-0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
-a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
-6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
-4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
-4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100a55e7d2dc7060000d71b0000160000007468656d652f7468656d652f
-7468656d65312e786d6cec59cf6e1b4518bf23f10ea3bdb7b113278da33a55ecd80db469a3d82dea71bc1eef4e33bbb39a1927f5ad4a8f482044411ca8045c38
-2020528bb8b4efe03e43a0088ad457e09b99ddf54ebca1491b4105cd21de9dfd7dffffcc37bb172fdd8918da2542521e37bceaf98a8748ecf3018d838677a3d7
-39b7ec21a9703cc08cc7a4e18d89f42eadbefbce45bca242121104f4b15cc10d2f542a59999b933e2c63799e27248667432e22ace05604730381f7806fc4e6e6
-2b95a5b908d3d843318e80ede49bc94f93c79303747d38a43ef15633fe6d06426225f582cf4457732719d1d74ff72707932793479383a777e1fa09fc7e6c6807
-3b554d21c7b2c504dac5ace181e801dfeb913bca430c4b050f1a5ec5fc7973ab17e7f04a4ac4d431b405ba8ef94be95282c1cebc9129827e2eb4daa9d52face7
-fc0d80a9595cbbdd6eb5ab393f03c0be0f965b5d8a3c6b9de56a33e35900d9cb59deadca62a5e6e20bfc176674ae379bcdc57aaa8b656a40f6b236835fae2cd5
-d6e61dbc0159fce20cbed65c6bb5961cbc0159fcd20cbe73a1be5473f10614321aefcca075403b9d947b0e1972b6510a5f06f87225854f51900d79b66911431e
-ab93e65e846f73d101024dc8b0a23152e3840cb10f89dec2515f50ac05e215820b4fec922f6796b46c247d4113d5f0de4f3014cd94df8bc7dfbf78fc101dee3f
-3adcfff9f0debdc3fd1f2d23876a03c74191eaf9b79ffcf9e02efae3e157cfef7f568e9745fcaf3f7cf8cb934fcb81504e53759e7d7ef0dba383675f7cf4fb77
-f74be06b02f78bf01e8d8844d7c81edae6111866bce26a4efae27414bd10d322c55a1c481c632da5847f5b850efada18b3343a8e1e4de27af0a680765206bc3c
-baed28dc0dc548d112c957c2c8016e72ce9a5c947ae18a965570736f1407e5c2c5a888dbc678b74c760bc74e7cdba304fa6a96968ee1ad90386a6e311c2b1c90
-9828a49ff11d424aacbb45a9e3d74dea0b2ef950a15b1435312d75498ff69d6c9a126dd008e2322eb319e2edf866f3266a725666f53ad975915015989528df23
-cc71e3653c52382a63d9c3112b3afc2a56619992ddb1f08bb8b65410e980308eda03226519cd7501f616827e0543072b0dfb261b472e5228ba53c6f32ae6bc88
-5ce73bad10474919b64be3b0887d4fee408a62b4c555197c93bb15a2ef210e383e36dc372971c2fdf26e7083068e4ad304d14f46a22496970977f2b73b66434c
-4cab8126eff4ea88c67fd7b81985ce6d259c5de38656f9eccb07257abfa92d7b0d76afb29ad938d2a88fc31d6dcf2d2e06f4cdefceeb78146f112888d92dea6d
-737edb9cbdff7c733eae9ecfbe254fbb3034683d8bd8c1db8ce1d189a7f02165acabc68c5c95661097b0170d3ab0a8f998432ac94f69490897bab241a0830b04
-36344870f501556137c4090cf1554f330964ca3a9028e1120e9366b994b7c6c34140d9a3e8a23ea4d84e22b1dae403bbbca097b3b348cec66815980370266841
-3338a9b0850b2953b0ed558455b55227965635aa9926e948cb4dd62e36877870796e1a2ce6de842107c168045e5e82d7045a341c7e302303ed771ba32c2c260a
-67192219e2014963a4ed9e8d51d50429cb951943b41d3619f4c1f2255e2b48ab6bb6af21ed24412a8aab1d232e8bdeeb4429cbe0699480dbd1726471b138598c
-f61a5e7d717ed1433e4e1ade10cecd7019251075a9e74acc02783fe52b61d3fea5c56caa7c1acd7a66985b0455783562fd3e63b0d3071221d53a96a14d0df328
-4d01166b4956fff94570eb591950d28d4ea6c5c23224c3bfa605f8d10d2d190e89af8ac12eac68dfd9dbb495f29122a21b0ef6509f8dc43686f0eb54057b0654
-c2eb0fd311f40dbcbbd3de368fdce69c165df18d99c1d975cc9210a7ed56976856c9166e1a52ae83b92ba807b695ea6e8c3bbd29a6e4cfc894621affcf4cd1fb
-09bc8d5818e808f8f0365960a42ba5e171a1420e5d2809a9df11304898de01d902ef7fe1312415bcd336bf82ecea5f5b739687296b3854aa6d1a2041613f52a1
-20640bda92c9be9730aba67b9765c9524626a30aeacac4aadd27bb84f5740f5cd27bbb87424875d34dd236607047f3cfbd4f2ba81fe821a7586f4e27cbf75e5b
-03fff4e4638b198c72fbb0196832ffe72ae6e3c17457b5f4863cdb7b8b86e807d331ab965505082b6c05f5b4ec5f5185536eb5b663cd583cbf982907519cb518
-16f3812881774a48ff83fd8f0a9fd9af237a43edf16de8ad083e6e6866903690d5e7ece0817483b48b7d189ceca24d26cdcaba361d9db4d7b2cdfa8c27dd5cee
-11676bcd4e12ef533a3b1fce5c714e2d9ea5b3530f3bbeb66bc7ba1a227bb4446169981d6c4c60cc97b5e2972fdebf0d815e876f0823a6a44926f88e2530ccd0
-5d530750fc56a2215dfd0b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c73
-2f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761
-be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f9
-80ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca
-5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e7465
-6e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c73
-2f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f
-7468656d654d616e616765722e786d6c504b01022d0014000600080000002100a55e7d2dc7060000d71b00001600000000000000000000000000d60200007468
-656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d10900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cc0a00000000}
-{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
-617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
-6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
-656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
-{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
-\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
-\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
-\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
-4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
-d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000002c
-52e2b63dcc01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1061\'d5\u1086\'ee\u1095\'f7\u1091\'f3 \u1087\'ef\u1086\'ee\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1089\'f1\u1074\'e2\u1086\'ee\u1080\'e8\u1084\'ec \u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1086\'ee\u1084\'ec \u1087\'ef\u1086\'ee \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1077\'e5 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1086\'ee\u1090\'f2 \u1047\'c7\u1072\'e0\u1088\'f0\u1072\'e0\u1079\'e7\u1099\'fb - 3proxy. \u1044\'c4\u1086\'ee\u1083\'eb\u1075\'e3\u1086\'ee\u1077\'e5 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1084\'ec \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1085\'ed\u1099\'fb\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1084\'ec ES Proxy http://esproxy.org.ua \u1086\'ee\u1090\'f2 \u1043\'c3\u1077\'e5\u1086\'ee\u1088\'f0\u1075\'e3\u1080\'e8\u1103\'ff \u1055\'cf\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1082\'ea\u1086\'ee - \u1084\'ec\u1072\'e0\u1083\'eb\u1077\'e5\u1085\'ed\u1100\'fc\u1082\'ea\u1086\'ee\u1075\'e3\u1086\'ee (\u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1086\'ee \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed exe-\u1096\'f8\u1085\'ed\u1080\'e8\u1082\'ea \u1085\'ed\u1072\'e0 300 \u1082\'ea\u1041\'c1), \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1077\'e5 \u1080\'e8 \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1085\'ed\u1077\'e5\u1090\'f2\u1088\'f0\u1077\'e5\u1073\'e1\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea \u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3\u1088\'f0\u1089\'f1\u1072\'e0\u1084\'ec - \u1087\'ef\u1086\'ee \u1082\'ea\u1088\'f0\u1072\'e0\u1081\'e9\u1085\'ed\u1077\'e5\u1081\'e9 \u1084\'ec\u1077\'e5\u1088\'f0\u1077\'e5, \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8 \u1089\'f1\u1086\'ee\u1090\'f2\u1085\'ed\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1086\'ee\u1085\'ed \u1091\'f3\u1084\'ec\u1091\'f3\u1076\'e4\u1088\'f0\u1103\'ff\u1083\'eb\u1089\'f1\u1103\'ff \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1088\'f0\u1080\'e8\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec P133, \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8 \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1090\'f2\u1099\'fb\u1082\'ea\u1072\'e0\u1103\'ff\u1089\'f1\u1100\'fc. \u1048\'c8 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1074\'e2\u1086\'ee\u1090\'f2 \u1101\'fd\u1090\'f2\u1086\'ee <\u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8> - \u1080\'e8\u1085\'ed\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5 \u1078\'e6\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8\u1082\'ea \u1089\'f1\u1072\'e0\u1084\'ec\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1078\'e6\u1080\'e8\u1088\'f0\u1072\'e0\u1083\'eb 100% \u1087\'ef\u1088\'f0\u1086\'ee\u1094\'f6\u1077\'e5\u1089\'f1\u1089\'f1\u1086\'ee\u1088\'f0\u1072\'e0, \u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1080\'e8 \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1072\'e0\u1083\'eb \u1095\'f7\u1072\'e0\u1089\'f1\u1090\'f2\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee \u1080\'e8\u1083\'eb\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc\u1102\'fe \u1089\'f1\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1089\'f1\u1086\'ee \u1089\'f1\u1074\'e2\u1086\'ee\u1080\'e8\u1084\'ec\u1080\'e8 \u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1103\'ff\u1084\'ec\u1080\'e8 - \u1072\'e0 \u1090\'f2\u1072\'e0\u1082\'ea\u1078\'e6\u1077\'e5 \u1090\'f2\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1091\'f3\u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8 4 \u1075\'e3\u1086\'ee\u1076\'e4\u1072\'e0 \u1082\'ea\u1072\'e0\u1082\'ea \u1085\'ed\u1077\'e5 \u1087\'ef\u1086\'ee\u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0\u1082\'ea\u1080\'e8\u1093\'f5 \u1087\'ef\u1088\'f0\u1080\'e8\u1079\'e7\u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1074\'e2 \u1078\'e6\u1080\'e8\u1079\'e7\u1085\'ed\u1080\'e8, \u1090\'f2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1091\'f3\u1082\'ea\u1090\'f2 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1088\'f0 \u1074\'e2 \u1088\'f0\u1072\'e0\u1079\'e7\u1074\'e2\u1080\'e8\u1090\'f2\u1080\'e8\u1080\'e8 - \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1083\'eb\u1080\'e8 \u1082\'ea \u1087\'ef\u1086\'ee\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0\u1084\'ec \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1076\'e4\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1077\'e5\u1075\'e3\u1086\'ee \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0. \u1057\'d1\u1082\'ea\u1072\'e0\u1078\'e6\u1091\'f3 \u1089\'f1\u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3 - \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1 \u1082\'ea\u1088\'f0\u1072\'e0\u1089\'f1\u1080\'e8\u1074\'e2\u1099\'fb\u1084\'ec\u1080\'e8 GUI \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1083\'eb\u1077\'e5\u1082\'ea\u1072\'e0\u1083\'eb\u1080\'e8 \u1084\'ec\u1072\'e0\u1083\'eb\u1086\'ee, \u1103\'ff \u1089\'f1\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1085\'ed\u1085\'ed\u1080\'e8\u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1094\'f6\u1080\'e8\u1087\'ef\u1072\'e0 <\u1052\'cc\u1085\'ed\u1077\'e5 \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1077\'e5\u1093\'f5\u1072\'e0\u1090\'f2\u1100\'fc>, \u1072\'e0 \u1082\'ea\u1088\'f0\u1072\'e0\u1089\'f1\u1080\'e8\u1074\'e2\u1099\'fb\u1081\'e9 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1 - \u1101\'fd\u1090\'f2\u1086\'ee, \u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1095\'f7\u1085\'ed\u1086\'ee, \u1093\'f5\u1086\'ee\u1088\'f0\u1086\'ee\u1096\'f8\u1086\'ee, \u1085\'ed\u1086\'ee \u1085\'ed\u1077\'e5 \u1074\'e2 \u1091\'f3\u1097\'f9\u1077\'e5\u1088\'f0\u1073\'e1 \u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1079\'e7\u1074\'e2\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8. \u1055\'cf\u1077\'e5\u1088\'f0\u1077\'e5\u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1086\'ee\u1074\'e2\u1072\'e0\u1074\'e2 \u1085\'ed\u1077\'e5 \u1086\'ee\u1090\'f2 \u1093\'f5\u1086\'ee\u1088\'f0\u1086\'ee\u1096\'f8\u1077\'e5\u1081\'e9 \u1078\'e6\u1080\'e8\u1079\'e7\u1085\'ed\u1080\'e8 5-6 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1093\'f5 \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1091\'f3\u1082\'ea\u1090\'f2\u1086\'ee\u1074\'e2 (\u1089\'f1\u1088\'f0\u1077\'e5\u1076\'e4\u1080\'e8 \u1085\'ed\u1080\'e8\u1093\'f5 Usergate, Proxy+, Lan4net....) \u1080\'e8 \u1085\'ed\u1077\'e5 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1096\'f8\u1080\'e8\u1089\'f1\u1100\'fc \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1084\'ec\u1080\'e8 \u1088\'f0\u1077\'e5\u1079\'e7\u1091\'f3\u1083\'eb\u1100\'fc\u1090\'f2\u1072\'e0\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8 (\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1080\'e8\u1079\'e7\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1091\'f3\u1082\'ea\u1090\'f2 \u1086\'ee\u1090\'f2 Microsoft \u1103\'ff \u1088\'f0\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1086\'ee\u1090\'f2\u1084\'ec\u1077\'e5\u1083\'eb \u1074\'e2\u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3 \u1077\'e5\u1075\'e3\u1086\'ee \u1074\'e2\u1099\'fb\u1089\'f1\u1086\'ee\u1082\'ea\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1086\'ee\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8), \u1088\'f0\u1077\'e5\u1096\'f8\u1080\'e8\u1083\'eb \u1087\'ef\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea\u1080\'e8 3proxy, \u1090\'f2\u1077\'e5\u1084\'ec \u1087\'ef\u1072\'e0\u1095\'f7\u1077\'e5 \u1089\'f1\u1083\'eb\u1099\'fb\u1096\'f8\u1072\'e0\u1083\'eb \u1074\'e2 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1086\'ee\u1084\'ec \u1093\'f5\u1086\'ee\u1088\'f0\u1086\'ee\u1096\'f8\u1080\'e8\u1077\'e5 \u1086\'ee\u1090\'f2\u1082\'ea\u1083\'eb\u1080\'e8\u1082\'ea\u1080\'e8. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1082\'ea\u1090\'f2\u1086\'ee \u1080\'e8 \u1078\'e6\u1072\'e0\u1083\'eb\u1086\'ee\u1074\'e2\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1085\'ed\u1077\'e5\u1075\'e3\u1086\'ee, \u1090\'f2\u1086\'ee \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1085\'ed\u1072\'e0 \u1089\'f1\u1083\'eb\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1080\'e8, \u1074\'e2 \u1095\'f7\u1077\'e5\u1084\'ec, \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc, \u1085\'ed\u1077\'e5\u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1079\'e7\u1072\'e0\u1073\'e1\u1077\'e5\u1075\'e3\u1072\'e0\u1103\'ff \u1074\'e2\u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4, \u1103\'ff \u1080\'e8 \u1080\'e8\u1084\'ec\u1077\'e5\u1083\'eb \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1091\'f3\u1073\'e1\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0\u1081\'e9\u1076\'e4\u1103\'ff \u1074\'e2 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1077\'e5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2 \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1072\'e0 http://3proxy.ru/, \u1087\'ef\u1086\'ee\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1083\'eb \u1087\'ef\u1088\'f0\u1086\'ee \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 - \u1080\'e8 \u1074\'e2\u1086\'ee\u1079\'e7\u1088\'f0\u1072\'e0\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff. \u1058\'d2\u1091\'f3\u1090\'f2 \u1090\'f2\u1077\'e5\u1073\'e1\u1077\'e5 \u1080\'e8 \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1077\'e5 \u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1099\'fb \u1085\'ed\u1072\'e0 \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff, \u1080\'e8 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8, \u1080\'e8 FTP, \u1080\'e8 SOCKS, \u1080\'e8 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2-\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1077\'e5\u1088\'f0\u1099\'fb, \u1080\'e8 \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0 \u1082\'ea\u1072\'e0\u1082\'ea \u1087\'ef\u1086\'ee\u1076\'e4 Windows, \u1090\'f2\u1072\'e0\u1082\'ea \u1080\'e8 \u1087\'ef\u1086\'ee\u1076\'e4 \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1084\'ec\u1080\'e8 \u1085\'ed\u1080\'e8\u1082\'ea\u1089\'f1\u1072\'e0\u1084\'ec\u1080\'e8. \u1041\'c1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1080\'e8 \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1091\'f3\u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 - \u1074\'e2\u1088\'f0\u1086\'ee\u1076\'e4\u1077\'e5 \u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1078\'e6\u1091\'f3\u1088\'f0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1074\'e2 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 ODBC \u1080\'e8\u1083\'eb\u1080\'e8 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1072\'e0 \u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1074\'e2, \u1090\'f2\u1072\'e0\u1082\'ea \u1095\'f7\u1090\'f2\u1086\'ee \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 <\u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1084\'ec\u1080\'e8\u1090\'f2\u1100\'fc> \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1084\'ec\u1091\'f3 \u1083\'eb\u1086\'ee\u1075\'e3-\u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1091\'f3. \u1042\'c2 \u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1084\'ec, \u1074\'e2\u1089\'f1\u1105\'b8, \u1095\'f7\u1090\'f2\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee\u1073\'e1\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1089\'f1\u1080\'e8\u1089\'f1\u1090\'f2\u1077\'e5\u1084\'ec\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 \u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1091\'f3\u1076\'e4\u1086\'ee\u1074\'e2\u1083\'eb\u1077\'e5\u1090\'f2\u1074\'e2\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1100\'fc, \u1080\'e8 \u1085\'ed\u1077\'e5 \u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8\u1093\'f5 \u1078\'e6\u1077\'e5 \u1082\'ea\u1091\'f3\u1076\'e4\u1072\'e0 \u1085\'ed\u1077\'e5 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee... \u1053\'cd\u1077\'e5 \u1093\'f5\u1074\'e2\u1072\'e0\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1088\'f0\u1072\'e0\u1079\'e7\u1074\'e2\u1077\'e5 \u1095\'f7\u1090\'f2\u1086\'ee \u1082\'ea\u1101\'fd\u1096\'f8\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1076\'e4\u1072\'e0 \u1077\'e5\u1097\'f9\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1099\'fb \u1084\'ec\u1077\'e5\u1083\'eb\u1086\'ee\u1095\'f7\u1077\'e5\u1081\'e9, \u1085\'ed\u1086\'ee \u1101\'fd\u1090\'f2\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5 \u1086\'ee\u1073\'e1\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1091\'f3\u1078\'e6\u1077\'e5 \u1074\'e2 \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1097\'f9\u1077\'e5\u1084\'ec, \u1076\'e4\u1072\'e0 \u1080\'e8 \u1087\'ef\u1086\'ee \u1089\'f1\u1086\'ee\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1092\'f4\u1086\'ee\u1088\'f0\u1091\'f3\u1084\'ec\u1072\'e0, \u1086\'ee\u1087\'ef\u1077\'e5\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1074\'e2\u1085\'ed\u1099\'fb\u1084\'ec \u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1072\'e0\u1084\'ec \u1085\'ed\u1072\'e0 \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1080\'e8 \u1089\'f1\u1086\'ee\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1080\'e8\u1084\'ec\u1086\'ee\u1084\'ec\u1091\'f3 changelog'\u1072\'e0 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 0.6 \u1074\'e2\u1080\'e8\u1076\'e4\u1085\'ed\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0 \u1085\'ed\u1072\'e0\u1076\'e4 \u1089\'f1\u1086\'ee\u1074\'e2\u1077\'e5\u1088\'f0\u1096\'f8\u1077\'e5\u1085\'ed\u1089\'f1\u1090\'f2\u1074\'e2\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1099\'fb\u1084\'ec \u1093\'f5\u1086\'ee\u1076\'e4\u1086\'ee\u1084\'ec. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1074\'e2 \u1076\'e4\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1073\'e1\u1091\'f3\u1090\'f2\u1080\'e8\u1074\'e2 (555 \u1082\'ea\u1041\'c1! \u1074\'e2 \u1072\'e0\u1082\'ea\u1090\'f2\u1091\'f3\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1081\'e9 \u1085\'ed\u1072\'e0 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2 \u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc\u1080\'e8 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 devel 0.6), \u1103\'ff \u1087\'ef\u1086\'ee\u1075\'e3\u1088\'f0\u1091\'f3\u1079\'e7\u1080\'e8\u1083\'eb\u1089\'f1\u1103\'ff \u1074\'e2 \u1080\'e8\u1079\'e7\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1094\'f6\u1072\'e0 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1086\'ee\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1072\'e0, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1087\'ef\u1088\'f0\u1080\'e8\u1083\'eb\u1072\'e0\u1075\'e3\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1074\'e2 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1083\'eb\u1077\'e5\u1082\'ea\u1090\'f2\u1077\'e5. \u1055\'cf\u1086\'ee \u1093\'f5\u1086\'ee\u1076\'e4\u1091\'f3 \u1080\'e8\u1079\'e7\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2\u1086\'ee\u1079\'e7\u1085\'ed\u1080\'e8\u1082\'ea\u1083\'eb\u1086\'ee \u1085\'ed\u1077\'e5\u1084\'ec\u1072\'e0\u1083\'eb\u1086\'ee \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1086\'ee\u1074\'e2. \u1057\'d1 \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1078\'e6\u1077\'e5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1096\'f8\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8 \u1088\'f0\u1072\'e0\u1089\'f1\u1087\'ef\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1085\'ed\u1077\'e5\u1089\'f1\u1087\'ef\u1077\'e5\u1096\'f8\u1085\'ed\u1086\'ee \u1080\'e8\u1079\'e7\u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc, FAQ \u1080\'e8 HowTo. \u1050\'ca\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1080\'e8 \u1101\'fd\u1090\'f2\u1080\'e8 \u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5\u1088\'f0\u1080\'e8\u1072\'e0\u1083\'eb\u1099\'fb \u1073\'e1\u1099\'fb\u1083\'eb\u1080\'e8 \u1080\'e8\u1079\'e7\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1099\'fb, \u1086\'ee\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1086\'ee\u1074\'e2 \u1084\'ec\u1077\'e5\u1085\'ed\u1100\'fc\u1096\'f8\u1077\'e5 \u1085\'ed\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1086\'ee. \u1055\'cf\u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1082\'ea\u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1073\'e1\u1099\'fb\u1083\'eb\u1080\'e8 \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1073\'e1\u1077\'e5\u1079\'e7\u1091\'f3\u1089\'f1\u1087\'ef\u1077\'e5\u1096\'f8\u1085\'ed\u1099\'fb\u1084\'ec\u1080\'e8, \u1087\'ef\u1088\'f0\u1080\'e8\u1096\'f8\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc \u1087\'ef\u1086\'ee\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5\u1088\'f0\u1080\'e8\u1072\'e0\u1083\'eb\u1099\'fb \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1094\'f6\u1080\'e8\u1080\'e8, \u1075\'e3\u1076\'e4\u1077\'e5 \u1080\'e8 \u1073\'e1\u1099\'fb\u1083\'eb \u1085\'ed\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1085\'ed \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1077\'e5\u1094\'f6 \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1086\'ee\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1072\'e0, \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1094\'f6\u1080\'e8\u1087\'ef\u1091\'f3 <\u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2\u1089\'f1\u1077\'e5 \u1080\'e8 \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec>. \u1050\'ca\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1074\'e2\u1086\'ee\u1090\'f2 \u1086\'ee\u1085\'ed (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 0): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth none }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+log}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+proxy }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1089\'f1\u1077\'e5 \u1075\'e3\u1077\'e5\u1085\'ed\u1080\'e8\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1077\'e5, \u1082\'ea\u1072\'e0\u1082\'ea \u1075\'e3\u1086\'ee\u1074\'e2\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff, \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee. \u1040\'c0 \u1084\'ec\u1086\'ee\u1103\'ff \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1072\'e0 \u1079\'e7\u1072\'e0\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1083\'eb\u1072\'e0\u1089\'f1\u1100\'fc, \u1082\'ea\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1082\'ea\u1072\'e0\u1082\'ea \u1088\'f0\u1072\'e0\u1079\'e7 \u1074\'e2 \u1090\'f2\u1086\'ee\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1103\'ff \u1087\'ef\u1099\'fb\u1090\'f2\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1089\'f1\u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3 \u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1080\'e8\u1081\'e9 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1089\'f1\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec\u1080\'e8 \u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8 \u1080\'e8 \u1090\'f2.\u1076\'e4. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1072\'e0\u1078\'e6\u1085\'ed\u1086\'ee! \u1050\'ca\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1074\'e2 \u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1085\'ed\u1072\'e0\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1074\'e2 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1081\'e9 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 \u1089\'f1 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1103\'ff\u1077\'e5\u1084\'ec\u1099\'fb\u1084\'ec \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1086\'ee\u1084\'ec 3proxy.exe (\u1087\'ef\u1086\'ee \u1091\'f3\u1084\'ec\u1086\'ee\u1083\'eb\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 bin). \u1048\'c8\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1103\'ff\u1077\'e5\u1084\'ec\u1099\'fb\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1089\'f1 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1087\'ef\u1091\'f3\u1090\'f2\u1080\'e8 \u1082\'ea \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 90% \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1103\'ff\u1093\'f5 \u1101\'fd\u1090\'f2\u1086\'ee\u1090\'f2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc. \u1056\'d0\u1072\'e0\u1079\'e7\u1073\'e1\u1077\'e5\u1088\'f0\u1077\'e5\u1084\'ec\u1089\'f1\u1103\'ff \u1074\'e2 \u1085\'ed\u1077\'e5\u1084\'ec. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1077\'e5 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1095\'f7\u1090\'f2\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1103\'ff \u1085\'ed\u1077\'e5 \u1090\'f2\u1088\'f0\u1077\'e5\u1073\'e1\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1102\'fe\u1090\'f2 \u1074\'e2\u1089\'f1\u1077\'e5 \u1102\'fe\u1079\'e7\u1077\'e5\u1088\'f0\u1099\'fb \u1073\'e1\u1077\'e5\u1079\'e7 \u1080\'e8\u1089\'f1\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1074\'e2\u1099\'fb \u1087\'ef\u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2\u1077\'e5\u1089\'f1\u1100\'fc \u1074\'e2\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee\u1081\'e9 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb \u1082\'ea\u1072\'e0\u1082\'ea\u1080\'e8\u1077\'e5-\u1090\'f2\u1086\'ee \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0, \u1090\'f2\u1086\'ee \u1086\'ee\u1085\'ed\u1080\'e8 \u1085\'ed\u1077\'e5 \u1089\'f1\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1102\'fe\u1090\'f2, \u1086\'ee \u1095\'f7\u1077\'e5\u1084\'ec \u1080\'e8 \u1089\'f1\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2 FAQ. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1086\'ee \u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1077\'e5 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1084\'ec \u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3\u1072\'e0, \u1087\'ef\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1085\'ed\u1077\'e5 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1087\'ef\u1091\'f3\u1090\'f2\u1100\'fc \u1082\'ea \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1091\'f3, \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee, \u1083\'eb\u1086\'ee\u1075\'e3 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1074\'e2\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1101\'fd\u1082\'ea\u1088\'f0\u1072\'e0\u1085\'ed. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8, \u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1094\'f6, \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1077\'e5\u1084\'ec \u1089\'f1\u1072\'e0\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1086\'ee\u1084\'ec \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 3128. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1052\'cc\u1085\'ed\u1086\'ee\u1075\'e3\u1080\'e8\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1099\'fb \u1086\'ee\u1087\'ef\u1091\'f3\u1097\'f9\u1077\'e5\u1085\'ed\u1099\'fb, \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1076\'e4\u1083\'eb\u1103\'ff \u1085\'ed\u1080\'e8\u1093\'f5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1074\'e2\u1086\'ee\u1079\'e7\u1100\'fc\u1084\'ec\u1077\'e5\u1090\'f2 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee \u1091\'f3\u1084\'ec\u1086\'ee\u1083\'eb\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe. \u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2\u1077\'e5 \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1089\'f1\u1082\'ea\u1080\'e8\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2\u1072\'e0\u1096\'f8 \u1083\'eb\u1102\'fe\u1073\'e1\u1080\'e8\u1084\'ec\u1099\'fb\u1081\'e9 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0 - \u1085\'ed\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1102\'fe, \u1082\'ea\u1072\'e0\u1082\'ea \u1091\'f3 \u1074\'e2\u1072\'e0\u1089\'f1, \u1072\'e0 \u1091\'f3 \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1095\'f7\u1077\'e5\u1090\'f2\u1085\'ed\u1086\'ee\u1077\'e5 \u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1091\'f3\u1078\'e6\u1077\'e5 \u1083\'eb\u1077\'e5\u1090\'f2 8 \u1079\'e7\u1072\'e0\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1077\'e5\u1090\'f2 Opera - \u1074\'e2 \u1077\'e5\u1075\'e3\u1086\'ee \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1074\'e2\u1099\'fb\u1093\'f5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1075\'e3\u1072\'e0\u1083\'eb\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 "\u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8", \u1072\'e0 \u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1084\'ec \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1086\'ee\u1082\'ea\u1086\'ee\u1083\'eb\u1086\'ee\u1074\'e2 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc IP \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1080\'e8 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 3128.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1049\rtlch \ltrch\fs20\lang1049\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1074\'e2\u1072\'e0\u1084\'ec \u1085\'ed\u1077\'e5 \u1085\'ed\u1091\'f3\u1078\'e6\u1077\'e5\u1085\'ed \u1091\'f3\u1095\'f7\u1077\'e5\u1090\'f2 \u1080\'e8 \u1082\'ea\u1086\'ee\u1085\'ed\u1090\'f2\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc, \u1084\'ec\u1072\'e0\u1083\'eb\u1086\'ee \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3\u1077\'e5\u1090\'f2 \u1073\'e1\u1077\'e5\u1079\'e7\u1086\'ee\u1087\'ef\u1072\'e0\u1089\'f1\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1089\'f1\u1077\'e5\u1090\'f2\u1080\'e8, \u1072\'e0 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1091\'f3 \u1074\'e2\u1072\'e0\u1089\'f1 \u1073\'e1\u1077\'e5\u1079\'e7\u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9, \u1090\'f2\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1101\'fd\u1090\'f2\u1080\'e8\u1084\'ec \u1080\'e8 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff, \u1087\'ef\u1086\'ee \u1082\'ea\u1088\'f0\u1072\'e0\u1081\'e9\u1085\'ed\u1077\'e5\u1081\'e9 \u1084\'ec\u1077\'e5\u1088\'f0\u1077\'e5 \u1085\'ed\u1072\'e0 \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1077\'e5 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1103\'ff. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1091\'f3\u1076\'e4\u1072\'e0\u1083\'eb\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1091\'f3\u1102\'fe \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3, \u1086\'ee\u1085\'ed\u1072\'e0 \u1085\'ed\u1077\'e5 \u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1072\'e0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1077\'e5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1073\'e1\u1099\'fb \u1077\'e5\u1097\'f9\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 service, \u1076\'e4\u1083\'eb\u1103\'ff \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1082\'ea\u1072\'e0\u1082\'ea \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0, \u1072\'e0 \u1085\'ed\u1077\'e5 \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1084\'ec \u1087\'ef\u1088\'f0\u1080\'e8\u1083\'eb\u1086\'ee\u1078\'e6\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1082\'ea\u1072\'e0\u1082\'ea \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1091\'f3 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 3proxy --install. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1086\'ee \u1085\'ed\u1077\'e5 \u1089\'f1\u1087\'ef\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc! \u1044\'c4\u1077\'e5\u1083\'eb\u1086\'ee \u1074\'e2 \u1090\'f2\u1086\'ee\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1095\'f7\u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1097\'f9\u1077\'e5\u1085\'ed \u1087\'ef\u1088\'f0\u1080\'e8\u1083\'eb\u1086\'ee\u1078\'e6\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec, 3proxy \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1089\'f1\u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3 \u1074\'e2\u1099\'fb\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1101\'fd\u1082\'ea\u1088\'f0\u1072\'e0\u1085\'ed \u1089\'f1\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1086\'ee\u1073\'e1 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1093\'f5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1072\'e0\u1093\'f5 \u1080\'e8 \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1072\'e0\u1093\'f5 \u1080\'e8 \u1074\'e2\u1072\'e0\u1084\'ec \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8. \u1055\'cf\u1088\'f0\u1080\'e8\u1095\'f7\u1077\'e5\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1088\'f0\u1072\'e0\u1076\'e4\u1091\'f3\u1077\'e5\u1090\'f2, \u1089\'f1 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1076\'e4\u1072\'e0 \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1080\'e8 \u1080\'e8 \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1080\'e8 \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5, \u1075\'e3\u1076\'e4\u1077\'e5 \u1101\'fd\u1090\'f2\u1072\'e0 \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1089\'f1\u1091\'f3\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2. \u1040\'c0 \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1076\'e4\u1080\'e8\u1080\'e8 \u1086\'ee\u1073\'e1\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1087\'ef\u1086\'ee\u1084\'ec\u1086\'ee\u1075\'e3\u1072\'e0\u1077\'e5\u1090\'f2. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1072\'e0, \u1080\'e8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee \u1074\'e2\u1072\'e0\u1078\'e6\u1085\'ed\u1086\'ee\u1077\'e5 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1085\'ed\u1072\'e0\u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 - \u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0\u1082\'ea\u1080\'e8\u1093\'f5 \u1083\'eb\u1080\'e8\u1096\'f8\u1085\'ed\u1080\'e8\u1093\'f5 \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1086\'ee\u1074\'e2, \u1090\'f2\u1072\'e0\u1073\'e1\u1091\'f3\u1083\'eb\u1103\'ff\u1094\'f6\u1080\'e8\u1081\'e9 \u1080\'e8 \u1090\'f2.\u1087\'ef. \u1079\'e7\u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1074\'e2 \u1074\'e2 \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1080\'e8, \u1080\'e8\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1072\'e0 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1089\'f1\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1079\'e7\u1072\'e0\u1082\'ea\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1080\'e8 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2, \u1085\'ed\u1077\'e5 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1054\'ce\u1087\'ef\u1080\'e8\u1096\'f8\u1077\'e5\u1084\'ec \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1087\'ef\u1086\'ee\u1083\'eb\u1072\'e0\u1075\'e3\u1072\'e0\u1077\'e5\u1084\'ec\u1091\'f3\u1102\'fe \u1089\'f1\u1080\'e8\u1090\'f2\u1091\'f3\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe. \u1053\'cd\u1072\'e0\u1076\'e4\u1086\'ee "\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2" \u1085\'ed\u1072\'e0 3 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1 IP \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0\u1084\'ec\u1080\'e8 192.168.0.2,192.168.0.3,192.168.0.4, \u1074\'e2 \u1082\'ea\u1072\'e0\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1074\'e2\u1099\'fb\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0\u1077\'e5\u1090\'f2 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0 \u1089\'f1 \u1076\'e4\u1074\'e2\u1091\'f3\u1084\'ec\u1103\'ff \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1074\'e2\u1099\'fb\u1084\'ec\u1080\'e8 \u1082\'ea\u1072\'e0\u1088\'f0\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8, \u1074\'e2\u1085\'ed\u1091\'f3\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1080\'e8\u1084\'ec IP-\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1084\'ec 192.168.0.1 \u1080\'e8 "\u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1084\'ec", \u1090\'f2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1084\'ec \u1086\'ee\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1084\'ec 211.80.11.12. \u1054\'ce\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0 \u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1099\'fb \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0 DNS-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2: 213.153.100.1 \u1080\'e8 213.153.101.1. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1059\'d3 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1077\'e5\u1085\'ed SMTP-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 smtp.provider.ru. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1077\'e5 \u1089\'f1 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0\u1084\'ec\u1080\'e8 192.168.0.2-192.168.0.4 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1102\'fe\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1080\'e8 \u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2, \u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2, \u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2\u1080\'e8\u1084\'ec \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1091\'f3 c:\\3proxy, \u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2\u1080\'e8\u1084\'ec - \u1101\'fd\u1090\'f2\u1086\'ee \u1075\'e3\u1088\'f0\u1086\'ee\u1084\'ec\u1082\'ea\u1086\'ee \u1089\'f1\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1086\'ee, \u1076\'e4\u1083\'eb\u1103\'ff \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1072\'e0 \u1077\'e5\u1075\'e3\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1088\'f0\u1072\'e0\u1089\'f1\u1087\'ef\u1072\'e0\u1082\'ea\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8\u1079\'e7 zip-\u1072\'e0\u1088\'f0\u1093\'f5\u1080\'e8\u1074\'e2\u1072\'e0 \u1074\'e2 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1091\'f3\u1102\'fe \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1091\'f3, \u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1100\'fc \u1101\'fd\u1090\'f2\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 c:\\3proxy (\u1087\'ef\u1088\'f0\u1086\'ee \u1080\'e8\u1085\'ed\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1083\'eb\u1103\'ff\u1094\'f6\u1080\'e8\u1102\'fe \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1089\'f1\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1086\'ee \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5). }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1081\'e9\u1084\'ec\u1077\'e5\u1084\'ec\u1089\'f1\u1103\'ff \u1076\'e4\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1077\'e5\u1081\'e9\u1096\'f8\u1080\'e8\u1084\'ec \u1091\'f3\u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1083\'eb\u1103\'ff \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1072\'e0 \u1091\'f3\u1082\'ea\u1072\'e0\u1078\'e6\u1077\'e5\u1084\'ec \u1074\'e2\u1085\'ed\u1091\'f3\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1080\'e8\u1081\'e9: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1074\'e2\u1099\'fb \u1074\'e2\u1077\'e5\u1076\'e4\u1100\'fc \u1087\'ef\u1086\'ee\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1077\'e5\u1090\'f2\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee \u1079\'e7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1090\'f2\u1100\'fc IP \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1074\'e2\u1086\'ee\u1081\'e9 \u1082\'ea\u1072\'e0\u1088\'f0\u1090\'f2\u1099\'fb \u1042\'c2\u1040\'c0\u1064\'d8\u1045\'c5\u1043\'c3\u1054\'ce \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0, \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1085\'ed\u1072\'e0 \u1083\'eb\u1086\'ee\u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1091\'f3\u1102\'fe \u1089\'f1\u1077\'e5\u1090\'f2\u1100\'fc. \u1069\'dd\u1090\'f2\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1090\'f2\u1086\'ee\u1090\'f2 IP \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1074\'e2 \u1083\'eb\u1086\'ee\u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1081\'e9 \u1089\'f1\u1077\'e5\u1090\'f2\u1080\'e8, \u1082\'ea \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec\u1091\'f3 \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1097\'f9\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1099\'fb \u1080\'e8 \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9, \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1085\'ed \u1074\'e2 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5 \u1074\'e2 \u1082\'ea\u1072\'e0\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8 \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1081\'e9 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1099\'fb \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0 \u1101\'fd\u1090\'f2\u1086\'ee\u1090\'f2 IP \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1074\'e2\u1099\'fb \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1073\'e1\u1099\'fb\u1083\'eb\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1086\'ee\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0, \u1082\'ea\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1086\'ee, \u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1074\'e2\u1099\'fb\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1083\'eb\u1080\'e8\u1085\'ed\u1080\'e8\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee \u1090\'f2\u1072\'e0\u1082\'ea \u1085\'ed\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1081\'e9 "\u1088\'f0\u1077\'e5\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1081\'e9" IP, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1077\'e5\u1085\'ed \u1080\'e8\u1079\'e7 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1072\'e0 (\u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee \u1085\'ed\u1077\'e5 \u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee).}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1078\'e6\u1077\'e5 \u1091\'f3 \u1074\'e2\u1072\'e0\u1089\'f1 \u1082\'ea\u1086\'ee\u1084\'ec\u1084\'ec\u1091\'f3\u1090\'f2\u1080\'e8\u1088\'f0\u1091\'f3\u1077\'e5\u1084\'ec\u1099\'fb\u1081\'e9 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef: dial-up \u1080\'e8\u1083\'eb\u1080\'e8 vpn \u1080\'e8 \u1074\'e2\u1072\'e0\u1096\'f8 \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1081\'e9 IP \u1088\'f0\u1077\'e5\u1075\'e3\u1091\'f3\u1083\'eb\u1103\'ff\u1088\'f0\u1085\'ed\u1086\'ee \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1090\'f2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc 2 \u1089\'f1\u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1\u1072\'e0 \u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1083\'eb\u1077\'e5\u1084\'ec\u1099\'fb. \u1055\'cf\u1077\'e5\u1088\'f0\u1074\'e2\u1099\'fb\u1081\'e9 \u8212\'97 \u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1082\'ea\u1088\'f0\u1080\'e8\u1087\'ef\u1090\'f2, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1076\'e4\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1090\'f2\u1100\'fc \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1081\'e9 IP \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 include \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee $ (\u1101\'fd\u1090\'f2\u1086\'ee \u1084\'ec\u1099\'fb \u1086\'ee\u1073\'e1\u1089\'f1\u1091\'f3\u1076\'e4\u1080\'e8\u1084\'ec \u1087\'ef\u1086\'ee\u1079\'e7\u1078\'e6\u1077\'e5). \u1042\'c2\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1081\'e9 \u8212\'97 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+external 0.0.0.0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1077\'e5 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 - \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1084\'ec\u1080\'e8 external \u1080\'e8 internal \u1084\'ec\u1099\'fb \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1084\'ec \u1074\'e2\u1085\'ed\u1091\'f3\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1080\'e8\u1077\'e5 \u1080\'e8 \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1077\'e5 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1099\'fb, \u1090\'f2\u1072\'e0\u1082\'ea \u1089\'f1\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc, \u1075\'e3\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee, \u1085\'ed\u1072\'e0 \u1074\'e2\u1077\'e5\u1089\'f1\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1080\'e8 \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1076\'e4\u1083\'eb\u1103\'ff \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1093\'f5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1074\'e2\u1086\'ee\u1080\'e8 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1099\'fb, \u1090\'f2\u1086\'ee \u1101\'fd\u1090\'f2\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1 \u1087\'ef\u1086\'ee\u1084\'ec\u1086\'ee\u1097\'f9\u1100\'fc\u1102\'fe \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb -e \u1080\'e8 -i, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1084\'ec \u1089\'f1\u1086\'ee\u1074\'e2\u1086\'ee\u1082\'ea\u1091\'f3\u1087\'ef\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy -i192.168.0.1 -e211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1076\'e4\u1083\'eb\u1103\'ff \u1091\'f3\u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1094\'f6\u1077\'e5\u1089\'f1\u1089\'f1\u1072\'e0 \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed \u1093\'f5\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2 \u1091\'f3\u1082\'ea\u1072\'e0\u1078\'e6\u1077\'e5\u1084\'ec DNS-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 - \u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1086\'ee \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc DNS-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0 - \u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1084\'ec \u1082\'ea\u1101\'fd\u1096\'f8\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 DNS: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1076\'e4\u1077\'e5 \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee 65536 \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1077\'e5, \u1078\'e6\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1102\'fe\u1097\'f9\u1077\'e5\u1077\'e5 \u1089\'f1\u1090\'f2\u1077\'e5\u1087\'ef\u1077\'e5\u1085\'ed\u1100\'fc \u1095\'f7\u1080\'e8\u1089\'f1\u1083\'eb\u1072\'e0 2 \u1080\'e8 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1086\'ee \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1086\'ee\u1077\'e5. \u1050\'ca\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1086\'ee\u1090\'f2 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff nscache \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1103\'ff\u1084\'ec\u1091\'f3\u1102\'fe \u1079\'e7\u1072\'e0\u1074\'e2\u1080\'e8\u1089\'f1\u1080\'e8\u1090\'f2 \u1082\'ea\u1086\'ee\u1083\'eb\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1086\'ee \u1086\'ee\u1087\'ef\u1077\'e5\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9 \u1087\'ef\u1072\'e0\u1084\'ec\u1103\'ff\u1090\'f2\u1080\'e8, \u1079\'e7\u1072\'e0\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1077\'e5\u1084\'ec\u1086\'ee\u1081\'e9 3proxy. \u1048\'c8\u1090\'f2\u1072\'e0\u1082\'ea, \u1085\'ed\u1072\'e0 \u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec \u1101\'fd\u1090\'f2\u1072\'e0\u1087\'ef\u1077\'e5 \u1085\'ed\u1072\'e0\u1096\'f8 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1080\'e8\u1090\'f2 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1084\'ec \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1086\'ee\u1084\'ec (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 1): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+log}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth none }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+proxy }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1078\'e6\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1085\'ed\u1072\'e0\u1084\'ec \u1077\'e5\u1097\'f9\u1077\'e5 \u1085\'ed\u1077\'e5 \u1093\'f5\u1074\'e2\u1072\'e0\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1086\'ee\u1094\'f6\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1086\'ee\u1074\'e2 \u1080\'e8 \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1086\'ee\u1082\'ea, \u1074\'e2\u1077\'e5\u1076\'e4\u1100\'fc \u1085\'ed\u1072\'e0 \u1101\'fd\u1082\'ea\u1088\'f0\u1072\'e0\u1085\'ed\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3 \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1073\'e1\u1099\'fb\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1083\'eb\u1077\'e5\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2! \u1055\'cf\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 log \u1085\'ed\u1072\'e0 \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1088\'f0\u1072\'e0\u1089\'f1\u1096\'f8\u1080\'e8\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1091\'f3\u1102\'fe }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1072\'e0\u1082\'ea\u1080\'e8\u1084\'ec \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1086\'ee\u1084\'ec, \u1084\'ec\u1099\'fb \u1076\'e4\u1072\'e0\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 \u1089\'f1\u1086\'ee\u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 c:\\3proxy\\logs \u1080\'e8 \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1099\'fb\u1081\'e9 \u1076\'e4\u1077\'e5\u1085\'ed\u1100\'fc \u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1085\'ed\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1086\'ee\u1074\'e2\u1099\'fb\u1081\'e9 \u1083\'eb\u1086\'ee\u1075\'e3 (\u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1103\'ff D). \u1045\'c5\u1097\'f9\u1077\'e5 \u1088\'f0\u1072\'e0\u1079\'e7 \u1085\'ed\u1072\'e0\u1087\'ef\u1086\'ee\u1084\'ec\u1085\'ed\u1102\'fe, \u1095\'f7\u1090\'f2\u1086\'ee \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1076\'e4\u1080\'e8\u1080\'e8 \u1090\'f2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5 \u1078\'e6\u1077\'e5 \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2\u1099\'fb\u1074\'e2\u1086\'ee\u1076\'e4 \u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1074\'e2 \u1085\'ed\u1072\'e0 \u1101\'fd\u1082\'ea\u1088\'f0\u1072\'e0\u1085\'ed - \u1090\'f2\u1072\'e0\u1082\'ea \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1085\'ed\u1077\'e5\u1077\'e5 \u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0\u1090\'f2\u1100\'fc \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1080\'e8. \u1048\'c8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1076\'e4\u1086\'ee\u1073\'e1\u1072\'e0\u1074\'e2\u1080\'e8\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1076\'e4\u1083\'eb\u1103\'ff \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 \u1089\'f1 \u1083\'eb\u1086\'ee\u1075\'e3\u1072\'e0\u1084\'ec\u1080\'e8 \u1089\'f1\u1086\'ee\u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1103\'ff\u1083\'eb\u1080\'e8\u1089\'f1\u1100\'fc \u1083\'eb\u1080\'e8\u1096\'f8\u1100\'fc \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1085\'ed\u1080\'e8\u1077\'e5 30 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1086\'ee\u1074\'e2, \u1072\'e0 \u1090\'f2\u1086\'ee \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1090\'f2\u1072\'e0\u1082\'ea \u1073\'e1\u1099\'fb\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee \u1088\'f0\u1072\'e0\u1089\'f1\u1090\'f2\u1091\'f3\u1090\'f2, \u1072\'e0 \u1076\'e4\u1080\'e8\u1089\'f1\u1082\'ea \u1085\'ed\u1077\'e5 \u1088\'f0\u1077\'e5\u1079\'e7\u1080\'e8\u1085\'ed\u1086\'ee\u1074\'e2\u1099\'fb\u1081\'e9! }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1089\'f1\u1087\'ef\u1086\'ee\u1084\'ec\u1080\'e8\u1085\'ed\u1072\'e0\u1077\'e5\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee 3proxy \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0\u1084\'ec \u1074\'e2\u1080\'e8\u1076\'e4\u1086\'ee\u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2 \u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1074\'e2, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1080\'e8\u1093\'f5 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1084\'ec \u1083\'eb\u1086\'ee\u1075\'e3-\u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec. \u1050\'ca\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3 \u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1074\'e2\u1077\'e5\u1090\'f2\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0 www.wrspy.ru \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1083\'eb\u1080\'e8\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1080\'e8, \u1095\'f7\u1090\'f2\u1086\'ee \u1089\'f1\u1077\'e5\u1081\'e9\u1095\'f7\u1072\'e0\u1089\'f1 \u1085\'ed\u1077\'e5\u1084\'ec\u1072\'e0\u1083\'eb\u1086\'ee\u1074\'e2\u1072\'e0\u1078\'e6\u1085\'ed\u1086\'ee, \u1073\'e1\u1077\'e5\u1089\'f1\u1087\'ef\u1083\'eb\u1072\'e0\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9 \u1083\'eb\u1086\'ee\u1075\'e3-\u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0 Wrspy \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1086\'ee\u1090\'f2\u1077\'e5\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1084\'ec\u1084\'ec\u1080\'e8\u1089\'f1\u1090\'f2\u1072\'e0. \u1058\'d2\u1077\'e5\u1084\'ec \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1095\'f7\u1090\'f2\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0 \u1083\'eb\u1102\'fe\u1073\'e1\u1077\'e5\u1079\'e7\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1096\'f8\u1077\'e5\u1083\'eb \u1085\'ed\u1072\'e0\u1074\'e2\u1089\'f1\u1090\'f2\u1088\'f0\u1077\'e5\u1095\'f7\u1091\'f3 \u1084\'ec\u1086\'ee\u1077\'e5\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1100\'fc\u1073\'e1\u1077\'e5 \u1080\'e8 \u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1085\'ed\u1072\'e0\u1103\'ff \u1089\'f1 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 1.65 \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1080\'e8\u1083\'eb\u1072\'e0\u1089\'f1\u1100\'fc, \u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1094\'f6, \u1090\'f2\u1072\'e0\u1082\'ea \u1089\'f1\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc, \u1086\'ee\u1087\'ef\u1090\'f2\u1080\'e8\u1084\'ec\u1080\'e8\u1079\'e7\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff \u1087\'ef\u1086\'ee\u1076\'e4\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1082\'ea\u1072\'e0 3proxy - \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1074\'e2 \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1085\'ed\u1080\'e8\u1078\'e6\u1077\'e5 \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1072\'e0:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc \u1074\'e2 \u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1077\'e5\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 0.6.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1091\'f3\u1090\'f2 \u1074\'e2\u1080\'e8\u1076\'e4: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+192.168.0.4 - ivanov - [02/Jun/2006:11:13:56 +0500] }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+"GET http://svalka.biz/uploads/posts/1147559374_00.jpg HTTP/1.0" 000 17497 457 PROXY/http://svalka.biz:3128 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1076\'e4\u1077\'e5 \u1080\'e8\u1076\'e4\u1091\'f3\u1090\'f2 \u1087\'ef\u1086\'ee \u1087\'ef\u1086\'ee\u1088\'f0\u1103\'ff\u1076\'e4\u1082\'ea\u1091\'f3: IP \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1077\'e5\u1081\'e9 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1094\'f6\u1080\'e8\u1080\'e8 - \u1080\'e8\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff - \u1095\'f7\u1080\'e8\u1089\'f1\u1083\'eb\u1086\'ee, \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1094\'f6, \u1075\'e3\u1086\'ee\u1076\'e4 \u1080\'e8 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1103\'ff - \u1074\'e2\u1080\'e8\u1076\'e4 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1072\'e0 - URL - \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0 \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1082\'ea\u1080\'e8 (\u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 000 - \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2, \u1086\'ee\u1096\'f8\u1080\'e8\u1073\'e1\u1086\'ee\u1082\'ea \u1085\'ed\u1077\'e5\u1090\'f2) - \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1103\'ff\u1090\'f2\u1086\'ee \u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2 - \u1086\'ee\u1090\'f2\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1086\'ee \u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2 - \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1080\'e8\u1089\'f1 - \u1093\'f5\u1086\'ee\u1089\'f1\u1090\'f2 - \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2, \u1087\'ef\u1086\'ee \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec\u1091\'f3 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2 \u1089\'f1\u1074\'e2\u1103\'ff\u1079\'e7\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1089\'f1 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1080\'e8\u1089\'f1\u1086\'ee\u1084\'ec.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1077\'e5\u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1079\'e7\u1072\'e0\u1073\'e1\u1077\'e5\u1075\'e3\u1072\'e0\u1103\'ff \u1074\'e2\u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4, \u1089\'f1\u1082\'ea\u1072\'e0\u1078\'e6\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1074\'e2 3proxy \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1091\'f3\u1076\'e4\u1086\'ee\u1074\'e2\u1083\'eb\u1077\'e5\u1090\'f2\u1074\'e2\u1086\'ee\u1088\'f0\u1103\'ff\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1086\'ee\u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb, , \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1 \u1080\'e8\u1083\'eb\u1080\'e8 \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1081\'e9 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb \u1089\'f1 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1084\'ec\u1080\'e8 \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1091\'f3 \u1080\'e8 \u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1094\'f6, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1074\'e2\u1099\'fb \u1093\'f5\u1086\'ee\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5 \u1077\'e5\u1097\'f9\u1077\'e5 \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1077\'e5 \u1089\'f1\u1101\'fd\u1082\'ea\u1086\'ee\u1085\'ed\u1086\'ee\u1084\'ec\u1080\'e8\u1090\'f2\u1100\'fc \u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1072\'e0 \u1085\'ed\u1072\'e0 \u1076\'e4\u1080\'e8\u1089\'f1\u1082\'ea\u1077\'e5 \u1087\'ef\u1086\'ee\u1076\'e4 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8, \u1090\'f2\u1086\'ee \u1080\'e8\u1093\'f5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1072\'e0\u1088\'f0\u1093\'f5\u1080\'e8\u1074\'e2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1 \u1087\'ef\u1086\'ee\u1084\'ec\u1086\'ee\u1097\'f9\u1100\'fc\u1102\'fe \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1075\'e3\u1086\'ee \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1072\'e0\u1088\'f0\u1093\'f5\u1080\'e8\u1074\'e2\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1074\'e2\u1086\'ee\u1090\'f2 \u1090\'f2\u1072\'e0\u1082\'ea: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+(\u1087\'ef\u1086\'ee\u1076\'e4\u1089\'f1\u1082\'ea\u1072\'e0\u1079\'e7\u1082\'ea\u1091\'f3 \u1076\'e4\u1083\'eb\u1103\'ff \u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1081\'e9 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1085\'ed\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1080\'e8 WinRAR \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0\u1081\'e9\u1090\'f2\u1080\'e8 \u1074\'e2 \u1077\'e5\u1075\'e3\u1086\'ee \u1078\'e6\u1077\'e5 Help'\u1077\'e5) }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1054\'ce\u1073\'e1\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5 \u1074\'e2\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1085\'ed\u1072\'e0 \u1090\'f2\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee \u1087\'ef\u1091\'f3\u1090\'f2\u1100\'fc \u1082\'ea \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1091\'f3 \u1079\'e7\u1072\'e0\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed \u1074\'e2 \u1089\'f1\u1082\'ea\u1086\'ee\u1073\'e1\u1082\'ea\u1080\'e8. \u1069\'dd\u1090\'f2\u1086\'ee \u1089\'f1\u1074\'e2\u1103\'ff\u1079\'e7\u1072\'e0\u1085\'ed\u1086\'ee \u1089\'f1 \u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1095\'f7\u1080\'e8\u1077\'e5\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1072\'e0 \u1074\'e2 \u1087\'ef\u1091\'f3\u1090\'f2\u1080\'e8. \u1040\'c0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1079\'e7\u1072\'e0\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1082\'ea\u1072\'e0\u1074\'e2\u1099\'fb\u1095\'f7\u1082\'ea\u1080\'e8 \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1077\'e5 \u1087\'ef\u1091\'f3\u1090\'f2\u1080\'e8 Windows, \u1089\'f1\u1086\'ee\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1072\'e0\u1097\'f9\u1080\'e8\u1077\'e5 \u1074\'e2 \u1089\'f1\u1077\'e5\u1073\'e1\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1099\'fb \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee $.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1089\'f1\u1086\'ee\u1073\'e1\u1080\'e8\u1088\'f0\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1074\'e2\u1080\'e8\u1085\'ed\u1091\'f3\u1090\'f2\u1091\'f3\u1102\'fe \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1102\'fe (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 2) \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth none }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+proxy -t}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1047\'c7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1077\'e5\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1089\'f1 \u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1077\'e5\u1081\'e9 -t , \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0\u1103\'ff \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1085\'ed\u1077\'e5 \u1074\'e2\u1099\'fb\u1074\'e2\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2 \u1083\'eb\u1086\'ee\u1075\'e3 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1077\'e5\u1073\'e1\u1085\'ed\u1099\'fb\u1077\'e5 \u1089\'f1\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1086\'ee \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1077\'e5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1. \u1069\'dd\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1075\'e3\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2 \u1076\'e4\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1077\'e5\u1081\'e9\u1096\'f8\u1077\'e5\u1084\'ec, \u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8 \u1082\'ea\u1072\'e0\u1082\'ea\u1080\'e8\u1084\'ec-\u1085\'ed\u1080\'e8\u1073\'e1\u1091\'f3\u1076\'e4\u1100\'fc \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1089\'f1\u1077\'e5 \u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5 \u1080\'e8 \u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5! \u1055\'cf\u1088\'f0\u1086\'ee\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1072\'e0\u1077\'e5\u1084\'ec. \u1055\'cf\u1086\'ee\u1076\'e4\u1091\'f3\u1084\'ec\u1072\'e0\u1077\'e5\u1084\'ec \u1086\'ee \u1090\'f2\u1086\'ee\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee, \u1072\'e0 \u1082\'ea\u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb, \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2, \u1080\'e8 \u1085\'ed\u1077\'e5 \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1090\'f2\u1086\'ee\u1083\'eb\u1089\'f1\u1090\'f2\u1099\'fb\u1081\'e9, \u1093\'f5\u1086\'ee\u1088\'f0\u1086\'ee\u1096\'f8\u1086\'ee, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1073\'e1\u1099\'fb 128 \u1082\'ea\u1073\'e1, \u1072\'e0 \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1076\'e4\u1080\'e8\u1072\'e0\u1083\'eb\u1072\'e0\u1087\'ef \u1085\'ed\u1072\'e0 33.6? \u1053\'cd\u1072\'e0\u1095\'f7\u1080\'e8\u1085\'ed\u1072\'e0\u1077\'e5\u1084\'ec \u1088\'f0\u1077\'e5\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc, \u1090\'f2\u1086\'ee\u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1097\'f9\u1080\'e8! }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+bandlimin 240000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1072\'e0\u1077\'e5\u1084\'ec \u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0\u1084\'ec \u1089\'f1 IP-\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0\u1084\'ec\u1080\'e8 192.168.0.2 \u1080\'e8 192.168.0.3 \u1089\'f1\u1086\'ee \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc\u1102\'fe 24 \u1082\'ea\u1073\'e1\u1080\'e8\u1090\'f2 \u1074\'e2 \u1089\'f1\u1077\'e5\u1082\'ea\u1091\'f3\u1085\'ed\u1076\'e4\u1091\'f3, \u1087\'ef\u1088\'f0\u1080\'e8\u1095\'f7\u1077\'e5\u1084\'ec \u1101\'fd\u1090\'f2\u1086\'ee 24 \u1082\'ea\u1073\'e1\u1080\'e8\u1090\'f2 \u1087\'ef\u1088\'f0\u1080\'e8\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1090\'f2\u1089\'f1\u1103\'ff \u1085\'ed\u1077\'e5 \u1085\'ed\u1072\'e0 \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1099\'fb\u1081\'e9 \u1080\'e8\u1079\'e7 \u1101\'fd\u1090\'f2\u1080\'e8\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2, \u1072\'e0 \u1085\'ed\u1072\'e0 \u1086\'ee\u1073\'e1\u1072\'e0 \u1074\'e2 \u1089\'f1\u1086\'ee\u1074\'e2\u1086\'ee\u1082\'ea\u1091\'f3\u1087\'ef\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8, \u1090\'f2.\u1077\'e5. \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1086\'ee\u1073\'e1\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1099\'fb \u1089\'f1 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1089\'f1\u1090\'f2\u1088\'f0\u1099\'fb\u1093\'f5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1086\'ee\u1074\'e2, \u1090\'f2\u1086\'ee \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1084\'ec\u1091\'f3 \u1087\'ef\u1088\'f0\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1087\'ef\u1086\'ee 12 \u1082\'ea\u1073\'e1\u1080\'e8\u1090\'f2 \u1074\'e2 \u1089\'f1\u1077\'e5\u1082\'ea\u1091\'f3\u1085\'ed\u1076\'e4\u1091\'f3 (\u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc\u1090\'f2\u1077\'e5, \u1082\'ea\u1080\'e8\u1083\'eb\u1086\'ee\u1073\'e1\u1080\'e8\u1090\'f2, \u1072\'e0 \u1085\'ed\u1077\'e5 \u1082\'ea\u1080\'e8\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1082\'ea\u1080\'e8\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2\u1099\'fb, \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1077\'e5 \u1095\'f7\u1080\'e8\u1089\'f1\u1083\'eb\u1072\'e0 \u1085\'ed\u1072\'e0 8) }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1072\'e0 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3 \u1089\'f1\u1095\'f7\u1072\'e0\u1089\'f1\u1090\'f2\u1083\'eb\u1080\'e8\u1074\'e2\u1095\'f7\u1080\'e8\u1082\'ea\u1091\'f3 \u1077\'e5\u1076\'e4\u1080\'e8\u1085\'ed\u1086\'ee\u1083\'eb\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc 48 \u1082\'ea\u1073\'e1\u1080\'e8\u1090\'f2 \u1074\'e2 \u1089\'f1\u1077\'e5\u1082\'ea\u1091\'f3\u1085\'ed\u1076\'e4\u1091\'f3 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1080\'e8\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1091\'f3\u1102\'fe \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1090\'f2\u1086\'ee\u1078\'e6\u1077\'e5 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1080\'e8\u1084\'ec \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec \u1076\'e4\u1086\'ee 24 \u1082\'ea\u1080\'e8\u1083\'eb\u1086\'ee\u1073\'e1\u1080\'e8\u1090\'f2 \u1074\'e2 \u1089\'f1\u1077\'e5\u1082\'ea\u1091\'f3\u1085\'ed\u1076\'e4\u1091\'f3 (\u1089\'f1\u1077\'e5\u1081\'e9\u1095\'f7\u1072\'e0\u1089\'f1 \u1101\'fd\u1090\'f2\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1074\'e2 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 devel 0.6) \u1053\'cd\u1091\'f3 \u1080\'e8 \u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1094\'f6, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1074\'e2\u1099\'fb \u1093\'f5\u1086\'ee\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1101\'fd\u1090\'f2\u1080\'e8 \u1078\'e6\u1077\'e5\u1089\'f1\u1090\'f2\u1082\'ea\u1080\'e8\u1077\'e5 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1085\'ed\u1077\'e5 \u1082\'ea\u1072\'e0\u1089\'f1\u1072\'e0\u1083\'eb\u1080\'e8\u1089\'f1\u1100\'fc, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1080\'e8\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb, \u1090\'f2\u1086\'ee \u1089\'f1\u1085\'ed\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1077\'e5 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1085\'ed\u1072\'e0 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 110: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8 \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1091\'f3\u1076\'e4\u1100\'fc\u1090\'f2\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1101\'fd\u1090\'f2\u1091\'f3 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 \u1055\'cf\u1045\'c5\u1056\'d0\u1045\'c5\u1044\'c4 \u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1080\'e8\u1084\'ec\u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1084\'ec\u1080\'e8 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 - \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1076\'e4\u1086\'ee \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1091\'f3\u1076\'e4\u1086\'ee\u1074\'e2\u1083\'eb\u1077\'e5\u1090\'f2\u1074\'e2\u1086\'ee\u1088\'f0\u1103\'ff\u1102\'fe\u1097\'f9\u1077\'e5\u1075\'e3\u1086\'ee \u1091\'f3\u1089\'f1\u1083\'eb\u1086\'ee\u1074\'e2\u1080\'e8\u1103\'ff. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1080\'e8\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff-\u1079\'e7\u1072\'e0\u1082\'ea\u1072\'e0\u1095\'f7\u1080\'e8\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1084\'ec\u1099\'fb \u1091\'f3\u1078\'e6\u1077\'e5 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1083\'eb\u1080\'e8, \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1072\'e0\u1077\'e5\u1084\'ec \u1079\'e7\u1072\'e0\u1082\'ea\u1088\'f0\u1091\'f3\u1095\'f7\u1080\'e8\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1075\'e3\u1072\'e0\u1081\'e9\u1082\'ea\u1080\'e8. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0\u1084\'ec \u1087\'ef\u1086\'ee\u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3\u1090\'f2 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb deny \u1080\'e8 allow }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1089\'f1 IP .4 \u1074\'e2 \u1085\'ed\u1077\'e5\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1077\'e5\u1077\'e5 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1085\'ed\u1103\'ff\u1084\'ec }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1072\'e0\u1077\'e5\u1084\'ec \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1074\'e2 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1089\'f1 IP .4 \u1080\'e8\u1089\'f1\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1089\'f1 \u1087\'ef\u1086\'ee\u1085\'ed\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0 \u1087\'ef\u1086\'ee \u1087\'ef\u1103\'ff\u1090\'f2\u1085\'ed\u1080\'e8\u1094\'f6\u1091\'f3 \u1089\'f1 9 \u1095\'f7\u1072\'e0\u1089\'f1\u1086\'ee\u1074\'e2 \u1091\'f3\u1090\'f2\u1088\'f0\u1072\'e0 \u1076\'e4\u1086\'ee 6 \u1074\'e2\u1077\'e5\u1095\'f7\u1077\'e5\u1088\'f0\u1072\'e0, \u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1099\'fb \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1085\'ed\u1072\'e0 \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1077\'e5 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1099\'fb, \u1090\'f2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8 \u1089\'f1 FTP-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2 \u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc, \u1080\'e8 HTTPS, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1076\'e4\u1083\'eb\u1103\'ff \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea FTP \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0, \u1074\'e2 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1102\'fe\u1097\'f9\u1077\'e5\u1084\'ec \u1086\'ee\u1082\'ea\u1085\'ed\u1077\'e5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1077\'e5\u1082\'ea \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1072\'e0 (\u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1099\'fb \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0) \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1075\'e3\u1072\'e0\u1083\'eb\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1080\'e8\u1074\'e2 FTP \u1080\'e8 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc IP \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1080\'e8 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff HTTP (\u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 3128), \u1072\'e0 \u1074\'e2\u1086\'ee\u1074\'e2\u1089\'f1\u1077\'e5 \u1085\'ed\u1077\'e5 21, \u1082\'ea\u1072\'e0\u1082\'ea \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1087\'ef\u1086\'ee\u1076\'e4\u1091\'f3\u1084\'ec\u1072\'e0\u1090\'f2\u1100\'fc. \u1048\'c8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee \u1075\'e3\u1088\'f0\u1091\'f3\u1089\'f1\u1090\'f2\u1085\'ed\u1086\'ee\u1077\'e5 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5. \u1058\'d2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1072\'e0\u1103\'ff \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1072\'e0 Opera \u1087\'ef\u1086\'ee\u1076\'e4 \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0\u1086\'ee\u1084\'ec 9 \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1088\'f0\u1088\'f0\u1077\'e5\u1082\'ea\u1090\'f2\u1085\'ed\u1086\'ee \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1089\'f1 \u1092\'f4\u1090\'f2\u1087\'ef-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0\u1084\'ec\u1080\'e8, \u1090\'f2\u1088\'f0\u1077\'e5\u1073\'e1\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1084\'ec\u1080\'e8 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe, \u1090\'f2\u1072\'e0\u1082\'ea \u1095\'f7\u1090\'f2\u1086\'ee \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2\u1077\'e5\u1088\'f0\u1085\'ed\u1091\'f3\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1082\'ea \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 8, \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff IE \u1080\'e8\u1083\'eb\u1080\'e8 FireFox. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1072\'e0 \u1079\'e7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1072\'e0\u1077\'e5\u1084\'ec \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee WEB-\u1089\'f1\u1077\'e5\u1088\'f0\u1092\'f4\u1080\'e8\u1085\'ed\u1075\'e3, \u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee \u1082\'ea\u1088\'f0\u1091\'f3\u1075\'e3\u1083\'eb\u1086\'ee\u1089\'f1\u1091\'f3\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1086\'ee \u1080\'e8 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1081\'e9 \u1076\'e4\u1077\'e5\u1085\'ed\u1100\'fc \u1085\'ed\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8 \u1074\'e2\u1089\'f1\u1087\'ef\u1086\'ee\u1084\'ec\u1080\'e8\u1085\'ed\u1072\'e0\u1077\'e5\u1084\'ec (\u1074\'e2\u1099\'fb \u1074\'e2\u1077\'e5\u1076\'e4\u1100\'fc \u1091\'f3\u1078\'e6\u1077\'e5 \u1084\'ec\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1083\'eb\u1080\'e8 \u1085\'ed\u1072\'e0\u1076\'e4 man, FAQ \u1080\'e8 HowTO, \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1076\'e4\u1072\'e0 \u1083\'eb\u1080\'e8?), \u1095\'f7\u1090\'f2\u1086\'ee \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth none}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1089\'f1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0\u1082\'ea\u1091\'f3\u1102\'fe \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe \u1085\'ed\u1077\'e5 \u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2, \u1090\'f2.\u1082\'ea. \u1086\'ee\u1090\'f2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1077\'e5\u1090\'f2 \u1083\'eb\u1102\'fe\u1073\'e1\u1091\'f3\u1102\'fe \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe \u1089\'f1\u1086\'ee\u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec \u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb allow \u1080\'e8 deny \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1085\'ed\u1077\'e5\u1077\'e5 \u1090\'f2\u1077\'e5\u1088\'f0\u1103\'ff\u1102\'fe\u1090\'f2 \u1074\'e2\u1089\'f1\u1103\'ff\u1082\'ea\u1080\'e8\u1081\'e9 \u1089\'f1\u1084\'ec\u1099\'fb\u1089\'f1\u1083\'eb. \u1055\'cf\u1086\'ee\u1088\'f0\u1072\'e0 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1081\'e9\u1090\'f2\u1080\'e8 \u1085\'ed\u1072\'e0 \u1095\'f7\u1090\'f2\u1086\'ee-\u1085\'ed\u1080\'e8\u1073\'e1\u1091\'f3\u1076\'e4\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1087\'ef\u1086\'ee\u1076\'e4\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1077\'e5\u1077\'e5, \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee IP: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1049\rtlch \ltrch\fs20\lang1049\loch\f6
+ }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1085\'ed\u1086\'ee\u1074\'e2\u1072\'e0 \u1089\'f1\u1086\'ee\u1073\'e1\u1080\'e8\u1088\'f0\u1072\'e0\u1077\'e5\u1084\'ec \u1086\'ee\u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4\u1085\'ed\u1091\'f3\u1102\'fe \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1102\'fe \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1089\'f1 \u1091\'f3\u1095\'f7\u1077\'e5\u1090\'f2\u1086\'ee\u1084\'ec \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 3): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 24000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy -t}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 ACL (access client list \u8212\'97 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1086\'ee\u1074\'e2), \u1090\'f2.\u1077\'e5. \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 allow \u1080\'e8 deny \u1076\'e4\u1086\'ee\u1073\'e1\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1080\'e8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed deny * - \u1101\'fd\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1080\'e8\u1090\'f2 \u1080\'e8\u1079\'e7\u1073\'e1\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1086\'ee\u1090\'f2 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee\u1077\'e5\u1076\'e4\u1083\'eb\u1080\'e8\u1074\'e2\u1099\'fb\u1093\'f5 \u1086\'ee\u1082\'ea\u1086\'ee\u1085\'ed \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1072\'e0 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1085\'ed\u1072\'e0 \u1080\'e8 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1103\'ff, \u1074\'e2\u1099\'fb\u1089\'f1\u1082\'ea\u1072\'e0\u1082\'ea\u1080\'e8\u1074\'e2\u1072\'e0\u1102\'fe\u1097\'f9\u1080\'e8\u1093\'f5 \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1082\'ea\u1077\'e5 \u1079\'e7\u1072\'e0\u1075\'e3\u1088\'f0\u1091\'f3\u1079\'e7\u1082\'ea\u1077\'e5 \u1082\'ea\u1072\'e0\u1082\'ea\u1086\'ee\u1075\'e3\u1086\'ee-\u1085\'ed\u1080\'e8\u1073\'e1\u1091\'f3\u1076\'e4\u1100\'fc \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1097\'f9\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3\u1088\'f0\u1089\'f1\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1086\'ee\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1080\'e8\u1084\'ec \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5 \u1091\'f3\u1074\'e2\u1083\'eb\u1077\'e5\u1082\'ea\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1077\'e5 \u1079\'e7\u1072\'e0\u1085\'ed\u1103\'ff\u1090\'f2\u1080\'e8\u1077\'e5. \u1059\'d3\u1095\'f7\u1077\'e5\u1090\'f2 \u1080\'e8 \u1082\'ea\u1086\'ee\u1085\'ed\u1090\'f2\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc - \u1074\'e2\u1086\'ee\u1090\'f2 \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed \u1080\'e8\u1079\'e7 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1099\'fb\u1093\'f5 \u1085\'ed\u1072\'e0\u1096\'f8\u1080\'e8\u1093\'f5 \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1094\'f6\u1080\'e8\u1087\'ef\u1086\'ee\u1074\'e2. \u1040\'c0 \u1082\'ea\u1072\'e0\u1082\'ea\u1086\'ee\u1081\'e9 \u1078\'e6\u1077\'e5 \u1091\'f3\u1095\'f7\u1077\'e5\u1090\'f2 \u1073\'e1\u1077\'e5\u1079\'e7 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2? \u1054\'ce\u1085\'ed\u1080\'e8 \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1103\'ff\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1084\'ec\u1080\'e8 counter, countin \u1080\'e8 nocountin. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1101\'fd\u1090\'f2\u1080\'e8\u1084\'ec \u1084\'ec\u1099\'fb \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1084\'ec, \u1075\'e3\u1076\'e4\u1077\'e5 \u1091\'f3 \u1085\'ed\u1072\'e0\u1089\'f1 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1086\'ee\u1073\'e1\u1097\'f9\u1080\'e8\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2. \u1054\'ce\u1085\'ed \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1089\'f1\u1086\'ee\u1073\'e1\u1086\'ee\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1074\'e2 \u1076\'e4\u1074\'e2\u1086\'ee\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee\u1084\'ec \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5, \u1087\'ef\u1088\'f0\u1080\'e8\u1095\'f7\u1077\'e5\u1084\'ec \u1086\'ee\u1085\'ed \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1076\'e4\u1072\'e0 \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1069\'dd\u1090\'f2\u1091\'f3 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1073\'e1\u1099\'fb \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1099\'fb\u1081\'e9 \u1076\'e4\u1077\'e5\u1085\'ed\u1100\'fc (\u1095\'f7\u1072\'e0\u1089\'f1\u1090\'f2\u1086\'ee\u1090\'f2\u1072\'e0 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2 \u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1084\'ec D(\u1077\'e5\u1078\'e6\u1077\'e5\u1076\'e4\u1085\'ed\u1077\'e5\u1074\'e2\u1085\'ed\u1086\'ee) - \u1085\'ed\u1072\'e0 \u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1077\'e5 D \u1084\'ec\u1086\'ee\u1075\'e3\u1083\'eb\u1080\'e8 \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc W(\u1077\'e5\u1078\'e6\u1077\'e5\u1085\'ed\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee), M(\u1077\'e5\u1078\'e6\u1077\'e5\u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1095\'f7\u1085\'ed\u1086\'ee) \u1080\'e8\u1083\'eb\u1080\'e8 H(\u1077\'e5\u1078\'e6\u1077\'e5\u1095\'f7\u1072\'e0\u1089\'f1\u1085\'ed\u1086\'ee)) \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 C:\\3proxy\\traf\\traf \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1075\'e3\u1077\'e5\u1085\'ed\u1077\'e5\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1086\'ee\u1090\'f2\u1095\'f7\u1077\'e5\u1090\'f2\u1072\'e0 \u1074\'e2 \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1084\'ec \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1080\'e8\u1090\'f2 \u1085\'ed\u1072\'e0\u1084\'ec \u1087\'ef\u1088\'f0\u1080\'e8 \u1085\'ed\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1091\'f3 \u1079\'e7\u1072\'e0 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1081\'e9 \u1076\'e4\u1077\'e5\u1085\'ed\u1100\'fc. \u1055\'cf\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1077\'e5 \u1086\'ee\u1090\'f2\u1095\'f7\u1077\'e5\u1090\'f2\u1099\'fb \u1074\'e2 \u1073\'e1\u1083\'eb\u1086\'ee\u1082\'ea\u1085\'ed\u1086\'ee\u1090\'f2\u1077\'e5, \u1090\'f2\u1072\'e0\u1084\'ec \u1074\'e2\u1089\'f1\u1077\'e5 \u1087\'ef\u1086\'ee\u1085\'ed\u1103\'ff\u1090\'f2\u1085\'ed\u1086\'ee.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li360\ri0\lin360\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1059\'d3\u1095\'f7\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1086\'ee\u1090\'f2\u1095\'f7\u1077\'e5\u1090\'f2\u1072\'e0 \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1075\'e3\u1077\'e5\u1085\'ed\u1077\'e5\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1077\'e5 \u1089\'f1\u1091\'f3\u1090\'f2\u1086\'ee\u1082\'ea, \u1085\'ed\u1077\'e5 \u1089\'f1\u1090\'f2\u1086\'ee\u1080\'e8\u1090\'f2 \u1078\'e6\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1089\'f1\u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "1/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 50 * 192.168.0.2 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "2/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 80 * 192.168.0.3 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+countin "3/\u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2" M 30 * 192.168.0.4 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0 \u1101\'fd\u1090\'f2\u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1102\'fe\u1090\'f2 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1077\'e5 \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1095\'f7\u1085\'ed\u1099\'fb\u1077\'e5 (M) \u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1099\'fb \u1074\'e2\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1077\'e5\u1075\'e3\u1086\'ee (\u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea \u1085\'ed\u1072\'e0 \u1080\'e8\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1080\'e8\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1082\'ea\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8, \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1087\'ef\u1088\'f0\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1084\'ec\u1084\'ec\u1099\'fb \u1090\'f2\u1086\'ee\u1078\'e6\u1077\'e5 \u1086\'ee\u1073\'e1\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2 \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc) \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 \u1074\'e2 \u1084\'ec\u1077\'e5\u1075\'e3\u1072\'e0\u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0\u1093\'f5 \u1085\'ed\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1099\'fb \u1089\'f1 IP-\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0\u1084\'ec\u1080\'e8 192.168.0.2-192.168.0.4, \u1087\'ef\u1088\'f0\u1080\'e8\u1095\'f7\u1077\'e5\u1084\'ec \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1089\'f1\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1072\'e0\u1093\'f5 \u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1086\'ee\u1082\'ea\u1086\'ee\u1083\'eb\u1086\'ee\u1074\'e2.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1085\'ed\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee \u1082\'ea\u1072\'e0\u1082\'ea\u1086\'ee\u1084\'ec\u1091\'f3-\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1091\'f3\u1095\'f7\u1077\'e5\u1090\'f2 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 . \u1063\'d7\u1090\'f2\u1086\'ee \u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5? \u1057\'d1\u1072\'e0\u1084\'ec\u1086\'ee\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1077\'e5 \u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u8212\'97 \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1090\'f2\u1072\'e0\u1082\'ea\u1086\'ee\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1077\'e5 \u1086\'ee\u1085\'ed \u1085\'ed\u1077\'e5 \u1089\'f1\u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1080\'e8 \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec \u1078\'e6\u1077\'e5\u1083\'eb\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1087\'ef\u1072\'e0\u1088\'f0\u1091\'f3 \u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2. \u1048\'c8\u1083\'eb\u1080\'e8 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1091\'f3\u1102\'fe \u1082\'ea\u1074\'e2\u1086\'ee\u1090\'f2\u1091\'f3 \u1085\'ed\u1072\'e0 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0 \u1085\'ed\u1077\'e5\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1087\'ef\u1077\'e5\u1088\'f0\u1080\'e8\u1086\'ee\u1076\'e4 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8. \u1042\'c2 \u1090\'f2\u1072\'e0\u1082\'ea\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea \u1089\'f1 \u1087\'ef\u1077\'e5\u1088\'f0\u1080\'e8\u1086\'ee\u1076\'e4\u1086\'ee\u1084\'ec \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1080\'e8\u1103\'ff N (\u1085\'ed\u1080\'e8\u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0) \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee Y(\u1075\'e3\u1086\'ee\u1076\'e4).}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1072\'e0\u1078\'e6\u1085\'ed\u1086\'ee - \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2 (\u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 1,2,3) \u1085\'ed\u1077\'e5 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1089\'f1\u1086\'ee\u1074\'e2\u1087\'ef\u1072\'e0\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc. \u1048\'c8\u1084\'ec\u1077\'e5\u1085\'ed\u1072\'e0, \u1074\'e2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1077\'e5, \u1092\'f4\u1072\'e0\u1084\'ec\u1080\'e8\u1083\'eb\u1080\'e8\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1072\'e0, \u1080\'e8\u1076\'e4\u1091\'f3\u1097\'f9\u1080\'e8\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1082\'ea\u1086\'ee\u1089\'f1\u1086\'ee\u1081\'e9 \u1095\'f7\u1077\'e5\u1088\'f0\u1090\'f2\u1099\'fb - \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1099\'fb \u1076\'e4\u1083\'eb\u1103\'ff \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1072\'e0, \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1086\'ee\u1085\'ed\u1080\'e8 \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1080\'e8, \u1085\'ed\u1086\'ee \u1101\'fd\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1079\'e7\u1078\'e6\u1077\'e5... }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1091\'f3 \u1074\'e2\u1072\'e0\u1089\'f1 \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1078\'e6\u1077\'e5\u1083\'eb\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1080\'e8\u1081\'e9 \u1086\'ee\u1073\'e1\u1097\'f9\u1080\'e8\u1081\'e9 \u1080\'e8\u1079\'e7\u1088\'f0\u1072\'e0\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9, \u1090\'f2\u1086\'ee \u1085\'ed\u1077\'e5 \u1089\'f1\u1087\'ef\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1077\'e5 \u1074\'e2\u1086\'ee\u1086\'ee\u1088\'f0\u1091\'f3\u1078\'e6\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1082\'ea\u1091\'f3\u1083\'eb\u1103\'ff\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec, \u1101\'fd\u1090\'f2\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1088\'f0\u1077\'e5\u1076\'e4\u1089\'f1\u1090\'f2\u1074\'e2\u1072\'e0\u1084\'ec\u1080\'e8 3proxy. \u1044\'c4\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea, \u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1099\'fb\u1074\'e2\u1102\'fe\u1097\'f9\u1080\'e8\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1090\'f2\u1072\'e0\u1082\'ea:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+countin 100/month M 1000000 * }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+countin 101/day D 1000000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1088\'f0\u1074\'e2\u1072\'e0\u1103\'ff \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1072\'e0 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1086\'ee\u1073\'e1\u1097\'f9\u1080\'e8\u1081\'e9 \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea, \u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0\u1103\'ff \u1086\'ee\u1073\'e1\u1097\'f9\u1080\'e8\u1081\'e9 \u1076\'e4\u1085\'ed\u1077\'e5\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9. \u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1082\'ea\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1080\'e8 \u1091\'f3 \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff (\u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1091\'f3 \u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0) \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1103\'ff\u1090\'f2\u1089\'f1\u1103\'ff \u1076\'e4\u1074\'e2\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1080\'e8, \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5 \u1090\'f2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1080\'e8\u1077\'e5 \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1080\'e8 \u1076\'e4\u1085\'ed\u1077\'e5\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1080\'e8, \u1087\'ef\u1088\'f0\u1086\'ee\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1080\'e8\u1077\'e5 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 nocountin, \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1085\'ed\u1077\'e5 \u1089\'f1\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1087\'ef\u1086\'ee \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 \u1088\'f0\u1103\'ff\u1076\'e4\u1091\'f3 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nocountin * 192.168.0.4 * 110 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1084\'ec\u1077\'e5\u1097\'f9\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1055\'cf\u1045\'c5\u1056\'d0\u1045\'c5\u1044\'c4 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8 countin, \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1086\'ee\u1090\'f2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1076\'e4\u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 \u1076\'e4\u1083\'eb\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1 IP .4 \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1087\'ef\u1086\'ee 110 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0\u1076\'e4\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc \u1074\'e2 \u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1080\'e8\u1089\'f1\u1095\'f7\u1077\'e5\u1088\'f0\u1087\'ef\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 \u1089\'f1\u1091\'f3\u1097\'f9\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5 \u1089\'f1\u1086\'ee\u1077\'e5\u1076\'e4\u1080\'e8\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1085\'ed\u1077\'e5 \u1086\'ee\u1073\'e1\u1088\'f0\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1080\'e8, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1074\'e2 \u1072\'e0\u1089\'f1\u1100\'fc\u1082\'ea\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1072\'e0 \u1076\'e4\u1085\'ed\u1103\'ff \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1088\'f0\u1077\'e5\u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1080\'e8 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0. \u1048\'c8\u1083\'eb\u1080\'e8, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1086\'ee\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb, \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1077\'e5\u1074\'e2\u1099\'fb\u1096\'f8\u1072\'e0\u1102\'fe\u1097\'f9\u1080\'e8\u1081\'e9 \u1074\'e2\u1099\'fb\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u8212\'97 \u1087\'ef\u1088\'f0\u1080\'e8 \u1091\'f3\u1089\'f1\u1083\'eb\u1086\'ee\u1074\'e2\u1080\'e8\u1080\'e8, \u1095\'f7\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1085\'ed\u1077\'e5 \u1089\'f1\u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1100\'fc \u1077\'e5\u1075\'e3\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1084\'ec\u1077\'e5\u1088\'f0 \u1074\'e2 \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1094\'f6\u1077\'e5\u1089\'f1\u1089\'f1\u1072\'e0 \u1079\'e7\u1072\'e0\u1082\'ea\u1072\'e0\u1095\'f7\u1082\'ea\u1080\'e8. \u1040\'c0 \u1074\'e2\u1086\'ee\u1090\'f2 \u1089\'f1\u1086\'ee\u1079\'e7\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1086\'ee\u1074\'e2\u1086\'ee\u1077\'e5 \u1089\'f1\u1086\'ee\u1077\'e5\u1076\'e4\u1080\'e8\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1087\'ef\u1088\'f0\u1077\'e5\u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 \u1091\'f3\u1078\'e6\u1077\'e5 \u1085\'ed\u1077\'e5 \u1091\'f3\u1076\'e4\u1072\'e0\u1089\'f1\u1090\'f2\u1089\'f1\u1103\'ff.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1085\'ed\u1086\'ee\u1074\'e2\u1072\'e0 \u1089\'f1\u1086\'ee\u1073\'e1\u1080\'e8\u1088\'f0\u1072\'e0\u1077\'e5\u1084\'ec \u1086\'ee\u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4\u1085\'ed\u1091\'f3\u1102\'fe \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1102\'fe \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1089\'f1 \u1091\'f3\u1095\'f7\u1077\'e5\u1090\'f2\u1086\'ee\u1084\'ec \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 4): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 24000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nocountin * 192.168.0.4 * 110 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "1/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 50 * 192.168.0.2 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "2/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 80 * 192.168.0.3 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "3/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 30 * 192.168.0.4 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+proxy -t}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1091\'f3 \u1074\'e2\u1086\'ee\u1090\'f2, \u1084\'ec\u1099\'fb \u1091\'f3\u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8 \u1074\'e2\u1089\'f1\u1077\'e5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1080\'e8\u1083\'eb\u1080\'e8, \u1085\'ed\u1086\'ee \u1074\'e2\u1077\'e5\u1076\'e4\u1100\'fc \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2 - \u1101\'fd\u1090\'f2\u1086\'ee \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee WEB-\u1089\'f1\u1077\'e5\u1088\'f0\u1092\'f4\u1080\'e8\u1085\'ed\u1075\'e3 \u1080\'e8 FTP. \u1069\'dd\u1083\'eb\u1077\'e5\u1082\'ea\u1090\'f2\u1088\'f0\u1086\'ee\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1072\'e0! \u1042\'c2\u1086\'ee\u1090\'f2 \u1077\'e5\u1081\'e9 \u1084\'ec\u1099\'fb \u1080\'e8 \u1079\'e7\u1072\'e0\u1081\'e9\u1084\'ec\u1077\'e5\u1084\'ec\u1089\'f1\u1103\'ff. \u1044\'c4\u1083\'eb\u1103\'ff \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1072\'e0 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1080\'e8\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb. \u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1074\'e2 \u1089\'f1\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1077\'e5 3proxy \u1080\'e8\u1084\'ec\u1077\'e5\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1074\'e2\u1086\'ee\u1081\'e9 pop3-\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3p}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2\u1072\'e0\u1096\'f8\u1080\'e8 \u1084\'ec\u1101\'fd\u1081\'e9\u1083\'eb-\u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1099\'fb. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1076\'e4\u1083\'eb\u1103\'ff \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0 vasya.pupkin@mail.ru \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1084\'ec\u1086\'ee\u1077\'e5\u1075\'e3\u1086\'ee \u1083\'eb\u1102\'fe\u1073\'e1\u1080\'e8\u1084\'ec\u1086\'ee\u1075\'e3\u1086\'ee TheBat! \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1082\'ea\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb (\u1079\'e7\u1072\'e0\u1082\'ea\u1083\'eb\u1072\'e0\u1076\'e4\u1082\'ea\u1072\'e0 \u1058\'d2\u1088\'f0\u1072\'e0\u1085\'ed\u1089\'f1\u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2) \u1088\'f0\u1072\'e0\u1085\'ed\u1100\'fc\u1096\'f8\u1077\'e5 \u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1083\'eb\u1080\'e8 \u1090\'f2\u1072\'e0\u1082\'ea\u1080\'e8\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1099\'fb: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: pop.mail.ru }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: vasya.pupkin }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1086\'ee \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1091\'f3 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8, \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1080\'e8\u1093\'f5 \u1087\'ef\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: vasya.pupkin@pop.mail.ru }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1074\'e2\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5, \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc "\u1080\'e8\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff"@"POP3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0", \u1072\'e0 \u1085\'ed\u1077\'e5 \u1074\'e2\u1072\'e0\u1096\'f8 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1083\'eb\u1103\'ff \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1077\'e5\u1081\'e9 \u1085\'ed\u1072\'e0\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1077\'e5\u1097\'f9\u1077\'e5 \u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1072\'e0\u1085\'ed\u1090\'f2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1080\'e8 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: mail.example.com }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: vasya.pupkin@example.com }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1087\'ef\u1088\'f0\u1080\'e8\u1096\'f8\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc \u1073\'e1\u1099\'fb \u1087\'ef\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1080\'e8 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0 \u1085\'ed\u1072\'e0 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: vasya.pupkin@example.com@mail.example.com }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1082\'ea\u1072\'e0\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5 \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1079\'e7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc \u1074\'e2\u1099\'fb\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0\u1077\'e5\u1090\'f2 @, \u1085\'ed\u1086\'ee \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee, \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1081\'e9 \u1089\'f1\u1080\'e8\u1084\'ec\u1074\'e2\u1086\'ee\u1083\'eb, \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1103\'ff \u1076\'e4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 delimchar:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+delimchar #}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1063\'d7\u1090\'f2\u1086\'ee \u1078\'e6\u1077\'e5 \u1082\'ea\u1072\'e0\u1089\'f1\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1086\'ee\u1090\'f2\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1082\'ea\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb, \u1090\'f2\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1088\'f0\u1077\'e5\u1082\'ea\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1076\'e4\u1091\'f3\u1077\'e5\u1090\'f2 \u1074\'e2\u1086\'ee\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1076\'e4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1080\'e8\u1085\'ed\u1075\'e3\u1086\'ee\u1084\'ec: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 25 smtp.provider.ru 25}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc, \u1085\'ed\u1077\'e5 \u1084\'ec\u1091\'f3\u1076\'e4\u1088\'f0\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1103\'ff \u1083\'eb\u1091\'f3\u1082\'ea\u1072\'e0\u1074\'e2\u1086\'ee, \u1084\'ec\u1099\'fb \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1087\'ef\u1086\'ee \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 25, \u1087\'ef\u1086\'ee \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1084\'ec\u1091\'f3, \u1089\'f1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1080\'e8 \u1086\'ee\u1090\'f2\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1077\'e5 \u1089\'f1\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff, \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1082\'ea\u1080\'e8\u1076\'e4\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1085\'ed\u1072\'e0 25-\u1099\'fb\u1081\'e9 \u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0 \u1074\'e2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1076\'e4\u1083\'eb\u1103\'ff \u1091\'f3\u1087\'ef\u1086\'ee\u1084\'ec\u1103\'ff\u1085\'ed\u1091\'f3\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0 \u1074\'e2 \u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1079\'e7\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1100\'fc \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff SMTP-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+SMTP-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1077\'e5\u1084\'ec \u1089\'f1 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1080\'e8\u1085\'ed\u1075\'e3\u1086\'ee\u1084\'ec \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1073\'e1\u1099\'fb \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+tcppm -i192.168.0.1 2110 pop.mail.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1090\'f2\u1100\'fc \u1074\'e2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1072\'e0\u1085\'ed\u1090\'f2\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1072\'e0 \u1085\'ed\u1077\'e5\u1087\'ef\u1088\'f0\u1080\'e8\u1103\'ff\u1090\'f2\u1085\'ed\u1072\'e0\u1103\'ff \u1089\'f1\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1085\'ed\u1072\'e0 - \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1080\'e8 \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8 \u1085\'ed\u1072\'e0 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1093\'f5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1093\'f5 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5, \u1073\'e1\u1083\'eb\u1072\'e0\u1075\'e3\u1086\'ee \u1095\'f7\u1090\'f2\u1086\'ee \u1080\'e8\u1093\'f5 \u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1074\'e2\u1077\'e5\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc (yandex, rambler,newmail...), \u1090\'f2\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1079\'e7\u1072\'e0\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1085\'ed\u1086\'ee\u1074\'e2\u1091\'f3\u1102\'fe \u1079\'e7\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1100\'fc \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1080\'e8\u1085\'ed\u1075\'e3\u1072\'e0 \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 3110 pop.yandex.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1074\'e2\u1088\'f0\u1103\'ff\u1076\'e4 \u1083\'eb\u1080\'e8 \u1080\'e8\u1093\'f5 \u1095\'f7\u1080\'e8\u1089\'f1\u1083\'eb\u1086\'ee \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1074\'e2 \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1086\'ee\u1084\'ec \u1086\'ee\u1092\'f4\u1080\'e8\u1089\'f1\u1077\'e5 \u1087\'ef\u1088\'f0\u1077\'e5\u1074\'e2\u1099\'fb\u1089\'f1\u1080\'e8\u1090\'f2 10-15. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1099\'fb \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0 \u1074\'e2 \u1084\'ec\u1101\'fd\u1081\'e9\u1083\'eb-\u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1077\'e5 \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: vasya.pupkin }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8 \u1076\'e4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 \u1085\'ed\u1072\'e0 2110 \u1080\'e8 \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff\u1084\'ec \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1085\'ed\u1072\'e0 \u1101\'fd\u1090\'f2\u1086\'ee\u1090\'f2 \u1085\'ed\u1077\'e5\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1082\'ea\u1086\'ee\u1081\'e9 \u1080\'e8\u1079\'e7 \u1089\'f1\u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1\u1086\'ee\u1074\'e2 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1074\'e2\u1099\'fb\u1073\'e1\u1080\'e8\u1088\'f0\u1072\'e0\u1090\'f2\u1100\'fc - \u1076\'e4\u1077\'e5\u1083\'eb\u1086\'ee \u1074\'e2\u1082\'ea\u1091\'f3\u1089\'f1\u1072\'e0, \u1084\'ec\u1085\'ed\u1077\'e5 \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1099\'fb\u1095\'f7\u1077\'e5\u1085\'ed \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1080\'e8\u1085\'ed\u1075\'e3, \u1077\'e5\u1075\'e3\u1086\'ee \u1080\'e8 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1084\'ec \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1087\'ef\u1088\'f0\u1086\'ee\u1075\'e3\u1088\'f0\u1077\'e5\u1089\'f1\u1089\'f1 \u1085\'ed\u1077\'e5 \u1089\'f1\u1090\'f2\u1086\'ee\u1080\'e8\u1090\'f2 \u1085\'ed\u1072\'e0 \u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1077\'e5 \u1080\'e8 \u1090\'f2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1076\'e4\u1083\'eb\u1103\'ff \u1086\'ee\u1090\'f2\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1082\'ea\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc smtp-\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8, \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1102\'fe\u1097\'f9\u1080\'e8\u1081\'e9 \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee pop3p:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+smtpp}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1077\'e5 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1099\'fb \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1080\'e8\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1077\'e5 \u1089\'f1 pop3p: \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 \u1080\'e8 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1073\'e1\u1077\'e5\u1079\'e7 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9, \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee pop3-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec IP \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0, \u1072\'e0 \u1074\'e2 \u1087\'ef\u1086\'ee\u1083\'eb\u1077\'e5 \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1079\'e7\u1072\'e0\u1073\'e1\u1080\'e8\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1080\'e8\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff@POP_SERVER. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1085\'ed\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1077\'e5 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0 }{{\field{\*\fldinst HYPERLINK "mailto:ivan@mail.ru" }{\fldrslt {\cf2\ul\ulc0\langfe255\lang255\cf2\ul\ulc0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+ivan@mail.ru}{}}}\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1087\'ef\u1086\'ee\u1083\'eb\u1077\'e5 \u171\'ab\u1059\'d3\u1095\'f7\u1077\'e5\u1090\'f2\u1085\'ed\u1072\'e0\u1103\'ff \u1079\'e7\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1100\'fc\u187\'bb \u1074\'e2\u1085\'ed\u1086\'ee\u1089\'f1\u1080\'e8\u1084\'ec }{{\field{\*\fldinst HYPERLINK "mailto:ivan@smtp.mail.ru" }{\fldrslt {\cf2\ul\ulc0\langfe255\lang255\cf2\ul\ulc0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+ivan@smtp.mail.ru}{}}}\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 25 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1073\'e1\u1077\'e5\u1079\'e7 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9, \u1082\'ea\u1072\'e0\u1082\'ea \u1080\'e8 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc. \u1040\'c0 \u1074\'e2 \u1087\'ef\u1086\'ee\u1083\'eb\u1077\'e5 \u171\'ab\u1057\'d1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 \u1080\'e8\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1077\'e5\u1081\'e9 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb\u187\'bb \u1079\'e7\u1072\'e0\u1073\'e1\u1080\'e8\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec IP \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1086\'ee\u1073\'e1\u1080\'e8\u1088\'f0\u1072\'e0\u1077\'e5\u1084\'ec \u1086\'ee\u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4\u1085\'ed\u1091\'f3\u1102\'fe \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1102\'fe \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1089\'f1 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 pop3p (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 5): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 24000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nocountin * 192.168.0.4 * 110 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "1/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 50 * 192.168.0.2 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "2/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 80 * 192.168.0.3 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "3/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 30 * 192.168.0.4 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1054\'ce\u1063\'d7\u1058\'d2\u1040\'c0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 25}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+00}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ smtp.provider.ru 25}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop3p}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+smtpr}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1084\'ec\u1072\'e0\u1087\'ef\u1087\'ef\u1080\'e8\u1085\'ed\u1075\'e3 \u1089\'f1\u1077\'e5\u1082\'ea\u1094\'f6\u1080\'e8\u1103\'ff \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1080\'e8\u1076\'e4\u1091\'f3\u1097\'f9\u1072\'e0\u1103\'ff \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1082\'ea\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0\u1088\'f0\u1080\'e8\u1103\'ff # \u1055\'cf\u1054\'ce\u1063\'d7\u1058\'d2\u1040\'c0 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0 \u1073\'e1\u1099\'fb \u1085\'ed\u1077\'e5\u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1084\'ec\u1091\'f3: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1054\'ce\u1063\'d7\u1058\'d2\u1040\'c0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 25}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+00}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ smtp.provider.ru 25}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 2110 pop.mail.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 3110 pop.yandex.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1099\'fb, \u1085\'ed\u1072\'e0\u1074\'e2\u1077\'e5\u1088\'f0\u1085\'ed\u1086\'ee\u1077\'e5, \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1080\'e8\u1083\'eb\u1080\'e8 \u1085\'ed\u1086\'ee\u1074\'e2\u1091\'f3\u1102\'fe \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 flush. \u1052\'cc\u1099\'fb \u1077\'e5\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8\u1083\'eb\u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1089\'f1\u1073\'e1\u1088\'f0\u1086\'ee\u1089\'f1\u1072\'e0 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9. \u1047\'c7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1089\'f1\u1073\'e1\u1088\'f0\u1086\'ee\u1089\'f1 \u1085\'ed\u1077\'e5 \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1077\'e5 \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb. \u1048\'c8 \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1059\'d3\u1095\'f7\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee smtpr}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee \u1091\'f3\u1084\'ec\u1086\'ee\u1083\'eb\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1079\'e7\u1072\'e0\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 25, \u1087\'ef\u1086\'ee\u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3 \u1085\'ed\u1072\'e0 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 \u1085\'ed\u1077\'e5 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1074\'e2\u1080\'e8\u1089\'f1\u1077\'e5\u1090\'f2\u1100\'fc \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1077\'e5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8 \u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1094\'f6, \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1074\'e2\u1072\'e0\u1078\'e6\u1085\'ed\u1091\'f3\u1102\'fe \u1089\'f1\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1102\'fe\u1097\'f9\u1091\'f3\u1102\'fe \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 - WEB-\u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1 \u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff. \u1044\'c4\u1083\'eb\u1103\'ff \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea \u1085\'ed\u1077\'e5\u1084\'ec\u1091\'f3 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+admin }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1083\'eb\u1103\'ff \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1087\'ef\u1080\'e8\u1096\'f8\u1080\'e8\u1090\'f2\u1077\'e5 \u1074\'e2 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1085\'ed\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1077\'e5 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1081\'e9 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1: http://192.168.0.1:80, \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1099\'fb\u1074\'e2, \u1082\'ea\u1086\'ee\u1085\'ed\u1077\'e5\u1095\'f7\u1085\'ed\u1086\'ee, \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1085\'ed\u1072\'e0 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb admin \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1072\'e0 80. \u1042\'c2 \u1086\'ee\u1090\'f2\u1082\'ea\u1088\'f0\u1099\'fb\u1074\'e2\u1096\'f8\u1077\'e5\u1084\'ec\u1089\'f1\u1103\'ff \u1086\'ee\u1082\'ea\u1085\'ed\u1077\'e5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea \u1080\'e8\u1085\'ed\u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 \u1086\'ee \u1084\'ec\u1072\'e0\u1082\'ea\u1089\'f1\u1080\'e8\u1084\'ec\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1076\'e4\u1086\'ee\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1084\'ec\u1086\'ee\u1084\'ec \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1077\'e5 \u1080\'e8 \u1077\'e5\u1075\'e3\u1086\'ee \u1090\'f2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1077\'e5\u1084\'ec \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1080\'e8, \u1087\'ef\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1094\'f6\u1077\'e5\u1083\'eb\u1080\'e8\u1082\'ea\u1086\'ee\u1084\'ec \u1080\'e8 \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0. \u1055\'cf\u1086\'ee\u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3 \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1085\'ed\u1072\'e0 \u1101\'fd\u1090\'f2\u1091\'f3 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1091\'f3 \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1081\'e9\u1090\'f2\u1077\'e5 \u1082\'ea\u1088\'f0\u1072\'e0\u1081\'e9\u1085\'ed\u1077\'e5 \u1074\'e2\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee! \u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1091\'f3 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb admin \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7 -s, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1085\'ed\u1077\'e5 \u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1077\'e5\u1076\'e4\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0\u1076\'e4\u1086\'ee \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc \u1074\'e2 \u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1080\'e8 \u1074\'e2 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1075\'e3\u1072\'e0\u1083\'eb\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 \u1053\'cd\u1077\'e5 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1080\'e8 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1085\'ed\u1080\'e8\u1078\'e6\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1097\'f9\u1077\'e5\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1077\'e5 \u1072\'e0\u1081\'e9-\u1087\'ef\u1080\'e8 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0\u8203\'3f, \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee 192.168.0.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1049\rtlch \ltrch\fs20\lang1049\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1102\'fe \u1089\'f1\u1074\'e2\u1086\'ee\u1080\'e8\u1084\'ec \u1076\'e4\u1086\'ee\u1083\'eb\u1075\'e3\u1086\'ee\u1084\'ec \u1091\'f3\u1087\'ef\u1086\'ee\u1084\'ec\u1103\'ff\u1085\'ed\u1091\'f3\u1090\'f2\u1100\'fc \u1086\'ee \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1077\'e5 writable, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0\u1103\'ff, \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1095\'f7\u1080\'e8 \u1088\'f0\u1072\'e0\u1079\'e7\u1084\'ec\u1077\'e5\u1097\'f9\u1077\'e5\u1085\'ed\u1072\'e0 \u1074\'e2 \u1089\'f1\u1072\'e0\u1084\'ec\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1077\'e5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 WEB-\u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1, \u1085\'ed\u1086\'ee \u1080\'e8 \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1077\'e5\u1075\'e3\u1086\'ee! \u1040\'c0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1087\'ef\u1088\'f0\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1084\'ec\u1084\'ec\u1099\'fb \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1083\'eb\u1072\'e0\u1075\'e3\u1072\'e0\u1077\'e5\u1090\'f2 \u1076\'e4\u1074\'e2\u1072\'e0\u1078\'e6\u1076\'e4\u1099\'fb \u1087\'ef\u1086\'ee\u1076\'e4\u1091\'f3\u1084\'ec\u1072\'e0\u1090\'f2\u1100\'fc, \u1087\'ef\u1088\'f0\u1077\'e5\u1078\'e6\u1076\'e4\u1077\'e5 \u1095\'f7\u1077\'e5\u1084\'ec \u1074\'e2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1101\'fd\u1090\'f2\u1091\'f3 \u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1102\'fe. \u1063\'d7\u1090\'f2\u1086\'ee \u1082\'ea\u1072\'e0\u1089\'f1\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1072\'e0 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1072\'e0\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0, \u1084\'ec\u1080\'e8\u1084\'ec\u1086\'ee \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1081\'e9 \u1103\'ff \u1085\'ed\u1077\'e5 \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1081\'e9\u1090\'f2\u1080\'e8. \u1069\'dd\u1090\'f2\u1086\'ee \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 monitor, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0\u1103\'ff \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1091\'f3 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc \u1079\'e7\u1072\'e0 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1086\'ee\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 (\u1080\'e8 \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1099\'fb\u1084\'ec \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1086\'ee\u1084\'ec 3proxy.cfg, \u1085\'ed\u1086\'ee \u1080\'e8 \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1084\'ec \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1084\'ec, \u1074\'e2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1084\'ec \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 ) \u1080\'e8 \u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1086\'ee\u1073\'e1\u1085\'ed\u1072\'e0\u1088\'f0\u1091\'f3\u1078\'e6\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2 \u1085\'ed\u1077\'e5\u1081\'e9 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9 \u1085\'ed\u1077\'e5\u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1076\'e4\u1083\'eb\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee (\u1087\'ef\u1086\'ee \u1084\'ec\u1086\'ee\u1080\'e8\u1084\'ec \u1085\'ed\u1072\'e0\u1073\'e1\u1083\'eb\u1102\'fe\u1076\'e4\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff, \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 2-3 \u1089\'f1\u1077\'e5\u1082\'ea\u1091\'f3\u1085\'ed\u1076\'e4\u1099\'fb \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1089\'f1\u1086\'ee\u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff) \u1079\'e7\u1072\'e0\u1075\'e3\u1088\'f0\u1091\'f3\u1078\'e6\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1086\'ee\u1074\'e2\u1091\'f3\u1102\'fe \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe. \u1055\'cf\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1086\'ee\u1090\'f2\u1083\'eb\u1080\'e8\u1095\'f7\u1085\'ed\u1072\'e0\u1103\'ff \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1081\'e9 \u1084\'ec\u1085\'ed\u1077\'e5 \u1090\'f2\u1072\'e0\u1082\'ea \u1085\'ed\u1077\'e5 \u1093\'f5\u1074\'e2\u1072\'e0\u1090\'f2\u1072\'e0\u1083\'eb\u1086\'ee \u1074\'e2 ES Proxy! }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc \u1074\'e2 \u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1101\'fd\u1090\'f2\u1080\'e8 \u1076\'e4\u1074\'e2\u1077\'e5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb \u8212\'97 writable \u1080\'e8 monitor - \u1085\'ed\u1077\'e5\u1083\'eb\u1100\'fc\u1079\'e7\u1103\'ff \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1077\'e5.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+monitor "c:\\3proxy\\bin\\3proxy.cfg"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1072\'e0\u1079\'e7\u1091\'f3\u1084\'ec\u1077\'e5\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 \u1084\'ec\u1086\'ee\u1085\'ed\u1080\'e8\u1090\'f2\u1086\'ee\u1088\'f0 \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1089\'f1 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1099\'fb\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1086\'ee\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0. \u1044\'c4\u1077\'e5\u1083\'eb\u1086\'ee \u1074\'e2 \u1090\'f2\u1086\'ee\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1074\'e2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1077\'e5 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1099\'fb \u1089\'f1\u1086\'ee \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9, \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1081\'e9, \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1077\'e5\u1081\'e9 \u1080\'e8 \u1090\'f2.\u1076\'e4. \u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1084\'ec\u1072\'e0\u1082\'ea\u1088\'f0\u1086\'ee\u1089\'f1 $. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1086\'ee\u1081\'e9 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea IP \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2, \u1080\'e8\u1084\'ec\u1077\'e5\u1102\'fe\u1097\'f9\u1080\'e8\u1093\'f5 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1077\'e5, \u1084\'ec\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1084\'ec \u1089\'f1\u1086\'ee\u1079\'e7\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb IP_list.txt, \u1074\'e2 \u1085\'ed\u1077\'e5\u1075\'e3\u1086\'ee \u1074\'e2\u1085\'ed\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1079\'e7\u1072\'e0\u1087\'ef\u1103\'ff\u1090\'f2\u1091\'f3\u1102\'fe (\u1073\'e1\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1086\'ee\u1074\'e2!) \u1074\'e2\u1089\'f1\u1077\'e5 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1099\'fb\u1077\'e5 \u1085\'ed\u1072\'e0\u1084\'ec IP, \u1090\'f2\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0, \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1102\'fe\u1097\'f9\u1072\'e0\u1103\'ff \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1077\'e5 \u1080\'e8 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1103\'ff\u1097\'f9\u1072\'e0\u1103\'ff \u1090\'f2\u1072\'e0\u1082\'ea: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 2110,25,110 * 1-5}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * $"c:\\3proxy\\IP_list.txt" * 2110,25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1084\'ec\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1084\'ec \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1083\'eb\u1077\'e5\u1078\'e6\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1080\'e8 \u1079\'e7\u1072\'e0 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1086\'ee\u1084\'ec \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2 \u1080\'e8\u1079\'e7 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1072\'e0 IP_list.txt \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+monitor "c:\\3proxy\\bin\\IP_list.txt"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1072\'e0 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1072\'e0\u1103\'ff \u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 - \u1087\'ef\u1088\'f0\u1080\'e8 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb monitor \u1084\'ec\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1084\'ec \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1082\'ea\u1086\'ee\u1088\'f0\u1088\'f0\u1077\'e5\u1082\'ea\u1090\'f2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1080\'e8 \u1074\'e2\u1089\'f1\u1077\'e5 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1073\'e1\u1091\'f3\u1076\'e4\u1091\'f3\u1090\'f2 \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1083\'eb\u1077\'e5\u1090\'f2\u1091\'f3, \u1085\'ed\u1086\'ee \u1080\'e8, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1087\'ef\u1086\'ee\u1076\'e4\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1077\'e5\u1075\'e3\u1086\'ee \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1084\'ec \u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1072\'e0\u1085\'ed\u1090\'f2\u1086\'ee\u1084\'ec, \u1090\'f2\u1072\'e0\u1082\'ea \u1082\'ea\u1072\'e0\u1082\'ea \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1085\'ed\u1077\'e5 \u1073\'e1\u1083\'eb\u1086\'ee\u1082\'ea\u1080\'e8\u1088\'f0\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1084\'ec, \u1072\'e0 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1086\'ee\u1090\'f2\u1089\'f1\u1083\'eb\u1077\'e5\u1078\'e6\u1080\'e8\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1095\'f7\u1080\'e8\u1077\'e5 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9. \u1069\'dd\u1090\'f2\u1086\'ee \u1073\'e1\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1086\'ee\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1085\'ed\u1086\'ee. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1091\'f3 \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1076\'e4\u1074\'e2\u1072\'e0 \u1075\'e3\u1086\'ee\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1093\'f5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 - \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed \u1076\'e4\u1083\'eb\u1103\'ff \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1099\'fb \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 ADSL, \u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1081\'e9 - \u1076\'e4\u1083\'eb\u1103\'ff \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1099\'fb \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1091\'f3\u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1089\'f1\u1087\'ef\u1091\'f3\u1090\'f2\u1085\'ed\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1072\'e0, \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1080\'e8 \u1086\'ee\u1090\'f2\u1083\'eb\u1080\'e8\u1095\'f7\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee. \u1055\'cf\u1088\'f0\u1080\'e8 \u1085\'ed\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1081\'e9 \u1082\'ea\u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb \u1103\'ff \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1086\'ee\u1074\'e2\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe (\u1080\'e8\u1083\'eb\u1080\'e8 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1086\'ee\u1096\'f8\u1091\'f3 \u1074\'e2 \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1091\'f3\u1102\'fe \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1091\'f3) \u1080\'e8\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1085\'ed\u1099\'fb\u1081\'e9 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3, \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1085\'ed\u1077\'e5\u1075\'e3\u1086\'ee \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1083\'eb\u1102\'fe \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1081\'e9 - \u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1080\'e8 \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1077\'e5 \u1091\'f3\u1089\'f1\u1087\'ef\u1077\'e5\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc, \u1090\'f2\u1072\'e0\u1082\'ea \u1082\'ea\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1085\'ed\u1077\'e5 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee \u1085\'ed\u1080\'e8 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1072\'e0\u1074\'e2\u1083\'eb\u1080\'e8\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc, \u1085\'ed\u1080\'e8 \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1087\'ef\u1072\'e0\u1091\'f3\u1079\'e7\u1091\'f3. \u1054\'ce\u1090\'f2\u1083\'eb\u1080\'e8\u1095\'f7\u1085\'ed\u1072\'e0\u1103\'ff \u1092\'f4\u1080\'e8\u1095\'f7\u1072\'e0, \u1085\'ed\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1102\'fe \u1085\'ed\u1080\'e8 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1089\'f1 \u1090\'f2\u1072\'e0\u1082\'ea\u1086\'ee\u1081\'e9! \u1053\'cd\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1077\'e5 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5: \u1101\'fd\u1090\'f2\u1072\'e0 \u1092\'f4\u1080\'e8\u1095\'f7\u1072\'e0 \u1089\'f1 \u1080\'e8\u1079\'e7\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1085\'ed\u1072\'e0 \u1083\'eb\u1077\'e5\u1090\'f2\u1091\'f3 \u1085\'ed\u1077\'e5 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1074\'e2 \u1089\'f1\u1086\'ee\u1095\'f7\u1077\'e5\u1090\'f2\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1089\'f1 writable. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1072\'e0, \u1095\'f7\u1091\'f3\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1099\'fb\u1083\'eb\u1080\'e8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1076\'e4\u1074\'e2\u1077\'e5 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb - FTP-\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1080\'e8 SOCKS-\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8, \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1077\'e5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1084\'ec\u1080\'e8 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+ftppr }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+socks}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1086\'ee \u1091\'f3\u1084\'ec\u1086\'ee\u1083\'eb\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1086\'ee\u1085\'ed\u1080\'e8 \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1072\'e0\u1074\'e2\u1083\'eb\u1080\'e8\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1099\'fb 21 \u1080\'e8 1080 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1049\rtlch \ltrch\fs20\lang1049\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0 ftppr \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc "\u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1097\'f9\u1080\'e8\u1081\'e9" FTP-\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8, \u1089\'f1 \u1087\'ef\u1086\'ee\u1076\'e4\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1082\'ea\u1086\'ee\u1081\'e9 \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1086\'ee \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1085\'ed\u1072\'e0\u1073\'e1\u1086\'ee\u1088\'f0\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4 \u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1086\'ee\u1082\'ea\u1086\'ee\u1083\'eb\u1072\'e0 FTP, \u1085\'ed\u1077\'e5 \u1079\'e7\u1072\'e0\u1073\'e1\u1091\'f3\u1076\'e4\u1100\'fc\u1090\'f2\u1077\'e5 \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee FTP-\u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0 (\u1074\'e2 \u1084\'ec\u1086\'ee\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee FAR) \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 192.168.0.1 \u1085\'ed\u1072\'e0 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 21. \u1040\'c0 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0 SOCKS \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1080\'e8\u1090\'f2 \u1074\'e2\u1072\'e0\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1074\'e2\u1072\'e0\u1096\'f8\u1077\'e5\u1081\'e9 \u1083\'eb\u1102\'fe\u1073\'e1\u1080\'e8\u1084\'ec\u1086\'ee\u1081\'e9 \u1072\'e0\u1089\'f1\u1100\'fc\u1082\'ea\u1086\'ee\u1081\'e9, \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1074\'e2 \u1077\'e5\u1077\'e5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1091\'f3 SOCKS5, \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 192.168.0.1 \u1080\'e8 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 1080. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1086\'ee ICQ \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 SOCKS, \u1085\'ed\u1086\'ee \u1080\'e8 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1089\'f1\u1087\'ef\u1077\'e5\u1094\'f6\u1080\'e8\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 icqpr. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1091\'f3 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1079\'e7 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0 ICQ 123456789, \u1090\'f2\u1086\'ee \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1090\'f2\u1100\'fc:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth useronly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow 123456789}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+icqpr 5190 login.icq.com 5190}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1054\'ce\u1073\'e1\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1090\'f2\u1077\'e5 \u1074\'e2\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1085\'ed\u1072\'e0 \u1089\'f1\u1087\'ef\u1077\'e5\u1094\'f6\u1080\'e8\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1081\'e9 \u1074\'e2\u1080\'e8\u1076\'e4 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 useronly. \u1058\'d2\u1077\'e5, \u1082\'ea\u1086\'ee\u1084\'ec\u1091\'f3 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1083\'eb\u1077\'e5\u1085\'ed\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1087\'ef\u1080\'e8\u1089\'f1\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0 \u1076\'e4\u1083\'eb\u1103\'ff \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff, \u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1091\'f3\u1102\'fe \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff icqpr, \u1090\'f2\u1086\'ee \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1089\'f1\u1087\'ef\u1077\'e5\u1094\'f6\u1080\'e8\u1092\'f4\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1082\'ea\u1086\'ee\u1081\'e9. \u1053\'cd\u1077\'e5 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1075\'e3\u1072\'e0\u1083\'eb\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 \u171\'ab\u1048\'c8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8\u187\'bb, \u1072\'e0 \u1074\'e2\u1086\'ee\u1090\'f2 \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1083\'eb\u1072\'e0\u1075\'e3\u1072\'e0\u1102\'fe\u1097\'f9\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee \u1091\'f3\u1084\'ec\u1086\'ee\u1083\'eb\u1095\'f7\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 login.icq.com \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1085\'ed\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 IP \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0.\u1054\'ce\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1086\'ee\u1089\'f1\u1100\'fc \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1080\'e8\u1074\'e2\u1096\'f8\u1080\'e8\u1081\'e9\u1089\'f1\u1103\'ff \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1080\'e8\u1081\'e9 \u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1072\'e0\u1085\'ed\u1090\'f2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 6): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+service}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+monitor "c:\\3proxy\\bin\\3proxy.cfg"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+monitor "c:\\3proxy\\IP_list.txt"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 24000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nocountin * 192.168.0.4 * 110 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "1/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 50 * 192.168.0.2 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "2/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 80 * 192.168.0.3 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "3/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 30 * 192.168.0.4 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.200.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1054\'ce\u1063\'d7\u1058\'d2\u1040\'c0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3,192.168.0.4 * 25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 2500 smtp.provider.ru 25}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 2110 pop.mail.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 3110 pop.yandex.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+pop3p}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 21,1080 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ftppr }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+socks}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+icqpr}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+admin }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1047\'c7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc \u1084\'ec\u1099\'fb \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1077\'e5\u1084\'ec \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0 \u1091\'f3\u1078\'e6\u1077\'e5 \u1085\'ed\u1077\'e5 \u1082\'ea\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1083\'eb\u1086\'ee\u1078\'e6\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5, \u1072\'e0 \u1082\'ea\u1072\'e0\u1082\'ea \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1091\'f3, \u1076\'e4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 service. \u1053\'cd\u1072\'e0\u1087\'ef\u1086\'ee\u1084\'ec\u1080\'e8\u1085\'ed\u1072\'e0\u1102\'fe, \u1095\'f7\u1090\'f2\u1086\'ee \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2\u1082\'ea\u1072\'e0 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb \u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1079\'e7\u1074\'e2\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 \u1080\'e8\u1079\'e7 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1085\'ed\u1086\'ee\u1081\'e9 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1080\'e8 Windows \u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1075\'e3\u1086\'ee \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb-\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1076\'e4\u1078\'e6\u1077\'e5\u1088\'f0\u1072\'e0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+3proxy --install }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb \u1085\'ed\u1077\'e5 \u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1074\'e2\u1080\'e8\u1089\'f1\u1077\'e5\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1099\'fb\u1093\'f5 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1072\'e0\u1093\'f5, \u1083\'eb\u1102\'fe\u1073\'e1\u1091\'f3\u1102\'fe \u1080\'e8\u1079\'e7 \u1085\'ed\u1080\'e8\u1093\'f5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1089\'f1\u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1081\'e9 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 \u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1077\'e5\u1081\'e9 -p\u1053\'cd\u1054\'ce\u1052\'cc\u1045\'c5\u1056\'d0_\u1055\'cf\u1054\'ce\u1056\'d0\u1058\'d2\u1040\'c0, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy -p8080}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ftppr -p2121}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+admin -p8081}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1061\'d5\u1086\'ee\u1095\'f7\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1103\'ff\u1089\'f1\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5 \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1080\'e8\u1085\'ed \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1103\'ff \u1089\'f1\u1072\'e0\u1084\'ec \u1087\'ef\u1086\'ee\u1085\'ed\u1103\'ff\u1083\'eb \u1085\'ed\u1077\'e5 \u1089\'f1\u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3 \u1080\'e8 \u1087\'ef\u1086\'ee\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1075\'e3\u1086\'ee, \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee, \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1079\'e7\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1083\'eb\u1077\'e5\u1084\'ec\u1099\'fb \u1080\'e8 \u1091\'f3 \u1074\'e2\u1072\'e0\u1089\'f1. \u1069\'dd\u1090\'f2\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 auth strong. \u1055\'cf\u1088\'f0\u1077\'e5\u1076\'e4\u1087\'ef\u1086\'ee\u1083\'eb\u1086\'ee\u1078\'e6\u1080\'e8\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1085\'ed\u1072\'e0\u1084\'ec \u1093\'f5\u1086\'ee\u1095\'f7\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1095\'f7\u1090\'f2\u1086\'ee \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea WEB-\u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1073\'e1\u1099\'fb\u1083\'eb \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1077\'e5\u1085\'ed \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1089\'f1 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 192.168.0.4, \u1087\'ef\u1088\'f0\u1080\'e8\u1095\'f7\u1077\'e5\u1084\'ec \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1074\'e2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1096\'f8\u1080\'e8\u1074\'e2\u1072\'e0\u1083\'eb\u1089\'f1\u1103\'ff \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1102\'fe\u1097\'f9\u1072\'e0\u1103\'ff \u1089\'f1\u1077\'e5\u1082\'ea\u1094\'f6\u1080\'e8\u1103\'ff \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth strong}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+admin}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8 \u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3\u1084\'ec\u1077\'e5\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1087\'ef\u1088\'f0\u1077\'e5\u1078\'e6\u1076\'e4\u1077\'e5 \u1095\'f7\u1077\'e5\u1084\'ec \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1077\'e5\u1081\'e9 strong, \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1079\'e7\u1072\'e0\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff, \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee Administrator: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+users Administrator:CL:password}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1082\'ea\u1077\'e5 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1091\'f3 WEB-\u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1089\'f1 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 \u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1096\'f8\u1080\'e8\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc, \u1072\'e0 \u1085\'ed\u1072\'e0 \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc\u1102\'fe \u1079\'e7\u1072\'e0\u1082\'ea\u1088\'f0\u1099\'fb\u1090\'f2. \u1050\'ca\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 deny * \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1076\'e4\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1089\'f1\u1091\'f3\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1085\'ed\u1077\'e5\u1103\'ff\u1074\'e2\u1085\'ed\u1086\'ee \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1077\'e5 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0, \u1080\'e8 \u1077\'e5\u1077\'e5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1073\'e1\u1099\'fb \u1085\'ed\u1077\'e5 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc, \u1085\'ed\u1086\'ee \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1077\'e5\u1077\'e5 \u1085\'ed\u1077\'e5 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2, \u1090\'f2\u1086\'ee \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1096\'f8\u1080\'e8\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1091\'f3 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1080\'e8 \u1089\'f1 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1081\'e9 \u1084\'ec\u1072\'e0\u1096\'f8\u1080\'e8\u1085\'ed\u1099\'fb, \u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1103\'ff\u1090\'f2 \u1074\'e2\u1089\'f1\u1077\'e5 \u1088\'f0\u1072\'e0\u1074\'e2\u1085\'ed\u1086\'ee \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1089\'f1 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0 192.168.0.4. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1078\'e6\u1077\'e5 \u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc\u1103\'ff \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1072\'e0 \u1074\'e2 \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5 \u1089\'f1\u1077\'e5\u1082\'ea\u1094\'f6\u1080\'e8\u1080\'e8 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow Administrator * * 80 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1086\'ee \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea \u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1102\'fe \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1089\'f1 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1075\'e3\u1086\'ee \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8 \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1098\'fa\u1103\'ff\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1080\'e8 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1103\'ff \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff Administrator. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1078\'e6\u1076\'e4\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5, \u1087\'ef\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5\u1081\'e9 \u1074\'e2\u1080\'e8\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8, \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1080\'e8\u1079\'e7\u1088\'f0\u1072\'e0\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1080\'e8\u1084\'ec \u1085\'ed\u1072\'e0 \u1090\'f2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1080\'e8\u1081\'e9 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2. \u1044\'c4\u1083\'eb\u1103\'ff \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1090\'f2\u1072\'e0\u1082\'ea\u1091\'f3\u1102\'fe \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc, \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1086\'ee \u1083\'eb\u1080\'e8\u1096\'f8\u1100\'fc \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1077\'e5\u1084\'ec\u1091\'f3 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1091\'f3 WEB-\u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff, \u1085\'ed\u1086\'ee \u1089\'f1 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1084\'ec\u1080\'e8 \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1072\'e0\u1084\'ec\u1080\'e8, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1086\'ee\u1085\'ed \u1084\'ec\u1086\'ee\u1075\'e3 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1077\'e5\u1082\'ea\u1091\'f3\u1097\'f9\u1080\'e8\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1089\'f1\u1074\'e2\u1086\'ee\u1077\'e5\u1075\'e3\u1086\'ee (\u1080\'e8 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1089\'f1\u1074\'e2\u1086\'ee\u1077\'e5\u1075\'e3\u1086\'ee!) \u1080\'e8\u1079\'e7\u1088\'f0\u1072\'e0\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8 \u1084\'ec\u1072\'e0\u1082\'ea\u1089\'f1\u1080\'e8\u1084\'ec\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1076\'e4\u1086\'ee\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1084\'ec\u1086\'ee\u1075\'e3\u1086\'ee \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0. \u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1091\'f3 admin \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1077\'e5\u1097\'f9\u1077\'e5 \u1088\'f0\u1072\'e0\u1079\'e7, \u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0 \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1086\'ee\u1084\'ec \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 \u1080\'e8 \u1089\'f1 \u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1086\'ee\u1084\'ec -s (\u1089\'f1\u1086\'ee\u1082\'ea\u1088\'f0\u1072\'e0\u1097\'f9\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1086\'ee\u1090\'f2 \u1089\'f1\u1083\'eb\u1086\'ee\u1074\'e2\u1072\'e0 security), \u1076\'e4\u1083\'eb\u1103\'ff \u1095\'f7\u1077\'e5\u1075\'e3\u1086\'ee \u1076\'e4\u1086\'ee\u1087\'ef\u1080\'e8\u1089\'f1\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1080\'e8: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+admin -p8081 -s}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1082\'ea\u1072\'e0\u1078\'e6\u1076\'e4\u1099\'fb\u1081\'e9 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1086\'ee\u1090\'f2\u1082\'ea\u1088\'f0\u1099\'fb\u1090\'f2\u1100\'fc \u1074\'e2 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1091\'f3 http://192.168.0.1:8081/C \u1080\'e8 \u1091\'f3\u1074\'e2\u1080\'e8\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1084\'ec \u1089\'f1\u1074\'e2\u1086\'ee\u1102\'fe \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1091\'f3. \u1040\'c0 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc Administrator \u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1077\'e5 http://192.168.0.1:8080/C \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1087\'ef\u1086\'ee\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1091\'f3 \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5. \u1055\'cf\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1072\'e0\u1103\'ff \u1093\'f5\u1080\'e8\u1090\'f2\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc: \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1087\'ef\u1086\'ee IP-\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3, \u1082\'ea\u1072\'e0\u1082\'ea \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5, \u1090\'f2\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1086\'ee\u1085\'ed \u1074\'e2\u1080\'e8\u1076\'e4\u1077\'e5\u1083\'eb \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1089\'f1\u1074\'e2\u1086\'ee\u1102\'fe \u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1080\'e8\u1089\'f1\u1090\'f2\u1080\'e8\u1082\'ea\u1091\'f3, \u1085\'ed\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1073\'e1\u1088\'f0\u1072\'e0\u1091\'f3\u1079\'e7\u1077\'e5\u1088\'f0\u1072\'e0 (\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0 Internet Explorer) \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea http://192.168.0.1 \u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1089\'f1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1083\'eb \u1073\'e1\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0. \u1048\'c8\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5 \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1072\'e0 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0 admin \u1091\'f3\u1074\'e2\u1080\'e8\u1076\'e4\u1080\'e8\u1090\'f2 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1089\'f1\u1072\'e0\u1084\'ec\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0, \u1090\'f2.\u1082\'ea. \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea \u1085\'ed\u1077\'e5\u1081\'e9 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1080\'e8 \u1086\'ee\u1090\'f2\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1085\'ed\u1077\'e5\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1079\'e7 \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1103\'ff\u1089\'f1\u1085\'ed\u1086\'ee, \u1095\'f7\u1090\'f2\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1103\'ff strong \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1087\'ef\u1086\'ee\u1083\'eb\u1072\'e0\u1075\'e3\u1072\'e0\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1077\'e5\u1088\'f0\u1082\'ea\u1091\'f3 \u1087\'ef\u1086\'ee \u1085\'ed\u1072\'e0\u1080\'e8\u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1091\'f3 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2: IP \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1077\'e5\u1081\'e9 \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1094\'f6\u1080\'e8\u1080\'e8, \u1080\'e8\u1084\'ec\u1103\'ff \u1080\'e8 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff, \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1093\'f5\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2, \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1086\'ee\u1074\'e2 \u1080\'e8 \u1090\'f2.\u1076\'e4., \u1074\'e2 \u1086\'ee\u1090\'f2\u1083\'eb\u1080\'e8\u1095\'f7\u1080\'e8\u1077\'e5 \u1086\'ee\u1090\'f2 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 iponly, \u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1080\'e8\u1084\'ec\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1077\'e5\u1088\'f0\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff - \u1085\'ed\u1086\'ee \u1079\'e7\u1074\'e2\u1077\'e5\u1079\'e7\u1076\'e4\u1086\'ee\u1095\'f7\u1082\'ea\u1091\'f3 \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed\u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1074\'e2 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1077\'e5 allow \u1084\'ec\u1099\'fb \u1074\'e2\u1089\'f1\u1077\'e5 \u1078\'e6\u1077\'e5 \u1074\'e2\u1099\'fb\u1085\'ed\u1091\'f3\u1078\'e6\u1076\'e4\u1077\'e5\u1085\'ed\u1099\'fb \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1076\'e4\u1083\'eb\u1103\'ff \u1089\'f1\u1086\'ee\u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8\u1084\'ec\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8! }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1040\'c0 \u1090\'f2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1087\'ef\u1086\'ee\u1083\'eb\u1086\'ee\u1078\'e6\u1080\'e8\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1085\'ed\u1072\'e0\u1084\'ec \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee \u1088\'f0\u1103\'ff\u1076\'e4\u1091\'f3 \u1087\'ef\u1088\'f0\u1080\'e8\u1095\'f7\u1080\'e8\u1085\'ed \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1085\'ed\u1072\'e0 \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1099\'fb, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5\u1080\'e8\u1079\'e7\u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9 www.anekdot.ru. \u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 nsrecord: }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nsrecord www.anekdot.ru 127.0.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1077\'e5\u1084\'ec \u1089\'f1\u1072\'e0\u1084\'ec\u1099\'fb\u1084\'ec \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1077\'e5\u1084\'ec \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0 \u1089\'f1 \u1072\'e0\u1085\'ed\u1077\'e5\u1082\'ea\u1076\'e4\u1086\'ee\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8 \u1085\'ed\u1072\'e0 \u1083\'eb\u1086\'ee\u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1081\'e9 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1101\'fd\u1090\'f2\u1091\'f3 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 \u1074\'e2 \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1080\'e8\u1079\'e7\u1086\'ee\u1097\'f9\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec \u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1072\'e0\u1085\'ed\u1090\'f2\u1077\'e5, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+nsrecord www.anekdot.ru 87.250.251.11}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0 www.anekdot.ru \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2 www.yandex.ru. \u1042\'c2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1103\'ff\u1085\'ed\u1076\'e4\u1077\'e5\u1082\'ea\u1089\'f1\u1072\'e0 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1073\'e1\u1099\'fb \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1085\'ed\u1072\'e0 \u1082\'ea\u1086\'ee\u1088\'f0\u1087\'ef\u1086\'ee\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1074\'e2\u1085\'ed\u1099\'fb\u1081\'e9 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1074\'e2 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 0.6 \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1080\'e8\u1083\'eb\u1072\'e0\u1089\'f1\u1100\'fc \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1085\'ed\u1086\'ee \u1091\'f3\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1103\'ff\u1090\'f2\u1100\'fc \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1086\'ee\u1084\'ec \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1085\'ed\u1072\'e0 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1099\'fb. \u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1091\'f3\u1078\'e6\u1077\'e5 \u1093\'f5\u1086\'ee\u1088\'f0\u1086\'ee\u1096\'f8\u1086\'ee \u1079\'e7\u1085\'ed\u1072\'e0\u1082\'ea\u1086\'ee\u1084\'ec\u1091\'f3\u1102\'fe \u1085\'ed\u1072\'e0\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 deny \u1089\'f1 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1096\'f8\u1072\'e0\u1073\'e1\u1083\'eb\u1086\'ee\u1085\'ed\u1086\'ee\u1074\'e2, \u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * * www.anekdot.ru *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1073\'e1\u1077\'e5\u1079\'e7\u1091\'f3\u1089\'f1\u1083\'eb\u1086\'ee\u1074\'e2\u1085\'ed\u1086\'ee \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1085\'ed\u1072\'e0 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2 }{{\field{\*\fldinst HYPERLINK "http://www.anekdot.ru/" }{\fldrslt {\cf2\ul\ulc0\langfe255\lang255\cf2\ul\ulc0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+www.anekdot.ru}}}}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * * anekdot* *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\tx1080\faauto\li360\ri0\lin360\rin0\fi-360\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs18\lang1049\loch\f7
+-\tab }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1099\'fb, \u1074\'e2 \u1085\'ed\u1072\'e0\u1079\'e7\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1093\'f5 \u1074\'e2\u1089\'f1\u1090\'f2\u1088\'f0\u1077\'e5\u1095\'f7\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff anekdot.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1087\'ef\u1088\'f0\u1086\'ee\u1076\'e4\u1074\'e2\u1080\'e8\u1085\'ed\u1091\'f3\u1090\'f2\u1099\'fb\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1080\'e8 \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3\u1090\'f2 \u1086\'ee\u1073\'e1\u1086\'ee\u1081\'e9\u1090\'f2\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1090\'f2 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1090\'f2, \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1097\'f9\u1072\'e0\u1103\'ff\u1089\'f1\u1100\'fc \u1082\'ea \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1091\'f3 \u1087\'ef\u1086\'ee \u1077\'e5\u1075\'e3\u1086\'ee IP \u1080\'e8\u1083\'eb\u1080\'e8 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1103\'ff \u1072\'e0\u1085\'ed\u1086\'ee\u1085\'ed\u1080\'e8\u1084\'ec\u1085\'ed\u1099\'fb\u1077\'e5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1099\'fb.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1059\'d3 \u1089\'f1\u1077\'e5\u1073\'e1\u1103\'ff \u1103\'ff \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1102\'fe \u1094\'f6\u1077\'e5\u1083\'eb\u1099\'fb\u1081\'e9 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1096\'f8\u1072\'e0\u1073\'e1\u1083\'eb\u1086\'ee\u1085\'ed\u1086\'ee\u1074\'e2, \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee, \u1082\'ea\u1086\'ee\u1084\'ec\u1091\'f3-\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1075\'e3\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * * *sex*,*porn*,*adult*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banner*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.net*}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1063\'d7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1085\'ed\u1072\'e0 \u1079\'e7\u1072\'e0\u1075\'e3\u1088\'f0\u1086\'ee\u1084\'ec\u1086\'ee\u1078\'e6\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1076\'e4\u1083\'eb\u1080\'e8\u1085\'ed\u1085\'ed\u1099\'fb\u1084\'ec\u1080\'e8 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8, \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 include \u1080\'e8 \u1084\'ec\u1072\'e0\u1082\'ea\u1088\'f0\u1086\'ee\u1089\'f1 $. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1099\'fb\u1076\'e4\u1091\'f3\u1097\'f9\u1072\'e0\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 \u1084\'ec\u1086\'ee\u1075\'e3\u1083\'eb\u1072\'e0 \u1073\'e1\u1099\'fb \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * * $c:\\3proxy\\ban.txt}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1076\'e4\u1077\'e5 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb ban.txt \u8212\'97 \u1101\'fd\u1090\'f2\u1086\'ee \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1081\'e9 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb, \u1089\'f1\u1086\'ee\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1072\'e0\u1097\'f9\u1080\'e8\u1081\'e9 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1090\'f2\u1085\'ed\u1099\'fb\u1093\'f5 \u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3\u1088\'f0\u1089\'f1\u1086\'ee\u1074\'e2 (\u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1079\'e7\u1072\'e0\u1087\'ef\u1103\'ff\u1090\'f2\u1091\'f3\u1102\'fe, \u1073\'e1\u1077\'e5\u1079\'e7 \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1086\'ee\u1074\'e2)}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1083\'eb\u1080\'e8\u1073\'e1\u1086\'ee}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1090\'f2\u1072\'e0\u1082\'ea}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+include c\\3proxy\\ban\-include.txt}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1076\'e4\u1077\'e5 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb ban_include.txt \u1089\'f1\u1086\'ee\u1076\'e4\u1077\'e5\u1088\'f0\u1078\'e6\u1072\'e0\u1083\'eb \u1073\'e1\u1099\'fb \u1074\'e2 \u1089\'f1\u1077\'e5\u1073\'e1\u1077\'e5 \u1074\'e2\u1089\'f1\u1102\'fe \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1091\'f3 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1089\'f1 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1077\'e5\u1090\'f2\u1072\'e0\u1084\'ec\u1080\'e8.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1046\'c6\u1077\'e5\u1083\'eb\u1072\'e0\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5 \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3\u1090\'f2 \u1085\'ed\u1072\'e0\u1081\'e9\u1090\'f2\u1080\'e8 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1080\'e8 \u1073\'e1\u1072\'e0\u1085\'ed-\u1083\'eb\u1080\'e8\u1089\'f1\u1090\'f2\u1086\'ee\u1074\'e2 \u1074\'e2 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1077\'e5 \u1080\'e8 \u1072\'e0\u1076\'e4\u1072\'e0\u1087\'ef\u1090\'f2\u1080\'e8\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1091\'f3 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 3proxy, \u1073\'e1\u1083\'eb\u1072\'e0\u1075\'e3\u1086\'ee \u1095\'f7\u1090\'f2\u1086\'ee \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9 \u1085\'ed\u1072\'e0 \u1088\'f0\u1072\'e0\u1079\'e7\u1084\'ec\u1077\'e5\u1088\'f0 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1085\'ed\u1077\'e5\u1090\'f2. \u1058\'d2\u1072\'e0\u1082\'ea \u1078\'e6\u1077\'e5 \u1082\'ea\u1072\'e0\u1082\'ea \u1085\'ed\u1077\'e5\u1090\'f2 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1081\'e9 \u1085\'ed\u1072\'e0 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1099\'fb, \u1074\'e2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1077\'e5 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 include. \u1053\'cd\u1072\'e0 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1099\'fb, \u1074\'e2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1077\'e5 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1084\'ec\u1072\'e0\u1082\'ea\u1088\'f0\u1086\'ee\u1089\'f1 $, \u1089\'f1\u1091\'f3\u1097\'f9\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1074\'e2 64 \u1082\'ea\u1080\'e8\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1083\'eb\u1103\'ff \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1072\'e0 \u1076\'e4\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1077\'e5\u1081\'e9\u1096\'f8\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1073\'e1\u1080\'e8\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1082\'ea\u1080\'e8\u1077\'e5 \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1077\'e5\u1083\'eb\u1099\'fb \u1080\'e8 \u1087\'ef\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0\u1088\'f0\u1080\'e8\u1103\'ff\u1084\'ec\u1080\'e8. \u1071\'df \u1101\'fd\u1090\'f2\u1086\'ee \u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1102\'fe \u1089\'f1 \u1087\'ef\u1086\'ee\u1084\'ec\u1086\'ee\u1097\'f9\u1100\'fc \u1089\'f1\u1080\'e8\u1084\'ec\u1074\'e2\u1086\'ee\u1083\'eb\u1072\'e0 #. \u1053\'cd\u1072\'e0\u1087\'ef\u1086\'ee\u1084\'ec\u1085\'ed\u1102\'fe, \u1095\'f7\u1090\'f2\u1086\'ee \u1083\'eb\u1102\'fe\u1073\'e1\u1072\'e0\u1103\'ff \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1072\'e0 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1085\'ed\u1072\'e0\u1102\'fe\u1097\'f9\u1072\'e0\u1103\'ff\u1089\'f1\u1103\'ff \u1089\'f1 \u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1077\'e5\u1083\'eb\u1072\'e0 \u1080\'e8\u1083\'eb\u1080\'e8 \u1089\'f1 \u1089\'f1\u1080\'e8\u1084\'ec\u1074\'e2\u1086\'ee\u1083\'eb\u1072\'e0 #, \u1074\'e2\u1086\'ee\u1089\'f1\u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1080\'e8\u1084\'ec\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1084\'ec \u1082\'ea\u1072\'e0\u1082\'ea \u1082\'ea\u1086\'ee\u1084\'ec\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0\u1088\'f0\u1080\'e8\u1081\'e9. \u1042\'c2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1086\'ee\u1082\'ea\u1086\'ee\u1085\'ed\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee "\u1074\'e2\u1099\'fb\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9" \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea (\u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1103\'ff 7): }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1054\'ce\u1041\'c1\u1065\'d9\u1048\'c8\u1045\'c5}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1040\'c0\u1056\'d0\u1040\'c0\u1052\'cc\u1045\'c5\u1058\'d2\u1056\'d0\u1067\'db}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+service}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+internal 192.168.0.1 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+external 211.80.11.12}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.100.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nserver 213.153.101.1}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nscache 65536}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * * anekdot* *monitor "c:\\3proxy\\bin\\3proxy.cfg"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+monitor "c:\\3proxy\\IP_list.txt"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+log c:\\3proxy\\logs\\3proxy.log D}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+rotate 30}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+archiver rar \u8220\'93\u8221\'94"c:\\Program Files\\WinRAR\\rar.exe\u8221\'94\u8221\'94" a -df -inul %A %F}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+# \u1047\'c7\u1040\'c0\u1044\'c4\u1040\'c0\u1045\'c5\u1052\'cc \u1055\'cf\u1054\'ce\u1051\'cb\u1068\'dc\u1047\'c7\u1054\'ce\u1042\'c2\u1040\'c0\u1058\'d2\u1045\'c5\u1051\'cb\u1045\'c5\u1049\'c9, \u1054\'ce\u1043\'c3\u1056\'d0\u1040\'c0\u1053\'cd\u1048\'c8\u1063\'d7\u1045\'c5\u1053\'cd\u1048\'c8\u1071\'df \u1057\'d1\u1050\'ca\u1054\'ce\u1056\'d0\u1054\'ce\u1057\'d1\u1058\'d2\u1048\'c8 \u1048\'c8 \u1057\'d1\u1063\'d7\u1045\'c5\u1058\'d2\u1063\'d7\u1048\'c8\u1050\'ca\u1048\'c8}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+users Administrator:CL:password}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nobandlimin * * * 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 24000 * 192.168.0.2,192.168.0.3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimin 48000 * 192.168.0.4}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+bandlimout 24000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+counter "c:\\3proxy\\3proxy.3cf" D "C:\\3proxy\\traf\\traf"}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+nocountin * 192.168.0.4 * 110 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "1/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1074\'e2\u1072\'e0\u1085\'ed\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 50 * 192.168.0.2 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin "2/}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1077\'e5\u1090\'f2\u1088\'f0\u1086\'ee\u1074\'e2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+" M 80 * 192.168.0.3 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+countin "3/\u1057\'d1\u1080\'e8\u1076\'e4\u1086\'ee\u1088\'f0\u1086\'ee\u1074\'e2" M 30 * 192.168.0.4 * * *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+# \u1056\'d0\u1040\'c0\u1047\'c7\u1044\'c4\u1040\'c0\u1045\'c5\u1052\'cc WEB}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * * *sex*,*porn*,*adult*,*xxx*,*gamepark*,*vagina*,*mpp3*,*seks*,*virgin*,*pipisk*,*pastushka*,*1xuk.ru*,*teens*,*zaycev*,*lubovmorkov*,*mp3*,*bannerbank*,*yadro*,*dosug.nu*,*lesbo*,*lesbian*,*eroti*,*viporg.ru*,*intim*,*erohost*,*eross*,*teenfant*,*nudist*,*pimpserver*,*banner*,*ads.sup.com*,*rb.mail.ru*,*counter.rambler.ru*,*carol.ru*,*video.mail.ru*,*pelotka*,*akadostream*,*media.kino-govno.com*,*odnoklassniki.ru*,*vkontakte.ru*,*zhuki.mail.ru*,*fishki.net*,*dofiga.net*}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.4 * * * 1-5 09:00:00-18:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 80,443 * 1-7 00:00:00-23:59:59}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+proxy \u8211\'96a -t}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1040\'c0\u1047\'c7\u1044\'c4\u1040\'c0\u1045\'c5\u1052\'cc}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1054\'ce\u1063\'d7\u1058\'d2\u1059\'d3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+deny * 192.168.200.4 * 110 * 1-5 18:00:00-23:59:59,00:00:00-08:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * $"c:\\3proxy\\IP_list.txt" * 3110,25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 25 smtp.provider.ru 25}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 2110 pop.mail.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 3110 pop.yandex.ru 110}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+# }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1040\'c0\u1047\'c7\u1044\'c4\u1040\'c0\u1045\'c5\u1052\'cc}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ FTP }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1040\'c0\u1057\'d1\u1068\'dc\u1050\'ca\u1059\'d3}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow * 192.168.0.2,192.168.0.3 * 2110,25,110 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ftppr }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+socks}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+icqpr}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+# \u1040\'c0\u1044\'c4\u1052\'cc\u1048\'c8\u1053\'cd\u1048\'c8\u1057\'d1\u1058\'d2\u1056\'d0\u1040\'c0\u1058\'d2\u1048\'c8\u1042\'c2\u1053\'cd\u1067\'db\u1049\'c9 \u1044\'c4\u1054\'ce\u1057\'d1\u1058\'d2\u1059\'d3\u1055\'cf}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth strong}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow Administrator 192.168.0.4 * 80 * 1-5 00:00:00-20:00:00}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+admin}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+flush}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+auth iponly}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+allow *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+admin -p8081 -s}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+dnspr}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+end}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+# \u1050\'ca\u1054\'ce\u1053\'cd\u1045\'c5\u1062\'d6 \u1050\'ca\u1054\'ce\u1053\'cd\u1060\'d4\u1048\'c8\u1043\'c3\u1040\'c0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+###############################################################}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1086\'ee\u1075\'e3\u1083\'eb\u1072\'e0\u1089\'f1\u1080\'e8\u1090\'f2\u1077\'e5\u1089\'f1\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1090\'f2\u1072\'e0\u1082\'ea \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1085\'ed\u1072\'e0\u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1085\'ed\u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2\u1080\'e8\u1074\'e2\u1085\'ed\u1077\'e5\u1077\'e5 \u1080\'e8 \u1083\'eb\u1077\'e5\u1075\'e3\u1095\'f7\u1077\'e5 \u1074\'e2 \u1074\'e2\u1086\'ee\u1089\'f1\u1087\'ef\u1088\'f0\u1080\'e8\u1103\'ff\u1090\'f2\u1080\'e8\u1080\'e8. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1083\'eb\u1102\'fe\u1095\'f7 -\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1087\'ef\u1086\'ee\u1079\'e7\u1074\'e2\u1086\'ee\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2 \u1089\'f1\u1082\'ea\u1088\'f0\u1099\'fb\u1090\'f2\u1100\'fc \u1074\'e2\u1085\'ed\u1091\'f3\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1080\'e8\u1081\'e9 IP \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff, \u1074\'e2 \u1095\'f7\u1077\'e5\u1084\'ec \u1083\'eb\u1077\'e5\u1075\'e3\u1082\'ea\u1086\'ee \u1091\'f3\u1073\'e1\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3, \u1079\'e7\u1072\'e0\u1081\'e9\u1076\'e4\u1103\'ff \u1085\'ed\u1072\'e0 2ip.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1080\'e8 \u1085\'ed\u1077\'e5\u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1091\'f3\u1102\'fe \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 end. \u1042\'c2\u1089\'f1\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee \u1085\'ed\u1072\'e0\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1089\'f1\u1103\'ff \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1085\'ed\u1077\'e5\u1077\'e5, \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1084\'ec \u1085\'ed\u1077\'e5 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff. \u1050\'ca\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 end - \u1101\'fd\u1090\'f2\u1086\'ee \u1089\'f1\u1074\'e2\u1086\'ee\u1077\'e5\u1075\'e3\u1086\'ee \u1088\'f0\u1086\'ee\u1076\'e4\u1072\'e0 \u1079\'e7\u1085\'ed\u1072\'e0\u1082\'ea \u1075\'e3\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee, \u1076\'e4\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1072\'e0 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1082\'ea\u1086\'ee\u1084\'ec\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1072\'e0\u1088\'f0\u1080\'e8\u1103\'ff. \u1041\'c1\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1080\'e8\u1085\'ed\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1091\'f3\u1076\'e4\u1086\'ee\u1073\'e1\u1085\'ed\u1086\'ee \u1086\'ee\u1090\'f2\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1091\'f3\u1102\'fe \u1095\'f7\u1072\'e0\u1089\'f1\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1074\'e2 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4 \u1085\'ed\u1077\'e5\u1081\'e9 \u1101\'fd\u1090\'f2\u1091\'f3 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1088\'f0\u1086\'ee\u1084\'ec\u1077\'e5 \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1074\'e2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1083\'eb\u1080\'e8 \u1082\'ea\u1101\'fd\u1096\'f8\u1080\'e8\u1088\'f0\u1091\'f3\u1102\'fe\u1097\'f9\u1080\'e8\u1081\'e9 dns \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 dnspr, \u1090\'f2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1089\'f1\u1082\'ea\u1080\'e8\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1100\'fc\u1102\'fe\u1090\'f2\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5 \u1074\'e2 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0\u1093\'f5 \u1089\'f1\u1077\'e5\u1090\'f2\u1080\'e8 \u1085\'ed\u1072\'e0\u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2\u1100\'fc IP \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0 \u1082\'ea\u1072\'e0\u1082\'ea DNS \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1090\'f2\u1077\'e5\u1087\'ef\u1077\'e5\u1088\'f0\u1100\'fc \u1085\'ed\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4\u1082\'ea\u1080\'e8\u1081\'e9 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1081\'e9, \u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1085\'ed\u1091\'f3\u1078\'e6\u1085\'ed\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1088\'f0\u1072\'e0 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0, \u1090\'f2.\u1077\'e5. \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1081\'e9 \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1097\'f9\u1077\'e5\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8. \u1050\'ca\u1088\'f0\u1086\'ee\u1084\'ec\u1077\'e5 \u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee, \u1101\'fd\u1090\'f2\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1080\'e8\u1075\'e3\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 \u1091\'f3\u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1089\'f1\u1087\'ef\u1091\'f3\u1090\'f2\u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0, \u1082\'ea\u1072\'e0\u1082\'ea \u1101\'fd\u1090\'f2\u1086\'ee \u1073\'e1\u1099\'fb\u1083\'eb\u1086\'ee \u1091\'f3 \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1074\'e2\u1103\'ff\u1079\'e7\u1082\'ea\u1072\'e0 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff parent \u1080\'e8 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb allow. \u1056\'d0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1097\'f9\u1077\'e5\u1085\'ed \u1085\'ed\u1072\'e0 \u1083\'eb\u1086\'ee\u1082\'ea\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1084\'ec \u1093\'f5\u1086\'ee\u1089\'f1\u1090\'f2\u1077\'e5 127.0.0.1, \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2 3128 \u8212\'97 \u1090\'f2\u1080\'e8\u1087\'ef\u1080\'e8\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1081\'e9 \u1076\'e4\u1083\'eb\u1103\'ff \u1091\'f3\u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff \u1089\'f1\u1087\'ef\u1091\'f3\u1090\'f2\u1085\'ed\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1085\'ed\u1077\'e5\u1090\'f2\u1072\'e0. \u1042\'c2 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1077\'e5\u1081\'e9\u1096\'f8\u1080\'e8\u1081\'e9 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4\u1077\'e5\u1090\'f2\u1100\'fc \u1090\'f2\u1072\'e0\u1082\'ea:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+fakeresolve }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+auth iponly }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+parent 1000 http 127.0.0.1 3128}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+proxy -p8080}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1047\'c7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 fakeresolve, \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1084\'ec\u1072\'e0\u1103\'ff \u1076\'e4\u1083\'eb\u1103\'ff \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1080\'e8\u1084\'ec\u1077\'e5\u1085\'ed \u1074\'e2 \u1089\'f1\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1086\'ee\u1074\'e2 \u1085\'ed\u1072\'e0 \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee\u1103\'ff\u1097\'f9\u1080\'e8\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1077\'e5\u1086\'ee\u1073\'e1\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1084\'ec\u1086\'ee\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1089\'f1\u1083\'eb\u1086\'ee\u1074\'e2\u1080\'e8\u1077\'e5}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1074\'e2\u1099\'fb\u1096\'f8\u1077\'e5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1073\'e1\u1083\'eb\u1080\'e8\u1079\'e7\u1086\'ee\u1082\'ea \u1082\'ea \u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1103\'ff \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1102\'fe \u1074\'e2 \u1086\'ee\u1092\'f4\u1080\'e8\u1089\'f1\u1077\'e5, \u1079\'e7\u1072\'e0 \u1080\'e8\u1089\'f1\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1083\'eb\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1090\'f2\u1074\'e2\u1072\'e0 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 \u1080\'e8 \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1093\'f5 \u1089\'f1\u1087\'ef\u1077\'e5\u1094\'f6\u1080\'e8\u1092\'f4\u1080\'e8\u1095\'f7\u1085\'ed\u1099\'fb\u1093\'f5 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1086\'ee\u1074\'e2. \u1055\'cf\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1080\'e8\u1084\'ec\u1077\'e5\u1090\'f2\u1100\'fc \u1074\'e2 \u1074\'e2\u1080\'e8\u1076\'e4\u1091\'f3, \u1095\'f7\u1090\'f2\u1086\'ee \u1095\'f7\u1072\'e0\u1089\'f1\u1090\'f2\u1100\'fc \u1092\'f4\u1091\'f3\u1085\'ed\u1082\'ea\u1094\'f6\u1080\'e8\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8, \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1074\'e2 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0\u1093\'f5, \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1074\'e2 \u1074\'e2\u1077\'e5\u1088\'f0\u1089\'f1\u1080\'e8\u1080\'e8 0.6, \u1091\'f3\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1080\'e8\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee \u1082\'ea\u1086\'ee\u1085\'ed\u1082\'ea\u1088\'f0\u1077\'e5\u1090\'f2\u1085\'ed\u1099\'fb\u1084\'ec \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1084\'ec \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1074\'e2 changelog: http://3proxy.ru/current/Changelog.txt}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1087\'ef\u1088\'f0\u1080\'e8\u1079\'e7\u1085\'ed\u1072\'e0\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff, \u1095\'f7\u1090\'f2\u1086\'ee \u1084\'ec\u1099\'fb \u1085\'ed\u1077\'e5 \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1083\'eb\u1080\'e8 \u1080\'e8 \u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1080\'e8 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1099\'fb\u1093\'f5 \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1077\'e5\u1082\'ea \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0. \u1045\'c5\u1089\'f1\u1090\'f2\u1100\'fc \u1077\'e5\u1097\'f9\u1077\'e5 \u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1074\'e2\u1072\'e0\u1084\'ec \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3\u1090\'f2 \u1087\'ef\u1086\'ee\u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee\u1073\'e1\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff - dialer, maxconn, system, i, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1080\'e8\u1089\'f1\u1100\'fc \u1085\'ed\u1077\'e5 \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1084\'ec\u1080\'e8 \u1074\'e2\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5, \u1076\'e4\u1072\'e0 \u1080\'e8 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1086\'ee\u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1079\'e7\u1080\'e8\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1099\'fb\u1093\'f5 \u1089\'f1\u1086\'ee\u1095\'f7\u1077\'e5\u1090\'f2\u1072\'e0\u1085\'ed\u1080\'e8\u1081\'e9 \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4 \u1085\'ed\u1072\'e0\u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1073\'e1\u1086\'ee\u1075\'e3\u1072\'e0\u1095\'f7\u1077\'e5. \u1053\'cd\u1086\'ee \u1103\'ff \u1080\'e8 \u1085\'ed\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb \u1089\'f1\u1077\'e5\u1073\'e1\u1077\'e5 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1095\'f7\u1091\'f3 \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5-\u1084\'ec\u1077\'e5\u1085\'ed\u1077\'e5\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1086\'ee\u1077\'e5 \u1086\'ee\u1087\'ef\u1080\'e8\u1089\'f1\u1072\'e0\u1085\'ed\u1080\'e8\u1077\'e5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1080\'e8\u1074\'e2\u1096\'f8\u1080\'e8\u1089\'f1\u1100\'fc \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1089\'f1\u1082\'ea\u1088\'f0\u1086\'ee\u1084\'ec\u1085\'ed\u1086\'ee\u1081\'e9 - \u1088\'f0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1088\'f0\u1103\'ff\u1076\'e4\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2, \u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1082\'ea\u1072\'e0\u1082\'ea \u1084\'ec\u1072\'e0\u1090\'f2\u1088\'f0\u1077\'e5\u1096\'f8\u1082\'ea\u1072\'e0 - \u1086\'ee\u1090\'f2 \u1089\'f1\u1072\'e0\u1084\'ec\u1086\'ee\u1075\'e3\u1086\'ee \u1084\'ec\u1072\'e0\u1083\'eb\u1077\'e5\u1085\'ed\u1100\'fc\u1082\'ea\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8 \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1076\'e4\u1086\'ee \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1086\'ee \u1089\'f1\u1083\'eb\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8 "\u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee" - \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1085\'ed\u1072\'e0 \u1080\'e8\u1093\'f5 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1077\'e5 \u1087\'ef\u1086\'ee\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1099\'fb\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1094\'f6\u1080\'e8\u1087\'ef\u1099\'fb. \u1053\'cd\u1077\'e5\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1103\'ff \u1085\'ed\u1072\'e0 \u1082\'ea\u1072\'e0\u1078\'e6\u1091\'f3\u1097\'f9\u1091\'f3\u1102\'fe\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1099\'fb\u1081\'e9 \u1074\'e2\u1079\'e7\u1075\'e3\u1083\'eb\u1103\'ff\u1076\'e4 \u1089\'f1\u1083\'eb\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1100\'fc \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1082\'ea\u1080\'e8 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1085\'ed\u1072\'e0\u1076\'e4\u1077\'e5\u1102\'fe\u1089\'f1\u1100\'fc, \u1074\'e2 \u1087\'ef\u1088\'f0\u1086\'ee\u1094\'f6\u1077\'e5\u1089\'f1\u1089\'f1\u1077\'e5 \u1095\'f7\u1090\'f2\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1090\'f2\u1077\'e5\u1082\'ea\u1089\'f1\u1090\'f2\u1072\'e0 \u1074\'e2\u1099\'fb \u1091\'f3\u1078\'e6\u1077\'e5 \u1091\'f3\u1073\'e1\u1077\'e5\u1076\'e4\u1080\'e8\u1083\'eb\u1080\'e8\u1089\'f1\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2 \u1085\'ed\u1077\'e5\u1084\'ec \u1074\'e2\u1089\'f1\u1077\'e5 \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee. \u1054\'ce\u1087\'ef\u1103\'ff\u1090\'f2\u1100\'fc \u1078\'e6\u1077\'e5 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1087\'ef\u1088\'f0\u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1084\'ec\u1084\'ec\u1099\'fb \u1086\'ee\u1073\'e1\u1077\'e5\u1097\'f9\u1072\'e0\u1077\'e5\u1090\'f2 \u1082\'ea \u1088\'f0\u1077\'e5\u1083\'eb\u1080\'e8\u1079\'e7\u1091\'f3 \u1089\'f1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3 \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1084\'ec \u1080\'e8 \u1087\'ef\u1086\'ee\u1085\'ed\u1103\'ff\u1090\'f2\u1085\'ed\u1099\'fb\u1084\'ec. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1072\'e0\u1078\'e6\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc, \u1082\'ea\u1072\'e0\u1082\'ea \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2 \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0. \u1054\'ce\u1095\'f7\u1077\'e5\u1085\'ed\u1100\'fc \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee - \u1074\'e2 \u1087\'ef\u1086\'ee\u1088\'f0\u1103\'ff\u1076\'e4\u1082\'ea\u1077\'e5 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4 \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1091\'f3 \u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1100\'fc, \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1083\'eb\u1080\'e8 \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1085\'ed\u1072\'e0 \u1090\'f2\u1086\'ee\u1090\'f2 \u1080\'e8\u1083\'eb\u1080\'e8 \u1080\'e8\u1085\'ed\u1086\'ee\u1081\'e9 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1 - \u1086\'ee\u1085\'ed \u1080\'e8\u1097\'f9\u1077\'e5\u1090\'f2 \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1077\'e5 \u1091\'f3\u1076\'e4\u1086\'ee\u1074\'e2\u1083\'eb\u1077\'e5\u1090\'f2\u1074\'e2\u1086\'ee\u1088\'f0\u1103\'ff\u1102\'fe\u1097\'f9\u1077\'e5\u1077\'e5 \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1086\'ee \u1080\'e8\u1079\'e7 \u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1082\'ea\u1072\'e0 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1086\'ee\u1074\'e2 (ACL) \u1080\'e8 \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1074\'e2 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1080\'e8\u1080\'e8 \u1089\'f1 \u1085\'ed\u1080\'e8\u1084\'ec, \u1076\'e4\u1072\'e0\u1078\'e6\u1077\'e5 \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1085\'ed\u1077\'e5\u1075\'e3\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1077\'e5 \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1072\'e0. \u1048\'c8 \u1077\'e5\u1097\'f9\u1077\'e5 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee - \u1074\'e2\u1089\'f1\u1077\'e5 \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1099\'fb \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1044\'c4\u1054\'ce \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1102\'fe\u1097\'f9\u1077\'e5\u1081\'e9 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb - \u1076\'e4\u1086\'ee\u1073\'e1\u1088\'f0\u1086\'ee \u1087\'ef\u1086\'ee\u1078\'e6\u1072\'e0\u1083\'eb\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0 \u1092\'f4\u1086\'ee\u1088\'f0\u1091\'f3\u1084\'ec http://3proxy.ru/board.html. \u1042\'c2\u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec, \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1091\'f3\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1090\'f2\u1080\'e8\u1087\'ef\u1072\'e0 "\u1072\'e0 \u1087\'ef\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec\u1091\'f3 \u1091\'f3 \u1084\'ec\u1077\'e5\u1085\'ed\u1103\'ff \u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1077\'e5 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1077\'e5\u1090\'f2?" \u1079\'e7\u1076\'e4\u1077\'e5\u1089\'f1\u1100\'fc, \u1082\'ea\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1086\'ee, \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1080\'e8 \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1074\'e2\u1072\'e0\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1077\'e5 \u1095\'f7\u1090\'f2\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1093\'f5\u1086\'ee\u1090\'f2\u1103\'ff \u1073\'e1\u1099\'fb FAQ \u1080\'e8 HowTO \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1085\'ed\u1086\'ee \u1080\'e8 \u1103\'ff\u1074\'e2\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1086\'ee\u1073\'e1\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1084\'ec. \u1053\'cd\u1072\'e0 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1089\'f1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1072\'e0 \u1084\'ec\u1086\'ee\u1075\'e3\u1091\'f3 \u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1074\'e2\u1077\'e5\u1090\'f2\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1089\'f1 \u1088\'f0\u1091\'f3\u1089\'f1\u1089\'f1\u1082\'ea\u1086\'ee\u1103\'ff\u1079\'e7\u1099\'fb\u1095\'f7\u1085\'ed\u1099\'fb\u1093\'f5 FAQ \u1080\'e8 HowTO, \u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1084\'ec \u1076\'e4\u1083\'eb\u1103\'ff \u1089\'f1\u1088\'f0\u1072\'e0\u1074\'e2\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1095\'f7\u1080\'e8\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1072\'e0\u1085\'ed\u1075\'e3\u1083\'eb\u1086\'ee\u1103\'ff\u1079\'e7\u1099\'fb\u1095\'f7\u1085\'ed\u1099\'fb\u1077\'e5 FAQ \u1080\'e8 HowTO, \u1103\'ff \u1074\'e2 \u1085\'ed\u1080\'e8\u1093\'f5 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1083\'eb \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1074\'e2\u1079\'e7\u1072\'e0\u1080\'e8\u1084\'ec\u1086\'ee\u1076\'e4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1103\'ff\u1102\'fe\u1097\'f9\u1080\'e8\u1077\'e5 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2\u1099\'fb. \u1053\'cd\u1091\'f3 \u1080\'e8 \u1088\'f0\u1072\'e0\u1079\'e7\u1091\'f3\u1084\'ec\u1077\'e5\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff, \u1084\'ec\u1077\'e5\u1076\'e4\u1080\'e8\u1090\'f2\u1072\'e0\u1094\'f6\u1080\'e8\u1103\'ff \u1085\'ed\u1072\'e0\u1076\'e4 man (\u1091\'f3\u1074\'e2\u1099\'fb, \u1086\'ee\u1085\'ed \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1085\'ed\u1072\'e0 \u1072\'e0\u1085\'ed\u1075\'e3\u1083\'eb\u1080\'e8\u1081\'e9\u1089\'f1\u1082\'ea\u1086\'ee\u1084\'ec) \u1076\'e4\u1072\'e0\u1089\'f1\u1090\'f2 \u1074\'e2\u1072\'e0\u1084\'ec \u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1099\'fb \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1080\'e8 \u1085\'ed\u1072\'e0 \u1074\'e2\u1089\'f1\u1077\'e5 \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1087\'ef\u1086\'ee \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3 \u1079\'e7\u1072\'e0\u1084\'ec\u1077\'e5\u1095\'f7\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1091\'f3. \u1052\'cc\u1086\'ee\u1075\'e3\u1091\'f3 \u1091\'f3\u1090\'f2\u1074\'e2\u1077\'e5\u1088\'f0\u1078\'e6\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1101\'fd\u1090\'f2\u1086\'ee \u1087\'ef\u1086\'ee \u1089\'f1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 \u1086\'ee\u1087\'ef\u1099\'fb\u1090\'f2\u1091\'f3. \u1053\'cd\u1072\'e0 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1096\'f8\u1080\'e8\u1077\'e5\u1089\'f1\u1103\'ff \u1077\'e5\u1097\'f9\u1077\'e5 \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0\u1081\'e9\u1090\'f2\u1080\'e8 \u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1099\'fb \u1074\'e2 changelog, \u1085\'ed\u1091\'f3 \u1072\'e0 \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1080\'e8 \u1090\'f2\u1072\'e0\u1084\'ec \u1074\'e2\u1099\'fb \u1085\'ed\u1077\'e5 \u1085\'ed\u1072\'e0\u1081\'e9\u1076\'e4\u1077\'e5\u1090\'f2\u1077\'e5 \u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1072\'e0 - \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1080\'e8\u1090\'f2, \u1091\'f3\u1078\'e6\u1077\'e5 \u1087\'ef\u1086\'ee\u1088\'f0\u1072\'e0 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1 \u1085\'ed\u1072\'e0 \u1092\'f4\u1086\'ee\u1088\'f0\u1091\'f3\u1084\'ec\u1077\'e5. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1086\'ee\u1090\'f2 30 \u1084\'ec\u1072\'e0\u1088\'f0\u1090\'f2\u1072\'e0 2010 \u1075\'e3\u1086\'ee\u1076\'e4\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1056\'d0\u1072\'e0\u1089\'f1\u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8\u1084\'ec \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1095\'f7\u1072\'e0\u1097\'f9\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1086\'ee \u1074\'e2\u1086\'ee\u1079\'e7\u1085\'ed\u1080\'e8\u1082\'ea\u1072\'e0\u1102\'fe\u1090\'f2 \u1091\'f3 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+3}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+proxy}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. \u1040\'c0 \u1090\'f2\u1072\'e0\u1082\'ea\u1078\'e6\u1077\'e5 \u1085\'ed\u1077\'e5\u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1077\'e5 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1085\'ed\u1099\'fb\u1077\'e5, \u1085\'ed\u1086\'ee \u1085\'ed\u1077\'e5\u1086\'ee\u1095\'f7\u1077\'e5\u1074\'e2\u1080\'e8\u1076\'e4\u1085\'ed\u1099\'fb\u1077\'e5 \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+1. \u1050\'ca\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1103\'ff\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+MAC}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+-}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1074\'e2\u1086\'ee\u1081\'e9 \u1082\'ea\u1072\'e0\u1088\'f0\u1090\'f2\u1099\'fb \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1083\'eb\u1103\'ff \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+system}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+system arp -s 1.2.3.4 AA:BB:CC:DD:EE:FF}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+ }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1101\'fd\u1090\'f2\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1072\'e0 \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1076\'e4\u1072\'e0\u1077\'e5\u1090\'f2 \u1086\'ee\u1090\'f2\u1089\'f1\u1099\'fb\u1083\'eb\u1082\'ea\u1091\'f3 \u1082\'ea \u1089\'f1\u1080\'e8\u1089\'f1\u1090\'f2\u1077\'e5\u1084\'ec\u1085\'ed\u1086\'ee\u1081\'e9 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1077\'e5}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+arp}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1072\'e0\u1103\'ff \u1087\'ef\u1088\'f0\u1080\'e8\u1074\'e2\u1103\'ff\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+IP}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1082\'ea \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1084\'ec\u1091\'f3 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+MAC}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+-}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+2. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1083\'eb\u1080\'e8 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1094\'f6\u1077\'e5\u1083\'eb\u1099\'fb\u1077\'e5 \u1089\'f1\u1077\'e5\u1090\'f2\u1082\'ea\u1080\'e8, \u1090\'f2.\u1077\'e5. \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1084\'ec\u1072\'e0\u1089\'f1\u1082\'ea\u1091\'f3 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+192.168.100.* }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1095\'f7\u1080\'e8\u1089\'f1\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+IP}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1072\'e0, \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+CIDR}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1082\'ea \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1091\'f3:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+allow}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ * 192.168.100/32}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+3}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. \u1045\'c5\u1089\'f1\u1090\'f2\u1100\'fc \u1083\'eb\u1080\'e8 \u1076\'e4\u1080\'e8\u1085\'ed\u1072\'e0\u1084\'ec\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1082\'ea\u1080\'e8\u1081\'e9 \u1096\'f8\u1077\'e5\u1081\'e9\u1087\'ef\u1077\'e5\u1088\'f0 \u1074\'e2 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+3}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+proxy}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1090\'f2.\u1077\'e5. \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1083\'eb\u1080\'e8 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1088\'f0\u1080\'e8\u1086\'ee\u1088\'f0\u1080\'e8\u1090\'f2\u1077\'e5\u1090\'f2\u1099\'fb \u1087\'ef\u1086\'ee \u1089\'f1\u1082\'ea\u1086\'ee\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8 \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0 \u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2 (\u1084\'ec\u1072\'e0\u1088\'f0\u1090\'f2 2010) \u1085\'ed\u1077\'e5\u1090\'f2, \u1085\'ed\u1086\'ee \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0 \u1086\'ee\u1073\'e1\u1077\'e5\u1097\'f9\u1072\'e0\u1083\'eb \u1087\'ef\u1088\'f0\u1080\'e8\u1082\'ea\u1088\'f0\u1091\'f3\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+4. \u1045\'c5\u1089\'f1\u1090\'f2\u1100\'fc \u1083\'eb\u1080\'e8 \u1072\'e0\u1085\'ed\u1090\'f2\u1080\'e8\u1074\'e2\u1080\'e8\u1088\'f0\u1091\'f3\u1089\'f1\u1085\'ed\u1099\'fb\u1081\'e9 \u1084\'ec\u1086\'ee\u1076\'e4\u1091\'f3\u1083\'eb\u1100\'fc \u1074\'e2 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+3}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+proxy}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1080\'e8 \u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2 \u1085\'ed\u1072\'e0 \u1074\'e2\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1 3.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+5. \u1043\'c3\u1076\'e4\u1077\'e5 \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1080\'e8\u1079\'e7\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0 \u1083\'eb\u1086\'ee\u1075\'e3\u1086\'ee\u1074\'e2 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+WRSpy}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+http://www.wrspy.ru/download/WrSpySetup.rar - \u1089\'f1\u1089\'f1\u1099\'fb\u1083\'eb\u1082\'ea\u1072\'e0 \u1085\'ed\u1072\'e0 \u1080\'e8\u1085\'ed\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1083\'eb\u1103\'ff\u1090\'f2\u1086\'ee\u1088\'f0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+http://www.wrspy.ru/download/WrSpyUp166.rar - \u1089\'f1\u1089\'f1\u1099\'fb\u1083\'eb\u1082\'ea\u1072\'e0 \u1085\'ed\u1072\'e0 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1085\'ed\u1077\'e5\u1077\'e5 \u1086\'ee\u1073\'e1\u1085\'ed\u1086\'ee\u1074\'e2\u1083\'eb\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+6. \u1050\'ca\u1072\'e0\u1082\'ea \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1075\'e3\u1083\'eb\u1086\'ee\u1073\'e1\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1099\'fb \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0, \u1086\'ee\u1090\'f2\u1085\'ed\u1086\'ee\u1089\'f1\u1103\'ff\u1097\'f9\u1080\'e8\u1077\'e5\u1089\'f1\u1103\'ff \u1082\'ea\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5\u1084\'ec \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1084\'ec \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0\u1084\'ec?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1099\'fb \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0 \u1074\'e2\u1099\'fb\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1103\'ff\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1085\'ed\u1077\'e5\u1087\'ef\u1086\'ee\u1089\'f1\u1088\'f0\u1077\'e5\u1076\'e4\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff, \u1090\'f2.\u1077\'e5. \u1082\'ea\u1072\'e0\u1082\'ea \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1077\'e5\u1085\'ed\u1072\'e0 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 "proxy" - \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1072\'e0 \u1089\'f1\u1090\'f2\u1072\'e0\u1088\'f0\u1090\'f2\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1 \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1086\'ee\u1081\'e9 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1077\'e5\u1081\'e9 \u1080\'e8 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1101\'fd\u1090\'f2\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1095\'f7\u1080\'e8\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1072\'e0\u1103\'ff \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0. \u1055\'cf\u1086\'ee\u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec\u1091\'f3 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1076\'e4\u1072\'e0 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1085\'ed\u1077\'e5\u1081\'e9 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9, \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1085\'ed\u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1075\'e3\u1086\'ee \u1085\'ed\u1077\'e5 \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1086\'ee \u1073\'e1\u1099\'fb\u1090\'f2\u1100\'fc, \u1082\'ea\u1088\'f0\u1086\'ee\u1084\'ec\u1077\'e5 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1091\'f3\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 \u1089\'f1\u1083\'eb\u1077\'e5\u1076\'e4\u1091\'f3\u1102\'fe\u1097\'f9\u1077\'e5\u1081\'e9 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb. \u1045\'c5\u1089\'f1\u1083\'eb\u1080\'e8 \u1095\'f7\u1090\'f2\u1086\'ee-\u1090\'f2\u1086\'ee \u1080\'e8 \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1072\'e0 \u1089\'f1\u1083\'eb\u1091\'f3\u1078\'e6\u1073\'e1\u1099\'fb - \u1101\'fd\u1090\'f2\u1086\'ee \u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1089\'f1\u1086\'ee\u1074\'e2\u1087\'ef\u1072\'e0\u1076\'e4\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5, \u1074\'e2 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1081\'e9 \u1084\'ec\u1086\'ee\u1084\'ec\u1077\'e5\u1085\'ed\u1090\'f2 \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+7. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1083\'eb\u1080\'e8 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1085\'ed\u1077\'e5\u1089\'f1\u1082\'ea\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1093\'f5 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1086\'ee\u1074\'e2 \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0 parent \u1089\'f1 \u1085\'ed\u1091\'f3\u1083\'eb\u1077\'e5\u1074\'e2\u1099\'fb\u1084\'ec \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1086\'ee\u1084\'ec \u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1072\'e0\u1074\'e2\u1083\'eb\u1080\'e8\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1084\'ec\u1086\'ee\u1075\'e3\u1086\'ee \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1\u1072\'e0. \u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow vasya }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+parent 1000 http 192.168.1.1 0 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow petya }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+parent 1000 http 192.168.2.1 0 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1091\'f3\u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1072\'e0\u1074\'e2\u1083\'eb\u1080\'e8\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1074\'e2\u1085\'ed\u1077\'e5\u1096\'f8\u1085\'ed\u1080\'e8\u1081\'e9 \u1080\'e8\u1085\'ed\u1090\'f2\u1077\'e5\u1088\'f0\u1092\'f4\u1077\'e5\u1081\'e9\u1089\'f1 192.168.1.1 \u1076\'e4\u1083\'eb\u1103\'ff vasya \u1080\'e8 192.168.2.1 \u1076\'e4\u1083\'eb\u1103\'ff petya}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+8. \u1050\'ca\u1072\'e0\u1082\'ea \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1080\'e8\u1090\'f2\u1100\'fc \u1092\'f4\u1080\'e8\u1083\'eb\u1100\'fc\u1090\'f2\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1102\'fe \u1085\'ed\u1077\'e5\u1078\'e6\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1093\'f5 \u1088\'f0\u1077\'e5\u1089\'f1\u1091\'f3\u1088\'f0\u1089\'f1\u1086\'ee\u1074\'e2 (\u1085\'ed\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1076\'e4\u1083\'eb\u1103\'ff \u1096\'f8\u1082\'ea\u1086\'ee\u1083\'eb\u1099\'fb)?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1086\'ee\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5\u1089\'f1\u1100\'fc }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+DNS}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+ \u1057\'d1\u1080\'e8\u1089\'f1\u1090\'f2\u1077\'e5\u1084\'ec\u1099\'fb \u1082\'ea\u1086\'ee\u1085\'ed\u1090\'f2\u1077\'e5\u1085\'ed\u1090\'f2\u1085\'ed\u1086\'ee\u1081\'e9 \u1092\'f4\u1080\'e8\u1083\'eb\u1100\'fc\u1090\'f2\u1088\'f0\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+nserver}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ 81.176.72.82}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+nserver}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ 81.176.72.83}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2\u1089\'f1\u1077\'e5 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1099\'fb \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1089\'f1\u1080\'e8\u1089\'f1\u1090\'f2\u1077\'e5\u1084\'ec\u1086\'ee\u1081\'e9 \u1080\'e8 \u1087\'ef\u1088\'f0\u1072\'e0\u1082\'ea\u1090\'f2\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1082\'ea\u1080\'e8 \u1085\'ed\u1080\'e8 \u1086\'ee\u1076\'e4\u1085\'ed\u1072\'e0 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6\u1072\'e0 \u1089\'f1 \u1087\'ef\u1086\'ee\u1088\'f0\u1085\'ed\u1086\'ee \u1085\'ed\u1077\'e5 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1085\'ed\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1072\'e0\u1074\'e2\u1076\'e4\u1072\'e0, \u1089\'f1\u1080\'e8\u1089\'f1\u1090\'f2\u1077\'e5\u1084\'ec\u1072\'e0 \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1078\'e6\u1077\'e5\u1089\'f1\u1090\'f2\u1082\'ea\u1086\'ee \u1092\'f4\u1080\'e8\u1083\'eb\u1100\'fc\u1090\'f2\u1088\'f0\u1091\'f3\u1077\'e5\u1090\'f2 \u1082\'ea\u1086\'ee\u1085\'ed\u1090\'f2\u1077\'e5\u1085\'ed\u1090\'f2 \u1080\'e8 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1082\'ea\u1088\'f0\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1076\'e4\u1086\'ee\u1074\'e2\u1086\'ee\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1084\'ec\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee \u1089\'f1\u1088\'f0\u1072\'e0\u1074\'e2\u1085\'ed\u1080\'e8\u1090\'f2\u1077\'e5\u1100\'fc\u1085\'ed\u1086\'ee \u1073\'e1\u1077\'e5\u1079\'e7\u1086\'ee\u1087\'ef\u1072\'e0\u1089\'f1\u1085\'ed\u1099\'fb\u1093\'f5 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1086\'ee\u1074\'e2.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+9. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1083\'eb\u1080\'e8 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1079\'e7\u1076\'e4\u1077\'e5\u1083\'eb\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc \u1074\'e2 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1086\'ee\u1084\'ec \u1082\'ea\u1083\'eb\u1080\'e8\u1077\'e5\u1085\'ed\u1090\'f2\u1077\'e5, \u1086\'ee\u1090\'f2\u1083\'eb\u1080\'e8\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1086\'ee\u1090\'f2 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+#}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+delimchar}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+10. }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1082\'ea \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1073\'e1\u1077\'e5\u1079\'e7\u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5 \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1086\'ee\u1077\'e5 \u1086\'ee\u1085\'ed \u1085\'ed\u1077\'e5 \u1089\'f1\u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1074\'e2\u1099\'fb\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1087\'ef\u1088\'f0\u1080\'e8\u1085\'ed\u1094\'f6\u1080\'e8\u1087\'ef\u1077\'e5.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+11. \u1050\'ca\u1072\'e0\u1082\'ea \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1102\'fe \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1086\'ee\u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1082\'ea\u1086\'ee\u1090\'f2\u1086\'ee\u1088\'f0\u1099\'fb\u1081\'e9 \u1086\'ee\u1085\'ed \u1084\'ec\u1086\'ee\u1078\'e6\u1077\'e5\u1090\'f2 \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1074\'e2 \u1083\'eb\u1102\'fe\u1073\'e1\u1086\'ee\u1077\'e5 \u1074\'e2\u1088\'f0\u1077\'e5\u1084\'ec\u1103\'ff, \u1072\'e0 \u1085\'ed\u1077\'e5 \u1090\'f2\u1086\'ee\u1083\'eb\u1100\'fc\u1082\'ea\u1086\'ee \u1074\'e2 \u1076\'e4\u1072\'e0\u1085\'ed\u1085\'ed\u1099\'fb\u1081\'e9 \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1094\'f6 \u1080\'e8\u1083\'eb\u1080\'e8 \u1076\'e4\u1077\'e5\u1085\'ed\u1100\'fc?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1048\'c8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ Y - }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1085\'ed\u1072\'e0}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1086\'ee\u1076\'e4}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+, N - }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1085\'ed\u1080\'e8\u1082\'ea\u1086\'ee\u1075\'e3\u1076\'e4\u1072\'e0}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1076\'e4\u1083\'eb\u1103\'ff}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1072\'e0\u1088\'f0\u1072\'e0\u1084\'ec\u1077\'e5\u1090\'f2\u1088\'f0\u1072\'e0}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+type: }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+1}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+2}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. \u1055\'cf\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec\u1091\'f3 \u1086\'ee\u1075\'e3\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea\u1072\'e0 \u1085\'ed\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1075\'e3\u1076\'e4\u1072\'e0 \u1076\'e4\u1077\'e5\u1081\'e9\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1087\'ef\u1088\'f0\u1080\'e8 \u1089\'f1\u1082\'ea\u1072\'e0\u1095\'f7\u1080\'e8\u1074\'e2\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1086\'ee\u1074\'e2?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+3proxy \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1077\'e5\u1088\'f0\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2 \u1079\'e7\u1072\'e0\u1082\'ea\u1072\'e0\u1095\'f7\u1082\'ea\u1091\'f3 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1072\'e0 \u1080\'e8 \u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2 \u1085\'ed\u1077\'e5 \u1103\'ff\u1074\'e2\u1083\'eb\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1078\'e6\u1077\'e5\u1089\'f1\u1090\'f2\u1082\'ea\u1080\'e8\u1084\'ec. \u1053\'cd\u1086\'ee \u1087\'ef\u1088\'f0\u1080\'e8 \u1085\'ed\u1072\'e0\u1095\'f7\u1072\'e0\u1083\'eb\u1077\'e5 \u1079\'e7\u1072\'e0\u1082\'ea\u1072\'e0\u1095\'f7\u1082\'ea\u1080\'e8, \u1087\'ef\u1086\'ee \u1074\'e2\u1086\'ee\u1079\'e7\u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8, \u1087\'ef\u1088\'f0\u1086\'ee\u1074\'e2\u1077\'e5\u1088\'f0\u1103\'ff\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1091\'f3\u1082\'ea\u1083\'eb\u1072\'e0\u1076\'e4\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1083\'eb\u1080\'e8 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb \u1087\'ef\u1086\'ee \u1088\'f0\u1072\'e0\u1079\'e7\u1084\'ec\u1077\'e5\u1088\'f0\u1072\'e0\u1084\'ec \u1074\'e2 \u1085\'ed\u1086\'ee\u1088\'f0\u1084\'ec\u1091\'f3.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+1}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+3}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. \u1050\'ca\u1072\'e0\u1082\'ea\u1086\'ee\u1081\'e9 \u1092\'f4\u1086\'ee\u1088\'f0\u1084\'ec\u1072\'e0\u1090\'f2 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1072\'e0\u1093\'f5 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2, \u1079\'e7\u1072\'e0\u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec\u1099\'fb\u1093\'f5 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 counter ?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1072\'e0 - \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea*4GB + \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea. \u1055\'cf\u1088\'f0\u1086\'ee\u1089\'f1\u1090\'f2\u1086\'ee \u1074\'e2 \u1094\'f6\u1077\'e5\u1083\'eb\u1099\'fb\u1081\'e9 \u1090\'f2\u1080\'e8\u1087\'ef \u1073\'e1\u1086\'ee\u1083\'eb\u1100\'fc\u1096\'f8\u1077\'e5 4GB \u1085\'ed\u1077\'e5 \u1074\'e2\u1083\'eb\u1072\'e0\u1079\'e7\u1080\'e8\u1090\'f2.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0\u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0, \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1072\'e0 00100 0000000021 3468801478 \u1089\'f1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1091\'f3\u1077\'e5\u1090\'f2 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1091\'f3 \u1085\'ed\u1086\'ee\u1084\'ec\u1077\'e5\u1088\'f0 100 \u1089\'f1\u1086\'ee \u1079\'e7\u1085\'ed\u1072\'e0\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec 21*4 + 3=89\u1043\'c3\u1073\'e1.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+1}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+4}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+. \u1052\'cc\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1083\'eb\u1080\'e8 \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5 \u1085\'ed\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5 \u1079\'e7\u1074\'e2\u1077\'e5\u1079\'e7\u1076\'e4\u1086\'ee\u1095\'f7\u1082\'ea\u1080\'e8 \u1074\'e2 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+ACL}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+* \u1074\'e2 \u1082\'ea\u1086\'ee\u1085\'ed\u1094\'f6\u1077\'e5 ACL \u1084\'ec\u1086\'ee\u1078\'e6\u1085\'ed\u1086\'ee \u1074\'e2\u1086\'ee\u1086\'ee\u1073\'e1\u1097\'f9\u1077\'e5 \u1085\'ed\u1077\'e5 \u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc. \u1058\'d2\u1086\'ee \u1077\'e5\u1089\'f1\u1090\'f2\u1100\'fc \u1074\'e2\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1077\'e5 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1095\'f7\u1077\'e5\u1081\'e9 \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1082\'ea\u1072\'e0 \u1074\'e2\u1080\'e8\u1076\'e4\u1072\'e0:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+allow}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+user}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+15. }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1082\'ea \u1072\'e0\u1076\'e4\u1084\'ec\u1080\'e8\u1085\'ed\u1080\'e8\u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1090\'f2\u1086\'ee\u1088\'f0\u1091\'f3 \u1089\'f1\u1084\'ec\u1086\'ee\u1090\'f2\u1088\'f0\u1077\'e5\u1090\'f2\u1100\'fc \u1086\'ee\u1073\'e1\u1097\'f9\u1080\'e8\u1081\'e9 (\u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1077\'e5\u1081\'e9) \u1089\'f1\u1091\'f3\u1090\'f2\u1086\'ee\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1080\'e8\u1083\'eb\u1080\'e8 \u1084\'ec\u1077\'e5\u1089\'f1\u1103\'ff\u1095\'f7\u1085\'ed\u1099\'fb\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin 100/month M 1000000 * }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+countin 101/day D 1000000 *}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+1}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+6}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+.}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1082\'ea \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1100\'fc \u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1103\'ff\u1084\'ec \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1082\'ea }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+ICQ}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1085\'ed\u1077\'e5 \u1076\'e4\u1072\'e0\u1074\'e2\u1072\'e0\u1103\'ff \u1087\'ef\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef\u1072\'e0 \u1082\'ea \u1083\'eb\u1102\'fe\u1073\'e1\u1099\'fb\u1084\'ec \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0\u1084\'ec?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+allow * [\u1089\'f1\u1087\'ef\u1080\'e8\u1089\'f1\u1086\'ee\u1082\'ea \u1089\'f1\u1074\'e2\u1086\'ee\u1080\'e8\u1093\'f5 \u1089\'f1\u1077\'e5\u1090\'f2\u1077\'e5\u1081\'e9] 64.12.0.0/16,205.188.0.0/16 3190 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+deny * }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1086\'ee \u1083\'eb\u1091\'f3\u1095\'f7\u1096\'f8\u1077\'e5 \u1080\'e8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1100\'fc }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+icqpr}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+17. }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1050\'ca\u1072\'e0\u1082\'ea \u1074\'e2 3proxy \u1088\'f0\u1072\'e0\u1079\'e7\u1088\'f0\u1077\'e5\u1096\'f8\u1080\'e8\u1090\'f2\u1100\'fc \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1086\'ee\u1082\'ea\u1086\'ee\u1083\'eb\u1072\'e0 IMAP \u1076\'e4\u1083\'eb\u1103\'ff outlook?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1081\'e9 tcppm \u1076\'e4\u1083\'eb\u1103\'ff \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1072\'e0 143. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+18. \u1055\'cf\u1086\'ee\u1095\'f7\u1077\'e5\u1084\'ec\u1091\'f3 \u1085\'ed\u1077\'e5 \u1087\'ef\u1088\'f0\u1080\'e8\u1093\'f5\u1086\'ee\u1076\'e4\u1080\'e8\u1090\'f2 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8 \u1090\'f2\u1072\'e0\u1082\'ea\u1086\'ee\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1049\rtlch \ltrch\fs20\lang1049\loch\f6
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+tcppm -i192.168.0.1 25 mail.infobox.ru 25 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+smtpp }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1058\'d2\u1099\'fb \u1087\'ef\u1099\'fb\u1090\'f2\u1072\'e0\u1077\'e5\u1096\'f8\u1100\'fc\u1089\'f1\u1103\'ff \u1085\'ed\u1072\'e0 \u1086\'ee\u1076\'e4\u1085\'ed\u1086\'ee\u1084\'ec 25-\u1086\'ee\u1084\'ec \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1091\'f3 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1090\'f2\u1080\'e8\u1090\'f2\u1100\'fc 2 \u1088\'f0\u1072\'e0\u1079\'e7\u1085\'ed\u1099\'fb\u1093\'f5 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1080\'e8\u1089\'f1\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+19. \u1045\'c5\u1089\'f1\u1090\'f2\u1100\'fc \u1089\'f1\u1077\'e5\u1090\'f2\u1100\'fc 10.10.1.0/24, \u1076\'e4\u1083\'eb\u1103\'ff \u1085\'ed\u1077\'e5\u1077\'e5 \u1079\'e7\u1072\'e0\u1074\'e2\u1077\'e5\u1076\'e4\u1077\'e5\u1085\'ed \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea: countin "60/\u1061\'d5\u1061\'d5\u1061\'d5" M 5000 * 10.10.1.0/24 * * *, \u1090\'f2\u1088\'f0\u1077\'e5\u1073\'e1\u1091\'f3\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1087\'ef\u1086\'ee\u1076\'e4\u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2 \u1076\'e4\u1083\'eb\u1103\'ff \u1076\'e4\u1074\'e2\u1091\'f3\u1093\'f5 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2 \u1080\'e8\u1079\'e7 \u1101\'fd\u1090\'f2\u1086\'ee\u1081\'e9 \u1089\'f1\u1077\'e5\u1090\'f2\u1080\'e8 \u1086\'ee\u1090\'f2\u1076\'e4\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u1086\'ee\u1090\'f2 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1086\'ee\u1075\'e3\u1086\'ee. \u1055\'cf\u1088\'f0\u1080\'e8 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec, \u1077\'e5\u1089\'f1\u1083\'eb\u1080\'e8 \u1086\'ee\u1089\'f1\u1085\'ed\u1086\'ee\u1074\'e2\u1085\'ed\u1072\'e0\u1103\'ff \u1089\'f1\u1077\'e5\u1090\'f2\u1100\'fc \u1091\'f3\u1078\'e6\u1077\'e5 \u1074\'e2\u1099\'fb\u1073\'e1\u1088\'f0\u1072\'e0\u1083\'eb\u1072\'e0 \u1089\'f1\u1074\'e2\u1086\'ee\u1081\'e9 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea, \u1091\'f3 \u1101\'fd\u1090\'f2\u1080\'e8\u1093\'f5 \u1076\'e4\u1074\'e2\u1091\'f3\u1093\'f5 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2 \u1076\'e4\u1086\'ee\u1089\'f1\u1090\'f2\u1091\'f3\u1087\'ef \u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1077\'e5\u1085\'ed \u1089\'f1\u1086\'ee\u1093\'f5\u1088\'f0\u1072\'e0\u1085\'ed\u1103\'ff\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff \u1074\'e2 \u1087\'ef\u1088\'f0\u1077\'e5\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1093\'f5 \u1080\'e8\u1093\'f5 \u1089\'f1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1083\'eb\u1080\'e8\u1084\'ec\u1080\'e8\u1090\'f2\u1086\'ee\u1074\'e2. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1090\'f2\u1100\'fc \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1099\'fb\u1077\'e5 \u1076\'e4\u1074\'e2\u1072\'e0 \u1089\'f1\u1095\'f7\u1077\'e5\u1090\'f2\u1095\'f7\u1080\'e8\u1082\'ea\u1072\'e0 \u1076\'e4\u1083\'eb\u1103\'ff \u1074\'e2\u1099\'fb\u1076\'e4\u1077\'e5\u1083\'eb\u1077\'e5\u1085\'ed\u1085\'ed\u1099\'fb\u1093\'f5 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1\u1086\'ee\u1074\'e2, \u1079\'e7\u1072\'e0\u1090\'f2\u1077\'e5\u1084\'ec \u1076\'e4\u1072\'e0\u1090\'f2\u1100\'fc \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1091\'f3 nocount}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+in}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+, \u1095\'f7\u1090\'f2\u1086\'ee\u1073\'e1\u1099\'fb \u1080\'e8\u1093\'f5 \u1090\'f2\u1088\'f0\u1072\'e0\u1092\'f4\u1080\'e8\u1082\'ea \u1085\'ed\u1077\'e5 \u1087\'ef\u1086\'ee\u1087\'ef\u1072\'e0\u1076\'e4\u1072\'e0\u1083\'eb \u1074\'e2 \u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee\u1081\'e9.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1072\'e0 countin \u1080\'e8 nocountin \u1086\'ee\u1073\'e1\u1088\'f0\u1072\'e0\u1073\'e1\u1072\'e0\u1090\'f2\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1074\'e2 \u1087\'ef\u1086\'ee\u1088\'f0\u1103\'ff\u1076\'e4\u1082\'ea\u1077\'e5 \u1086\'ee\u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1076\'e4\u1080\'e8 \u1076\'e4\u1086\'ee \u1087\'ef\u1077\'e5\u1088\'f0\u1074\'e2\u1086\'ee\u1075\'e3\u1086\'ee \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1072\'e0 nocountin/nocountout.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+20. }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1080\'e8 \u1072\'e0\u1074\'e2\u1090\'f2\u1086\'ee\u1088\'f0\u1080\'e8\u1079\'e7\u1072\'e0\u1094\'f6\u1080\'e8\u1080\'e8 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+strong}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1077\'e5\u1088\'f0\u1080\'e8\u1086\'ee\u1076\'e4\u1080\'e8\u1095\'f7\u1077\'e5\u1089\'f1\u1082\'ea\u1080\'e8 \u1087\'ef\u1088\'f0\u1080\'e8 \u1079\'e7\u1072\'e0\u1075\'e3\u1088\'f0\u1091\'f3\u1079\'e7\u1082\'ea\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1072\'e0\u1085\'ed\u1080\'e8\u1094\'f6 \u1087\'ef\u1086\'ee\u1103\'ff\u1074\'e2\u1083\'eb\u1103\'ff\u1102\'fe\u1090\'f2\u1089\'f1\u1103\'ff \u1086\'ee\u1082\'ea\u1085\'ed\u1072\'e0 \u1079\'e7\u1072\'e0\u1087\'ef\u1088\'f0\u1086\'ee\u1089\'f1\u1072\'e0 \u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1085\'ed\u1072\'e0-\u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1103\'ff. \u1050\'ca\u1072\'e0\u1082\'ea \u1080\'e8\u1079\'e7\u1073\'e1\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc\u1089\'f1\u1103\'ff?}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1055\'cf\u1086\'ee\u1087\'ef\u1088\'f0\u1086\'ee\u1073\'e1\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5 \u1087\'ef\u1086\'ee\u1089\'f1\u1083\'eb\u1077\'e5 \u1074\'e2\u1089\'f1\u1077\'e5\u1093\'f5 }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+allow}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1086\'ee\u1089\'f1\u1090\'f2\u1072\'e0\u1074\'e2\u1080\'e8\u1090\'f2\u1100\'fc }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+deny}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ *}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+- \u1048\'c8\u1089\'f1\u1087\'ef\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1091\'f3\u1081\'e9\u1090\'f2\u1077\'e5 \u1086\'ee\u1087\'ef\u1094\'f6\u1080\'e8\u1102\'fe }{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+-}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f7
+n}{\cf1\kerning1\dbch\af11\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f7
+ }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1088\'f0\u1080\'e8 \u1079\'e7\u1072\'e0\u1087\'ef\u1091\'f3\u1089\'f1\u1082\'ea\u1077\'e5 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1103\'ff \u1086\'ee\u1090\'f2 }{\cf1\b\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+25}{\cf1\b\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+ \u1084\'ec\u1072\'e0\u1103\'ff 2015 \u1075\'e3\u1086\'ee\u1076\'e4\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1042\'c2 \u1089\'f1\u1074\'e2\u1103\'ff\u1079\'e7\u1080\'e8 \u1089\'f1 \u1090\'f2\u1077\'e5\u1084\'ec, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2 \u1087\'ef\u1088\'f0\u1086\'ee\u1096\'f8\u1083\'eb\u1086\'ee\u1084\'ec \u1075\'e3\u1086\'ee\u1076\'e4\u1091\'f3 \u1087\'ef\u1088\'f0\u1086\'ee\u1080\'e8\u1079\'e7\u1086\'ee\u1096\'f8\u1077\'e5\u1083\'eb \u1084\'ec\u1072\'e0\u1089\'f1\u1089\'f1\u1086\'ee\u1074\'e2\u1099\'fb\u1081\'e9 \u1089\'f1\u1083\'eb\u1080\'e8\u1074\'e2 \u1087\'ef\u1072\'e0\u1088\'f0\u1086\'ee\u1083\'eb\u1077\'e5\u1081\'e9 \u1089\'f1 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2 \u1085\'ed\u1072\'e0 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+mail.ru }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+yandex.ru, }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1082\'ea\u1086\'ee\u1084\'ec\u1087\'ef\u1072\'e0\u1085\'ed\u1080\'e8\u1080\'e8 \u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1096\'f8\u1083\'eb\u1080\'e8 \u1085\'ed\u1072\'e0 \u1073\'e1\u1086\'ee\u1083\'eb\u1077\'e5\u1077\'e5 \u1073\'e1\u1077\'e5\u1079\'e7\u1086\'ee\u1087\'ef\u1072\'e0\u1089\'f1\u1085\'ed\u1099\'fb\u1081\'e9 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1081\'e9 \u1087\'ef\u1088\'f0\u1086\'ee\u1090\'f2\u1086\'ee\u1082\'ea\u1086\'ee\u1083\'eb }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+TLS }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8 \u171\'ab\u1090\'f2\u1088\'f0\u1072\'e0\u1076\'e4\u1080\'e8\u1094\'f6\u1080\'e8\u1086\'ee\u1085\'ed\u1085\'ed\u1099\'fb\u1077\'e5\u187\'bb \u1089\'f1\u1093\'f5\u1077\'e5\u1084\'ec\u1099\'fb \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1099\'fb \u1089\'f1 \u1101\'fd\u1090\'f2\u1080\'e8\u1084\'ec\u1080\'e8 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1084\'ec\u1080\'e8 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8 \u1095\'f7\u1077\'e5\u1088\'f0\u1077\'e5\u1079\'e7 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+3proxy }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1077\'e5\u1088\'f0\u1077\'e5\u1089\'f1\u1090\'f2\u1072\'e0\u1083\'eb\u1080\'e8 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1072\'e0\u1090\'f2\u1100\'fc.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1054\'ce\u1087\'ef\u1080\'e8\u1089\'f1\u1099\'fb\u1074\'e2\u1072\'e0\u1102\'fe \u1072\'e0\u1082\'ea\u1090\'f2\u1091\'f3\u1072\'e0\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1081\'e9 \u1089\'f1\u1087\'ef\u1086\'ee\u1089\'f1\u1086\'ee\u1073\'e1 \u1088\'f0\u1072\'e0\u1073\'e1\u1086\'ee\u1090\'f2\u1099\'fb \u1089\'f1 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0\u1084\'ec\u1080\'e8 \u1085\'ed\u1072\'e0 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+TLS (}{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1082\'ea\u1072\'e0\u1089\'f1\u1072\'e0\u1077\'e5\u1090\'f2\u1089\'f1\u1103\'ff \u1082\'ea\u1072\'e0\u1082\'ea \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2 \u1085\'ed\u1077\'e5\u1087\'ef\u1086\'ee\u1089\'f1\u1088\'f0\u1077\'e5\u1076\'e4\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1085\'ed\u1072\'e0 \u1101\'fd\u1090\'f2\u1080\'e8\u1093\'f5 \u1087\'ef\u1083\'eb\u1086\'ee\u1097\'f9\u1072\'e0\u1076\'e4\u1082\'ea\u1072\'e0\u1093\'f5, \u1090\'f2\u1072\'e0\u1082\'ea \u1080\'e8 \u1082\'ea\u1086\'ee\u1088\'f0\u1087\'ef\u1086\'ee\u1088\'f0\u1072\'e0\u1090\'f2\u1080\'e8\u1074\'e2\u1085\'ed\u1086\'ee\u1081\'e9 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1099\'fb \u1089\'f1 \u1093\'f5\u1086\'ee\u1089\'f1\u1090\'f2\u1080\'e8\u1085\'ed\u1075\'e3\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0 \u1103\'ff\u1085\'ed\u1076\'e4\u1077\'e5\u1082\'ea\u1089\'f1\u1077\'e5).}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1080\'e8\u1074\'e2\u1077\'e5\u1076\'e4\u1091\'f3 \u1089\'f1\u1074\'e2\u1086\'ee\u1081\'e9 \u1082\'ea\u1091\'f3\u1089\'f1\u1086\'ee\u1082\'ea \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1072\'e0:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+tcppm 1995 pop.mail.ru 995}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+tcppm 1465 smtp.mail.ru 465}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+tcppm 2995 pop.yandex.ru 995}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+tcppm 2465 smtp.yandex.ru 465}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1086\'ee\u1086\'ee\u1090\'f2\u1074\'e2\u1077\'e5\u1090\'f2\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee \u1074\'e2 \u1092\'f4\u1072\'e0\u1081\'e9\u1083\'eb\u1077\'e5 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+hosts, }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1085\'ed\u1072\'e0\u1093\'f5\u1086\'ee\u1076\'e4\u1103\'ff\u1097\'f9\u1077\'e5\u1084\'ec\u1089\'f1\u1103\'ff \u1074\'e2 \u1087\'ef\u1072\'e0\u1087\'ef\u1082\'ea\u1077\'e5 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+Windows\\system32\\drivers\\etc, }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1085\'ed\u1072\'e0\u1076\'e4\u1086\'ee \u1073\'e1\u1091\'f3\u1076\'e4\u1077\'e5\u1090\'f2 \u1074\'e2\u1085\'ed\u1077\'e5\u1089\'f1\u1090\'f2\u1080\'e8 \u1076\'e4\u1086\'ee\u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1080\'e8\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc\u1085\'ed\u1099\'fb\u1077\'e5 \u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1095\'f7\u1082\'ea\u1080\'e8:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+192.168.200.1\tab pop.mail.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+192.168.200.1\tab smtp.mail.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+192.168.200.1\tab pop.yandex.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+192.168.200.1\tab smtp.yandex.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1075\'e3\u1076\'e4\u1077\'e5 192.168.200.1 \u8212\'97 \u1101\'fd\u1090\'f2\u1086\'ee }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+IP }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1088\'f0\u1086\'ee\u1074\'e2\u1077\'e5\u1088\'f0\u1080\'e8\u1090\'f2\u1100\'fc, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2\u1089\'f1\u1077\'e5 \u1087\'ef\u1088\'f0\u1072\'e0\u1074\'e2\u1080\'e8\u1083\'eb\u1100\'fc\u1085\'ed\u1086\'ee \u8212\'97 \u1082\'ea\u1086\'ee\u1084\'ec\u1072\'e0\u1085\'ed\u1076\'e4\u1086\'ee\u1081\'e9 }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+ping }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+pop.mail.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+- }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1076\'e4\u1086\'ee\u1083\'eb\u1078\'e6\u1085\'ed\u1099\'fb \u1087\'ef\u1086\'ee\u1083\'eb\u1091\'f3\u1095\'f7\u1072\'e0\u1090\'f2\u1100\'fc \u1086\'ee\u1090\'f2\u1082\'ea\u1083\'eb\u1080\'e8\u1082\'ea \u1086\'ee\u1090\'f2 \u1087\'ef\u1088\'f0\u1086\'ee\u1082\'ea\u1089\'f1\u1080\'e8-\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1072\'e0, \u1072\'e0\u1085\'ed\u1072\'e0\u1083\'eb\u1086\'ee\u1075\'e3\u1080\'e8\u1095\'f7\u1085\'ed\u1086\'ee \u1076\'e4\u1083\'eb\u1103\'ff \u1076\'e4\u1088\'f0\u1091\'f3\u1075\'e3\u1080\'e8\u1093\'f5 \u1087\'ef\u1086\'ee\u1095\'f7\u1090\'f2\u1086\'ee\u1074\'e2\u1099\'fb\u1093\'f5 \u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0\u1086\'ee\u1074\'e2.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1044\'c4\u1072\'e0\u1083\'eb\u1077\'e5\u1077\'e5 \u1074\'e2 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+TheBat }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8\u1083\'eb\u1080\'e8 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+OE }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1076\'e4\u1077\'e5\u1083\'eb\u1072\'e0\u1077\'e5\u1084\'ec \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1080\'e8 \u1089\'f1\u1086\'ee\u1075\'e3\u1083\'eb\u1072\'e0\u1089\'f1\u1085\'ed\u1086\'ee \u1080\'e8\u1085\'ed\u1089\'f1\u1090\'f2\u1088\'f0\u1091\'f3\u1082\'ea\u1094\'f6\u1080\'e8\u1080\'e8 \u1085\'ed\u1072\'e0 \u1089\'f1\u1072\'e0\u1081\'e9\u1090\'f2\u1072\'e0\u1093\'f5 }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+mail.ru }{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1080\'e8\u1083\'eb\u1080\'e8 \u1103\'ff\u1085\'ed\u1076\'e4\u1077\'e5\u1082\'ea\u1089\'f1\u1072\'e0 \u1079\'e7\u1072\'e0 \u1086\'ee\u1076\'e4\u1085\'ed\u1080\'e8\u1084\'ec \u1080\'e8\u1089\'f1\u1082\'ea\u1083\'eb\u1102\'fe\u1095\'f7\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5\u1084\'ec: \u1074\'e2\u1084\'ec\u1077\'e5\u1089\'f1\u1090\'f2\u1086\'ee \u1089\'f1\u1090\'f2\u1072\'e0\u1085\'ed\u1076\'e4\u1072\'e0\u1088\'f0\u1090\'f2\u1085\'ed\u1099\'fb\u1093\'f5 \u1087\'ef\u1086\'ee\u1088\'f0\u1090\'f2\u1086\'ee\u1074\'e2 995 \u1080\'e8 465 \u1091\'f3\u1082\'ea\u1072\'e0\u1079\'e7\u1099\'fb\u1074\'e2\u1072\'e0\u1077\'e5\u1084\'ec \u1090\'f2\u1077\'e5, \u1095\'f7\u1090\'f2\u1086\'ee \u1074\'e2 \u1085\'ed\u1072\'e0\u1096\'f8\u1077\'e5\u1084\'ec \u1082\'ea\u1086\'ee\u1085\'ed\u1092\'f4\u1080\'e8\u1075\'e3\u1077\'e5.}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1053\'cd\u1072\'e0 \u1087\'ef\u1088\'f0\u1080\'e8\u1084\'ec\u1077\'e5\u1088\'f0\u1077\'e5 smtp.mail.ru:}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+SMTP-}{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1089\'f1\u1077\'e5\u1088\'f0\u1074\'e2\u1077\'e5\u1088\'f0: smtp.mail.ru}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1086\'ee\u1077\'e5\u1076\'e4\u1080\'e8\u1085\'ed\u1077\'e5\u1085\'ed\u1080\'e8\u1077\'e5: \u1041\'c1\u1077\'e5\u1079\'e7\u1086\'ee\u1087\'ef\u1072\'e0\u1089\'f1\u1085\'ed\u1086\'ee\u1077\'e5 \u1085\'ed\u1072\'e0 \u1089\'f1\u1087\'ef\u1077\'e5\u1094\'f6. \u1055\'cf\u1086\'ee\u1088\'f0\u1090\'f2 (}{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+TLS)}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1086\'ee\u1088\'f0\u1090\'f2: 1465}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1055\'cf\u1086\'ee\u1083\'eb\u1100\'fc\u1079\'e7\u1086\'ee\u1074\'e2\u1072\'e0\u1090\'f2\u1077\'e5\u1083\'eb\u1100\'fc: \u1087\'ef\u1086\'ee\u1083\'eb\u1085\'ed\u1099\'fb\u1081\'e9 \u1072\'e0\u1076\'e4\u1088\'f0\u1077\'e5\u1089\'f1 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1072\'e0}
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{{\*\bkmkstart __DdeLink__10747_902618987}{\*\bkmkend __DdeLink__10747_902618987}\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+\u1057\'d1\u1086\'ee\u1073\'e1\u1089\'f1\u1090\'f2\u1074\'e2\u1077\'e5\u1085\'ed\u1085\'ed\u1086\'ee, \u1074\'e2\u1089\'f1\u1105\'b8, \u1085\'ed\u1072\'e0 \u1101\'fd\u1090\'f2\u1086\'ee\u1084\'ec \u1085\'ed\u1072\'e0\u1089\'f1\u1090\'f2\u1088\'f0\u1086\'ee\u1081\'e9\u1082\'ea\u1072\'e0 \u1103\'ff\u1097\'f9\u1080\'e8\u1082\'ea\u1086\'ee\u1074\'e2 \u1079\'e7\u1072\'e0\u1082\'ea\u1086\'ee\u1085\'ed\u1095\'f7\u1077\'e5\u1085\'ed\u1072\'e0. }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\b0\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+\u169\'a9 2006-201}{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1049\loch\f6
+5 }{\cf1\kerning1\dbch\af10\langfe1025\rtlch \ltrch\loch\fs20\lang1033\loch\f6
+by Kurmaeff Halit }
+\par \pard\plain \s0\sl276\slmult1\ql\widctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa200\ltrpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf1\kerning1\dbch\af9\langfe1025\dbch\af13\afs24\alang1081\loch\f5\fs22\lang1049\sl276\slmult1\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb0\sa0{\cf1\kerning1\dbch\af10\langfe1033\rtlch \ltrch\fs20\lang1049\loch\f6
+ }
+\par }
\ No newline at end of file
From a93ffc825b33471e4afc5556e69b579cb7809f6a Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Fri, 5 Jun 2015 15:56:49 +0300
Subject: [PATCH 065/122] bugfix: archiver doesn't add suffix on logname with
macro
---
src/3proxy.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/3proxy.c b/src/3proxy.c
index 09835e9..833c02e 100644
--- a/src/3proxy.c
+++ b/src/3proxy.c
@@ -358,9 +358,8 @@ unsigned char * dologname (unsigned char *buf, unsigned char *name, const unsign
memset(&fakecli, 0, sizeof(fakecli));
dobuf2(&fakecli, buf, NULL, NULL, ts, (char *)name);
- return buf;
}
- switch(lt){
+ else switch(lt){
case NONE:
sprintf((char *)buf, "%s", name);
break;
From 184eede38a076a0946ab91fd050439421f276d66 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Sun, 5 Jul 2015 14:51:30 +0300
Subject: [PATCH 066/122] Typo in pamauth corrected
---
src/plugins/PamAuth/pamauth.c | 2 +-
src/version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/plugins/PamAuth/pamauth.c b/src/plugins/PamAuth/pamauth.c
index 252fadb..3c171c5 100644
--- a/src/plugins/PamAuth/pamauth.c
+++ b/src/plugins/PamAuth/pamauth.c
@@ -19,7 +19,7 @@ static int already_loaded = 0;
static struct auth pamauth;
#ifdef USERCASE
static int usercaselow = 0;
-#edif
+#endif
static unsigned char *service=NULL;
static struct pluginlink * pl;
diff --git a/src/version.h b/src/version.h
index dfd75a5..e5d17f3 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150516170531"
+#define BUILDDATE "150608002425"
From ef67ef4072512c715279162559a36d41b7cdb706 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 24 Aug 2015 17:56:12 +0300
Subject: [PATCH 067/122] infinite loop in admin interface fixed
---
src/datatypes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/datatypes.c b/src/datatypes.c
index 640a05c..230fe27 100644
--- a/src/datatypes.c
+++ b/src/datatypes.c
@@ -755,7 +755,7 @@ static struct property prop_server[] = {
{prop_server + 16, "childcount", ef_server_childcount, TYPE_INTEGER, "number of servers connected"},
{prop_server + 17, "child", ef_server_child, TYPE_CLIENT, "connected clients"},
#ifndef NOIPV6
- {prop_server + 7, "extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"},
+ {prop_server + 18, "extsa6", ef_server_extsa6, TYPE_SA, "ipv6 address of external interface"},
#endif
{NULL, "next", ef_server_next, TYPE_SERVER, "next"}
};
From 59cc68e8dd0a3af3fb0ca7c9e23124ce6004ef2c Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Mon, 31 Aug 2015 22:01:31 +0300
Subject: [PATCH 068/122] Move FTP login prompt in proxy to common section
---
src/proxy.c | 15 ++++++++-------
src/version.h | 2 +-
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/proxy.c b/src/proxy.c
index ddb58e9..96fa1f2 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -133,6 +133,7 @@ char * proxy_stringtable[] = {
#define BUFSIZE 8192
#define LINESIZE 4096
+#define FTPBUFSIZE 1536
static void logurl(struct clientparam * param, char * buf, char * req, int ftp){
char *sb;
@@ -228,6 +229,8 @@ void * proxychild(struct clientparam* param) {
int authenticate;
struct pollfd fds[2];
SOCKET ftps;
+ char ftpbuf[FTPBUFSIZE];
+ int inftpbuf = 0;
#ifndef WITHMAIN
FILTER_ACTION action;
#endif
@@ -539,23 +542,17 @@ for(;;){
#endif
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
-#define FTPBUFSIZE 1536
if(ftp && param->redirtype != R_HTTP){
SOCKET s;
int mode = 0;
int i=0;
- char ftpbuf[FTPBUFSIZE];
- int inftpbuf = 0;
+ inftpbuf = 0;
if(!ckeepalive){
inftpbuf = FTPBUFSIZE - 20;
res = ftplogin(param, ftpbuf, &inftpbuf);
if(res){
- if (res == 700 || res == 701){
- socksend(param->clisock, (unsigned char *)proxy_stringtable[16], (int)strlen(proxy_stringtable[16]), conf.timeouts[STRING_S]);
- socksend(param->clisock, (unsigned char *)ftpbuf, inftpbuf, conf.timeouts[STRING_S]);
- }
RETURN(res);
}
}
@@ -1052,6 +1049,10 @@ CLEANRET:
if(param->res == 10) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[2], (int)strlen(proxy_stringtable[2]), conf.timeouts[STRING_S]);
}
+ else if (res == 700 || res == 701){
+ socksend(param->clisock, (unsigned char *)proxy_stringtable[16], (int)strlen(proxy_stringtable[16]), conf.timeouts[STRING_S]);
+ socksend(param->clisock, (unsigned char *)ftpbuf, inftpbuf, conf.timeouts[STRING_S]);
+ }
else if(param->res == 100 || (param->res >10 && param->res < 20) || (param->res >701 && param->res <= 705)) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[1], (int)strlen(proxy_stringtable[1]), conf.timeouts[STRING_S]);
}
diff --git a/src/version.h b/src/version.h
index e5d17f3..bcc70cd 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,2 +1,2 @@
#define VERSION "3proxy-0.8b-devel"
-#define BUILDDATE "150608002425"
+#define BUILDDATE "150831214516"
From 3198f1614f35164276aad0fc67c1a837e496b6b6 Mon Sep 17 00:00:00 2001
From: z3APA3A <3APA3A@3proxy.ru>
Date: Tue, 1 Sep 2015 15:24:03 +0300
Subject: [PATCH 069/122] Fix FTP over HTTP authentication
Send WWW-Authenticate instead of Proxy-Authenticate
---
src/proxy.c | 2 +-
src/version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/proxy.c b/src/proxy.c
index 96fa1f2..6c6c9e5 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -118,7 +118,7 @@ char * proxy_stringtable[] = {
"503 Service UnavailableYour request violates configured policy |