mirror of
https://github.com/3proxy/3proxy.git
synced 2026-04-10 15:10:11 +08:00
Use uint32_t/uint16_t instead of unsigned long / unsigned short where required
This commit is contained in:
parent
855c04d8f6
commit
483542b914
20
src/auth.c
20
src/auth.c
@ -305,7 +305,7 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
|
||||
if(!ha) return 0;
|
||||
}
|
||||
else if(!*SAPORT(&cur->addr) && !SAISNULL(&cur->addr)) {
|
||||
unsigned short port = *SAPORT(¶m->sinsr);
|
||||
uint16_t port = *SAPORT(¶m->sinsr);
|
||||
param->sinsr = cur->addr;
|
||||
*SAPORT(¶m->sinsr) = port;
|
||||
}
|
||||
@ -943,7 +943,7 @@ int dnsauth(struct clientparam * param){
|
||||
sprintf(s, "ip6.arpa");
|
||||
}
|
||||
else {
|
||||
u = ntohl(*(unsigned long *)SAADDR(¶m->sincr));
|
||||
u = ntohl(*(uint32_t *)SAADDR(¶m->sincr));
|
||||
|
||||
sprintf(buf, "%u.%u.%u.%u.in-addr.arpa",
|
||||
((u&0x000000FF)),
|
||||
@ -1155,7 +1155,7 @@ void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* val
|
||||
pthread_mutex_unlock(&hash_mutex);
|
||||
}
|
||||
|
||||
unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsigned char* value, unsigned *ttl){
|
||||
uint32_t hashresolv(struct hashtable *ht, const unsigned char* name, unsigned char* value, uint32_t *ttl){
|
||||
unsigned char hash[sizeof(unsigned)*4];
|
||||
struct hashentry ** hep;
|
||||
struct hashentry *he;
|
||||
@ -1176,7 +1176,7 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
|
||||
ht->hashempty = he;
|
||||
}
|
||||
else if(!memcmp(hash, he->hash, sizeof(unsigned)*4)){
|
||||
if(ttl) *ttl = (unsigned)(he->expires - conf.time);
|
||||
if(ttl) *ttl = (uint32_t)(he->expires - conf.time);
|
||||
memcpy(value, he->value, ht->recsize);
|
||||
pthread_mutex_unlock(&hash_mutex);
|
||||
return 1;
|
||||
@ -1191,10 +1191,10 @@ struct nserver nservers[MAXNSERVERS] = {{{0},0}, {{0},0}, {{0},0}, {{0},0}, {{0}
|
||||
struct nserver authnserver;
|
||||
|
||||
|
||||
unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth){
|
||||
uint32_t udpresolve(int af, unsigned char * name, unsigned char * value, uint32_t *retttl, struct clientparam* param, int makeauth){
|
||||
|
||||
int i,n;
|
||||
unsigned long retval;
|
||||
uint32_t retval;
|
||||
|
||||
if((af == AF_INET) && (retval = hashresolv(&dns_table, name, value, retttl))) {
|
||||
return retval;
|
||||
@ -1208,7 +1208,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
|
||||
unsigned char b[4098], *buf, *s1, *s2;
|
||||
int j, k, len, flen;
|
||||
SOCKET sock;
|
||||
unsigned ttl;
|
||||
uint32_t ttl;
|
||||
#ifndef NOIPV6
|
||||
struct sockaddr_in6 addr;
|
||||
struct sockaddr_in6 *sinsr, *sinsl;
|
||||
@ -1343,7 +1343,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
|
||||
k+= (12 + flen);
|
||||
continue; /* we need A IPv4 */
|
||||
}
|
||||
ttl = ntohl(*(unsigned long *)(buf + k + 6));
|
||||
ttl = ntohl(*(uint32_t *)(buf + k + 6));
|
||||
memcpy(value, buf + k + 12, af == AF_INET6? 16:4);
|
||||
if(ttl < 0 || ttl > (3600*12)) ttl = 3600*12;
|
||||
if(!ttl) ttl = 1;
|
||||
@ -1373,11 +1373,11 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long myresolver(int af, unsigned char * name, unsigned char * value){
|
||||
uint32_t myresolver(int af, unsigned char * name, unsigned char * value){
|
||||
return udpresolve(af, name, value, NULL, NULL, 0);
|
||||
}
|
||||
|
||||
unsigned long fakeresolver (int af, unsigned char *name, unsigned char * value){
|
||||
uint32_t 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);
|
||||
|
||||
@ -610,7 +610,7 @@ int radsend(struct clientparam * param, int auth, int stop){
|
||||
if(!vendor && attr[0] == PW_VENDOR_SPECIFIC) {
|
||||
if (attr[1] < 6 || count < 6) RETURN(4);
|
||||
vendorlen = attr[1]-6;
|
||||
vendor = htonl(*((int*)(attr +2)));
|
||||
vendor = htonl(*((uint32_t *)(attr +2)));
|
||||
count -= 6;
|
||||
attr += 6;
|
||||
continue;
|
||||
|
||||
16
src/common.c
16
src/common.c
@ -417,7 +417,7 @@ int ceparseargs(const char *str){
|
||||
|
||||
int parsehost(int family, unsigned char *host, struct sockaddr *sa){
|
||||
char *sp=NULL,*se=NULL;
|
||||
unsigned short port=0;
|
||||
uint16_t port=0;
|
||||
int ret = 0;
|
||||
|
||||
if(!host) return 2;
|
||||
@ -436,7 +436,7 @@ int parsehost(int family, unsigned char *host, struct sockaddr *sa){
|
||||
return ret;
|
||||
}
|
||||
|
||||
int parsehostname(char *hostname, struct clientparam *param, unsigned short port){
|
||||
int parsehostname(char *hostname, struct clientparam *param, uint16_t port){
|
||||
char *sp=NULL,*se=NULL;
|
||||
int ret = 0;
|
||||
|
||||
@ -498,7 +498,7 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port){
|
||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port){
|
||||
char *sb, *se;
|
||||
if(!username || !*username) return 1;
|
||||
if ((sb=strchr(username, conf.delimchar)) == NULL){
|
||||
@ -625,7 +625,7 @@ int doconnect(struct clientparam * param){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask) {
|
||||
int scanaddr(const unsigned char *s, uint32_t * ip, uint32_t * mask) {
|
||||
unsigned d1, d2, d3, d4, m;
|
||||
int res;
|
||||
if ((res = sscanf((char *)s, "%u.%u.%u.%u/%u", &d1, &d2, &d3, &d4, &m)) < 4) return 0;
|
||||
@ -658,8 +658,8 @@ struct hostent * my_gethostbyname(char *name, char *buf, struct hostent *hp){
|
||||
#endif
|
||||
|
||||
#ifdef NOIPV6
|
||||
unsigned long getip(unsigned char *name){
|
||||
unsigned long retval;
|
||||
uint32_t getip(unsigned char *name){
|
||||
uint32_t retval;
|
||||
int i;
|
||||
int ndots = 0;
|
||||
struct hostent *hp=NULL;
|
||||
@ -701,7 +701,7 @@ unsigned long getip(unsigned char *name){
|
||||
system(conf.demanddialprog);
|
||||
hp=gethostbyname((char *)name);
|
||||
}
|
||||
retval = hp?*(unsigned long *)hp->h_addr:0;
|
||||
retval = hp?*(uint32_t *)hp->h_addr:0;
|
||||
#if !defined(_WIN32) && !defined(GETHOSTBYNAME_R)
|
||||
pthread_mutex_unlock(&gethostbyname_mutex);
|
||||
#endif
|
||||
@ -744,7 +744,7 @@ int afdetect(unsigned char *name){
|
||||
|
||||
}
|
||||
|
||||
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
|
||||
uint32_t getip46(int family, unsigned char *name, struct sockaddr *sa){
|
||||
#ifndef NOIPV6
|
||||
int detect;
|
||||
struct addrinfo *ai, hint;
|
||||
|
||||
@ -811,7 +811,7 @@ static int h_parent(int argc, unsigned char **argv){
|
||||
*cidr = '/';
|
||||
chains->cidr = atoi(cidr + 1);
|
||||
}
|
||||
*SAPORT(&chains->addr) = htons((unsigned short)atoi((char *)argv[4]));
|
||||
*SAPORT(&chains->addr) = htons((uint16_t)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]);
|
||||
if(!acl->chains) {
|
||||
@ -1221,10 +1221,10 @@ static int h_ace(int argc, unsigned char **argv){
|
||||
freeacl(acl);
|
||||
return(21);
|
||||
}
|
||||
memset(acl->chains, 0, sizeof(struct chain));
|
||||
memset(acl->chains, 0, sizeof(struct chain));
|
||||
acl->chains->type = R_HTTP;
|
||||
if(!getip46(46, argv[1], (struct sockaddr *)&acl->chains->addr)) return 5;
|
||||
*SAPORT(&acl->chains->addr) = htons((unsigned short)atoi((char *)argv[2]));
|
||||
*SAPORT(&acl->chains->addr) = htons((uint16_t)atoi((char *)argv[2]));
|
||||
acl->chains->weight = 1000;
|
||||
case ALLOW:
|
||||
case DENY:
|
||||
@ -1394,7 +1394,7 @@ static int h_delimchar(int argc, unsigned char **argv){
|
||||
|
||||
#ifndef NORADIUS
|
||||
static int h_radius(int argc, unsigned char **argv){
|
||||
unsigned short port;
|
||||
uint16_t port;
|
||||
|
||||
/*
|
||||
int oldrad;
|
||||
|
||||
@ -44,7 +44,7 @@ static void pr_traffic(struct node *node, CBFUNC cbf, void*cb){
|
||||
|
||||
static void pr_port(struct node *node, CBFUNC cbf, void*cb){
|
||||
char buf[8];
|
||||
if(node->value)(*cbf)(cb, buf, sprintf(buf, "%hu", ntohs(*(unsigned short*)node->value)));
|
||||
if(node->value)(*cbf)(cb, buf, sprintf(buf, "%hu", (unsigned short)ntohs(*(uint16_t*)node->value)));
|
||||
}
|
||||
|
||||
static void pr_datetime(struct node *node, CBFUNC cbf, void*cb){
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
|
||||
void * dnsprchild(struct clientparam* param) {
|
||||
unsigned long ip = 0;
|
||||
uint32_t ip = 0;
|
||||
unsigned char *bbuf;
|
||||
unsigned char *buf, *s1, *s2;
|
||||
char * host = NULL;
|
||||
@ -26,7 +26,7 @@ void * dnsprchild(struct clientparam* param) {
|
||||
int res, i;
|
||||
int len;
|
||||
unsigned type=0;
|
||||
unsigned ttl;
|
||||
uint32_t ttl;
|
||||
unsigned char addr[16];
|
||||
#ifdef _WIN32
|
||||
unsigned long ul = 1;
|
||||
@ -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->sincl) == AF_INET && ip == *(unsigned long*)SAADDR(¶m->sincl)){
|
||||
if(*SAFAMILY(¶m->sincl) == AF_INET && ip == *(uint32_t *)SAADDR(¶m->sincl)){
|
||||
buf[2] = 0x85;
|
||||
buf[3] = 0x80;
|
||||
buf[6] = 0;
|
||||
|
||||
@ -195,7 +195,7 @@ SOCKET ftpdata(struct clientparam *param){
|
||||
rem = param->remsock;
|
||||
param->remsock = INVALID_SOCKET;
|
||||
param->req = param->sinsr;
|
||||
*SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((unsigned short)((b5<<8)^b6));
|
||||
*SAPORT(¶m->req) = *SAPORT(¶m->sinsr) = htons((uint16_t)((b5<<8)^b6));
|
||||
*SAPORT(¶m->sinsl) = 0;
|
||||
i = param->operation;
|
||||
param->operation = FTP_DATA;
|
||||
|
||||
@ -152,7 +152,7 @@ void * ftpprchild(struct clientparam* param) {
|
||||
unsigned short b5, b6;
|
||||
|
||||
if(sscanf((char *)buf+5, "%lu,%lu,%lu,%lu,%hu,%hu", &b1, &b2, &b3, &b4, &b5, &b6)!=6) {RETURN(828);}
|
||||
*SAPORT(¶m->sincr) = htons((unsigned short)((b5<<8)^b6));
|
||||
*SAPORT(¶m->sincr) = htons((uint16_t)((b5<<8)^b6));
|
||||
if(connectwithpoll(param, clidatasock, (struct sockaddr *)¶m->sincr, SASIZE(¶m->sincr),conf.timeouts[CONNECT_TO])) {
|
||||
param->srv->so._closesocket(param->sostate, clidatasock);
|
||||
clidatasock = INVALID_SOCKET;
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
========================================================================
|
||||
3proxy traffic plugin Changelog
|
||||
========================================================================
|
||||
v0.1.2 (2 января 2007 года)
|
||||
- Плугин обновлён в соответствии с обновлением 3proxy.
|
||||
- Добавлена опция debug.
|
||||
v0.1.2 (2 января 2007 года)
|
||||
- Плугин обновлён в соответствии с обновлением 3proxy.
|
||||
- Добавлена опция debug.
|
||||
|
||||
v0.1.1
|
||||
- Теперь udp нельзя задавать proxy, tcppm, pop3p
|
||||
- Исправлена ошибка с выбором типа соединения.
|
||||
- Теперь udp нельзя задавать proxy, tcppm, pop3p
|
||||
- Исправлена ошибка с выбором типа соединения.
|
||||
|
||||
v0.1.0 beta (10 июля 2006)
|
||||
Первый релиз.
|
||||
v0.1.0 beta (10 июля 2006)
|
||||
Первый релиз.
|
||||
@ -1,64 +1,64 @@
|
||||
========================================================================
|
||||
3proxy traffic plugin
|
||||
========================================================================
|
||||
Как известно 3proxy считает траффик не сетевой, а прикладной.
|
||||
Обычно прикладной траффик немного меньше (примерно на 10%) чем сетевой,
|
||||
однако в некоторых случаях, например когда пользователи сети играют в
|
||||
игры, сетевой траффик может превысить прикладной в 4-5 раз. Это довольно неприятно,
|
||||
так как получается, что они за это не платят.
|
||||
Как известно 3proxy считает траффик не сетевой, а прикладной.
|
||||
Обычно прикладной траффик немного меньше (примерно на 10%) чем сетевой,
|
||||
однако в некоторых случаях, например когда пользователи сети играют в
|
||||
игры, сетевой траффик может превысить прикладной в 4-5 раз. Это довольно неприятно,
|
||||
так как получается, что они за это не платят.
|
||||
|
||||
Происходит это потому, что в каждом посланом пакете есть заголовок+данные. Заголовок
|
||||
весит порядка 50-60 байт а колличество данных может меняться от 15-20 байт (что характерно для игр)
|
||||
до 800-900 байт (у IE). Также колличество данных в пакете зависит от загрузки сети,
|
||||
удалённости сервера и прочих причин.
|
||||
Происходит это потому, что в каждом посланом пакете есть заголовок+данные. Заголовок
|
||||
весит порядка 50-60 байт а колличество данных может меняться от 15-20 байт (что характерно для игр)
|
||||
до 800-900 байт (у IE). Также колличество данных в пакете зависит от загрузки сети,
|
||||
удалённости сервера и прочих причин.
|
||||
|
||||
Данный плагин может исправить такую ситуацию. Он может умножать счётчик траффика
|
||||
при окончании соединения на некоторый коэффициент либо добавлять к данным размеры заголовков пакетов,
|
||||
которые прошли по сети.
|
||||
Данный плагин может исправить такую ситуацию. Он может умножать счётчик траффика
|
||||
при окончании соединения на некоторый коэффициент либо добавлять к данным размеры заголовков пакетов,
|
||||
которые прошли по сети.
|
||||
|
||||
Как использовать плагин:
|
||||
Как использовать плагин:
|
||||
|
||||
загрузка плагина:
|
||||
загрузка плагина:
|
||||
plugin "TrafficPlugin.dll" start
|
||||
|
||||
Далее недоходимо добавить правила:
|
||||
ДЛЯ РЕЖИМА ДОМНОЖЕНИЯ ТРАФФИКА НА ЧИСЛО:
|
||||
trafcorrect m <сервис> <исходящий порт> <коэффициент>
|
||||
где: <сервис> может быть proxy, socks4, socks45, socks5, tcppm, udppm, pop3p
|
||||
если сервис указан неверно то считается, что это может быть любой сервис.
|
||||
можно использовать *, тогда правило будет считаться для любого сервиса.
|
||||
<исходящий порт> - порт, к которому подключается прокси сервер. * - любой
|
||||
<коэффициент> - число на каоторое домнажается траффик. Обязательный параметр.
|
||||
Должен быть от больше 0 и меньше 100
|
||||
Далее недоходимо добавить правила:
|
||||
ДЛЯ РЕЖИМА ДОМНОЖЕНИЯ ТРАФФИКА НА ЧИСЛО:
|
||||
trafcorrect m <сервис> <исходящий порт> <коэффициент>
|
||||
где: <сервис> может быть proxy, socks4, socks45, socks5, tcppm, udppm, pop3p
|
||||
если сервис указан неверно то считается, что это может быть любой сервис.
|
||||
можно использовать *, тогда правило будет считаться для любого сервиса.
|
||||
<исходящий порт> - порт, к которому подключается прокси сервер. * - любой
|
||||
<коэффициент> - число на каоторое домнажается траффик. Обязательный параметр.
|
||||
Должен быть от больше 0 и меньше 100
|
||||
|
||||
ДЛЯ РЕЖИМА С УЧЁТОМ РАЗМЕРА ЗАГОЛОВКОВ ПАКЕТОВ:
|
||||
trafcorrect p <сервис> <tcp/udp> <исходящий порт> [размер пустого пакета]
|
||||
<tcp/udp> - протокол, по которому осуществляется соединение.
|
||||
[размер пакета] - средний размер пустого пакета. Можно определить захватив
|
||||
данные при помощи такой утилиты как Ethernal. Параметр необязателен. Если отсутствует,
|
||||
то размер пакета будет считаться равным 66 байт.
|
||||
ДЛЯ РЕЖИМА С УЧЁТОМ РАЗМЕРА ЗАГОЛОВКОВ ПАКЕТОВ:
|
||||
trafcorrect p <сервис> <tcp/udp> <исходящий порт> [размер пустого пакета]
|
||||
<tcp/udp> - протокол, по которому осуществляется соединение.
|
||||
[размер пакета] - средний размер пустого пакета. Можно определить захватив
|
||||
данные при помощи такой утилиты как Ethernal. Параметр необязателен. Если отсутствует,
|
||||
то размер пакета будет считаться равным 66 байт.
|
||||
|
||||
Режимы можно смешивать.
|
||||
Следует учитывать, что плугин создаёт список всех правил изменения траффика.
|
||||
Когда происходит окончание соединения выполняется первое подходящее правило.
|
||||
Режимы можно смешивать.
|
||||
Следует учитывать, что плугин создаёт список всех правил изменения траффика.
|
||||
Когда происходит окончание соединения выполняется первое подходящее правило.
|
||||
|
||||
Пример:
|
||||
Пример:
|
||||
plugin "TrafficPlugin.dll" start
|
||||
trafcorrect m socks5 6112 4.5
|
||||
trafcorrect m socks5 * 1.1
|
||||
|
||||
следующее неверно:
|
||||
следующее неверно:
|
||||
plugin "TrafficPlugin.dll" start
|
||||
trafcorrect m socks5 * 1.1
|
||||
trafcorrect m socks5 6112 4.5
|
||||
Вторая строчка выполнена никогда не будет. Так как 1 имеет более широкое назначение.
|
||||
Вторая строчка выполнена никогда не будет. Так как 1 имеет более широкое назначение.
|
||||
|
||||
РЕЖИМ ОТЛАДКИ ПРАВИЛ:
|
||||
1. Запускает прокси в оконном режиме (чтобы видеть stdout).
|
||||
2. Загрузка плагина должна выглядеть сл. образом:
|
||||
РЕЖИМ ОТЛАДКИ ПРАВИЛ:
|
||||
1. Запускает прокси в оконном режиме (чтобы видеть stdout).
|
||||
2. Загрузка плагина должна выглядеть сл. образом:
|
||||
plugin "TrafficPlugin.dll" start debug
|
||||
3. В окне прокси сервера будет написана информация о прохождении правил коррекции траффика.
|
||||
Правила нумеруются с 1.
|
||||
3. В окне прокси сервера будет написана информация о прохождении правил коррекции траффика.
|
||||
Правила нумеруются с 1.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Copyright:
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
/*
|
||||
3proxy Traffic correct plugin v0.1 beta
|
||||
|
||||
Написал Maslov Michael aka Flexx(rus)
|
||||
Формула расчёта траффика по размеру пакета by 3APA3A
|
||||
Написал Maslov Michael aka Flexx(rus)
|
||||
Формула расчёта траффика по размеру пакета by 3APA3A
|
||||
email: flexx_rus@mail.ru
|
||||
ICQ: 299132764
|
||||
http://3proxy.ru/
|
||||
|
||||
Как работает не знаю (многое зависит от ваших настроек). Никаких гарантий.
|
||||
С плугином можете делать всё, что захочется.
|
||||
Дожен распростроняться только с исходными кодами или вместе с 3proxy.
|
||||
Удалять данный Copyright запрещено.
|
||||
Как работает не знаю (многое зависит от ваших настроек). Никаких гарантий.
|
||||
С плугином можете делать всё, что захочется.
|
||||
Дожен распростроняться только с исходными кодами или вместе с 3proxy.
|
||||
Удалять данный Copyright запрещено.
|
||||
*/
|
||||
|
||||
#include "../../structures.h"
|
||||
@ -33,8 +33,8 @@ struct commands * commandhandlers;
|
||||
struct pluginlink * pl;
|
||||
|
||||
typedef enum {
|
||||
MULTIPLAY, /* метод коррекции умножением на коффициент */
|
||||
IPCORRECT, /* метод коррекции с учётом размера пакета */
|
||||
MULTIPLAY, /* метод коррекции умножением на коффициент */
|
||||
IPCORRECT, /* метод коррекции с учётом размера пакета */
|
||||
} TRAFCORRECT_TYPE;
|
||||
|
||||
typedef enum {
|
||||
@ -84,7 +84,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) {
|
||||
if(DBGLEVEL == 1)fprintf(stdout, "See documentation of traffic correct plugin.\n");
|
||||
return 1;
|
||||
}
|
||||
/* режим умножения траффика на коэффициент */
|
||||
/* режим умножения траффика на коэффициент */
|
||||
if (!strcmp((char *)argv[1], "m")) {
|
||||
struct trafcorrect * newitem;
|
||||
if (argc < 5) {
|
||||
@ -110,7 +110,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) {
|
||||
|
||||
newitem->port = atoi((char *)argv[3]);
|
||||
newitem->coeff = atof((char *)argv[4]);
|
||||
/* проверка на корректность ввода */
|
||||
/* проверка на корректность ввода */
|
||||
if ((newitem->port>65535) || (newitem->coeff<=0) || (newitem->coeff>100)) {
|
||||
free(newitem);
|
||||
if(DBGLEVEL == 1)fprintf(stdout, "Port must be 0<p<65535 and coefficient must be 0<c<100.\n");
|
||||
@ -119,7 +119,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) {
|
||||
addtrafcorrect(newitem);
|
||||
return 0;
|
||||
}
|
||||
/* режим учёта входящих и исходящих пакетов */
|
||||
/* режим учёта входящих и исходящих пакетов */
|
||||
if (!strcmp((char *)argv[1], "p")) {
|
||||
struct trafcorrect * newitem;
|
||||
if (argc < 5) {
|
||||
@ -152,7 +152,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) {
|
||||
}
|
||||
|
||||
newitem->port = atoi((char *)argv[4]);
|
||||
/* последний необязательный параметр - размер пакета */
|
||||
/* последний необязательный параметр - размер пакета */
|
||||
if (argc >= 6) {
|
||||
newitem->psize = atoi((char *)argv[5]);
|
||||
}
|
||||
@ -169,7 +169,7 @@ int h_trafcorrect(int argc, unsigned char ** argv) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static unsigned short myhtons(unsigned short port) {
|
||||
static uint16_t myhtons(uint16_t port) {
|
||||
return (port << 8) | (port >> 8);
|
||||
}
|
||||
|
||||
@ -207,8 +207,8 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
|
||||
(param->operation == ICMPASSOC))
|
||||
)||(starttrafcorrect->con_type == TCP))) /* TCP support */
|
||||
{
|
||||
/* фильтр подошёл. можно изменять значение траффика
|
||||
домножаем на число */
|
||||
/* фильтр подошёл. можно изменять значение траффика
|
||||
домножаем на число */
|
||||
if (starttrafcorrect->type == MULTIPLAY) {
|
||||
#ifndef NOPSTDINT
|
||||
param->statssrv64 = (unsigned)((double)param->statssrv64 *starttrafcorrect->coeff);
|
||||
@ -218,7 +218,7 @@ void mylogfunc(struct clientparam * param, const unsigned char * pz) {
|
||||
param->statscli = (unsigned)((double)param->statscli * starttrafcorrect->coeff);
|
||||
#endif
|
||||
}
|
||||
/* с учётом пакетов */
|
||||
/* с учётом пакетов */
|
||||
if (starttrafcorrect->type == IPCORRECT) {
|
||||
if (starttrafcorrect->con_type == TCP) {
|
||||
#ifndef NOPSTDINT
|
||||
@ -294,7 +294,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char**
|
||||
return 0;
|
||||
}
|
||||
already_loaded = 1;
|
||||
/* добавляем команду "trafcorrect" */
|
||||
/* добавляем команду "trafcorrect" */
|
||||
starthandler = commandhandlers;
|
||||
for ( ; starthandler->next; starthandler = starthandler->next);
|
||||
trafcorrect_handler.next = NULL;
|
||||
@ -304,7 +304,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char**
|
||||
trafcorrect_handler.handler = h_trafcorrect;
|
||||
starthandler->next = &trafcorrect_handler;
|
||||
|
||||
/* подменяем conf->logfunc, с целью контролировать траффик */
|
||||
/* подменяем conf->logfunc, с целью контролировать траффик */
|
||||
origlogfunc = conf->logfunc;
|
||||
conf->logfunc = mylogfunc;
|
||||
return 0;
|
||||
|
||||
@ -337,10 +337,10 @@ for(;;){
|
||||
if(su) {
|
||||
su = (unsigned char *)mystrdup((char *)sb);
|
||||
decodeurl(su, 0);
|
||||
if(parseconnusername((char *)su, (struct clientparam *)param, 1, (unsigned short)((ftp)?21:80))) RETURN (100);
|
||||
if(parseconnusername((char *)su, (struct clientparam *)param, 1, (uint16_t)((ftp)?21:80))) RETURN (100);
|
||||
myfree(su);
|
||||
}
|
||||
else if(parsehostname((char *)sb, (struct clientparam *)param, (unsigned short)((ftp)? 21:80))) RETURN(100);
|
||||
else if(parsehostname((char *)sb, (struct clientparam *)param, (uint16_t)((ftp)? 21:80))) RETURN(100);
|
||||
if(!isconnect){
|
||||
if(se==sg)*se-- = ' ';
|
||||
*se = '/';
|
||||
|
||||
16
src/proxy.h
16
src/proxy.h
@ -195,15 +195,15 @@ void trafcountfunc(struct clientparam *param);
|
||||
unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nbytesout);
|
||||
int handleredirect(struct clientparam * param, struct ace * acentry);
|
||||
|
||||
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
|
||||
int scanaddr(const unsigned char *s, uint32_t * ip, uint32_t * mask);
|
||||
int myinet_ntop(int af, void *src, char *dst, socklen_t size);
|
||||
extern struct nserver nservers[MAXNSERVERS];
|
||||
extern struct nserver authnserver;
|
||||
unsigned long getip(unsigned char *name);
|
||||
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa);
|
||||
uint32_t getip(unsigned char *name);
|
||||
uint32_t getip46(int family, unsigned char *name, struct sockaddr *sa);
|
||||
int afdetect(unsigned char *name);
|
||||
unsigned long myresolver(int, unsigned char *, unsigned char *);
|
||||
unsigned long fakeresolver (int, unsigned char *, unsigned char*);
|
||||
uint32_t myresolver(int, unsigned char *, unsigned char *);
|
||||
uint32_t fakeresolver (int, unsigned char *, unsigned char*);
|
||||
int inithashtable(struct hashtable *hashtable, unsigned nhashsize);
|
||||
void freeparam(struct clientparam * param);
|
||||
void clearstat(struct clientparam * param);
|
||||
@ -248,13 +248,13 @@ struct hashtable;
|
||||
void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires);
|
||||
|
||||
int parsehost(int family, unsigned char *host, struct sockaddr *sa);
|
||||
int parsehostname(char *hostname, struct clientparam *param, unsigned short port);
|
||||
int parsehostname(char *hostname, struct clientparam *param, uint16_t port);
|
||||
int parseusername(char *username, struct clientparam *param, int extpasswd);
|
||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port);
|
||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, uint16_t port);
|
||||
int ACLmatches(struct ace* acentry, struct clientparam * param);
|
||||
int checkACL(struct clientparam * param);
|
||||
extern int havelog;
|
||||
unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth);
|
||||
uint32_t udpresolve(int af, unsigned char * name, unsigned char * value, uint32_t *retttl, struct clientparam* param, int makeauth);
|
||||
|
||||
struct ace * copyacl (struct ace *ac);
|
||||
struct auth * copyauth (struct auth *);
|
||||
|
||||
@ -573,7 +573,7 @@ int MODULEMAINFUNC (int argc, char** argv){
|
||||
else {
|
||||
#endif
|
||||
#ifndef NOPORTMAP
|
||||
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) {
|
||||
if (error || argc != i+3 || *argv[i]=='-'|| (*SAPORT(&srv.intsa) = htons((uint16_t)atoi(argv[i])))==0 || (srv.targetport = htons((uint16_t)atoi(argv[i+2])))==0) {
|
||||
#ifndef STDMAIN
|
||||
haveerror = 1;
|
||||
pushthreadinit();
|
||||
|
||||
@ -37,7 +37,7 @@ void * sockschild(struct clientparam* param) {
|
||||
SOCKET s;
|
||||
unsigned size;
|
||||
SASIZETYPE sasize;
|
||||
unsigned short port = 0;
|
||||
uint16_t port = 0;
|
||||
unsigned char * buf=NULL;
|
||||
unsigned char c;
|
||||
unsigned char command=0;
|
||||
@ -102,7 +102,7 @@ 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;
|
||||
port = *(unsigned short*)buf;
|
||||
port = *(uint16_t*)buf;
|
||||
c = 1;
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ 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;
|
||||
port = *(unsigned short*)buf;
|
||||
port = *(uint16_t*)buf;
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
@ -198,7 +198,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)(int af, unsigned char *name, unsigned char *value);
|
||||
typedef uint32_t (*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);
|
||||
@ -241,8 +241,8 @@ struct iplist {
|
||||
|
||||
struct portlist {
|
||||
struct portlist * next;
|
||||
unsigned short startport;
|
||||
unsigned short endport;
|
||||
uint16_t startport;
|
||||
uint16_t endport;
|
||||
};
|
||||
|
||||
struct userlist {
|
||||
@ -536,7 +536,7 @@ struct srvparam {
|
||||
unsigned char * logformat;
|
||||
unsigned char * logtarget;
|
||||
unsigned char * nonprintable;
|
||||
unsigned short targetport;
|
||||
uint16_t targetport;
|
||||
unsigned char replace;
|
||||
time_t time_start;
|
||||
};
|
||||
@ -732,7 +732,7 @@ struct symbol {
|
||||
|
||||
struct proxydef {
|
||||
PROXYFUNC pf;
|
||||
unsigned short port;
|
||||
uint16_t port;
|
||||
int isudp;
|
||||
int service;
|
||||
char * helpmessage;
|
||||
@ -780,8 +780,8 @@ struct pluginlink {
|
||||
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);
|
||||
unsigned long (*getip46)(int family, unsigned char *name, struct sockaddr *sa);
|
||||
int (*scanaddr)(const unsigned char *s, uint32_t * ip, uint32_t * mask);
|
||||
uint32_t (*getip46)(int family, unsigned char *name, struct sockaddr *sa);
|
||||
int (*sockmap)(struct clientparam * param, int timeo, int usesplice);
|
||||
int (*ACLMatches)(struct ace* acentry, struct clientparam * param);
|
||||
int (*alwaysauth)(struct clientparam * param);
|
||||
@ -807,9 +807,9 @@ struct pluginlink {
|
||||
struct proxydef * childdef;
|
||||
int (*start_proxy_thread)(struct child * chp);
|
||||
void (*freeparam)(struct clientparam * param);
|
||||
int (*parsehostname)(char *hostname, struct clientparam *param, unsigned short port);
|
||||
int (*parsehostname)(char *hostname, struct clientparam *param, uint16_t port);
|
||||
int (*parseusername)(char *username, struct clientparam *param, int extpasswd);
|
||||
int (*parseconnusername)(char *username, struct clientparam *param, int extpasswd, unsigned short port);
|
||||
int (*parseconnusername)(char *username, struct clientparam *param, int extpasswd, uint16_t port);
|
||||
struct sockfuncs *so;
|
||||
unsigned char * (*dologname) (unsigned char *buf, unsigned char *name, const unsigned char *ext, ROTATION lt, time_t t);
|
||||
};
|
||||
|
||||
11
src/udppm.c
11
src/udppm.c
@ -17,16 +17,6 @@
|
||||
#define RETURN(xxx) { param->res = xxx; goto CLEANRET; }
|
||||
|
||||
|
||||
struct udpmap {
|
||||
struct udpmap *next;
|
||||
time_t updated;
|
||||
SOCKET s;
|
||||
int single;
|
||||
unsigned long cliip;
|
||||
unsigned short cliport;
|
||||
};
|
||||
|
||||
|
||||
void * udppmchild(struct clientparam* param) {
|
||||
unsigned char *buf = NULL;
|
||||
int res, i;
|
||||
@ -34,7 +24,6 @@ void * udppmchild(struct clientparam* param) {
|
||||
SASIZETYPE size;
|
||||
unsigned long ul = 1;
|
||||
#endif
|
||||
struct udpmap *udpmappings = NULL;
|
||||
struct pollfd fds[256];
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user