get rid of unsigned chars

This commit is contained in:
z3APA3A 2020-10-30 17:25:27 +03:00
parent 3e35fdd054
commit 1f7a33d5ab
38 changed files with 566 additions and 4960 deletions

View File

@ -19,7 +19,7 @@
#endif
FILE * confopen();
extern unsigned char *strings[];
extern char *strings[];
extern FILE *writable;
extern struct counter_header cheader;
extern struct counter_record crecord;
@ -79,7 +79,7 @@ void __stdcall CommandHandler( DWORD dwCommand )
}
void __stdcall ServiceMain(int argc, unsigned char* argv[] )
void __stdcall ServiceMain(int argc, char* argv[] )
{
hSrv = RegisterServiceCtrlHandler((LPCSTR)conf.stringtable[1], (LPHANDLER_FUNCTION)CommandHandler);
@ -181,7 +181,7 @@ void doschedule(void){
void dumpcounters(struct trafcount *tlin, int counterd){
unsigned char tmpbuf[8192];
char tmpbuf[8192];
struct trafcount *tl;
if(counterd >= 0 && tlin) {
@ -189,7 +189,7 @@ void dumpcounters(struct trafcount *tlin, int counterd){
if(cheader.updated && conf.countertype && timechanged(cheader.updated, conf.time, conf.countertype)){
FILE * cfp;
cfp = fopen((char *)dologname(tmpbuf, sizeof(tmpbuf), (unsigned char *)conf.counterfile, NULL, conf.countertype, cheader.updated), "w");
cfp = fopen((char *)dologname(tmpbuf, sizeof(tmpbuf), (char *)conf.counterfile, NULL, conf.countertype, cheader.updated), "w");
if(cfp){
for(tl = tlin; cfp && tl; tl = tl->next){
if(tl->type >= conf.countertype)
@ -293,9 +293,9 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int
FILE * fp = NULL;
#ifdef _WIN32
unsigned char * arg;
char * arg;
WSADATA wd;
unsigned char tmpbuf[8192];
char tmpbuf[8192];
WSAStartup(MAKEWORD( 1, 1 ), &wd);
osv.dwOSVersionInfoSize = sizeof(osv);

View File

@ -133,20 +133,14 @@ $(BUILDDIR)mycrypt$(EXESUFFICS): md4$(OBJSUFFICS) md5$(OBJSUFFICS) mycryptmain$(
md4$(OBJSUFFICS): libs/md4.h libs/md4.c
$(CC) $(COUT)md4$(OBJSUFFICS) $(CFLAGS) libs/md4.c
smbdes$(OBJSUFFICS): libs/smbdes.c
$(CC) $(COUT)smbdes$(OBJSUFFICS) $(CFLAGS) libs/smbdes.c
md5$(OBJSUFFICS): libs/md5.h libs/md5.c
$(CC) $(COUT)md5$(OBJSUFFICS) $(CFLAGS) libs/md5.c
ntlm$(OBJSUFFICS): ntlm.c
$(CC) $(COUT)ntlm$(OBJSUFFICS) $(CFLAGS) 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) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) common$(OBJSUFFICS) auth$(OBJSUFFICS) authradius$(OBJSUFFICS) conf$(OBJSUFFICS) log$(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) authradius$(OBJSUFFICS) conf$(OBJSUFFICS) datatypes$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) common$(OBJSUFFICS) log$(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) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) common$(OBJSUFFICS) auth$(OBJSUFFICS) authradius$(OBJSUFFICS) conf$(OBJSUFFICS) log$(OBJSUFFICS) datatypes$(OBJSUFFICS) md4$(OBJSUFFICS) md5$(OBJSUFFICS) mycrypt$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS)
$(LN) $(LNOUT)$(BUILDDIR)3proxy$(EXESUFFICS) $(LDFLAGS) $(VERFILE) 3proxy$(OBJSUFFICS) mainfunc$(OBJSUFFICS) auth$(OBJSUFFICS) authradius$(OBJSUFFICS) conf$(OBJSUFFICS) datatypes$(OBJSUFFICS) srvproxy$(OBJSUFFICS) srvpop3p$(OBJSUFFICS) srvsmtpp$(OBJSUFFICS) srvftppr$(OBJSUFFICS) srvsocks$(OBJSUFFICS) srvtcppm$(OBJSUFFICS) srvudppm$(OBJSUFFICS) sockmap$(OBJSUFFICS) sockgetchar$(OBJSUFFICS) common$(OBJSUFFICS) log$(OBJSUFFICS) mycrypt$(OBJSUFFICS) md5$(OBJSUFFICS) md4$(OBJSUFFICS) base64$(OBJSUFFICS) ftp$(OBJSUFFICS) stringtable$(OBJSUFFICS) srvwebadmin$(OBJSUFFICS) srvdnspr$(OBJSUFFICS) plugins$(OBJSUFFICS) $(COMPATLIBS) $(LIBS)
clean:
@$(REMOVECOMMAND) *$(OBJSUFFICS) $(COMPFILES)

View File

@ -9,12 +9,12 @@
#include "proxy.h"
int clientnegotiate(struct chain * redir, struct clientparam * param, struct sockaddr * addr, unsigned char * hostname){
int clientnegotiate(struct chain * redir, struct clientparam * param, struct sockaddr * addr, char * hostname){
unsigned char *buf;
unsigned char *username;
char *username;
int res;
int len=0;
unsigned char * user, *pass;
char * user, *pass;
user = redir->extuser;
@ -56,7 +56,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc
":%hu HTTP/1.0\r\nConnection: keep-alive\r\n", ntohs(*SAPORT(addr)));
if(user){
len += sprintf((char *)buf + len, "Proxy-Authorization: Basic ");
sprintf((char *)username, "%.128s:%.128s", user, pass?pass:(unsigned char *)"");
sprintf((char *)username, "%.128s:%.128s", user, pass?pass:(char *)"");
en64(username, buf+len, (int)strlen((char *)username));
len = (int)strlen((char *)buf);
len += sprintf((char *)buf + len, "\r\n");
@ -87,7 +87,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc
buf[7] = 3;
}
else memcpy(buf+4, SAADDR(addr), 4);
if(!user)user = (unsigned char *)"anonymous";
if(!user)user = (char *)"anonymous";
len = (int)strlen((char *)user) + 1;
memcpy(buf+8, user, len);
len += 8;
@ -138,10 +138,10 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc
}
if(buf[1] == 2){
buf[inbuf++] = 1;
buf[inbuf] = (unsigned char)strlen((char *)user);
buf[inbuf] = (char)strlen((char *)user);
memcpy(buf+inbuf+1, user, buf[inbuf]);
inbuf += buf[inbuf] + 1;
buf[inbuf] = pass?(unsigned char)strlen((char *)pass):0;
buf[inbuf] = pass?(char)strlen((char *)pass):0;
if(pass)memcpy(buf+inbuf+1, pass, buf[inbuf]);
inbuf += buf[inbuf] + 1;
if(socksend(param->remsock, buf, inbuf, conf.timeouts[CHAIN_TO]) != inbuf){
@ -260,11 +260,11 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
if(cur->extuser){
if(param->extusername)
myfree(param->extusername);
param->extusername = (unsigned char *)mystrdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
param->extusername = (char *)mystrdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
if(cur->extpass){
if(param->extpassword)
myfree(param->extpassword);
param->extpassword = (unsigned char *)mystrdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
param->extpassword = (char *)mystrdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
}
if(*cur->extuser == '*' && !param->username) return 4;
}
@ -312,11 +312,11 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
if(*cur -> extuser == '*' && !param->username) return 4;
if(param->extusername)
myfree(param->extusername);
param->extusername = (unsigned char *)mystrdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
param->extusername = (char *)mystrdup((char *)((*cur->extuser == '*' && param->username)? param->username : cur->extuser));
if(cur->extpass){
if(param->extpassword)
myfree(param->extpassword);
param->extpassword = (unsigned char *)mystrdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
param->extpassword = (char *)mystrdup((char *)((*cur->extuser == '*' && param->password)?param->password : cur->extpass));
}
}
return 0;
@ -330,14 +330,14 @@ int handleredirect(struct clientparam * param, struct ace * acentry){
int IPInentry(struct sockaddr *sa, struct iplist *ipentry){
int addrlen;
unsigned char *ip, *ipf, *ipt;
char *ip, *ipf, *ipt;
if(!sa || ! ipentry || *SAFAMILY(sa) != ipentry->family) return 0;
ip = (unsigned char *)SAADDR(sa);
ipf = (unsigned char *)&ipentry->ip_from;
ipt = (unsigned char *)&ipentry->ip_to;
ip = (char *)SAADDR(sa);
ipf = (char *)&ipentry->ip_from;
ipt = (char *)&ipentry->ip_to;
addrlen = SAADDRLEN(sa);
@ -352,12 +352,12 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
struct iplist *ipentry;
struct portlist *portentry;
struct period *periodentry;
unsigned char * username;
char * username;
struct hostname * hstentry=NULL;
int i;
int match = 0;
username = param->username?param->username:(unsigned char *)"-";
username = param->username?param->username:(char *)"-";
if(acentry->src) {
for(ipentry = acentry->src; ipentry; ipentry = ipentry->next)
if(IPInentry((struct sockaddr *)&param->sincr, ipentry)) {
@ -770,7 +770,7 @@ int cacheauth(struct clientparam * param){
if(param->username){
myfree(param->username);
}
param->username = (unsigned char *)mystrdup(ac->username);
param->username = (char *)mystrdup(ac->username);
pthread_mutex_unlock(&hash_mutex);
return 0;
}
@ -873,7 +873,7 @@ int doauth(struct clientparam * param){
int ipauth(struct clientparam * param){
int res;
unsigned char *username;
char *username;
if(param->preauthorized) return (0);
username = param->username;
@ -898,7 +898,7 @@ int dnsauth(struct clientparam * param){
if(*SAFAMILY(&param->sincr)!=AF_INET){
char *s = buf;
for(i=15; i>=0; i--){
unsigned char c=((unsigned char *)SAADDR(&param->sincr))[i];
char c=((char *)SAADDR(&param->sincr))[i];
*s++ = dig[(c&0xf)];
*s++ = '.';
*s++ = dig[(c>>4)];
@ -916,7 +916,7 @@ int dnsauth(struct clientparam * param){
((u&0xFF000000)>>24));
}
if(!udpresolve(*SAFAMILY(&param->sincr), (unsigned char *)buf, (unsigned char *)addr, NULL, param, 1)) {
if(!udpresolve(*SAFAMILY(&param->sincr), (char *)buf, (char *)addr, NULL, param, 1)) {
return 3;
}
if(memcmp(SAADDR(&param->sincr), addr, SAADDRLEN(&param->sincr))) {
@ -928,7 +928,7 @@ int dnsauth(struct clientparam * param){
int strongauth(struct clientparam * param){
struct passwords * pwl;
unsigned char buf[256];
char buf[256];
if(!param->username) return 4;
@ -942,15 +942,6 @@ int strongauth(struct clientparam * param){
else if (!param->pwtype && param->password && !strcmp((char *)param->password, (char *)pwl->password)){
break;
}
#ifndef NOCRYPT
else if (param->pwtype == 2 && param->password) {
ntpwdhash(buf, pwl->password, 0);
mschap(buf, param->password, buf + 16);
if(!memcmp(buf+16, param->password+8, 24)) {
break;
}
}
#endif
pthread_mutex_unlock(&pwl_mutex);
return 6;
#ifndef NOCRYPT
@ -964,13 +955,6 @@ int strongauth(struct clientparam * param){
if(param->password && !param->pwtype && !memcmp(pwl->password, ntpwdhash(buf,param->password, 1), 32)) {
break;
}
else if (param->pwtype == 2){
fromhex(pwl->password, buf, 16);
mschap(buf, param->password, buf + 16);
if(!memcmp(buf + 16, param->password+8, 24)) {
break;
}
}
pthread_mutex_unlock(&pwl_mutex);
return 8;
#endif
@ -1011,7 +995,7 @@ 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){
void nametohash(const char * name, char *hash, char *rnd){
unsigned i, j, k;
memcpy(hash, rnd, sizeof(unsigned)*4);
for(i=0, j=0, k=0; name[j]; j++){
@ -1023,7 +1007,7 @@ void nametohash(const unsigned char * name, unsigned char *hash, unsigned char *
}
}
unsigned hashindex(struct hashtable *ht, const unsigned char* hash){
unsigned hashindex(struct hashtable *ht, const char* hash){
unsigned t1, t2, t3, t4;
t1 = *(unsigned *)hash;
t2 = *(unsigned *)(hash + sizeof(unsigned));
@ -1102,7 +1086,7 @@ int inithashtable(struct hashtable *ht, unsigned nhashsize){
return 0;
}
void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires){
void hashadd(struct hashtable *ht, const char* name, char* value, time_t expires){
struct hashentry * hen, *he;
struct hashentry ** hep;
@ -1115,7 +1099,7 @@ void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* val
}
hen = ht->hashempty;
ht->hashempty = ht->hashempty->next;
nametohash(name, hen->hash, (unsigned char *)ht->rnd);
nametohash(name, hen->hash, (char *)ht->rnd);
memcpy(hen->value, value, ht->recsize);
hen->expires = expires;
hen->next = NULL;
@ -1135,8 +1119,8 @@ 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){
unsigned char hash[sizeof(unsigned)*4];
unsigned long hashresolv(struct hashtable *ht, const char* name, char* value, unsigned *ttl){
char hash[sizeof(unsigned)*4];
struct hashentry ** hep;
struct hashentry *he;
unsigned index;
@ -1146,7 +1130,7 @@ unsigned long hashresolv(struct hashtable *ht, const unsigned char* name, unsign
pthread_mutex_unlock(&hash_mutex);
return 0;
}
nametohash(name, hash, (unsigned char *)ht->rnd);
nametohash(name, hash, (char *)ht->rnd);
index = hashindex(ht, hash);
for(hep = ht->hashtable + index; (he = *hep)!=NULL; ){
if(he->expires < conf.time) {
@ -1171,7 +1155,7 @@ 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){
unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, struct clientparam* param, int makeauth){
int i,n;
unsigned long retval;
@ -1185,7 +1169,8 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
n = (makeauth && !SAISNULL(&authnserver.addr))? 1 : numservers;
for(i=0; i<n; i++){
unsigned short nq, na;
unsigned char b[4098], *buf, *s1, *s2;
char b[4098], *s1, *s2;
unsigned char *buf;
int j, k, len, flen;
SOCKET sock;
unsigned ttl;
@ -1199,7 +1184,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
int usetcp = 0;
unsigned short serial = 1;
buf = b+2;
buf = (unsigned char*)b+2;
sinsl = (param && !makeauth)? &param->sinsl : &addr;
sinsr = (param && !makeauth)? &param->sinsr : &addr;
@ -1257,7 +1242,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
memcpy(buf + 13, name, len);
len += 13;
buf[len] = 0;
for(s2 = buf + 12; (s1 = (unsigned char *)strchr((char *)s2 + 1, '.')); s2 = s1)*s2 = (unsigned char)((s1 - s2) - 1);
for(s2 = buf + 12; (s1 = (char *)strchr((char *)s2 + 1, '.')); s2 = s1)*s2 = (char)((s1 - s2) - 1);
*s2 = (len - (int)(s2 - buf)) - 1;
len++;
buf[len++] = 0;
@ -1343,7 +1328,7 @@ unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, un
}
*s2 = 0;
if(param->username)myfree(param->username);
param->username = (unsigned char *)mystrdup ((char *)buf + k + 13);
param->username = mystrdup ((char *)buf + k + 13);
return udpresolve(af,param->username, value, NULL, NULL, 2);
}
@ -1352,11 +1337,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){
unsigned long myresolver(int af, char * name, char * value){
return udpresolve(af, name, value, NULL, NULL, 0);
}
unsigned long fakeresolver (int af, unsigned char *name, unsigned char * value){
unsigned long fakeresolver (int af, char *name, char * value){
memset(value, 0, af == AF_INET6? 16 : 4);
if(af == AF_INET6){
memset(value, 0, 16);

View File

@ -168,22 +168,7 @@ char radiussecret[64]="";
pthread_mutex_t rad_mutex;
void md5_calc(unsigned char *output, unsigned char *input,
unsigned int inputlen);
char *strNcpy(char *dest, const char *src, int n)
{
if (n > 0)
strncpy(dest, src, n);
else
n = 1;
dest[n - 1] = 0;
return dest;
}
void md5_calc(unsigned char *output, unsigned char *input,
static void md5_calc(unsigned char *output, unsigned char *input,
unsigned int inlen)
{
MD5_CTX context;
@ -220,7 +205,7 @@ static int calc_replydigest(char *packet, char *original, const char *secret, in
}
#define AUTH_PASS_LEN (16)
int rad_pwencode(char *passwd, int *pwlen, const char *secret, const char *vector)
static int rad_pwencode(char *passwd, int *pwlen, const char *secret, const char *vector)
{
uint8_t buffer[AUTH_VECTOR_LEN + MAX_STRING_LEN + 1];
char digest[AUTH_VECTOR_LEN];
@ -258,7 +243,7 @@ int rad_pwencode(char *passwd, int *pwlen, const char *secret, const char *vecto
}
void random_vector(uint8_t *vector, struct clientparam *param)
static void random_vector(uint8_t *vector, struct clientparam *param)
{
int i;
static int did_random = 0;
@ -300,7 +285,7 @@ typedef struct radius_packet_t {
#define packet (*((radius_packet_t *)inbuf))
int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, int stop){
static int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, int stop){
int id;
int res = 4;
SOCKET sockfd = -1;
@ -518,7 +503,7 @@ int radbuf(struct clientparam * param, unsigned char * inbuf, int auth, int stop
}
int radsend(const unsigned char *inbuf, int total_length, int auth,
static int radsend(const unsigned char *inbuf, int total_length, int auth,
#ifdef NOIPV6
struct sockaddr_in* sinsl
#else
@ -685,12 +670,12 @@ int radauth(struct clientparam * param){
}
int raddobuf(struct clientparam * param, unsigned char * buf, const unsigned char *s){
return radbuf(param, buf, 0, 1);
int raddobuf(struct clientparam * param, char * buf, const unsigned char *s){
return radbuf(param, (unsigned char *)buf, 0, 1);
}
void logradius(const unsigned char *buf, int len, struct LOGGER *logger){
if(len)radsend(buf, len, 0, NULL);
void logradius(const char *buf, int len, struct LOGGER *logger){
if(len)radsend((unsigned char *)buf, len, 0, NULL);
}

View File

@ -7,11 +7,11 @@
#include <string.h>
static const unsigned char base64digits[] =
static const char base64digits[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
#define BAD 255
static const unsigned char base64val[] = {
static const char base64val[] = {
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD,
BAD,BAD,BAD,BAD, BAD,BAD,BAD,BAD, BAD,BAD,BAD, 62, BAD,BAD,BAD, 63,
@ -23,7 +23,7 @@ static const unsigned char base64val[] = {
};
#define DECODE64(c) ((c > 32 && c<127)? base64val[(int)c] : BAD)
unsigned char* en64 (const unsigned char *in, unsigned char *out, int inlen)
unsigned char* en64 (const char *in, char *out, int inlen)
{
for (; inlen > 0; inlen -= 3, in+=3)
{
@ -79,9 +79,9 @@ int de64 (const char *in, char *out, int maxlen)
return (len);
}
unsigned char hex[] = "0123456789ABCDEF";
char hex[] = "0123456789ABCDEF";
void tohex(unsigned char *in, unsigned char *out, int len){
void tohex(char *in, char *out, int len){
int i;
for (i=0; i<len; i++) {
@ -91,13 +91,13 @@ void tohex(unsigned char *in, unsigned char *out, int len){
out[(i<<1)] = 0;
}
void fromhex(unsigned char *in, unsigned char *out, int len){
void fromhex(char *in, char *out, int len){
char *c1, *c2;
for (; len > 0; len--) {
c1 = strchr((char *)hex, *in++);
c2 = strchr((char *)hex, *in++);
if(c1 && c2){
*out++ = ((unsigned char)((unsigned char *)c1 - hex) << 4) + (unsigned char)((unsigned char *)c2 - hex);
*out++ = (char)(unsigned char)(((c1 - hex) << 4) + (c2 - hex));
}
}
}

View File

@ -31,7 +31,7 @@ int randomizer = 1;
#endif
unsigned char **stringtable = NULL;
char **stringtable = NULL;
#ifdef WITH_LINUX_FUTEX
int sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3)
@ -124,12 +124,12 @@ struct extparam conf = {
NULL, /* BANDLIMFUNC bandlimfunc; */
NULL, /* TRAFCOUNTFUNC trafcountfunc; */
NULL, /* void (*prelog)(struct clientparam * param); */
NULL, NULL, /* unsigned char *logtarget, *logformat; */
NULL, NULL, /* char *logtarget, *logformat; */
NULL, /* struct filemon * fmon; */
NULL, /* struct filter * filters; */
NULL, /* struct auth *authfuncs; */
NULL, /* char* demanddialprog; */
NULL, /* unsigned char **stringtable; */
NULL, /* char **stringtable; */
(time_t)0, /* time_t time; */
0,0, /* unsigned logdumpsrv, logdumpcli; */
'@', /* char delimchar; */
@ -270,7 +270,7 @@ int ceparseargs(const char *str){
#endif
int parsehost(int family, unsigned char *host, struct sockaddr *sa){
int parsehost(int family, char *host, struct sockaddr *sa){
char *sp=NULL,*se=NULL;
unsigned short port=0;
int ret = 0;
@ -306,7 +306,7 @@ int parsehostname(char *hostname, struct clientparam *param, unsigned short port
}
if(hostname != (char *)param->hostname){
if(param->hostname) myfree(param->hostname);
param->hostname = (unsigned char *)mystrdup(hostname + (se!=0));
param->hostname = (char *)mystrdup(hostname + (se!=0));
}
if(sp){
port = atoi(sp+1);
@ -329,11 +329,11 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){
if(sp) *sp = 0;
if(*(sb+1)) {
if(param->password) myfree(param->password);
param->password = (unsigned char *)mystrdup(sb+1);
param->password = (char *)mystrdup(sb+1);
}
if(*username) {
if(param->username) myfree(param->username);
param->username = (unsigned char *)mystrdup(username);
param->username = (char *)mystrdup(username);
}
username = se+1;
}
@ -342,11 +342,11 @@ int parseusername(char *username, struct clientparam *param, int extpasswd){
if(sp){
*sp = 0;
if(param->extpassword) myfree(param->extpassword);
param->extpassword = (unsigned char *) mystrdup(sp+1);
param->extpassword = (char *) mystrdup(sp+1);
}
}
if(param->extusername) myfree(param->extusername);
param->extusername = (unsigned char *)mystrdup(username);
param->extusername = (char *)mystrdup(username);
if(sb) *sb = ':';
if(se) *se = ':';
if(sp) *sp = ':';
@ -429,7 +429,7 @@ int doconnect(struct clientparam * param){
#endif
#ifdef SO_REUSEPORT
opt = 1;
so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEPORT, (unsigned char *)&opt, sizeof(int));
so._setsockopt(param->remsock, SOL_SOCKET, SO_REUSEPORT, (char *)&opt, sizeof(int));
#endif
}
#endif
@ -462,7 +462,7 @@ int doconnect(struct clientparam * param){
return 0;
}
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask) {
int scanaddr(const char *s, unsigned long * ip, unsigned long * 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;
@ -495,7 +495,7 @@ struct hostent * my_gethostbyname(char *name, char *buf, struct hostent *hp){
#endif
#ifdef NOIPV6
unsigned long getip(unsigned char *name){
unsigned long getip(char *name){
unsigned long retval;
int i;
int ndots = 0;
@ -522,8 +522,8 @@ unsigned long getip(unsigned char *name){
}
}
if((tmpresolv=resolvfunc)){
if((*tmpresolv)(AF_INET, name, (unsigned char *)&retval)) return retval;
return (*tmpresolv)(AF_INET, name, (unsigned char *)&retval)?retval:0;
if((*tmpresolv)(AF_INET, name, (char *)&retval)) return retval;
return (*tmpresolv)(AF_INET, name, (char *)&retval)?retval:0;
}
#if !defined(_WIN32) && !defined(GETHOSTBYNAME_R)
if(!ghbn_init){
@ -548,7 +548,7 @@ unsigned long getip(unsigned char *name){
}
#endif
int afdetect(unsigned char *name){
int afdetect(char *name){
int ndots=0, ncols=0, nhex=0;
int i;
@ -580,7 +580,7 @@ int afdetect(unsigned char *name){
}
unsigned long getip46(int family, unsigned char *name, struct sockaddr *sa){
unsigned long getip46(int family, char *name, struct sockaddr *sa){
#ifndef NOIPV6
int detect;
struct addrinfo *ai, hint;

View File

@ -131,7 +131,7 @@ int start_proxy_thread(struct child * chp){
return 0;
}
static int h_proxy(int argc, unsigned char ** argv){
static int h_proxy(int argc, char ** argv){
struct child ch;
ch.argc = argc;
@ -216,12 +216,12 @@ static int h_proxy(int argc, unsigned char ** argv){
return start_proxy_thread(&ch);
}
static int h_internal(int argc, unsigned char ** argv){
static int h_internal(int argc, char ** argv){
getip46(46, argv[1], (struct sockaddr *)&conf.intsa);
return 0;
}
static int h_external(int argc, unsigned char ** argv){
static int h_external(int argc, char ** argv){
int res;
#ifndef NOIPV6
struct sockaddr_in6 sa6;
@ -237,49 +237,49 @@ static int h_external(int argc, unsigned char ** argv){
}
static int h_log(int argc, unsigned char ** argv){
static int h_log(int argc, char ** argv){
myfree(conf.logtarget);
if(argc < 2) conf.logtarget = (unsigned char *)mystrdup("");
else conf.logtarget = (unsigned char *)mystrdup((char *)argv[1]);
if(argc < 2) conf.logtarget = (char *)mystrdup("");
else conf.logtarget = (char *)mystrdup((char *)argv[1]);
if(argc > 2) {
conf.logtype = getrotate(*argv[2]);
}
return 0;
}
static int h_stacksize(int argc, unsigned char **argv){
static int h_stacksize(int argc, char **argv){
conf.stacksize = atoi((char *)argv[1]);
return 0;
}
static int h_force(int argc, unsigned char **argv){
static int h_force(int argc, char **argv){
conf.noforce = 0;
return 0;
}
static int h_noforce(int argc, unsigned char **argv){
static int h_noforce(int argc, char **argv){
conf.noforce = 1;
return 0;
}
static int h_service(int argc, unsigned char **argv){
static int h_service(int argc, char **argv){
return 0;
}
static int h_daemon(int argc, unsigned char **argv){
static int h_daemon(int argc, char **argv){
if(!conf.demon)daemonize();
conf.demon = 1;
return 0;
}
static int h_config(int argc, unsigned char **argv){
static int h_config(int argc, char **argv){
if(conf.conffile)myfree(conf.conffile);
conf.conffile = mystrdup((char *)argv[1]);
return 0;
}
static int h_include(int argc, unsigned char **argv){
static int h_include(int argc, char **argv){
int res;
FILE *fp1;
@ -293,18 +293,18 @@ static int h_include(int argc, unsigned char **argv){
return res;
}
static int h_archiver(int argc, unsigned char **argv){
static int h_archiver(int argc, char **argv){
int j;
conf.archiver = myalloc(argc * sizeof(char *));
if(conf.archiver) {
conf.archiverc = argc;
for(j = 0; j < conf.archiverc; j++) conf.archiver[j] = (unsigned char *)mystrdup((char *)argv[j]);
for(j = 0; j < conf.archiverc; j++) conf.archiver[j] = (char *)mystrdup((char *)argv[j]);
}
return 0;
}
static int h_counter(int argc, unsigned char **argv){
static int h_counter(int argc, char **argv){
struct counter_header ch1;
if(conf.counterd >=0)close(conf.counterd);
if(!conf.trafcountfunc) conf.trafcountfunc = trafcountfunc;
@ -344,19 +344,19 @@ static int h_counter(int argc, unsigned char **argv){
return 0;
}
static int h_rotate(int argc, unsigned char **argv){
static int h_rotate(int argc, char **argv){
conf.rotate = atoi((char *)argv[1]);
return 0;
}
static int h_logformat(int argc, unsigned char **argv){
unsigned char * old = conf.logformat;
conf.logformat = (unsigned char *)mystrdup((char *)argv[1]);
static int h_logformat(int argc, char **argv){
char * old = conf.logformat;
conf.logformat = (char *)mystrdup((char *)argv[1]);
if(old) myfree(old);
return 0;
}
static int h_timeouts(int argc, unsigned char **argv){
static int h_timeouts(int argc, char **argv){
int j;
for(j = 0; conf.timeouts[j] && j + 1 < argc; j++) {
@ -368,11 +368,11 @@ static int h_timeouts(int argc, unsigned char **argv){
return 0;
}
static int h_noop(int argc, unsigned char **argv){
static int h_noop(int argc, char **argv){
return 0;
}
static int h_auth(int argc, unsigned char **argv){
static int h_auth(int argc, char **argv){
struct auth *au, * newau;
freeauth(conf.authfuncs);
@ -397,9 +397,9 @@ static int h_auth(int argc, unsigned char **argv){
return 0;
}
static int h_users(int argc, unsigned char **argv){
static int h_users(int argc, char **argv){
int j;
unsigned char *arg;
char *arg;
struct passwords *pwl = NULL;
for (j = 1; j<argc; j++) {
@ -409,22 +409,22 @@ static int h_users(int argc, unsigned char **argv){
}
memset(pwl, 0, sizeof(struct passwords));
arg = (unsigned char *)strchr((char *)argv[j], ':');
arg = (char *)strchr((char *)argv[j], ':');
if(!arg||!arg[1]||!arg[2]||arg[3]!=':') {
pwl->user = (unsigned char *)mystrdup((char *)argv[j]);
pwl->user = (char *)mystrdup((char *)argv[j]);
pwl->pwtype = SYS;
}
else {
*arg = 0;
pwl->user = (unsigned char *)mystrdup((char *)argv[j]);
pwl->user = (char *)mystrdup((char *)argv[j]);
if((arg[1] == 'C' && arg[2] == 'L' && (pwl->pwtype = CL)) ||
(arg[1] == 'C' && arg[2] == 'R' && (pwl->pwtype = CR)) ||
(arg[1] == 'N' && arg[2] == 'T' && (pwl->pwtype = NT)) ||
(arg[1] == 'L' && arg[2] == 'M' && (pwl->pwtype = LM))){
pwl->password = (unsigned char *)mystrdup((char *)arg+4);
pwl->password = (char *)mystrdup((char *)arg+4);
}
else {
pwl->password = (unsigned char *) mystrdup((char *)arg + 1);
pwl->password = (char *) mystrdup((char *)arg + 1);
pwl->pwtype = UN;
}
}
@ -438,7 +438,7 @@ static int h_users(int argc, unsigned char **argv){
return 0;
}
static int h_maxconn(int argc, unsigned char **argv){
static int h_maxconn(int argc, char **argv){
conf.maxchild = atoi((char *)argv[1]);
if(!conf.maxchild) {
return(1);
@ -458,21 +458,21 @@ static int h_maxconn(int argc, unsigned char **argv){
return 0;
}
static int h_flush(int argc, unsigned char **argv){
static int h_flush(int argc, char **argv){
freeacl(conf.acl);
conf.acl = NULL;
return 0;
}
/*
static int h_flushusers(int argc, unsigned char **argv){
static int h_flushusers(int argc, char **argv){
freepwl(conf.pwl);
conf.pwl = NULL;
return 0;
}
*/
static int h_nserver(int argc, unsigned char **argv){
static int h_nserver(int argc, char **argv){
char *str;
if(numservers < MAXNSERVERS) {
@ -491,7 +491,7 @@ static int h_nserver(int argc, unsigned char **argv){
return 0;
}
static int h_authnserver(int argc, unsigned char **argv){
static int h_authnserver(int argc, char **argv){
char *str;
if((str = strchr((char *)argv[1], '/')))
@ -505,12 +505,12 @@ static int h_authnserver(int argc, unsigned char **argv){
return 0;
}
static int h_fakeresolve(int argc, unsigned char **argv){
static int h_fakeresolve(int argc, char **argv){
resolvfunc = fakeresolver;
return 0;
}
static int h_nscache(int argc, unsigned char **argv){
static int h_nscache(int argc, char **argv){
int res;
res = atoi((char *)argv[1]);
@ -524,7 +524,7 @@ static int h_nscache(int argc, unsigned char **argv){
}
return 0;
}
static int h_nscache6(int argc, unsigned char **argv){
static int h_nscache6(int argc, char **argv){
int res;
res = atoi((char *)argv[1]);
@ -539,7 +539,7 @@ static int h_nscache6(int argc, unsigned char **argv){
return 0;
}
static int h_nsrecord(int argc, unsigned char **argv){
static int h_nsrecord(int argc, char **argv){
#ifndef NOIPV6
struct sockaddr_in6 sa;
#else
@ -552,7 +552,7 @@ static int h_nsrecord(int argc, unsigned char **argv){
return 0;
}
static int h_system(int argc, unsigned char **argv){
static int h_system(int argc, char **argv){
int res;
if((res = system((char *)argv[1])) == -1){
@ -562,7 +562,7 @@ static int h_system(int argc, unsigned char **argv){
return 0;
}
static int h_pidfile(int argc, unsigned char **argv){
static int h_pidfile(int argc, char **argv){
FILE *pidf;
if(!(pidf = fopen((char *)argv[1], "w"))){
@ -574,7 +574,7 @@ static int h_pidfile(int argc, unsigned char **argv){
return 0;
}
static int h_monitor(int argc, unsigned char **argv){
static int h_monitor(int argc, char **argv){
struct filemon * fm;
fm = myalloc(sizeof (struct filemon));
@ -590,7 +590,7 @@ static int h_monitor(int argc, unsigned char **argv){
return 0;
}
static int h_parent(int argc, unsigned char **argv){
static int h_parent(int argc, char **argv){
struct ace *acl = NULL;
struct chain *chains;
@ -637,10 +637,10 @@ static int h_parent(int argc, unsigned char **argv){
#else
getip46(46, argv[3], (struct sockaddr *)&chains->addr);
#endif
chains->exthost = (unsigned char *)mystrdup((char *)argv[3]);
chains->exthost = (char *)mystrdup((char *)argv[3]);
*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]);
if(argc > 5) chains->extuser = (char *)mystrdup((char *)argv[5]);
if(argc > 6) chains->extpass = (char *)mystrdup((char *)argv[6]);
if(!acl->chains) {
acl->chains = chains;
}
@ -654,7 +654,7 @@ static int h_parent(int argc, unsigned char **argv){
}
static int h_nolog(int argc, unsigned char **argv){
static int h_nolog(int argc, char **argv){
struct ace *acl = NULL;
acl = conf.acl;
@ -668,7 +668,7 @@ static int h_nolog(int argc, unsigned char **argv){
return 0;
}
int scanipl(unsigned char *arg, struct iplist *dst){
int scanipl(char *arg, struct iplist *dst){
#ifndef NOIPV6
struct sockaddr_in6 sa;
#else
@ -686,7 +686,7 @@ int scanipl(unsigned char *arg, struct iplist *dst){
dst->family = *SAFAMILY(&sa);
if(dash){
if(afdetect(dash+1) == -1) return 1;
if(!getip46(46, (unsigned char *)dash+1, (struct sockaddr *)&sa)) return 2;
if(!getip46(46, (char *)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;
@ -700,12 +700,12 @@ int scanipl(unsigned char *arg, struct iplist *dst){
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;
((char *)&dst->ip_from)[i-1] = 0x00;
((char *)&dst->ip_to)[i-1] = 0xff;
}
for(;nbits;nbits--){
((unsigned char *)&dst->ip_from)[nbytes] &= ~(0x01<<(nbits-1));
((unsigned char *)&dst->ip_to)[nbytes] |= (0x01<<(nbits-1));
((char *)&dst->ip_from)[nbytes] &= ~(0x01<<(nbits-1));
((char *)&dst->ip_to)[nbytes] |= (0x01<<(nbits-1));
}
return 0;
}
@ -713,9 +713,9 @@ int scanipl(unsigned char *arg, struct iplist *dst){
return 0;
}
struct ace * make_ace (int argc, unsigned char ** argv){
struct ace * make_ace (int argc, char ** argv){
struct ace * acl;
unsigned char *arg;
char *arg;
struct iplist *ipl=NULL;
struct portlist *portl=NULL;
struct userlist *userl=NULL;
@ -727,7 +727,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
memset(acl, 0, sizeof(struct ace));
if(argc > 0 && strcmp("*", (char *)argv[0])) {
arg = argv[0];
arg = (unsigned char *)strtok((char *)arg, ",");
arg = (char *)strtok((char *)arg, ",");
do {
if(!acl->users) {
acl->users = userl = myalloc(sizeof(struct userlist));
@ -741,11 +741,11 @@ struct ace * make_ace (int argc, unsigned char ** argv){
return(NULL);
}
memset(userl, 0, sizeof(struct userlist));
userl->user=(unsigned char*)mystrdup((char *)arg);
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
userl->user=(char*)mystrdup((char *)arg);
} while((arg = (char *)strtok((char *)NULL, ",")));
}
if(argc > 1 && strcmp("*", (char *)argv[1])) {
arg = (unsigned char *)strtok((char *)argv[1], ",");
arg = (char *)strtok((char *)argv[1], ",");
do {
if(!acl->src) {
acl->src = ipl = myalloc(sizeof(struct iplist));
@ -763,13 +763,13 @@ struct ace * make_ace (int argc, unsigned char ** argv){
fprintf(stderr, "Invalid IP, IP range or CIDR, line %d\n", linenum);
return(NULL);
}
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
} while((arg = (char *)strtok((char *)NULL, ",")));
}
if(argc > 2 && strcmp("*", (char *)argv[2])) {
arg = (unsigned char *)strtok((char *)argv[2], ",");
arg = (char *)strtok((char *)argv[2], ",");
do {
int arglen;
unsigned char *pattern;
char *pattern;
struct iplist tmpip={NULL};
arglen = (int)strlen((char *)arg);
@ -799,7 +799,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
arglen--;
hostnamel->matchtype ^= MATCHBEGIN;
}
hostnamel->name = (unsigned char *) mystrdup( (char *)pattern);
hostnamel->name = (char *) mystrdup( (char *)pattern);
if(!hostnamel->name) {
fprintf(stderr, "No memory for ACL entry, line %d\n", linenum);
return(NULL);
@ -820,10 +820,10 @@ struct ace * make_ace (int argc, unsigned char ** argv){
}
*ipl = tmpip;
}
}while((arg = (unsigned char *)strtok((char *)NULL, ",")));
}while((arg = (char *)strtok((char *)NULL, ",")));
}
if(argc > 3 && strcmp("*", (char *)argv[3])) {
arg = (unsigned char *)strtok((char *)argv[3], ",");
arg = (char *)strtok((char *)argv[3], ",");
do {
if(!acl->ports) {
acl->ports = portl = myalloc(sizeof(struct portlist));
@ -843,10 +843,10 @@ struct ace * make_ace (int argc, unsigned char ** argv){
return(NULL);
}
if (res == 1) portl->endport = portl->startport;
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
} while((arg = (char *)strtok((char *)NULL, ",")));
}
if(argc > 4 && strcmp("*", (char *)argv[4])) {
arg = (unsigned char *)strtok((char *)argv[4], ",");
arg = (char *)strtok((char *)argv[4], ",");
do {
if(!strcmp((char *)arg, "CONNECT")){
acl->operation |= CONNECT;
@ -909,7 +909,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
fprintf(stderr, "Unknown operation type: %s line %d\n", arg, linenum);
return(NULL);
}
} while((arg = (unsigned char *)strtok((char *)NULL, ",")));
} while((arg = (char *)strtok((char *)NULL, ",")));
}
if(argc > 5){
for(arg = argv[5]; *arg;){
@ -973,7 +973,7 @@ struct ace * make_ace (int argc, unsigned char ** argv){
}
static int h_ace(int argc, unsigned char **argv){
static int h_ace(int argc, char **argv){
int res = 0;
int offset = 0;
struct ace *acl = NULL;
@ -1187,26 +1187,26 @@ static int h_ace(int argc, unsigned char **argv){
return 0;
}
static int h_logdump(int argc, unsigned char **argv){
static int h_logdump(int argc, char **argv){
conf.logdumpsrv = (unsigned) atoi((char *) *(argv + 1));
if(argc > 2) conf.logdumpcli = (unsigned) atoi((char *) *(argv + 2));
return 0;
}
static int h_filtermaxsize(int argc, unsigned char **argv){
static int h_filtermaxsize(int argc, char **argv){
conf.filtermaxsize = atoi((char *) *(argv + 1));
return 0;
}
static int h_delimchar(int argc, unsigned char **argv){
static int h_delimchar(int argc, char **argv){
conf.delimchar = *argv[1];
return 0;
}
#ifndef NORADIUS
static int h_radius(int argc, unsigned char **argv){
static int h_radius(int argc, char **argv){
unsigned short port;
/*
@ -1248,7 +1248,7 @@ static int h_radius(int argc, unsigned char **argv){
return 0;
}
#endif
static int h_authcache(int argc, unsigned char **argv){
static int h_authcache(int argc, char **argv){
conf.authcachetype = 0;
if(strstr((char *) *(argv + 1), "ip")) conf.authcachetype |= 1;
if(strstr((char *) *(argv + 1), "user")) conf.authcachetype |= 2;
@ -1262,7 +1262,7 @@ static int h_authcache(int argc, unsigned char **argv){
return 0;
}
static int h_plugin(int argc, unsigned char **argv){
static int h_plugin(int argc, char **argv){
#ifdef NOPLUGINS
return 999;
#else
@ -1302,7 +1302,7 @@ static int h_plugin(int argc, unsigned char **argv){
#ifndef _WIN32
uid_t strtouid(unsigned char *str){
uid_t strtouid(char *str){
uid_t res = 0;
if(!isnumber(*(char *)str)){
@ -1315,7 +1315,7 @@ uid_t strtouid(unsigned char *str){
}
static int h_setuid(int argc, unsigned char **argv){
static int h_setuid(int argc, char **argv){
uid_t res = 0;
res = strtouid(argv[1]);
if(!res || setreuid(res,res)) {
@ -1325,7 +1325,7 @@ static int h_setuid(int argc, unsigned char **argv){
return 0;
}
gid_t strtogid(unsigned char *str){
gid_t strtogid(char *str){
gid_t res = 0;
if(!isnumber(*(char *)str)){
@ -1337,7 +1337,7 @@ gid_t strtogid(unsigned char *str){
return res;
}
static int h_setgid(int argc, unsigned char **argv){
static int h_setgid(int argc, char **argv){
gid_t res = 0;
res = strtogid(argv[1]);
@ -1349,7 +1349,7 @@ static int h_setgid(int argc, unsigned char **argv){
}
static int h_chroot(int argc, unsigned char **argv){
static int h_chroot(int argc, char **argv){
uid_t uid = 0;
gid_t gid = 0;
if(argc > 2) {
@ -1468,15 +1468,15 @@ struct commands commandhandlers[]={
{specificcommands, "", h_noop, 1, 0}
};
int parsestr (unsigned char *str, unsigned char **argm, int nitems, unsigned char ** buff, int *inbuf, int *bufsize){
int parsestr (char *str, char **argm, int nitems, char ** buff, int *inbuf, int *bufsize){
#define buf (*buff)
int argc = 0;
int space = 1;
int comment = 0;
unsigned char * incbegin = 0;
char * incbegin = 0;
int fd;
int res, len;
unsigned char *str1;
char *str1;
for(;;str++){
if(*str == '\"'){
@ -1566,15 +1566,15 @@ int parsestr (unsigned char *str, unsigned char **argm, int nitems, unsigned cha
int readconfig(FILE * fp){
unsigned char ** argv = NULL;
unsigned char * buf = NULL;
char ** argv = NULL;
char * buf = NULL;
int bufsize = STRINGBUF*2;
int inbuf = 0;
int argc;
struct commands * cm;
int res = 0;
if( !(buf = myalloc(bufsize)) || ! (argv = myalloc((NPARAMS + 1) * sizeof(unsigned char *))) ) {
if( !(buf = myalloc(bufsize)) || ! (argv = myalloc((NPARAMS + 1) * sizeof(char *))) ) {
fprintf(stderr, "No memory for configuration");
return(10);
}
@ -1642,9 +1642,9 @@ void freeconf(struct extparam *confp){
struct ace *acl;
struct filemon *fm;
int counterd, archiverc;
unsigned char *logtarget;
unsigned char **archiver;
unsigned char * logformat;
char *logtarget;
char **archiver;
char * logformat;
int i;
@ -1711,7 +1711,7 @@ void freeconf(struct extparam *confp){
{
char * args[] = {"auth", "iponly", NULL};
h_auth(2, (unsigned char **)args);
h_auth(2, (char **)args);
}
if(tc)dumpcounters(tc,counterd);
for(; tc; tc = (struct trafcount *) itfree(tc, tc->next)){

View File

@ -153,12 +153,12 @@ void * dnsprchild(struct clientparam* param) {
#endif
}
if(socksendto(param->remsock, (struct sockaddr *)&param->sinsr, buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
if(socksendto(param->remsock, (struct sockaddr *)&param->sinsr, (char *)buf, i, conf.timeouts[SINGLEBYTE_L]*1000) != i){
RETURN(820);
}
param->statscli64 += i;
param->nwrites++;
len = sockrecvfrom(param->remsock, (struct sockaddr *)&param->sinsr, buf, BUFSIZE, conf.timeouts[DNS_TO]*1000);
len = sockrecvfrom(param->remsock, (struct sockaddr *)&param->sinsr, (char *)buf, BUFSIZE, conf.timeouts[DNS_TO]*1000);
if(len <= 13) {
RETURN(821);
}
@ -174,7 +174,7 @@ void * dnsprchild(struct clientparam* param) {
if(len != us) RETURN(832);
}
if(buf[6] || buf[7]){
if(socksendto(param->clisock, (struct sockaddr *)&param->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
if(socksendto(param->clisock, (struct sockaddr *)&param->sincr, (char *)buf, len, conf.timeouts[SINGLEBYTE_L]*1000) != len){
RETURN(822);
}
RETURN(0);
@ -185,7 +185,7 @@ void * dnsprchild(struct clientparam* param) {
buf[2] = 0x85;
buf[3] = 0x83;
}
res = socksendto(param->clisock, (struct sockaddr *)&param->sincr, buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
res = socksendto(param->clisock, (struct sockaddr *)&param->sincr, (char *)buf, len, conf.timeouts[SINGLEBYTE_L]*1000);
if(res != len){RETURN(819);}
if(!ip) {RETURN(888);}

View File

@ -20,7 +20,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
if(innbuf)*innbuf = 0;
if(len < 140) return 707;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
while((i = sockgetlinebuf(param, SERVER, (char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
if(i < 3) return 706;
buf[i] = 0;
@ -28,13 +28,13 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
*innbuf = i;
return 702;
}
sprintf(buf, "USER %.128s\r\n", param->extusername?param->extusername:(unsigned char *)"anonymous");
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
sprintf(buf, "USER %.128s\r\n", param->extusername?param->extusername:(char *)"anonymous");
if((int)socksend(param->remsock, (char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 703;
}
param->statscli64 += (int)strlen(buf);
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
while((i = sockgetlinebuf(param, SERVER, (char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
if(i < 3) return 704;
buf[i] = 0;
@ -43,15 +43,15 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
sprintf(buf, "PASS %.128s\r\n",
param->extusername?
(param->extpassword?
param->extpassword:(unsigned char *)"")
:(unsigned char *)"3proxy@");
param->extpassword:(char *)"")
:(char *)"3proxy@");
res = (int)strlen(buf);
if((int)socksend(param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
if((int)socksend(param->remsock, (char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 705;
}
param->statscli64 += res;
param->nwrites++;
while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0){
while((i = sockgetlinebuf(param, SERVER, (char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0){
buf[i] = 0;
res = (i>3 && buf[3] != '-')? atoi(buf)/100 : 0;
if(res || (nbuf && (len-i) > 256 && i > 3)) {
@ -71,18 +71,18 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
return 0;
}
int ftpcd(struct clientparam *param, unsigned char* path, char *nbuf, int *innbuf){
int ftpcd(struct clientparam *param, char* path, char *nbuf, int *innbuf){
char buf[1024];
int i;
int inbuf = 0;
sprintf(buf, "CWD %.512s\r\n", path);
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
if((int)socksend(param->remsock, (char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 711;
}
param->statscli64 += (int)strlen(buf);
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] == '-')){
while((i = sockgetlinebuf(param, SERVER, (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) {
memcpy(nbuf + inbuf, buf, i);
inbuf += i;
@ -95,7 +95,7 @@ int ftpcd(struct clientparam *param, unsigned char* path, char *nbuf, int *innbu
return 0;
}
int ftpres(struct clientparam *param, unsigned char * buf, int l){
int ftpres(struct clientparam *param, char * buf, int l){
int i;
if (l < 16) return 755;
@ -107,10 +107,10 @@ int ftpres(struct clientparam *param, unsigned char * buf, int l){
return 0;
}
int ftpsyst(struct clientparam *param, unsigned char *buf, unsigned len){
int ftpsyst(struct clientparam *param, char *buf, unsigned len){
int i;
if(socksend(param->remsock, (unsigned char *)"SYST\r\n", 6, conf.timeouts[STRING_S]) != 6){
if(socksend(param->remsock, (char *)"SYST\r\n", 6, conf.timeouts[STRING_S]) != 6){
return 721;
}
param->statscli64 += 6;
@ -125,11 +125,11 @@ int ftpsyst(struct clientparam *param, unsigned char *buf, unsigned len){
return 0;
}
int ftppwd(struct clientparam *param, unsigned char *buf, unsigned len){
int ftppwd(struct clientparam *param, char *buf, unsigned len){
int i;
char *b, *e;
if(socksend(param->remsock, (unsigned char *)"PWD\r\n", 5, conf.timeouts[STRING_S]) != 5){
if(socksend(param->remsock, (char *)"PWD\r\n", 5, conf.timeouts[STRING_S]) != 5){
return 731;
}
param->statscli64 += 5;
@ -149,17 +149,17 @@ int ftppwd(struct clientparam *param, unsigned char *buf, unsigned len){
return 0;
}
int ftptype(struct clientparam *param, unsigned char* f_type){
int ftptype(struct clientparam *param, char* f_type){
char buf[1024];
int i;
sprintf(buf, "TYPE %.512s\r\n", f_type);
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
if((int)socksend(param->remsock, (char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
return 741;
}
param->statscli64 += (int)strlen(buf);
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] == '-')){
while((i = sockgetlinebuf(param, SERVER, (char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
if(i < 3) return 742;
if(buf[0] != '2') return 740;
@ -176,12 +176,12 @@ SOCKET ftpdata(struct clientparam *param){
unsigned short b5, b6;
SASIZETYPE sasize;
if(socksend(param->remsock, (unsigned char *)"PASV\r\n", 6, conf.timeouts[STRING_S]) != 6){
if(socksend(param->remsock, (char *)"PASV\r\n", 6, conf.timeouts[STRING_S]) != 6){
return INVALID_SOCKET;
}
param->statscli64 += 6;
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] == '-')){
while((i = sockgetlinebuf(param, SERVER, (char *)buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
if(i < 7) return INVALID_SOCKET;
if(buf[0] != '2') return INVALID_SOCKET;
@ -216,7 +216,7 @@ SOCKET ftpdata(struct clientparam *param){
return s;
}
SOCKET ftpcommand(struct clientparam *param, unsigned char * command, unsigned char *arg) {
SOCKET ftpcommand(struct clientparam *param, char * command, char *arg) {
char buf[1024];
int i;
SOCKET s;
@ -225,15 +225,15 @@ SOCKET ftpcommand(struct clientparam *param, unsigned char * command, unsigned c
s = ftpdata(param);
if(s==INVALID_SOCKET) return INVALID_SOCKET;
sprintf(buf, "%.15s%s%.512s\r\n", command, arg?
(unsigned char *)" ":(unsigned char *)"",
arg?arg:(unsigned char *)"");
if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
" ":"",
arg?arg:"");
if((int)socksend(param->remsock, buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
so._closesocket(s);
return INVALID_SOCKET;
}
param->statscli64 += (int)strlen(buf);
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] == '-')){
while((i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
}
if(i < 3) {
so._closesocket(s);

View File

@ -13,8 +13,8 @@
void * ftpprchild(struct clientparam* param) {
int i=0, res;
unsigned char *buf;
unsigned char *se;
char *buf;
char *se;
int status = 0;
int inbuf;
int pasv = 0;
@ -29,7 +29,7 @@ void * ftpprchild(struct clientparam* param) {
param->operation = CONNECT;
lg.l_onoff = 1;
lg.l_linger = conf.timeouts[STRING_L];;
if(socksend(param->ctrlsock, (unsigned char *)"220 Ready\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (801);}
if(socksend(param->ctrlsock, (char *)"220 Ready\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (801);}
for(;;){
i = sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 10, '\n', conf.timeouts[CONNECTION_S]);
if(!i) {
@ -37,7 +37,7 @@ void * ftpprchild(struct clientparam* param) {
}
if(i<4) {RETURN(802);}
buf[i] = 0;
if ((se=(unsigned char *)strchr((char *)buf, '\r'))) *se = 0;
if ((se=(char *)strchr((char *)buf, '\r'))) *se = 0;
if (req) myfree (req);
req = NULL;
@ -50,7 +50,7 @@ void * ftpprchild(struct clientparam* param) {
}
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
param->ctrlsocksrv = param->remsock;
if(socksend(param->ctrlsock, (unsigned char *)"220 Ready\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (801);}
if(socksend(param->ctrlsock, (char *)"220 Ready\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (801);}
status = 1;
}
else if (!strncasecmp((char *)buf, "USER ", 5)){
@ -59,12 +59,12 @@ void * ftpprchild(struct clientparam* param) {
if((res = (*param->srv->authfunc)(param))) {RETURN(res);}
param->ctrlsocksrv = param->remsock;
}
if(socksend(param->ctrlsock, (unsigned char *)"331 ok\r\n", 8, conf.timeouts[STRING_S])!=8) {RETURN (807);}
if(socksend(param->ctrlsock, (char *)"331 ok\r\n", 8, conf.timeouts[STRING_S])!=8) {RETURN (807);}
status = 2;
}
else if (!strncasecmp((char *)buf, "PASS ", 5)){
param->extpassword = (unsigned char *)mystrdup((char *)buf+5);
param->extpassword = (char *)mystrdup((char *)buf+5);
inbuf = BUFSIZE;
res = ftplogin(param, (char *)buf, &inbuf);
param->res = res;
@ -129,16 +129,16 @@ void * ftpprchild(struct clientparam* param) {
if(pasv == 1){
if(*SAFAMILY(&param->sincl) == AF_INET)
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
(unsigned)(((unsigned char *)(SAADDR(&param->sincl)))[0]),
(unsigned)(((unsigned char *)(SAADDR(&param->sincl)))[1]),
(unsigned)(((unsigned char *)(SAADDR(&param->sincl)))[2]),
(unsigned)(((unsigned char *)(SAADDR(&param->sincl)))[3]),
(unsigned)(((unsigned char *)(SAPORT(&param->sincl)))[0]),
(unsigned)(((unsigned char *)(SAPORT(&param->sincl)))[1])
(unsigned)(((char *)(SAADDR(&param->sincl)))[0]),
(unsigned)(((char *)(SAADDR(&param->sincl)))[1]),
(unsigned)(((char *)(SAADDR(&param->sincl)))[2]),
(unsigned)(((char *)(SAADDR(&param->sincl)))[3]),
(unsigned)(((char *)(SAPORT(&param->sincl)))[0]),
(unsigned)(((char *)(SAPORT(&param->sincl)))[1])
);
else sprintf((char *)buf, "227 OK (127,0,0,1,%u,%u)\r\n",
(unsigned)(((unsigned char *)(SAPORT(&param->sincl)))[0]),
(unsigned)(((unsigned char *)(SAPORT(&param->sincl)))[1])
(unsigned)(((char *)(SAPORT(&param->sincl)))[0]),
(unsigned)(((char *)(SAPORT(&param->sincl)))[1])
);
}
else {
@ -230,11 +230,11 @@ void * ftpprchild(struct clientparam* param) {
so._closesocket(clidatasock);
clidatasock = INVALID_SOCKET;
if(socksend(param->ctrlsock, (unsigned char *)"550 err\r\n", 9, conf.timeouts[STRING_S])!=9) {RETURN (831);}
if(socksend(param->ctrlsock, (char *)"550 err\r\n", 9, conf.timeouts[STRING_S])!=9) {RETURN (831);}
continue;
}
if(socksend(param->ctrlsock, (unsigned char *)"125 data\r\n", 10, conf.timeouts[STRING_S]) != 10) {
if(socksend(param->ctrlsock, (char *)"125 data\r\n", 10, conf.timeouts[STRING_S]) != 10) {
param->remsock = INVALID_SOCKET;
RETURN (832);
}
@ -274,7 +274,7 @@ void * ftpprchild(struct clientparam* param) {
}
else {
if(status < 3) {
if(socksend(param->remsock, (unsigned char *)"530 login\r\n", 11, conf.timeouts[STRING_S])!=1) {RETURN (810);}
if(socksend(param->remsock, (char *)"530 login\r\n", 11, conf.timeouts[STRING_S])!=1) {RETURN (810);}
continue;
}
if(!strncasecmp((char *)buf, "QUIT", 4)) status = 5;
@ -295,7 +295,7 @@ void * ftpprchild(struct clientparam* param) {
sasize = sizeof(param->sincr);
if(so._getpeername(param->ctrlsock, (struct sockaddr *)&param->sincr, &sasize)){RETURN(819);}
if(req && (param->statscli64 || param->statssrv64)){
dolog(param, (unsigned char *)req);
dolog(param, (char *)req);
}
}
@ -316,7 +316,7 @@ CLEANRET:
sasize = sizeof(param->sincr);
so._getpeername(param->ctrlsock, (struct sockaddr *)&param->sincr, &sasize);
if(param->res != 0 || param->statscli64 || param->statssrv64 ){
dolog(param, (unsigned char *)((req && (param->res > 802))? req:NULL));
dolog(param, (req && (param->res > 802))? req:NULL);
}
if(req) myfree(req);
if(buf) myfree(buf);

File diff suppressed because it is too large Load Diff

View File

@ -1,74 +0,0 @@
/*
Minimal version of Henry Spencer's regex library
with minor modifications
*/
#ifndef _REGEX_H_
#define _REGEX_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef off_t regoff_t;
typedef struct {
int re_magic;
size_t re_nsub; /* number of parenthesized subexpressions */
const char *re_endp; /* end pointer for REG_PEND */
struct re_guts *re_g; /* none of your business :-) */
} regex_t;
typedef struct {
regoff_t rm_so; /* start of match */
regoff_t rm_eo; /* end of match */
} regmatch_t;
extern int regcomp(regex_t *, const char *, int);
#define REG_BASIC 0000
#define REG_EXTENDED 0001
#define REG_ICASE 0002
#define REG_NOSUB 0004
#define REG_NEWLINE 0010
#define REG_NOSPEC 0020
#define REG_PEND 0040
#define REG_DUMP 0200
#define REG_OKAY 0
#define REG_NOMATCH 1
#define REG_BADPAT 2
#define REG_ECOLLATE 3
#define REG_ECTYPE 4
#define REG_EESCAPE 5
#define REG_ESUBREG 6
#define REG_EBRACK 7
#define REG_EPAREN 8
#define REG_EBRACE 9
#define REG_BADBR 10
#define REG_ERANGE 11
#define REG_ESPACE 12
#define REG_BADRPT 13
#define REG_EMPTY 14
#define REG_ASSERT 15
#define REG_INVARG 16
#define REG_ATOI 255 /* convert name to number (!) */
#define REG_ITOA 0400 /* convert number to name (!) */
extern int regexec(const regex_t *, const char *, size_t, regmatch_t [], int);
#define REG_NOTBOL 00001
#define REG_NOTEOL 00002
#define REG_STARTEND 00004
#define REG_TRACE 00400 /* tracing of execution */
#define REG_LARGE 01000 /* force large representation */
#define REG_BACKR 02000 /* force use of backref code */
extern void regfree(regex_t *);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,321 +0,0 @@
/*
Unix SMB/CIFS implementation.
a partial implementation of DES designed for use in the
SMB authentication protocol
Copyright (C) Andrew Tridgell 1998
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <string.h>
#include <ctype.h>
#define uchar unsigned char
static const uchar perm1[56] = {57, 49, 41, 33, 25, 17, 9,
1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27,
19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15,
7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29,
21, 13, 5, 28, 20, 12, 4};
static const uchar perm2[48] = {14, 17, 11, 24, 1, 5,
3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8,
16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55,
30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53,
46, 42, 50, 36, 29, 32};
static const uchar perm3[64] = {58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7};
static const uchar perm4[48] = { 32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1};
static const uchar perm5[32] = { 16, 7, 20, 21,
29, 12, 28, 17,
1, 15, 23, 26,
5, 18, 31, 10,
2, 8, 24, 14,
32, 27, 3, 9,
19, 13, 30, 6,
22, 11, 4, 25};
static const uchar perm6[64] ={ 40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25};
static const uchar sc[16] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};
static const uchar sbox[8][4][16] = {
{{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7},
{0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8},
{4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0},
{15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}},
{{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10},
{3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5},
{0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15},
{13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}},
{{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8},
{13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1},
{13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7},
{1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}},
{{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15},
{13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9},
{10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4},
{3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}},
{{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9},
{14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6},
{4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14},
{11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}},
{{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11},
{10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8},
{9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6},
{4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}},
{{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1},
{13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6},
{1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2},
{6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}},
{{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7},
{1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2},
{7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8},
{2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}};
static void permute(char *out, const char *in, const uchar *p, int n)
{
int i;
for (i=0;i<n;i++)
out[i] = in[p[i]-1];
}
static void lshift(char *d, int count, int n)
{
char out[64];
int i;
for (i=0;i<n;i++)
out[i] = d[(i+count)%n];
for (i=0;i<n;i++)
d[i] = out[i];
}
static void concat(char *out, char *in1, char *in2, int l1, int l2)
{
while (l1--)
*out++ = *in1++;
while (l2--)
*out++ = *in2++;
}
static void xor(char *out, char *in1, char *in2, int n)
{
int i;
for (i=0;i<n;i++)
out[i] = in1[i] ^ in2[i];
}
static void dohash(char *out, char *in, char *key)
{
int i, j, k;
char pk1[56];
char c[28];
char d[28];
char cd[56];
char ki[16][48];
char pd1[64];
char l[32], r[32];
char rl[64];
permute(pk1, key, perm1, 56);
for (i=0;i<28;i++)
c[i] = pk1[i];
for (i=0;i<28;i++)
d[i] = pk1[i+28];
for (i=0;i<16;i++) {
lshift(c, sc[i], 28);
lshift(d, sc[i], 28);
concat(cd, c, d, 28, 28);
permute(ki[i], cd, perm2, 48);
}
permute(pd1, in, perm3, 64);
for (j=0;j<32;j++) {
l[j] = pd1[j];
r[j] = pd1[j+32];
}
for (i=0;i<16;i++) {
char er[48];
char erk[48];
char b[8][6];
char cb[32];
char pcb[32];
char r2[32];
permute(er, r, perm4, 48);
xor(erk, er, ki[i], 48);
for (j=0;j<8;j++)
for (k=0;k<6;k++)
b[j][k] = erk[j*6 + k];
for (j=0;j<8;j++) {
int m, n;
m = (b[j][0]<<1) | b[j][5];
n = (b[j][1]<<3) | (b[j][2]<<2) | (b[j][3]<<1) | b[j][4];
for (k=0;k<4;k++)
b[j][k] = (sbox[j][m][n] & (1<<(3-k)))?1:0;
}
for (j=0;j<8;j++)
for (k=0;k<4;k++)
cb[j*4+k] = b[j][k];
permute(pcb, cb, perm5, 32);
xor(r2, l, pcb, 32);
for (j=0;j<32;j++)
l[j] = r[j];
for (j=0;j<32;j++)
r[j] = r2[j];
}
concat(rl, r, l, 32, 32);
permute(out, rl, perm6, 64);
}
static void str_to_key(unsigned char *str,unsigned char *key)
{
int i;
key[0] = str[0]>>1;
key[1] = ((str[0]&0x01)<<6) | (str[1]>>2);
key[2] = ((str[1]&0x03)<<5) | (str[2]>>3);
key[3] = ((str[2]&0x07)<<4) | (str[3]>>4);
key[4] = ((str[3]&0x0F)<<3) | (str[4]>>5);
key[5] = ((str[4]&0x1F)<<2) | (str[5]>>6);
key[6] = ((str[5]&0x3F)<<1) | (str[6]>>7);
key[7] = str[6]&0x7F;
for (i=0;i<8;i++) {
key[i] = (key[i]<<1);
}
}
static void smbhash(unsigned char *out, const unsigned char *in, unsigned char *key)
{
int i;
char outb[64];
char inb[64];
char keyb[64];
unsigned char key2[8];
str_to_key(key, key2);
for (i=0;i<64;i++) {
inb[i] = (in[i/8] & (1<<(7-(i%8)))) ? 1 : 0;
keyb[i] = (key2[i/8] & (1<<(7-(i%8)))) ? 1 : 0;
outb[i] = 0;
}
dohash(outb, inb, keyb);
for (i=0;i<8;i++) {
out[i] = 0;
}
for (i=0;i<64;i++) {
if (outb[i])
out[i/8] |= (1<<(7-(i%8)));
}
}
/*
* Converts the password to uppercase, and creates the LM
* password hash.
*/
void lmpwdhash(const unsigned char *password,unsigned char *lmhash)
{
int i;
unsigned char p14[14];
static unsigned char sp8[8] = {0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25};
memset(p14, 0, sizeof(p14));
for (i = 0; i < 14 && password[i]; i++) {
p14[i] = toupper((int) password[i]);
}
smbhash(lmhash, sp8, p14);
smbhash(lmhash+8, sp8, p14+7);
}
/*
* Take the NT or LM password, and return the MSCHAP response
*
* The win_password MUST be exactly 16 bytes long.
*/
void mschap(const unsigned char *win_password,
const unsigned char *challenge, unsigned char *response)
{
unsigned char p21[21];
memset(p21, 0, sizeof(p21));
memcpy(p21, win_password, 16);
smbhash(response, challenge, p21);
smbhash(response+8, challenge, p21+7);
smbhash(response+16, challenge, p21+14);
}

View File

@ -58,7 +58,7 @@ void logpush(struct logevent *evt);
#define HAVESQL 0
#else
#ifndef NORADIUS
int raddobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s);
int raddobuf(struct clientparam * param, char * buf, int bufsize, const char *s);
void logradius(const char * buf, int len, struct LOGGER *logger);
#define HAVERADIUS 1
#else
@ -67,7 +67,7 @@ void logradius(const char * buf, int len, struct LOGGER *logger);
#ifndef NOODBC
#define HAVESQL 1
static int sqlinit(struct LOGGER *logger);
static int sqldobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s);
static int sqldobuf(struct clientparam * param, char * buf, int bufsize, const char *s);
static void sqllog(const char * buf, int len, struct LOGGER *logger);
static void sqlrotate(struct LOGGER *logger);
static void sqlclose(struct LOGGER *logger);
@ -87,7 +87,7 @@ static void syslogclose(struct LOGGER *logger);
#endif
static int stdloginit(struct LOGGER *logger);
static int stddobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s);
static int stddobuf(struct clientparam * param, char * buf, int bufsize, const char *s);
static void stdlog(const char * buf, int len, struct LOGGER *logger);
static void stdlogrotate(struct LOGGER *logger);
static void stdlogclose(struct LOGGER *logger);
@ -346,7 +346,7 @@ static void delaydolog(struct logevent *evt){
}
}
void dolog(struct clientparam * param, const unsigned char *s){
void dolog(struct clientparam * param, const char *s){
static int init = 0;
if(!param || !param->srv){
@ -497,7 +497,7 @@ char months[12][4] = {
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
unsigned char * dologname (unsigned char *buf, int bufsize, unsigned char *name, const unsigned char *ext, ROTATION lt, time_t t) {
char * dologname (char *buf, int bufsize, char *name, const char *ext, ROTATION lt, time_t t) {
struct tm *ts;
ts = localtime(&t);
@ -538,7 +538,7 @@ unsigned char * dologname (unsigned char *buf, int bufsize, unsigned char *name
return buf;
}
int dobuf2(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format){
int dobuf2(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec, struct tm* tm, char * format){
int i, j;
int len;
time_t sec;
@ -670,7 +670,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, int bufsize, const u
if(param->service < 15) {
len = (conf.stringtable)? (int)strlen((char *)conf.stringtable[SERVICES + param->service]) : 0;
if(len > 20) len = 20;
memcpy(buf+i, (len)?conf.stringtable[SERVICES + param->service]:(unsigned char*)"-", (len)?len:1);
memcpy(buf+i, (len)?conf.stringtable[SERVICES + param->service]:(char*)"-", (len)?len:1);
i += (len)?len:1;
}
break;
@ -787,7 +787,7 @@ int dobuf2(struct clientparam * param, unsigned char * buf, int bufsize, const u
return i;
}
int dobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s, const unsigned char * doublec){
int dobuf(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec){
struct tm* tm;
int i;
char * format;
@ -828,7 +828,7 @@ static int stdloginit(struct LOGGER *logger){
return 0;
}
static int stddobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s){
static int stddobuf(struct clientparam * param, char * buf, int bufsize, const char *s){
return dobuf(param, buf, bufsize, s, NULL);
}
@ -1014,8 +1014,8 @@ static int sqlinit(struct LOGGER *logger){
return 0;
}
static int sqldobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s){
return dobuf(param, buf, bufsize, s, (unsigned char *)"\'");
static int sqldobuf(struct clientparam * param, char * buf, int bufsize, const char *s){
return dobuf(param, buf, bufsize, s, "\'");
}

View File

@ -16,13 +16,13 @@
#endif
void tohex(unsigned char *in, unsigned char *out, int len);
void tohex(char *in, char *out, int len);
static unsigned char itoa64[] =
static char itoa64[] =
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
void
_crypt_to64(unsigned char *s, unsigned long v, int n)
_crypt_to64(char *s, unsigned long v, int n)
{
while (--n >= 0) {
*s++ = itoa64[v&0x3f];
@ -31,9 +31,9 @@ _crypt_to64(unsigned char *s, unsigned long v, int n)
}
unsigned char * ntpwdhash (unsigned char *szHash, const unsigned char *szPassword, int ctohex)
char * ntpwdhash (char *szHash, const char *szPassword, int ctohex)
{
unsigned char szUnicodePass[513];
char szUnicodePass[513];
unsigned int nPasswordLen;
MD4_CTX ctx;
unsigned int i;
@ -61,14 +61,14 @@ unsigned char * ntpwdhash (unsigned char *szHash, const unsigned char *szPasswor
}
unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsigned char *passwd){
char * mycrypt(const char *pw, const char *salt, char *passwd){
const unsigned char *ep;
if(salt[0] == '$' && salt[1] == '1' && salt[2] == '$' && (ep = (unsigned char *)strchr((char *)salt+3, '$'))) {
static unsigned char *magic = (unsigned char *)"$1$";
unsigned char *p;
const unsigned char *sp;
unsigned char final[MD5_SIZE];
const char *ep;
if(salt[0] == '$' && salt[1] == '1' && salt[2] == '$' && (ep = (char *)strchr((char *)salt+3, '$'))) {
static char *magic = (char *)"$1$";
char *p;
const char *sp;
char final[MD5_SIZE];
int sl,pl,i;
MD5_CTX ctx,ctx1;
unsigned long l;
@ -90,7 +90,7 @@ unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsi
/* Then the raw salt */
MD5Update(&ctx,sp,sl);
/* Then just as many unsigned characters of the MD5(pw,salt,pw) */
/* Then just as many characters of the MD5(pw,salt,pw) */
MD5Init(&ctx1);
MD5Update(&ctx1,pw,strlen((char *)pw));
MD5Update(&ctx1,sp,sl);
@ -170,7 +170,7 @@ unsigned char * mycrypt(const unsigned char *pw, const unsigned char *salt, unsi
#include <stdio.h>
int main(int argc, char* argv[]){
unsigned char buf[1024];
char buf[1024];
unsigned i;
if(argc < 2 || argc > 3) {
fprintf(stderr, "usage: \n"
@ -185,13 +185,13 @@ int main(int argc, char* argv[]){
return 1;
}
if(argc == 2) {
printf("NT:%s\n", ntpwdhash(buf, (unsigned char *)argv[1], 1));
printf("NT:%s\n", ntpwdhash(buf, (char *)argv[1], 1));
}
else {
i = (int)strlen((char *)argv[1]);
if (i > 64) argv[1][64] = 0;
sprintf((char *)buf, "$1$%s$", argv[1]);
printf("CR:%s\n", mycrypt((unsigned char *)argv[2], buf, buf+256));
printf("CR:%s\n", mycrypt(argv[2], buf, buf+256));
}
return 0;
}

View File

@ -1,88 +0,0 @@
/*
3APA3A simpliest proxy server
(c) 2002-2016 by Vladimir Dubrovin <3proxy@3proxy.ru>
please read License Agreement
*/
#include "proxy.h"
struct ntlmchal {
unsigned char sig[8];
unsigned char messtype[4];
unsigned char dom_len[2];
unsigned char dom_max_len[2];
unsigned char dom_offset[4];
unsigned char flags[4];
unsigned char challenge[8];
unsigned char reserved[8];
unsigned char addr_len[2];
unsigned char addr_max_len[2];
unsigned char addr_offset[4];
unsigned char data[1];
};
struct ntlmreq {
unsigned char sig[8];
unsigned char messtype[4];
unsigned char flags[4];
unsigned char dom_len[2];
unsigned char dom_max_len[2];
unsigned char dom_offset[4];
unsigned char pad1[2];
unsigned char host_len[2];
unsigned char host_max_len[2];
unsigned char host_offset[4];
unsigned char pad2[2];
unsigned char data[1];
};
int text2unicode(const char * text, char * buf, int buflen){
int count = 0;
buflen = ((buflen>>1)<<1);
if(!text || !buflen) return 0;
do {
buf[count++] = toupper(*text++);
buf[count++] = '\0';
} while (*text && count < buflen);
return count;
}
void unicode2text(const char *unicode, char * buf, int len){
int i;
if(!unicode || !len) return;
for(i=0; i<len; i++){
buf[i] = unicode[(i<<1)];
}
buf[i] = 0;
}
void genchallenge(struct clientparam *param, char * challenge, char *buf){
struct ntlmchal *chal;
char tmpbuf[1024];
char hostname[128];
int len, i;
chal = (struct ntlmchal *)tmpbuf;
memset(chal, 0, 1024);
memcpy(chal->sig, "NTLMSSP", 8);
chal->messtype[0] = 2;
gethostname(hostname, 128);
hostname[15] = 0;
len = (((int)strlen(hostname)) << 1);
chal->dom_len[0] = len;
chal->dom_max_len[0] = len;
chal->dom_offset[0] = (unsigned char)((unsigned char *)chal->data - (unsigned char *)chal);
chal->flags[0] = 0x03;
chal->flags[1] = 0x82;
chal->flags[2] = 0x81;
chal->flags[3] = 0xA0;
text2unicode(hostname, (char *)chal->data, 64);
time((time_t *)challenge);
memcpy(challenge+4, SAADDR(&param->sincr), 4);
challenge[1]^=*SAPORT(&param->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);
}

View File

@ -11,11 +11,11 @@
unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nbytesout);
void trafcountfunc(struct clientparam *param);
int checkACL(struct clientparam * param);
void nametohash(const unsigned char * name, unsigned char *hash);
unsigned hashindex(const unsigned char* hash);
void decodeurl(unsigned char *s, int allowcr);
int parsestr (unsigned char *str, unsigned char **argm, int nitems, unsigned char ** buff, int *inbuf, int *bufsize);
struct ace * make_ace (int argc, unsigned char ** argv);
void nametohash(const char * name, char *hash);
unsigned hashindex(const char* hash);
void decodeurl(char *s, int allowcr);
int parsestr (char *str, char **argm, int nitems, char ** buff, int *inbuf, int *bufsize);
struct ace * make_ace (int argc, char ** argv);
extern char * proxy_stringtable[];
extern char * admin_stringtable[];
extern struct schedule * schedule;

View File

@ -760,7 +760,7 @@ static FILTER_ACTION fp_client(void *fo, struct clientparam * param, void** fc){
return CONTINUE;
}
static FILTER_ACTION fp_request(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION fp_request(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
if(fc && (param->service == S_PROXY)){
if(FC->state) {
closefiles(FC);
@ -776,7 +776,7 @@ static FILTER_ACTION fp_request(void *fc, struct clientparam * param, unsigned c
return CONTINUE;
}
static FILTER_ACTION fp_hcli(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION fp_hcli(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
if(fc && param->service == S_SMTPP) {
processcallbacks(FC, FP_CALLONREQUEST, *buf_p + offset, *length_p - offset);
if(FC->what & FP_REJECT) return REJECT;
@ -792,7 +792,7 @@ static FILTER_ACTION fp_hcli(void *fc, struct clientparam * param, unsigned char
return CONTINUE;
}
static FILTER_ACTION fp_hsrv(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION fp_hsrv(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
if(fc && param->service == S_PROXY && (FC->state == GOT_HTTP_REQUEST || FC->state == GOT_HTTP_CLI_HDR || FC->state == GOT_HTTP_CLIDATA)){
if(FC->what & FP_SRVHEADER) initserverfile(FC);
FC->state = GOT_HTTP_SRV_HDR;
@ -801,7 +801,7 @@ static FILTER_ACTION fp_hsrv(void *fc, struct clientparam * param, unsigned char
return CONTINUE;
}
static FILTER_ACTION fp_dcli(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION fp_dcli(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
if(fc && FC->state == GOT_HTTP_REQUEST){
FC->state = GOT_HTTP_CLI_HDR2;
}
@ -809,7 +809,7 @@ static FILTER_ACTION fp_dcli(void *fc, struct clientparam * param, unsigned char
}
static FILTER_ACTION fp_dsrv(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION fp_dsrv(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
if(fc && (FC->state == GOT_HTTP_REQUEST || FC->state == GOT_HTTP_CLI_HDR || FC->state == GOT_HTTP_CLIDATA || FC->state == GOT_HTTP_CLIDATA || FC->state == GOT_HTTP_SRV_HDR)){
FC->state = GOT_HTTP_SRV_HDR2;
}
@ -846,7 +846,7 @@ static struct symbol fp_symbols[] = {
{NULL, "fp_stringtable", (void*) fp_stringtable}
};
static int h_cachedir(int argc, unsigned char **argv){
static int h_cachedir(int argc, char **argv){
char * dirp;
size_t len;
@ -866,7 +866,7 @@ static int h_cachedir(int argc, unsigned char **argv){
return 0;
}
static int h_preview(int argc, unsigned char **argv){
static int h_preview(int argc, char **argv){
preview = atoi(argv[1]);
return 0;
}

View File

@ -27,7 +27,7 @@ main(int argc, char *argv[])
char *attrs[] = { NULL, NULL };
int i, rc = -1;
int lderrno;
unsigned char tmpbuf[1000];
char tmpbuf[1000];
if ( argc < 6 )
{

View File

@ -22,7 +22,7 @@ static struct commands ldap_trafgroup_handler;
static struct commands ldap_attrsgroup_handler;
static struct commands ldap_dircount_handler;
static void (*dolog)(struct clientparam * param, const unsigned char *s);
static void (*ldolog)(struct clientparam * param, const char *s);
static char *attrs[] = { NULL, NULL};
@ -61,7 +61,7 @@ int savecounters(void)
struct trafcount *tcd;
struct counter_record wcounter;
FILE *f;
unsigned char *tmpbuf,pat_file[]="%s%s.lc";
char *tmpbuf,pat_file[]="%s%s.lc";
/* timetoexit !=0 - áóäåì çàâåðøàòüñÿ.*/
@ -112,7 +112,7 @@ static int ldapfunc(struct clientparam *param)
ld = ldap_init( ldap_serv, 389 );
if ( ld == NULL )
{
dolog(param,"Error ldap_init: No init lib ldap");
ldolog(param,"Error ldap_init: No init lib ldap");
/*ldap_perror( ld, "Error ldap_init" ); */
return 7;
}
@ -136,7 +136,7 @@ static int ldapfunc(struct clientparam *param)
if ( rc != LDAP_SUCCESS )
{
dolog(param,"Error ldap_bind: No connect ldap catalog");
ldolog(param,"Error ldap_bind: No connect ldap catalog");
ldap_unbind_s(ld);
return 7;
}
@ -147,7 +147,7 @@ static int ldapfunc(struct clientparam *param)
if ( ld == NULL )
{
dolog(param,"Error ldap_init: No init lib ldap");
ldolog(param,"Error ldap_init: No init lib ldap");
/*ldap_perror( ld, "Error ldap_init" ); */
return 7;
}
@ -156,7 +156,7 @@ static int ldapfunc(struct clientparam *param)
if ( rc != LDAP_SUCCESS )
{
dolog(param, "Error ldap_bind: Not authorize in ldap\
ldolog(param, "Error ldap_bind: Not authorize in ldap\
catalog, checked option \'ldapconnect\' ");
ldap_unbind_s(ld);
return 7;
@ -187,7 +187,7 @@ static int ldapfunc(struct clientparam *param)
/* --------------------------------------------------------------------------
handle command ldapserv */
int h_ldapconnect(int argc, unsigned char ** argv)
int h_ldapconnect(int argc, char ** argv)
{
LDAP *ld = NULL;
@ -216,7 +216,7 @@ int h_ldapconnect(int argc, unsigned char ** argv)
}
/* --------------------------------------------------------------------------
handle command ldapaccess */
int h_access(int argc, unsigned char ** argv)
int h_access(int argc, char ** argv)
{
if (argc < 1)
{
@ -229,7 +229,7 @@ int h_access(int argc, unsigned char ** argv)
/* --------------------------------------------------------------------------
handle command ldapsbase
searching base */
int h_sbase(int argc, unsigned char ** argv)
int h_sbase(int argc, char ** argv)
{
if (argc < 1)
{
@ -241,7 +241,7 @@ int h_sbase(int argc, unsigned char ** argv)
}
/* --------------------------------------------------------------------------
handle command ldapuserenv */
int h_userenv(int argc, unsigned char ** argv)
int h_userenv(int argc, char ** argv)
{
if (argc < 1)
{
@ -253,7 +253,7 @@ int h_userenv(int argc, unsigned char ** argv)
}
/* --------------------------------------------------------------------------
handle command ldaptrafgroup */
int h_trafgroup(int argc, unsigned char ** argv)
int h_trafgroup(int argc, char ** argv)
{
struct trafcount *newtrafcount;
struct bandlim *newbandlim;
@ -418,7 +418,7 @@ int h_trafgroup(int argc, unsigned char ** argv)
}
/* --------------------------------------------------------------------------
handle command ldapattrsgroup */
int h_attrsgroup(int argc, unsigned char ** argv)
int h_attrsgroup(int argc, char ** argv)
{
if (argc < 1)
{
@ -435,7 +435,7 @@ int h_attrsgroup(int argc, unsigned char ** argv)
}
/* --------------------------------------------------------------------------
handle command ldapdircount */
int h_dircount(int argc, unsigned char ** argv)
int h_dircount(int argc, char ** argv)
{
if (argc < 1)
{
@ -476,7 +476,7 @@ PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink,
}
dolog=pluginlink->findbyname("dolog");
ldolog=pluginlink->findbyname("dolog");
already_loaded = 1;

View File

@ -123,7 +123,7 @@ static FILTER_ACTION pcre_filter_client(void *fo, struct clientparam * param, vo
return (res)? CONTINUE:PASS;
}
static FILTER_ACTION pcre_filter_buffer(void *fc, struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
static FILTER_ACTION pcre_filter_buffer(void *fc, struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
int ovector[48];
int count = 0;
struct ace *acl;
@ -195,7 +195,7 @@ static FILTER_ACTION pcre_filter_buffer(void *fc, struct clientparam *param, uns
}
memcpy(newbuf, *buf_p, ovector[0]);
pl->freefunc(*buf_p);
*buf_p = (unsigned char *)newbuf;
*buf_p = (char *)newbuf;
*bufsize_p = ovector[0] + replen + 1;
}
memcpy(*buf_p + ovector[0], tmpbuf, replen);
@ -219,7 +219,7 @@ static void pcre_filter_close(void *fo){
pcre_data_free((struct pcre_filter_data *)fo);
}
static int h_pcre(int argc, unsigned char **argv){
static int h_pcre(int argc, char **argv){
int action = 0;
pcre *re = NULL;
struct ace *acl;
@ -317,7 +317,7 @@ static int h_pcre(int argc, unsigned char **argv){
return 0;
}
static int h_pcre_extend(int argc, unsigned char **argv){
static int h_pcre_extend(int argc, char **argv){
struct ace *acl;
if(!pcre_last_filter || !pcre_last_filter->data) return 1;
acl = ((struct pcre_filter_data *)pcre_last_filter->data)->acl;
@ -328,7 +328,7 @@ static int h_pcre_extend(int argc, unsigned char **argv){
return 0;
}
static int h_pcre_options(int argc, unsigned char **argv){
static int h_pcre_options(int argc, char **argv){
int i,j;
pcre_options = 0;

View File

@ -20,7 +20,7 @@ static struct auth pamauth;
#ifdef USERCASE
static int usercaselow = 0;
#endif
static unsigned char *service=NULL;
static char *service=NULL;
static struct pluginlink * pl;
@ -125,7 +125,7 @@ static int pamfunc(struct clientparam *param)
/*------------------------------- MAIN --------------------------------------
start plugin init */
PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, unsigned char** argv)
PLUGINAPI int PLUGINCALL start(struct pluginlink * pluginlink, int argc, char** argv)
{

View File

@ -47,7 +47,7 @@ static char hexMap[] = {
static BIO *bio_err=NULL;
static size_t bin2hex (const unsigned char* bin, size_t bin_length, char* str, size_t str_length)
static size_t bin2hex (const char* bin, size_t bin_length, char* str, size_t str_length)
{
char *p;
size_t i;
@ -111,9 +111,9 @@ SSL_CERT ssl_copy_cert(SSL_CERT cert)
EVP_PKEY *pk = NULL;
RSA *rsa = NULL;
unsigned char p1[] = "RU";
unsigned char p2[] = "3proxy";
unsigned char p3[] = "3proxy CA";
char p1[] = "RU";
char p2[] = "3proxy";
char p3[] = "3proxy CA";
char hash_name_sha1[sizeof(src_cert->sha1_hash)*2 + 1];
char cache_name[200];

View File

@ -28,7 +28,7 @@ extern "C" {
#endif
PROXYFUNC tcppmfunc, proxyfunc, smtppfunc, ftpprfunc;
static void (*pdolog)(struct clientparam * param, const unsigned char *s);
static void (*pdolog)(struct clientparam * param, const char *s);
static struct pluginlink * pl;
@ -239,25 +239,25 @@ int dossl(struct clientparam* param, SSL_CONN* ServerConnp, SSL_CONN* ClientConn
ServerConn = ssl_handshake_to_server(param->remsock, (char *)param->hostname, &ServerCert, &errSSL);
if ( ServerConn == NULL || ServerCert == NULL ) {
param->res = 8011;
pdolog(param, (unsigned char *)"SSL handshake to server failed");
if(ServerConn == NULL) pdolog(param, (unsigned char *)"ServerConn is NULL");
if(ServerCert == NULL) pdolog(param, (unsigned char *)"ServerCert is NULL");
if(errSSL)pdolog(param, (unsigned char *)errSSL);
pdolog(param, (char *)"SSL handshake to server failed");
if(ServerConn == NULL) pdolog(param, (char *)"ServerConn is NULL");
if(ServerCert == NULL) pdolog(param, (char *)"ServerCert is NULL");
if(errSSL)pdolog(param, (char *)errSSL);
return 1;
}
FakeCert = ssl_copy_cert(ServerCert);
if ( FakeCert == NULL ) {
param->res = 8012;
_ssl_cert_free(ServerCert);
pdolog(param, (unsigned char *)"Failed to create certificate copy");
pdolog(param, (char *)"Failed to create certificate copy");
ssl_conn_free(ServerConn);
return 2;
}
ClientConn = ssl_handshake_to_client(param->clisock, FakeCert, &errSSL);
if ( ClientConn == NULL ) {
param->res = 8012;
pdolog(param, (unsigned char *)"Handshake to client failed");
if(errSSL)pdolog(param, (unsigned char *)errSSL);
pdolog(param, (char *)"Handshake to client failed");
if(errSSL)pdolog(param, (char *)errSSL);
_ssl_cert_free(ServerCert);
_ssl_cert_free(FakeCert);
ssl_conn_free(ServerConn);
@ -329,7 +329,7 @@ static struct filter ssl_filter = {
int mitm = 0;
int ssl_inited = 0;
static int h_mitm(int argc, unsigned char **argv){
static int h_mitm(int argc, char **argv){
if(!ssl_inited) {
ssl_init();
ssl_inited = 1;
@ -342,7 +342,7 @@ static int h_mitm(int argc, unsigned char **argv){
return 0;
}
static int h_nomitm(int argc, unsigned char **argv){
static int h_nomitm(int argc, char **argv){
struct filter * sf;
if(!(mitm&1)) return 1;
if(mitm) usleep(100*SLEEPTIME);
@ -357,7 +357,7 @@ static int h_nomitm(int argc, unsigned char **argv){
return 0;
}
static int h_certpath(int argc, unsigned char **argv){
static int h_certpath(int argc, char **argv){
size_t len;
len = strlen(argv[1]);
if(!len || (argv[1][len - 1] != '/' && argv[1][len - 1] != '\\')) return 1;

View File

@ -26,7 +26,7 @@ extern "C" {
int DBGLEVEL = 0;
int already_loaded = 0;
typedef int (* handler)(int argc, unsigned char ** argv);
typedef int (* handler)(int argc, char ** argv);
struct extparam * sconfp;
struct commands * scommandhandlers;
@ -79,7 +79,7 @@ static void killtrafcorrect() {
}
struct commands trafcorrect_handler;
int h_trafcorrect(int argc, unsigned char ** argv) {
int h_trafcorrect(int argc, char ** argv) {
if (argc < 2) {
if(DBGLEVEL == 1)fprintf(stdout, "See documentation of traffic correct plugin.\n");
return 1;

View File

@ -85,12 +85,12 @@ static struct filter transparent_filter = {
transparent_filter_close
};
static int h_transparent(int argc, unsigned char **argv){
static int h_transparent(int argc, char **argv){
transparent_filter.filter_open = transparent_filter_open;
return 0;
}
static int h_notransparent(int argc, unsigned char **argv){
static int h_notransparent(int argc, char **argv){
transparent_filter.filter_open = NULL;
return 0;
}

View File

@ -22,17 +22,17 @@ static struct auth alwaysauth;
extern "C" {
#endif
unsigned char * conv_utf8_to_cp1251(unsigned char *s){
int i, j=0, n=(int)strlen((char *)s);
int byte2 = 0;
int c1, new_c1, new_c2, new_i;
char * conv_utf8_to_cp1251(char *s){
unsigned i, j=0, n=(int)strlen((char *)s);
unsigned byte2 = 0;
unsigned c1, new_c1, new_c2, new_i;
for(i = 0; i < n; i++){
if(byte2 && s[i]>=128 && s[i]<=192){
if(byte2 && ((unsigned)s[i])>=128 && ((unsigned)s[i])<=192){
new_c2=(c1&3)*64+(s[i]&63);
new_c1=(c1>>2)&5;
new_i=(new_c1*256)+new_c2;
if(new_i == 1025) s[j++] = 168;
else if (new_i==1105) s[j++] = 184;
if(new_i == 1025) s[j++] = (char)(unsigned char)168;
else if (new_i==1105) s[j++] = (char)(unsigned char)184;
else if (new_i < (192 + 848) || new_i > (255 + 848)){
return s;
}
@ -46,7 +46,7 @@ unsigned char * conv_utf8_to_cp1251(unsigned char *s){
c1 = s[i];
byte2 = 1;
}
else if(s[i] < 128) s[j++] = s[i];
else if(((unsigned)s[i]) < 128) s[j++] = s[i];
else return s;
}
s[j] = 0;

View File

@ -12,23 +12,23 @@
void * pop3pchild(struct clientparam* param) {
int i=0, res;
unsigned char buf[320];
unsigned char *se;
char buf[320];
char *se;
if(socksend(param->clisock, (unsigned char *)"+OK Proxy\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (611);}
if(socksend(param->clisock, (char *)"+OK Proxy\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (611);}
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
while(i > 4 && strncasecmp((char *)buf, "USER", 4)){
if(!strncasecmp((char *)buf, "QUIT", 4)){
socksend(param->clisock, (unsigned char *)"+OK\r\n", 5,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"+OK\r\n", 5,conf.timeouts[STRING_S]);
RETURN(0);
}
socksend(param->clisock, (unsigned char *)"-ERR need USER first\r\n", 22, conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"-ERR need USER first\r\n", 22, conf.timeouts[STRING_S]);
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
}
if(i<6) {RETURN(612);}
buf[i] = 0;
if ((se=(unsigned char *)strchr((char *)buf, '\r'))) *se = 0;
if ((se=(char *)strchr((char *)buf, '\r'))) *se = 0;
if (strncasecmp((char *)buf, "USER ", 5)){RETURN (614);}
if(parseconnusername((char *)buf +5, param, 0, 110)){RETURN(615);}
param->operation = CONNECT;
@ -38,9 +38,9 @@ void * pop3pchild(struct clientparam* param) {
if( i < 3 ) {RETURN(621);}
buf[i] = 0;
if(strncasecmp((char *)buf, "+OK", 3)||!strncasecmp((char *)buf+4, "PROXY", 5)){RETURN(622);}
if( socksend(param->remsock, (unsigned char *)"USER ", 5, conf.timeouts[STRING_S])!= 5 ||
if( socksend(param->remsock, (char *)"USER ", 5, conf.timeouts[STRING_S])!= 5 ||
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)
socksend(param->remsock, (char *)"\r\n", 2, conf.timeouts[STRING_S])!=2)
{RETURN(623);}
param->statscli64 += (uint64_t)(strlen((char *)param->extusername) + 7);
param->nwrites++;
@ -53,7 +53,7 @@ CLEANRET:
}
else dolog(param, NULL);
if(param->clisock != INVALID_SOCKET) {
if ((param->res > 0 && param->res < 100) || (param->res > 611 && param->res <700)) socksend(param->clisock, (unsigned char *)"-ERR\r\n", 6,conf.timeouts[STRING_S]);
if ((param->res > 0 && param->res < 100) || (param->res > 611 && param->res <700)) socksend(param->clisock, (char *)"-ERR\r\n", 6,conf.timeouts[STRING_S]);
}
freeparam(param);
return (NULL);

View File

@ -89,9 +89,6 @@ char * proxy_stringtable[] = {
"<body><h2>403 Access Denied</h2><h3>Access control list denies you to access this resource</body></html>\r\n",
/* 12*/ "HTTP/1.0 407 Proxy Authentication Required\r\n"
#ifndef NOCRYPT
"Proxy-Authenticate: NTLM\r\n"
#endif
"Proxy-Authenticate: Basic realm=\"proxy\"\r\n"
"Connection: close\r\n"
"Content-type: text/html; charset=utf-8\r\n"
@ -99,10 +96,7 @@ char * proxy_stringtable[] = {
"<html><head><title>407 Proxy Authentication Required</title></head>\r\n"
"<body><h2>407 Proxy Authentication Required</h2><h3>Access to requested resource disallowed by administrator or you need valid username/password to use this resource</h3></body></html>\r\n",
/* 13*/ "HTTP/1.0 407 Proxy Authentication Required\r\n"
"Connection: keep-alive\r\n"
"Content-Length: 0\r\n"
"Proxy-Authenticate: NTLM ",
/* 13*/ "",
/* 14*/ "HTTP/1.0 403 Forbidden\r\n"
"Connection: close\r\n"
@ -152,11 +146,11 @@ static void logurl(struct clientparam * param, char * buf, char * req, int ftp){
strcpy(se, sb);
}
}
if(param->res != 555 && param->res != 508)dolog(param, (unsigned char *)(req?buf:NULL));
if(param->res != 555 && param->res != 508)dolog(param, (char *)(req?buf:NULL));
}
void decodeurl(unsigned char *s, int allowcr){
unsigned char *d = s;
void decodeurl(char *s, int allowcr){
char *d = s;
unsigned u;
while(*s){
@ -184,7 +178,7 @@ void decodeurl(unsigned char *s, int allowcr){
*d = 0;
}
void file2url(unsigned char *sb, unsigned char *buf, unsigned bufsize, int * inbuf, int skip255){
void file2url(char *sb, char *buf, unsigned bufsize, int * inbuf, int skip255){
for(; *sb; sb++){
if((bufsize - *inbuf)<16)break;
if(*sb=='\r'||*sb=='\n')continue;
@ -208,14 +202,14 @@ void file2url(unsigned char *sb, unsigned char *buf, unsigned bufsize, int * inb
void * proxychild(struct clientparam* param) {
int res=0, i=0;
unsigned char* buf = NULL, *newbuf;
char* buf = NULL, *newbuf;
int inbuf;
int bufsize;
unsigned reqlen = 0;
unsigned char *sb=NULL, *sg=NULL, *se=NULL, *sp=NULL,
char *sb=NULL, *sg=NULL, *se=NULL, *sp=NULL,
*req=NULL, *su=NULL, *ss = NULL;
unsigned char *ftpbase=NULL;
unsigned char username[1024];
char *ftpbase=NULL;
char username[1024];
int keepalive = 0;
uint64_t contentlength64 = 0;
int hascontent =0;
@ -293,7 +287,7 @@ for(;;){
}
myfree(req);
}
req = (unsigned char *)mystrdup((char *)buf);
req = (char *)mystrdup((char *)buf);
if(!req){RETURN(510);}
if(i<10) {
RETURN(511);
@ -302,7 +296,7 @@ for(;;){
param->transparent = 0;
if((isconnect = !strncasecmp((char *)buf, "CONNECT", 7))) keepalive = 2;
if ((sb=(unsigned char *)(unsigned char *)strchr((char *)buf, ' ')) == NULL) {RETURN(512);}
if ((sb=(char *)(char *)strchr((char *)buf, ' ')) == NULL) {RETURN(512);}
ss = ++sb;
if(!isconnect) {
if (!strncasecmp((char *)sb, "http://", 7)) {
@ -320,21 +314,21 @@ for(;;){
}
}
else {
if ((se=(unsigned char *)(unsigned char *)strchr((char *)sb, ' ')) == NULL || sb==se) {RETURN (514);}
if ((se=(char *)(char *)strchr((char *)sb, ' ')) == NULL || sb==se) {RETURN (514);}
*se = 0;
}
if(!param->transparent || isconnect) {
if(!isconnect) {
if ((se=(unsigned char *)(unsigned char *)strchr((char *)sb, '/')) == NULL
if ((se=(char *)(char *)strchr((char *)sb, '/')) == NULL
|| sb==se
|| !(sg=(unsigned char *)strchr((char *)sb, ' '))) {RETURN (515);}
|| !(sg=(char *)strchr((char *)sb, ' '))) {RETURN (515);}
if(se > sg) se=sg;
*se = 0;
}
prefix = (int)(se - buf);
su = (unsigned char*)strrchr((char *)sb, '@');
su = (char*)strrchr((char *)sb, '@');
if(su) {
su = (unsigned char *)mystrdup((char *)sb);
su = (char *)mystrdup((char *)sb);
decodeurl(su, 0);
if(parseconnusername((char *)su, (struct clientparam *)param, 1, (unsigned short)((ftp)?21:80))) RETURN (100);
myfree(su);
@ -358,7 +352,7 @@ for(;;){
/*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), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -369,65 +363,17 @@ for(;;){
i = de64(sb, username, 255);
if(i<=0)continue;
username[i] = 0;
sb = (unsigned char *)strchr((char *)username, ':');
sb = (char *)strchr((char *)username, ':');
if(sb){
*sb = 0;
if(param->password)myfree(param->password);
param->password = (unsigned char *)mystrdup((char *)sb+1);
param->password = (char *)mystrdup((char *)sb+1);
param->pwtype = 0;
}
if(param->username)myfree(param->username);
param->username = (unsigned char *)mystrdup((char *)username);
param->username = (char *)mystrdup((char *)username);
continue;
}
#ifndef NOCRYPT
if(param->srv->usentlm && !strncasecmp((char *)sb, "ntlm", 4)){
sb+=4;
while(isspace(*sb))sb++;
i = de64(sb, username, 1023);
if(i<=16)continue;
username[i] = 0;
if(strncasecmp((char *)username, "NTLMSSP", 8)) continue;
if(username[8] == 1) {
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;
sscanf((char *)buf + 15, "%"PRIu64, &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;
if(param->password)myfree(param->password);
param->password = myalloc(32);
param->pwtype = 2;
i = (int)strlen(proxy_stringtable[13]);
memcpy(buf, proxy_stringtable[13], i);
genchallenge(param, (char *)param->password, (char *)buf + i);
memcpy(buf + strlen((char *)buf), "\r\n\r\n", 5);
socksend(param->clisock, buf, (int)strlen((char *)buf), conf.timeouts[STRING_S]);
ckeepalive = keepalive = 1;
goto REQUESTEND;
}
if(username[8] == 3 && param->pwtype == 2 && i>=80) {
unsigned offset, len;
len = username[20] + (((unsigned)username[21]) << 8);
offset = username[24] + (((unsigned)username[25]) << 8);
if(len != 24 || len + offset > (unsigned)i) continue;
memcpy(param->password + 8, username + offset, 24);
len = username[36] + (((unsigned)username[37]) << 8);
offset = username[40] + (((unsigned)username[41]) << 8);
if(len> 255 || len + offset > (unsigned)i) continue;
if(param->username) myfree(param->username);
unicode2text((char *)username+offset, (char *)username+offset, (len>>1));
param->username = (unsigned char *)mystrdup((char *)username+offset);
}
continue;
}
#endif
}
#endif
if(!isconnect && (
@ -435,7 +381,7 @@ for(;;){
||
(i> 16 && (!strncasecmp((char *)(buf+inbuf), "connection:", 11)))
)){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -447,16 +393,16 @@ for(;;){
}
if( i > 11 && !strncasecmp((char *)(buf+inbuf), "Expect: 100", 11)){
keepalive = 1;
socksend(param->clisock, (unsigned char *)proxy_stringtable[17], (int)strlen(proxy_stringtable[17]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[17], (int)strlen(proxy_stringtable[17]), conf.timeouts[STRING_S]);
continue;
}
if(param->transparent && i > 6 && !strncasecmp((char *)buf + inbuf, "Host:", 5)){
unsigned char c;
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
char c;
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
(se = (unsigned char *)strchr((char *)sb, '\r')) || (se = (unsigned char *)strchr((char *)sb, '\n'));
(se = (char *)strchr((char *)sb, '\r')) || (se = (char *)strchr((char *)sb, '\n'));
if(se) {
c = *se;
*se = 0;
@ -466,7 +412,7 @@ for(;;){
}
newbuf = myalloc(strlen((char *)req) + strlen((char *)(buf+inbuf)) + 8);
if(newbuf){
sp = (unsigned char *)strchr((char *)req+1, '/');
sp = (char *)strchr((char *)req+1, '/');
memcpy(newbuf, req, (sp - req));
sprintf((char*)newbuf + (sp - req), "http://%s%s",sb,sp);
myfree(req);
@ -475,7 +421,7 @@ for(;;){
if(se)*se = c;
}
if(ftp && i > 13 && (!strncasecmp((char *)(buf+inbuf), "authorization", 13))){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -486,19 +432,19 @@ for(;;){
i = de64(sb, username, 255);
if(i<=0)continue;
username[i] = 0;
sb = (unsigned char *)strchr((char *)username, ':');
sb = (char *)strchr((char *)username, ':');
if(sb){
*sb = 0;
if(param->extpassword)myfree(param->extpassword);
param->extpassword = (unsigned char *)mystrdup((char *)sb+1);
param->extpassword = (char *)mystrdup((char *)sb+1);
}
if(param->extusername)myfree(param->extusername);
param->extusername = (unsigned char *)mystrdup((char *)username);
param->extusername = (char *)mystrdup((char *)username);
continue;
}
}
if(i> 15 && (!strncasecmp((char *)(buf+inbuf), "content-length", 14))){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -573,7 +519,7 @@ for(;;){
ckeepalive = 1;
if(ftpbase) myfree(ftpbase);
ftpbase = NULL;
if(!(sp = (unsigned char *)strchr((char *)ss, ' '))){RETURN(799);}
if(!(sp = (char *)strchr((char *)ss, ' '))){RETURN(799);}
*sp = 0;
decodeurl(ss, 0);
@ -597,10 +543,10 @@ for(;;){
inftpbuf = FTPBUFSIZE - (20 + inftpbuf);
res = ftpcd(param, ftpbase, ftpbuf, &inftpbuf);
if(res){
res = ftptype(param, (unsigned char *)"I");
res = ftptype(param, (char *)"I");
if(res)RETURN(res);
ftpbase[--i] = 0;
ftps = ftpcommand(param, param->operation == FTP_PUT? (unsigned char *)"PUT" : (unsigned char *)"RETR", ftpbase);
ftps = ftpcommand(param, param->operation == FTP_PUT? (char *)"PUT" : (char *)"RETR", ftpbase);
}
else {
if(inftpbuf){
@ -609,12 +555,12 @@ for(;;){
memcpy(buf+inbuf, "<hr>", 4);
inbuf += 4;
}
ftps = ftpcommand(param, (unsigned char *)"LIST", NULL);
ftps = ftpcommand(param, (char *)"LIST", NULL);
mode = 1;
}
if(ftps == INVALID_SOCKET){RETURN(780);}
if(!mode){
socksend(param->clisock, (unsigned char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
s = param->remsock;
param->remsock = ftps;
if((param->operation == FTP_PUT) && (contentlength64 > 0)) param->waitclient64 = contentlength64;
@ -635,7 +581,7 @@ for(;;){
}
param->remsock = ftps;
if(gotres <= 0) for(; (res = sockgetlinebuf(param, SERVER, (unsigned char *)ftpbuf, FTPBUFSIZE - 20, '\n', conf.timeouts[STRING_S])) > 0; i++){
if(gotres <= 0) for(; (res = sockgetlinebuf(param, SERVER, (char *)ftpbuf, FTPBUFSIZE - 20, '\n', conf.timeouts[STRING_S])) > 0; i++){
int isdir = 0;
int islink = 0;
int filetoken =-1;
@ -643,9 +589,9 @@ for(;;){
int modetoken =-1;
int datetoken =-1;
int spaces = 1;
unsigned char * tokens[10];
char * tokens[10];
unsigned wordlen [10];
unsigned char j=0;
char j=0;
int space = 1;
ftpbuf[res] = 0;
@ -654,7 +600,7 @@ for(;;){
continue;
}
if(!isnumber(*ftpbuf) && mode == 1) mode = 2;
for(sb=(unsigned char *)ftpbuf; *sb; sb++){
for(sb=(char *)ftpbuf; *sb; sb++){
if(!space && isspace(*sb)){
space = 1;
wordlen[j]=(unsigned)(sb-tokens[j]);
@ -721,7 +667,7 @@ for(;;){
memcpy(buf+inbuf, " <A HREF=\"", 10);
inbuf+=10;
sb = NULL;
if(islink) sb = (unsigned char *)strstr((char *)tokens[filetoken], " -> ");
if(islink) sb = (char *)strstr((char *)tokens[filetoken], " -> ");
if(sb) sb+=4;
else sb=tokens[filetoken];
@ -760,7 +706,7 @@ for(;;){
if((bufsize - inbuf) < LINESIZE){
if (bufsize > 20000){
if(!headsent++){
socksend(param->clisock, (unsigned char *)proxy_stringtable[9], (int)strlen(proxy_stringtable[9]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[9], (int)strlen(proxy_stringtable[9]), conf.timeouts[STRING_S]);
}
if((unsigned)socksend(param->clisock, buf, inbuf, conf.timeouts[STRING_S]) != inbuf){
RETURN(781);
@ -791,7 +737,7 @@ for(;;){
"Connection: keep-alive\r\n"
"Content-Length: %d\r\n\r\n",
inbuf);
socksend(param->clisock, (unsigned char *)ftpbuf, (int)strlen(ftpbuf), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)ftpbuf, (int)strlen(ftpbuf), conf.timeouts[STRING_S]);
}
socksend(param->clisock, buf, inbuf, conf.timeouts[STRING_S]);
if(res){RETURN(res);}
@ -803,7 +749,7 @@ for(;;){
}
if(isconnect && param->redirtype != R_HTTP) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[8], (int)strlen(proxy_stringtable[8]), conf.timeouts[STRING_S]);
if(param->redirectfunc) {
if(req)myfree(req);
if(buf)myfree(buf);
@ -821,7 +767,7 @@ for(;;){
else {
#ifdef TCP_CORK
int opt = 1;
so._setsockopt(param->remsock, IPPROTO_TCP, TCP_CORK, (unsigned char *)&opt, sizeof(int));
so._setsockopt(param->remsock, IPPROTO_TCP, TCP_CORK, (char *)&opt, sizeof(int));
#endif
redirect = 1;
res = (int)strlen((char *)req);
@ -846,7 +792,7 @@ for(;;){
else 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(*SAPORT(&param->srv->intsa)), 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(&param->srv->intsa)), conf.stringtable?conf.stringtable[2]:(char *)"", conf.stringtable?conf.stringtable[3]:(char *)"");
if(anonymous != 2)myinet_ntop(*SAFAMILY(&param->sincr), SAADDR(&param->sincr), (char *)buf + strlen((char *)buf), 128);
else {
unsigned long tmp;
@ -862,7 +808,7 @@ for(;;){
}
if(param->extusername){
sprintf((char*)buf + strlen((char *)buf), "%s: Basic ", (redirect)?"Proxy-Authorization":"Authorization");
sprintf((char*)username, "%.128s:%.128s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)"");
sprintf((char*)username, "%.128s:%.128s", param->extusername, param->extpassword?param->extpassword:(char*)"");
en64(username, buf+strlen((char *)buf), (int)strlen((char *)username));
sprintf((char*)buf + strlen((char *)buf), "\r\n");
}
@ -873,7 +819,7 @@ for(;;){
#ifdef TCP_CORK
{
int opt = 0;
so._setsockopt(param->remsock, IPPROTO_TCP, TCP_CORK, (unsigned char *)&opt, sizeof(int));
so._setsockopt(param->remsock, IPPROTO_TCP, TCP_CORK, (char *)&opt, sizeof(int));
}
#endif
param->statscli64 += res;
@ -904,7 +850,7 @@ for(;;){
||
(i> 16 && !strncasecmp((char *)(buf+inbuf), "connection:", 11))
)){
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -919,7 +865,7 @@ for(;;){
}
else if(i > 15 && (!strncasecmp((char *)(buf+inbuf), "content-length", 14))){
buf[inbuf+i]=0;
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -935,7 +881,7 @@ for(;;){
}
else if(i>25 && (!strncasecmp((char *)(buf+inbuf), "transfer-encoding", 17))){
buf[inbuf+i]=0;
sb = (unsigned char *)strchr((char *)(buf+inbuf), ':');
sb = (char *)strchr((char *)(buf+inbuf), ':');
if(!sb)continue;
++sb;
while(isspace(*sb))sb++;
@ -1020,7 +966,7 @@ for(;;){
if((param->chunked || contentlength64 > 0) && param->operation != HTTP_HEAD && res != 204 && res != 304) {
do {
if(param->chunked){
unsigned char smallbuf[32];
char smallbuf[32];
while ((i = sockgetlinebuf(param, SERVER, smallbuf, 30, '\n', conf.timeouts[STRING_S])) == 2) {
if (socksend(param->clisock, smallbuf, i, conf.timeouts[STRING_S]) != i){
RETURN(533);
@ -1086,41 +1032,41 @@ CLEANRET:
if(param->res != 555 && param->res && param->clisock != INVALID_SOCKET && (param->res < 90 || param->res >=800 || param->res == 100 ||(param->res > 500 && param->res< 800))) {
if((param->res>=509 && param->res < 517) || param->res > 900) while( (i = sockgetlinebuf(param, CLIENT, buf, BUFSIZE - 1, '\n', conf.timeouts[STRING_S])) > 2);
if(param->res == 10) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[2], (int)strlen(proxy_stringtable[2]), conf.timeouts[STRING_S]);
socksend(param->clisock, (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]);
socksend(param->clisock, (char *)proxy_stringtable[16], (int)strlen(proxy_stringtable[16]), conf.timeouts[STRING_S]);
socksend(param->clisock, (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]);
socksend(param->clisock, (char *)proxy_stringtable[1], (int)strlen(proxy_stringtable[1]), conf.timeouts[STRING_S]);
}
else if(param->res >=20 && param->res < 30) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[6], (int)strlen(proxy_stringtable[6]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[6], (int)strlen(proxy_stringtable[6]), conf.timeouts[STRING_S]);
}
else if(param->res >=30 && param->res < 80) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[5], (int)strlen(proxy_stringtable[5]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[5], (int)strlen(proxy_stringtable[5]), conf.timeouts[STRING_S]);
}
else if(param->res == 1 || (!param->srv->needuser && param->res < 10)) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[11], (int)strlen(proxy_stringtable[11]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[11], (int)strlen(proxy_stringtable[11]), conf.timeouts[STRING_S]);
}
else if(param->res < 10) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[param->srv->usentlm?12:7], (int)strlen(proxy_stringtable[param->srv->usentlm?12:7]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[7], (int)strlen(proxy_stringtable[7]), conf.timeouts[STRING_S]);
}
else if(param->res == 999) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[4], (int)strlen(proxy_stringtable[4]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[4], (int)strlen(proxy_stringtable[4]), conf.timeouts[STRING_S]);
}
else if(param->res == 519) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[3], (int)strlen(proxy_stringtable[3]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[3], (int)strlen(proxy_stringtable[3]), conf.timeouts[STRING_S]);
}
else if(param->res == 517) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[15], (int)strlen(proxy_stringtable[15]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[15], (int)strlen(proxy_stringtable[15]), conf.timeouts[STRING_S]);
}
else if(param->res == 780) {
socksend(param->clisock, (unsigned char *)proxy_stringtable[10], (int)strlen(proxy_stringtable[10]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[10], (int)strlen(proxy_stringtable[10]), conf.timeouts[STRING_S]);
}
else if(param->res >= 511 && param->res<=516){
socksend(param->clisock, (unsigned char *)proxy_stringtable[0], (int)strlen(proxy_stringtable[0]), conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)proxy_stringtable[0], (int)strlen(proxy_stringtable[0]), conf.timeouts[STRING_S]);
}
}
logurl(param, (char *)buf, (char *)req, ftp);

View File

@ -153,9 +153,9 @@ extern int timetoexit;
extern struct extparam conf;
int sockmap(struct clientparam * param, int timeo, int usesplice);
int socksend(SOCKET sock, 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 socksend(SOCKET sock, char * buf, int bufsize, int to);
int socksendto(SOCKET sock, struct sockaddr * sin, char * buf, int bufsize, int to);
int sockrecvfrom(SOCKET sock, struct sockaddr * sin, char * buf, int bufsize, int to);
int sockgetcharcli(struct clientparam * param, int timeosec, int timeousec);
@ -163,14 +163,14 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec);
int sockfillbuffcli(struct clientparam * param, unsigned long size, int timeosec);
int sockfillbuffsrv(struct clientparam * param, unsigned long size, int timeosec);
int sockgetlinebuf(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to);
int sockgetlinebuf(struct clientparam * param, DIRECTION which, char * buf, int bufsize, int delim, int to);
void initlog(void);
void dolog(struct clientparam * param, const unsigned char *s);
int dobuf(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s, const unsigned char * doublec);
int dobuf2(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s, const unsigned char * doublec, struct tm* tm, char * format);
void dolog(struct clientparam * param, const char *s);
int dobuf(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec);
int dobuf2(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec, struct tm* tm, char * format);
int doconnect(struct clientparam * param);
int alwaysauth(struct clientparam * param);
int ipauth(struct clientparam * param);
@ -181,15 +181,15 @@ void trafcountfunc(struct clientparam *param);
unsigned bandlimitfunc(struct clientparam *param, unsigned nbytesin, unsigned nbytesout);
int scanaddr(const unsigned char *s, unsigned long * ip, unsigned long * mask);
int scanaddr(const 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 struct nserver authnserver;
unsigned long getip(unsigned char *name);
unsigned long 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*);
unsigned long getip(char *name);
unsigned long getip46(int family, char *name, struct sockaddr *sa);
int afdetect(char *name);
unsigned long myresolver(int, char *, char *);
unsigned long fakeresolver (int, char *, char*);
int inithashtable(struct hashtable *hashtable, unsigned nhashsize);
void freeparam(struct clientparam * param);
void srvpostfree(struct srvparam * srv);
@ -207,34 +207,34 @@ int reload (void);
extern int paused;
extern int demon;
unsigned char * mycrypt(const unsigned char *key, const unsigned char *salt, unsigned char *buf);
unsigned char * ntpwdhash (unsigned char *szHash, const unsigned char *szPassword, int tohex);
int de64 (const unsigned char *in, unsigned char *out, int maxlen);
unsigned char* en64 (const unsigned char *in, unsigned char *out, int inlen);
void tohex(unsigned char *in, unsigned char *out, int len);
void fromhex(unsigned char *in, unsigned char *out, int len);
char * mycrypt(const char *key, const char *salt, char *buf);
char * ntpwdhash (char *szHash, const char *szPassword, int tohex);
int de64 (const char *in, char *out, int maxlen);
char* en64 (const char *in, char *out, int inlen);
void tohex(char *in, char *out, int len);
void fromhex(char *in, char *out, int len);
int ftplogin(struct clientparam *param, char *buf, int *inbuf);
int ftpcd(struct clientparam *param, unsigned char* path, char *buf, int *inbuf);
int ftpsyst(struct clientparam *param, unsigned char *buf, unsigned len);
int ftppwd(struct clientparam *param, unsigned char *buf, unsigned len);
int ftptype(struct clientparam *param, unsigned char* f_type);
int ftpres(struct clientparam *param, unsigned char * buf, int len);
SOCKET ftpcommand(struct clientparam *param, unsigned char * command, unsigned char *arg);
int ftpcd(struct clientparam *param, char* path, char *buf, int *inbuf);
int ftpsyst(struct clientparam *param, char *buf, unsigned len);
int ftppwd(struct clientparam *param, char *buf, unsigned len);
int ftptype(struct clientparam *param, char* f_type);
int ftpres(struct clientparam *param, char * buf, int len);
SOCKET ftpcommand(struct clientparam *param, char * command, char *arg);
int text2unicode(const char * text, char * buf, int buflen);
void unicode2text(const char *unicode, char * buf, int len);
void genchallenge(struct clientparam *param, char * challenge, char *buf);
void mschap(const unsigned char *win_password,
const unsigned char *challenge, unsigned char *response);
void mschap(const char *win_password,
const char *challenge, char *response);
struct hashtable;
void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires);
void hashadd(struct hashtable *ht, const char* name, char* value, time_t expires);
int parsehost(int family, unsigned char *host, struct sockaddr *sa);
int parsehost(int family, char *host, struct sockaddr *sa);
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);
@ -242,7 +242,7 @@ int ACLmatches(struct ace* acentry, struct clientparam * param);
int checkACL(struct clientparam * param);
int checkpreACL(struct clientparam * param);
extern int havelog;
unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth);
unsigned long udpresolve(int af, char * name, char * value, unsigned *retttl, struct clientparam* param, int makeauth);
void copyacl (struct ace *ac, struct srvparam *srv);
struct auth * copyauth (struct auth *);
@ -255,17 +255,17 @@ struct passwords * copypwl (struct passwords *pwl);
void freepwl(struct passwords *pw);
void copyfilter(struct filter *, struct srvparam *srv);
FILTER_ACTION makefilters (struct srvparam *srv, struct clientparam *param);
FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlehdrfilterscli(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlehdrfilterssrv(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlereqfilters(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlehdrfilterscli(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlehdrfilterssrv(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handlepredatflt(struct clientparam *param);
FILTER_ACTION handledatfltcli(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handledatfltsrv(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handledatfltcli(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
FILTER_ACTION handledatfltsrv(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
void srvinit(struct srvparam * srv, struct clientparam *param);
void srvinit2(struct srvparam * srv, struct clientparam *param);
void srvfree(struct srvparam * srv);
unsigned char * dologname (unsigned char *buf, int bufsize, unsigned char *name, const unsigned char *ext, ROTATION lt, time_t t);
char * dologname (char *buf, int bufsize, char *name, const char *ext, ROTATION lt, time_t t);
int readconfig(FILE * fp);
int connectwithpoll(SOCKET sock, struct sockaddr *sa, SASIZETYPE size, int to);

View File

@ -25,27 +25,27 @@ void * threadfunc (void *p) {
fds.revents = 0;
for(i=5+(param->srv->maxchild>>10); i; i--){
if(so._poll(&fds, 1, 1000*CONNBACK_TO)!=1){
dolog(param, (unsigned char *)"Connect back not received, check connback client");
dolog(param, (char *)"Connect back not received, check connback client");
i = 0;
break;
}
param->remsock = so._accept(param->srv->cbsock, (struct sockaddr*)&param->sinsr, &size);
if(param->remsock == INVALID_SOCKET) {
dolog(param, (unsigned char *)"Connect back accept() failed");
dolog(param, (char *)"Connect back accept() failed");
continue;
}
#ifndef WITHMAIN
param->req = param->sinsr;
if(param->srv->preacl) param->res = checkpreACL(param);
if(param->res){
dolog(param, (unsigned char *)"Connect back ACL failed");
dolog(param, (char *)"Connect back ACL failed");
so._closesocket(param->remsock);
param->remsock = INVALID_SOCKET;
continue;
}
#endif
if(socksendto(param->remsock, (struct sockaddr*)&param->sinsr, (unsigned char *)"C", 1, CONNBACK_TO) != 1){
dolog(param, (unsigned char *)"Connect back sending command failed");
if(socksendto(param->remsock, (struct sockaddr*)&param->sinsr, (char *)"C", 1, CONNBACK_TO) != 1){
dolog(param, (char *)"Connect back sending command failed");
so._closesocket(param->remsock);
param->remsock = INVALID_SOCKET;
continue;
@ -185,10 +185,10 @@ int MODULEMAINFUNC (int argc, char** argv){
struct clientparam * newparam;
int error = 0;
unsigned sleeptime;
unsigned char buf[256];
char buf[256];
char *hostname=NULL;
int opt = 1, isudp = 0, iscbl = 0, iscbc = 0;
unsigned char *cbc_string = NULL, *cbl_string = NULL;
char *cbc_string = NULL, *cbl_string = NULL;
#ifndef NOIPV6
struct sockaddr_in6 cbsa;
#else
@ -316,28 +316,28 @@ int MODULEMAINFUNC (int argc, char** argv){
#endif
case 'l':
myfree(srv->logtarget);
srv->logtarget = (unsigned char *)mystrdup(argv[i] + 2);
srv->logtarget = (char *)mystrdup(argv[i] + 2);
break;
case 'i':
getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv->intsa);
getip46(46, (char *)argv[i]+2, (struct sockaddr *)&srv->intsa);
break;
case 'e':
{
#ifndef NOIPV6
struct sockaddr_in6 sa6;
memset(&sa6, 0, sizeof(sa6));
error = !getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&sa6);
error = !getip46(46, (char *)argv[i]+2, (struct sockaddr *)&sa6);
if(!error) {
if (*SAFAMILY(&sa6)==AF_INET) srv->extsa = sa6;
else srv->extsa6 = sa6;
}
#else
error = !getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv->extsa);
error = !getip46(46, (char *)argv[i]+2, (struct sockaddr *)&srv->extsa);
#endif
}
break;
case 'N':
getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv->extNat);
getip46(46, (char *)argv[i]+2, (struct sockaddr *)&srv->extNat);
break;
case 'p':
*SAPORT(&srv->intsa) = htons(atoi(argv[i]+2));
@ -365,7 +365,7 @@ int MODULEMAINFUNC (int argc, char** argv){
#endif
case 'f':
if(srv->logformat)myfree(srv->logformat);
srv->logformat = (unsigned char *)mystrdup(argv[i] + 2);
srv->logformat = (char *)mystrdup(argv[i] + 2);
break;
case 't':
srv->silent = 1;
@ -374,11 +374,11 @@ int MODULEMAINFUNC (int argc, char** argv){
hostname = argv[i] + 2;
break;
case 'r':
cbc_string = (unsigned char *)mystrdup(argv[i] + 2);
cbc_string = (char *)mystrdup(argv[i] + 2);
iscbc = 1;
break;
case 'R':
cbl_string = (unsigned char *)mystrdup(argv[i] + 2);
cbl_string = (char *)mystrdup(argv[i] + 2);
iscbl = 1;
break;
case 'u':
@ -496,7 +496,7 @@ int MODULEMAINFUNC (int argc, char** argv){
);
return (1);
}
srv->target = (unsigned char *)mystrdup(argv[i+1]);
srv->target = (char *)mystrdup(argv[i+1]);
#endif
#ifndef STDMAIN
}
@ -507,8 +507,8 @@ int MODULEMAINFUNC (int argc, char** argv){
if(inetd) {
fcntl(0,F_SETFL,O_NONBLOCK | fcntl(0,F_GETFL));
if(!isudp){
so._setsockopt(0, SOL_SOCKET, SO_LINGER, (unsigned char *)&lg, sizeof(lg));
so._setsockopt(0, SOL_SOCKET, SO_OOBINLINE, (unsigned char *)&opt, sizeof(int));
so._setsockopt(0, SOL_SOCKET, SO_LINGER, (char *)&lg, sizeof(lg));
so._setsockopt(0, SOL_SOCKET, SO_OOBINLINE, (char *)&opt, sizeof(int));
}
defparam.clisock = 0;
if(! (newparam = myalloc (sizeof(defparam)))){
@ -604,7 +604,7 @@ int MODULEMAINFUNC (int argc, char** argv){
if(iscbl){
parsehost(srv->family, cbl_string, (struct sockaddr *)&cbsa);
if((srv->cbsock=so._socket(SASOCK(&cbsa), SOCK_STREAM, IPPROTO_TCP))==INVALID_SOCKET) {
dolog(&defparam, (unsigned char *)"Failed to allocate connect back socket");
dolog(&defparam, (char *)"Failed to allocate connect back socket");
return -6;
}
opt = 1;
@ -617,11 +617,11 @@ int MODULEMAINFUNC (int argc, char** argv){
setopts(srv->cbsock, srv->cbssockopts);
if(so._bind(srv->cbsock, (struct sockaddr*)&cbsa, SASIZE(&cbsa))==-1) {
dolog(&defparam, (unsigned char *)"Failed to bind connect back socket");
dolog(&defparam, (char *)"Failed to bind connect back socket");
return -7;
}
if(so._listen(srv->cbsock, 1 + (srv->maxchild>>4))==-1) {
dolog(&defparam, (unsigned char *)"Failed to listen connect back socket");
dolog(&defparam, (char *)"Failed to listen connect back socket");
return -8;
}
}
@ -766,12 +766,12 @@ int MODULEMAINFUNC (int argc, char** argv){
if(! (newparam = myalloc (sizeof(defparam)))){
if(!isudp) so._closesocket(new_sock);
defparam.res = 21;
if(!srv->silent)dolog(&defparam, (unsigned char *)"Memory Allocation Failed");
if(!srv->silent)dolog(&defparam, (char *)"Memory Allocation Failed");
usleep(SLEEPTIME);
continue;
};
*newparam = defparam;
if(defparam.hostname)newparam->hostname=(unsigned char *)mystrdup((char *)defparam.hostname);
if(defparam.hostname)newparam->hostname=(char *)mystrdup((char *)defparam.hostname);
clearstat(newparam);
if(!isudp) newparam->clisock = new_sock;
@ -827,7 +827,7 @@ int MODULEMAINFUNC (int argc, char** argv){
if(isudp) while(!srv->fds.events)usleep(SLEEPTIME);
}
if(!srv->silent) dolog(&defparam, (unsigned char *)"Exiting thread");
if(!srv->silent) dolog(&defparam, (char *)"Exiting thread");
srvfree(srv);
pthread_mutex_lock(&srv->counter_mutex);
@ -853,8 +853,8 @@ void srvinit(struct srvparam * srv, struct clientparam *param){
srv->version = conf.version + 1;
srv->paused = conf.paused;
srv->noforce = conf.noforce;
srv->logformat = conf.logformat? (unsigned char *)mystrdup((char *)conf.logformat) : NULL;
srv->logtarget = conf.logtarget? (unsigned char *)mystrdup((char *)conf.logtarget) : NULL;
srv->logformat = conf.logformat? (char *)mystrdup((char *)conf.logformat) : NULL;
srv->logtarget = conf.logtarget? (char *)mystrdup((char *)conf.logtarget) : NULL;
srv->authfunc = conf.authfunc;
srv->usentlm = 0;
srv->maxchild = conf.maxchild;
@ -887,12 +887,12 @@ void srvinit2(struct srvparam * srv, struct clientparam *param){
if(srv->logformat){
char *s;
if(*srv->logformat == '-' && (s = strchr((char *)srv->logformat + 1, '+')) && s[1]){
unsigned char* logformat = srv->logformat;
char* logformat = srv->logformat;
*s = 0;
srv->nonprintable = (unsigned char *)mystrdup((char *)srv->logformat + 1);
srv->nonprintable = (char *)mystrdup((char *)srv->logformat + 1);
srv->replace = s[1];
srv->logformat = (unsigned char *)mystrdup(s + 2);
srv->logformat = (char *)mystrdup(s + 2);
*s = '+';
myfree(logformat);
}
@ -999,17 +999,17 @@ void copyacl (struct ace *ac, struct srvparam *srv){
for(pel = ac->periods; pel; pel = pel->next = itcopy(pel->next, sizeof(struct period)));
ac->users = itcopy(ac->users, sizeof(struct userlist));
for(ul = ac->users; ul; ul = ul->next = itcopy(ul->next, sizeof(struct userlist))){
if(ul->user) ul->user = (unsigned char*)mystrdup((char *)ul->user);
if(ul->user) ul->user = (char*)mystrdup((char *)ul->user);
}
ac->dstnames = itcopy(ac->dstnames, sizeof(struct hostname));
for(hst = ac->dstnames; hst; hst = hst->next = itcopy(hst->next, sizeof(struct hostname))){
if(hst->name) hst->name = (unsigned char*)mystrdup((char *)hst->name);
if(hst->name) hst->name = (char*)mystrdup((char *)hst->name);
}
ac->chains = itcopy(ac->chains, sizeof(struct chain));
for(ch = ac->chains; ch; ch = ch->next = itcopy(ch->next, sizeof(struct chain))){
if(ch->extuser)ch->extuser = (unsigned char*)mystrdup((char *)ch->extuser);
if(ch->extpass)ch->extpass = (unsigned char*)mystrdup((char *)ch->extpass);
if(ch->exthost)ch->exthost = (unsigned char*)mystrdup((char *)ch->exthost);
if(ch->extuser)ch->extuser = (char*)mystrdup((char *)ch->extuser);
if(ch->extpass)ch->extpass = (char*)mystrdup((char *)ch->extpass);
if(ch->exthost)ch->exthost = (char*)mystrdup((char *)ch->exthost);
}
if(preacl){
if(ac->dst || ac->ports || ac->users || ac->dstnames || ac->chains|| ac->action>1){
@ -1126,7 +1126,7 @@ void freeacl(struct ace *ac){
}
}
FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION handlereqfilters(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION action;
int i;
@ -1137,7 +1137,7 @@ FILTER_ACTION handlereqfilters(struct clientparam *param, unsigned char ** buf_p
return PASS;
}
FILTER_ACTION handlehdrfilterssrv(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION handlehdrfilterssrv(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION action;
int i;
@ -1148,7 +1148,7 @@ FILTER_ACTION handlehdrfilterssrv(struct clientparam *param, unsigned char ** bu
return PASS;
}
FILTER_ACTION handlehdrfilterscli(struct clientparam *param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION handlehdrfilterscli(struct clientparam *param, char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION action;
int i;
@ -1174,7 +1174,7 @@ FILTER_ACTION handlepredatflt(struct clientparam *cparam){
return PASS;
}
FILTER_ACTION handledatfltcli(struct clientparam *cparam, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION handledatfltcli(struct clientparam *cparam, char ** buf_p, int * bufsize_p, int offset, int * length_p){
#ifndef STDMAIN
FILTER_ACTION action;
int i;
@ -1187,7 +1187,7 @@ FILTER_ACTION handledatfltcli(struct clientparam *cparam, unsigned char ** buf_p
return PASS;
}
FILTER_ACTION handledatfltsrv(struct clientparam *cparam, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION handledatfltsrv(struct clientparam *cparam, char ** buf_p, int * bufsize_p, int offset, int * length_p){
FILTER_ACTION action;
int i;

View File

@ -16,7 +16,7 @@ char ehlo[] = "250-Proxy\r\n"
"250 DSN\r\n";
int readreply (struct clientparam* param) {
unsigned char * buf;
char * buf;
int res, i, bufsize = 640;
if(!(buf = myalloc(bufsize))) return 0;
@ -43,7 +43,7 @@ int readreply (struct clientparam* param) {
}
int readcommand (struct clientparam* param) {
unsigned char * buf;
char * buf;
int res, i, bufsize = 320;
int ret = 1;
@ -69,7 +69,7 @@ int readcommand (struct clientparam* param) {
}
int readdata (struct clientparam* param) {
unsigned char * buf;
char * buf;
int res, i, bufsize = 4096;
if(!(buf = myalloc(bufsize))) return 0;
@ -96,25 +96,25 @@ int readdata (struct clientparam* param) {
void * smtppchild(struct clientparam* param) {
int i=0, res;
unsigned char buf[320];
unsigned char username[256];
char buf[320];
char username[256];
char * command = NULL;
int login = 0;
if(socksend(param->clisock, (unsigned char *)"220 Proxy\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (611);}
if(socksend(param->clisock, (char *)"220 Proxy\r\n", 11, conf.timeouts[STRING_S])!=11) {RETURN (611);}
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
while(i > 4 && (strncasecmp((char *)buf, "AUTH PLAIN", 10) || !(login = 2)) && (strncasecmp((char *)buf, "AUTH LOGIN", 10) || !(login = 1))){
if(!strncasecmp((char *)buf, "QUIT", 4)){
socksend(param->clisock, (unsigned char *)"221 Proxy\r\n", 11,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"221 Proxy\r\n", 11,conf.timeouts[STRING_S]);
RETURN(0);
}
else if(!strncasecmp((char *)buf, "HELO ", 5)){
socksend(param->clisock, (unsigned char *)"250 Proxy\r\n", 11,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"250 Proxy\r\n", 11,conf.timeouts[STRING_S]);
}
else if(!strncasecmp((char *)buf, "EHLO ", 5)){
socksend(param->clisock, (unsigned char *)ehlo, sizeof(ehlo) - 1,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)ehlo, sizeof(ehlo) - 1,conf.timeouts[STRING_S]);
}
else if(!param->hostname) socksend(param->clisock, (unsigned char *)"571 need AUTH first\r\n", 22, conf.timeouts[STRING_S]);
else if(!param->hostname) socksend(param->clisock, (char *)"571 need AUTH first\r\n", 22, conf.timeouts[STRING_S]);
else {
login = -1;
buf[i] = 0;
@ -125,7 +125,7 @@ void * smtppchild(struct clientparam* param) {
}
if(!login) {RETURN(662);}
if(login == 1){
socksend(param->clisock, (unsigned char *)"334 VXNlcm5hbWU6\r\n", 18,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"334 VXNlcm5hbWU6\r\n", 18,conf.timeouts[STRING_S]);
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
if(i < 3) {RETURN(663);}
buf[i-2] = 0;
@ -133,7 +133,7 @@ void * smtppchild(struct clientparam* param) {
if(i < 1) {RETURN(664);}
username[i] = 0;
parseconnusername((char *)username, param, 0, 25);
socksend(param->clisock, (unsigned char *)"334 UGFzc3dvcmQ6\r\n", 18,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"334 UGFzc3dvcmQ6\r\n", 18,conf.timeouts[STRING_S]);
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
if(i < 2) {RETURN(665);}
buf[i-2] = 0;
@ -141,7 +141,7 @@ void * smtppchild(struct clientparam* param) {
if(i < 0) {RETURN(666);}
username[i] = 0;
if(param->extpassword) myfree(param->extpassword);
param->extpassword = (unsigned char *)mystrdup((char *)username);
param->extpassword = (char *)mystrdup((char *)username);
}
else if(login == 2){
if(i > 13) {
@ -149,7 +149,7 @@ void * smtppchild(struct clientparam* param) {
i = de64(buf+11,username,255);
}
else {
socksend(param->clisock, (unsigned char *)"334\r\n", 5,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"334\r\n", 5,conf.timeouts[STRING_S]);
i = sockgetlinebuf(param, CLIENT, buf, sizeof(buf) - 10, '\n', conf.timeouts[STRING_S]);
if(i < 3) {RETURN(667);}
buf[i-2] = 0;
@ -161,7 +161,7 @@ void * smtppchild(struct clientparam* param) {
res = (int)strlen((char *)username+1) + 2;
if(res < i){
if(param->extpassword) myfree(param->extpassword);
param->extpassword = (unsigned char *)mystrdup((char *)username + res);
param->extpassword = (char *)mystrdup((char *)username + res);
}
}
@ -204,29 +204,29 @@ void * smtppchild(struct clientparam* param) {
if(i<3) {RETURN(672);}
if(!command || (param->extusername && param->extpassword)){
if(!param->extusername || !*param->extusername || !param->extpassword || !*param->extpassword || !login){
socksend(param->clisock, (unsigned char *)"235 auth required\r\n", 19,conf.timeouts[STRING_S]);
socksend(param->clisock, (char *)"235 auth required\r\n", 19,conf.timeouts[STRING_S]);
}
if ((login & 1)) {
socksend(param->remsock, (unsigned char *)"AUTH LOGIN\r\n", 12, conf.timeouts[STRING_S]);
socksend(param->remsock, (char *)"AUTH LOGIN\r\n", 12, conf.timeouts[STRING_S]);
param->statscli64+=12;
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((char *)param->extusername));
socksend(param->remsock, buf, (int)strlen((char *)buf), conf.timeouts[STRING_S]);
socksend(param->remsock, (unsigned char *)"\r\n", 2, conf.timeouts[STRING_S]);
socksend(param->remsock, (char *)"\r\n", 2, conf.timeouts[STRING_S]);
param->statscli64+=(i+2);
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((char *)param->extpassword));
socksend(param->remsock, buf, (int)strlen((char *)buf), conf.timeouts[STRING_S]);
socksend(param->remsock, (unsigned char *)"\r\n", 2, conf.timeouts[STRING_S]);
socksend(param->remsock, (char *)"\r\n", 2, conf.timeouts[STRING_S]);
param->statscli64+=(i+2);
param->nwrites+=2;
}
else if((login & 2)){
socksend(param->remsock, (unsigned char *)"AUTH PLAIN\r\n", 12, conf.timeouts[STRING_S]);
socksend(param->remsock, (char *)"AUTH PLAIN\r\n", 12, conf.timeouts[STRING_S]);
param->statscli64+=(12);
param->nwrites++;
i = sockgetlinebuf(param, SERVER, buf, sizeof(buf) - 1, '\n', conf.timeouts[STRING_L]);
@ -241,7 +241,7 @@ void * smtppchild(struct clientparam* param) {
en64(username, buf, i);
i = (int)strlen((char *)buf);
socksend(param->remsock, buf, i, conf.timeouts[STRING_S]);
socksend(param->remsock, (unsigned char *)"\r\n", 2, conf.timeouts[STRING_S]);
socksend(param->remsock, (char *)"\r\n", 2, conf.timeouts[STRING_S]);
param->statscli64+=(i+2);
param->nwrites+=2;
}
@ -256,7 +256,7 @@ void * smtppchild(struct clientparam* param) {
if(!strncasecmp(command, "MAIL", 4) || !strncasecmp(command, "RCPT", 4) || !strncasecmp(command, "STARTTLS", 8) || !strncasecmp(command, "TURN", 4)){
res = (int)strlen(command);
command[res] = 0;
res = handlehdrfilterscli(param, (unsigned char **)&command, &res, 0, &res);
res = handlehdrfilterscli(param, (char **)&command, &res, 0, &res);
if(res != PASS) {
if(res == HANDLED) res = 2;
else RETURN(677);
@ -266,7 +266,7 @@ void * smtppchild(struct clientparam* param) {
}
#endif
i = (int)strlen(command);
if(res != 2) socksend(param->remsock, (unsigned char *)command, i, conf.timeouts[STRING_S]);
if(res != 2) socksend(param->remsock, (char *)command, i, conf.timeouts[STRING_S]);
}
#ifndef WITHMAIN
@ -296,7 +296,7 @@ CLEANRET:
}
else dolog(param, NULL);
if(param->clisock != INVALID_SOCKET) {
if ((param->res > 0 && param->res < 100) || (param->res > 661 && param->res <700)) socksend(param->clisock, (unsigned char *)"571 \r\n", 6,conf.timeouts[STRING_S]);
if ((param->res > 0 && param->res < 100) || (param->res > 661 && param->res <700)) socksend(param->clisock, (char *)"571 \r\n", 6,conf.timeouts[STRING_S]);
}
if(command) myfree(command);
freeparam(param);

View File

@ -7,7 +7,7 @@
#include "proxy.h"
int socksend(SOCKET sock, unsigned char * buf, int bufsize, int to){
int socksend(SOCKET sock, char * buf, int bufsize, int to){
int sent = 0;
int res;
struct pollfd fds;
@ -30,7 +30,7 @@ int socksend(SOCKET sock, unsigned char * buf, int bufsize, int to){
}
int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to){
int socksendto(SOCKET sock, struct sockaddr * sin, char * buf, int bufsize, int to){
int sent = 0;
int res;
struct pollfd fds;
@ -52,7 +52,7 @@ int socksendto(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufs
return sent;
}
int sockrecvfrom(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to){
int sockrecvfrom(SOCKET sock, struct sockaddr * sin, char * buf, int bufsize, int to){
struct pollfd fds;
SASIZETYPE sasize;
int res;
@ -153,7 +153,7 @@ int sockgetcharsrv(struct clientparam * param, int timeosec, int timeousec){
return (int)*param->srvbuf;
}
int sockgetlinebuf(struct clientparam * param, DIRECTION which, unsigned char * buf, int bufsize, int delim, int to){
int sockgetlinebuf(struct clientparam * param, DIRECTION which, char * buf, int bufsize, int delim, int to){
int c;
int i=0;

View File

@ -22,9 +22,9 @@ void * sockschild(struct clientparam* param) {
unsigned size;
SASIZETYPE sasize;
unsigned short port = 0;
unsigned char * buf=NULL;
unsigned char c;
unsigned char command=0;
char * buf=NULL;
char c;
char command=0;
struct pollfd fds[3];
int ver=0;
int havepass = 0;

View File

@ -9,26 +9,26 @@
#include <stdio.h>
#include "version.h"
unsigned char * strings[] = {
/* 00 */ (unsigned char *)"3proxy tiny proxy server " VERSION " stringtable file",
/* 01 */ (unsigned char *)"3proxy",
/* 02 */ (unsigned char *)"3proxy tiny proxy server",
/* 03 */ (unsigned char *)VERSION " (" BUILDDATE ")",
/* 04 */ (unsigned char *)"3proxy allows to share and control Internet connection and count traffic",
/* 05 */ (unsigned char *)"SERVR",
/* 06 */ (unsigned char *)"PROXY",
/* 07 */ (unsigned char *)"TCPPM",
/* 08 */ (unsigned char *)"POP3P",
/* 09 */ (unsigned char *)"SOCK4",
/* 10 */ (unsigned char *)"SOCK5",
/* 11 */ (unsigned char *)"UDPPM",
/* 12 */ (unsigned char *)"SOCKS",
/* 13 */ (unsigned char *)"SOC45",
/* 14 */ (unsigned char *)"ADMIN",
/* 15 */ (unsigned char *)"DNSPR",
/* 16 */ (unsigned char *)"FTPPR",
/* 17 */ (unsigned char *)"SMTPP",
/* 18 */ (unsigned char *)"ZOMBIE",
char * strings[] = {
/* 00 */ "3proxy tiny proxy server " VERSION " stringtable file",
/* 01 */ "3proxy",
/* 02 */ "3proxy tiny proxy server",
/* 03 */ VERSION " (" BUILDDATE ")",
/* 04 */ "3proxy allows to share and control Internet connection and count traffic",
/* 05 */ "SERVR",
/* 06 */ "PROXY",
/* 07 */ "TCPPM",
/* 08 */ "POP3P",
/* 09 */ "SOCK4",
/* 10 */ "SOCK5",
/* 11 */ "UDPPM",
/* 12 */ "SOCKS",
/* 13 */ "SOC45",
/* 14 */ "ADMIN",
/* 15 */ "DNSPR",
/* 16 */ "FTPPR",
/* 17 */ "SMTPP",
/* 18 */ "ZOMBIE",
/* 19 */ NULL,
/* 20 */ NULL,
/* 21 */ NULL,
@ -37,12 +37,12 @@ unsigned char * strings[] = {
/* 24 */ NULL,
#ifndef TPROXY_CONF
#ifndef _WIN32
/* 25 */ (unsigned char *)"/usr/local/etc/3proxy/3proxy.cfg",
/* 25 */ "/usr/local/etc/3proxy/3proxy.cfg",
#else
/* 25 */ (unsigned char *)"3proxy.cfg",
/* 25 */ "3proxy.cfg",
#endif
#else
/* 25 */ (unsigned char *)TPROXY_CONF,
/* 25 */ TPROXY_CONF,
#endif
/* 26 */ NULL,
/* 27 */ NULL,
@ -53,7 +53,7 @@ unsigned char * strings[] = {
/* 32 */ NULL,
/* 33 */ NULL,
/* 34 */ NULL,
/* 35 */ (unsigned char *)
/* 35 */
"<table align=\"center\" width=\"75%\"><tr><td>\n"
"<h3>Welcome to 3proxy Web Interface</h3>\n"
"Probably you've noticed interface is very ugly currently.\n"

View File

@ -150,14 +150,14 @@ 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 : (unsigned char *)&((struct sockaddr_in *)sa)->sin_addr.s_addr)
#define SAADDR(sa) (((struct sockaddr_in *)sa)->sin_family == AF_INET6? (char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (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 : (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? (char *)&((struct sockaddr_in6 *)sa)->sin6_addr : (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 SAADDR(sa) ((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))
@ -199,7 +199,7 @@ struct LOGFUNC;
struct LOGGER;
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 unsigned long (*RESOLVFUNC)(int af, char *name, char *value);
typedef unsigned (*BANDLIMFUNC)(struct clientparam * param, unsigned nbytesin, unsigned nbytesout);
typedef void (*TRAFCOUNTFUNC)(struct clientparam * param);
typedef void * (*EXTENDFUNC) (struct node *node);
@ -249,7 +249,7 @@ struct portlist {
struct userlist {
struct userlist * next;
unsigned char * user;
char * user;
};
typedef enum {
@ -263,8 +263,8 @@ typedef enum {
struct passwords {
struct passwords *next;
unsigned char * user;
unsigned char * password;
char * user;
char * password;
int pwtype;
};
@ -295,9 +295,9 @@ struct chain {
struct sockaddr_in addr;
#endif
unsigned short weight;
unsigned char * exthost;
unsigned char * extuser;
unsigned char * extpass;
char * exthost;
char * extuser;
char * extpass;
};
struct period {
@ -311,7 +311,7 @@ struct period {
struct hostname {
struct hostname *next;
unsigned char * name;
char * name;
int matchtype;
};
@ -375,7 +375,7 @@ struct trafcount {
struct LOGFUNC {
struct LOGFUNC* next;
int (*init)(struct LOGGER *logger);
int (*dobuf)(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s);
int (*dobuf)(struct clientparam * param, char * buf, int bufsize, const char *s);
void (*log)(const char * buf, int len, struct LOGGER *logger);
void (*rotate)(struct LOGGER *logger);
void (*flush)(struct LOGGER *logger);
@ -420,7 +420,7 @@ typedef enum {
typedef void* FILTER_OPEN(void * idata, struct srvparam * param);
typedef FILTER_ACTION FILTER_CLIENT(void *fo, struct clientparam * param, void** fc);
typedef FILTER_ACTION FILTER_PREDATA(void *fc, struct clientparam * param);
typedef FILTER_ACTION FILTER_BUFFER(void *fc, struct clientparam * param, unsigned char ** buf_p, int * bufsize_p, int offset, int * length_p);
typedef FILTER_ACTION FILTER_BUFFER(void *fc, struct clientparam * param, char ** buf_p, int * bufsize_p, int offset, int * length_p);
typedef void FILTER_CLOSE(void *fo);
struct filter {
@ -487,7 +487,7 @@ struct srvparam {
pthread_mutex_t counter_mutex;
struct pollfd fds;
FILE *stdlog;
unsigned char * target;
char * target;
#ifdef SO_BINDTODEVICE
char * ibindtodevice;
char * obindtodevice;
@ -497,12 +497,12 @@ struct srvparam {
struct ace *preacl, *acl;
struct auth *authfuncs;
struct filter *filter;
unsigned char * logtarget;
unsigned char * logformat;
unsigned char * nonprintable;
char * logtarget;
char * logformat;
char * nonprintable;
struct LOGGER *log;
unsigned short targetport;
unsigned char replace;
char replace;
time_t time_start;
};
@ -553,7 +553,7 @@ struct clientparam {
paused,
version;
unsigned char *hostname,
char *hostname,
*username,
*password,
*extusername,
@ -610,7 +610,7 @@ struct extparam {
demon, maxchild, needreload, timetoexit, version, noforce;
int authcachetype, authcachetime;
int filtermaxsize;
unsigned char **archiver;
char **archiver;
ROTATION logtype, countertype;
char * counterfile;
#ifndef NOIPV6
@ -627,12 +627,12 @@ struct extparam {
BANDLIMFUNC bandlimfunc;
TRAFCOUNTFUNC trafcountfunc;
void (*prelog)(struct clientparam * param);
unsigned char *logtarget, *logformat;
char *logtarget, *logformat;
struct filemon * fmon;
struct filter * filters;
struct auth *authfuncs;
char* demanddialprog;
unsigned char **stringtable;
char **stringtable;
time_t time;
unsigned logdumpsrv, logdumpcli;
char delimchar;
@ -670,7 +670,7 @@ struct dictionary {
struct commands {
struct commands *next;
char * command;
int (* handler)(int argc, unsigned char ** argv);
int (* handler)(int argc, char ** argv);
int minargs;
int maxargs;
};
@ -694,11 +694,11 @@ extern struct proxydef childdef;
struct child {
int argc;
unsigned char **argv;
char **argv;
};
struct hashentry {
unsigned char hash[sizeof(unsigned)*4];
char hash[sizeof(unsigned)*4];
time_t expires;
struct hashentry *next;
char value[4];
@ -763,31 +763,31 @@ struct pluginlink {
struct auth *authfuncs;
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 * sin, unsigned char * buf, int bufsize, int to);
int (*sockrecvfrom)(SOCKET sock, struct sockaddr * sin, unsigned char * buf, int bufsize, int to);
int (*socksend)(SOCKET sock, char * buf, int bufsize, int to);
int (*socksendto)(SOCKET sock, struct sockaddr * sin, char * buf, int bufsize, int to);
int (*sockrecvfrom)(SOCKET sock, struct sockaddr * sin, 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);
int (*sockgetlinebuf)(struct clientparam * param, DIRECTION which, char * buf, int bufsize, int delim, int to);
int (*myinet_ntop)(int af, void *src, char *dst, socklen_t size);
int (*dobuf)(struct clientparam * param, unsigned char * buf, int bufsize, const unsigned char *s, const unsigned char * doublec);
int (*dobuf2)(struct clientparam * param, unsigned char * buf, int bufsize, 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 (*dobuf)(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec);
int (*dobuf2)(struct clientparam * param, char * buf, int bufsize, const char *s, const char * doublec, struct tm* tm, char * format);
int (*scanaddr)(const char *s, unsigned long * ip, unsigned long * mask);
unsigned long (*getip46)(int family, 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);
int (*checkACL)(struct clientparam * param);
int (*checkpreACL)(struct clientparam * param);
void (*nametohash)(const unsigned char * name, unsigned char *hash);
unsigned (*hashindex)(const unsigned char* hash);
unsigned char* (*en64)(const unsigned char *in, unsigned char *out, int inlen);
int (*de64)(const unsigned char *in, unsigned char *out, int maxlen);
void (*tohex)(unsigned char *in, unsigned char *out, int len);
void (*fromhex)(unsigned char *in, unsigned char *out, int len);
void (*decodeurl)(unsigned char *s, int allowcr);
int (*parsestr) (unsigned char *str, unsigned char **argm, int nitems, unsigned char ** buff, int *inbuf, int *bufsize);
struct ace * (*make_ace) (int argc, unsigned char ** argv);
void (*nametohash)(const char * name, char *hash);
unsigned (*hashindex)(const char* hash);
char* (*en64)(const char *in, char *out, int inlen);
int (*de64)(const char *in, char *out, int maxlen);
void (*tohex)(char *in, char *out, int len);
void (*fromhex)(char *in, char *out, int len);
void (*decodeurl)(char *s, int allowcr);
int (*parsestr) (char *str, char **argm, int nitems, char ** buff, int *inbuf, int *bufsize);
struct ace * (*make_ace) (int argc, char ** argv);
void * (*mallocfunc)(size_t size);
void (*freefunc)(void *ptr);
void *(*reallocfunc)(void *ptr, size_t size);
@ -804,11 +804,11 @@ struct pluginlink {
int (*parseusername)(char *username, struct clientparam *param, int extpasswd);
int (*parseconnusername)(char *username, struct clientparam *param, int extpasswd, unsigned short port);
struct sockfuncs *so;
unsigned char * (*dologname) (unsigned char *buf, int bufsize, unsigned char *name, const unsigned char *ext, ROTATION lt, time_t t);
char * (*dologname) (char *buf, int bufsize, char *name, const char *ext, ROTATION lt, time_t t);
};
struct counter_header {
unsigned char sig[4];
char sig[4];
time_t updated;
};

View File

@ -28,7 +28,7 @@ struct udpmap {
void * udppmchild(struct clientparam* param) {
unsigned char *buf = NULL;
char *buf = NULL;
int res, i;
#ifdef _WIN32
SASIZETYPE size;

View File

@ -14,7 +14,7 @@
extern FILE *writable;
FILE * confopen();
extern void decodeurl(unsigned char *s, int filter);
extern void decodeurl(char *s, int filter);
struct printparam {
char buf[1024];
@ -24,12 +24,12 @@ struct printparam {
static void stdpr(struct printparam* pp, char *buf, int inbuf){
if((pp->inbuf + inbuf > 1024) || !buf) {
socksend(pp->cp->clisock, (unsigned char *)pp->buf, pp->inbuf, conf.timeouts[STRING_S]);
socksend(pp->cp->clisock, (char *)pp->buf, pp->inbuf, conf.timeouts[STRING_S]);
pp->inbuf = 0;
if(!buf) return;
}
if(inbuf >= 1000){
socksend(pp->cp->clisock, (unsigned char *)buf, inbuf, conf.timeouts[STRING_S]);
socksend(pp->cp->clisock, (char *)buf, inbuf, conf.timeouts[STRING_S]);
}
else {
memcpy(pp->buf + pp->inbuf, buf, inbuf);
@ -353,7 +353,7 @@ void * adminchild(struct clientparam* param) {
buf = myalloc(LINESIZE);
if(!buf) {RETURN(555);}
i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, LINESIZE - 1, '\n', conf.timeouts[STRING_S]);
i = sockgetlinebuf(param, CLIENT, (char *)buf, LINESIZE - 1, '\n', conf.timeouts[STRING_S]);
if(i<5 || ((buf[0]!='G' || buf[1]!='E' || buf[2]!='T' || buf[3]!=' ' || buf[4]!='/') &&
(buf[0]!='P' || buf[1]!='O' || buf[2]!='S' || buf[3]!='T' || buf[4]!=' ' || buf[5]!='/')))
{
@ -366,7 +366,7 @@ void * adminchild(struct clientparam* param) {
}
*sb = 0;
req = mystrdup(buf + ((*buf == 'P')? 6 : 5));
while((i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, LINESIZE - 1, '\n', conf.timeouts[STRING_S])) > 2){
while((i = sockgetlinebuf(param, CLIENT, (char *)buf, LINESIZE - 1, '\n', conf.timeouts[STRING_S])) > 2){
buf[i] = 0;
if(i > 19 && (!strncasecmp(buf, "authorization", 13))){
sb = strchr(buf, ':');
@ -378,17 +378,17 @@ void * adminchild(struct clientparam* param) {
}
sb+=5;
while(isspace(*sb))sb++;
i = de64((unsigned char *)sb, (unsigned char *)username, 255);
i = de64((char *)sb, (char *)username, 255);
if(i<=0)continue;
username[i] = 0;
sb = strchr((char *)username, ':');
if(sb){
*sb = 0;
if(param->password)myfree(param->password);
param->password = (unsigned char *)mystrdup(sb+1);
param->password = (char *)mystrdup(sb+1);
}
if(param->username) myfree(param->username);
param->username = (unsigned char *)mystrdup(username);
param->username = (char *)mystrdup(username);
continue;
}
else if(i > 15 && (!strncasecmp(buf, "content-length:", 15))){
@ -542,14 +542,14 @@ void * adminchild(struct clientparam* param) {
if(!writable || !contentlen || fseek(writable, 0, 0)){
error = 1;
}
while(l < contentlen && (i = sockgetlinebuf(param, CLIENT, (unsigned char *)buf, (contentlen - l) > LINESIZE - 1?LINESIZE - 1:contentlen - l, '+', conf.timeouts[STRING_S])) > 0){
if(i > (contentlen - l)) i = (contentlen - l);
while(l < contentlen && (i = sockgetlinebuf(param, CLIENT, (char *)buf, (contentlen - l) > LINESIZE - 1?LINESIZE - 1:contentlen - l, '+', conf.timeouts[STRING_S])) > 0){
if(((unsigned)i) > (contentlen - l)) i = (int)(contentlen - l);
if(!l){
if(i<9 || strncasecmp(buf, "conffile=", 9)) error = 1;
}
if(!error){
buf[i] = 0;
decodeurl((unsigned char *)buf, 1);
decodeurl((char *)buf, 1);
fprintf(writable, "%s", l? buf : buf + 9);
}
l += i;
@ -576,7 +576,7 @@ CLEANRET:
printstr(&pp, NULL);
if(buf) myfree(buf);
dolog(param, (unsigned char *)req);
dolog(param, req);
if(req)myfree(req);
freeparam(param);
return (NULL);