MCPcopy Create free account
hub / github.com/3proxy/3proxy / ftplogin

Function ftplogin

src/ftp.c:11–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10
11int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) {
12 char tbuf[256];
13 int i;
14 char *buf;
15 int len;
16 int res;
17
18 buf = nbuf?nbuf:tbuf;
19 len = nbuf?*innbuf:sizeof(tbuf);
20
21 if(innbuf)*innbuf = 0;
22 if(len < 140) return 707;
23 while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
24 }
25 if(i < 3) return 706;
26 buf[i] = 0;
27 if(atoi(buf)/100 != 2) {
28 *innbuf = i;
29 return 702;
30 }
31 sprintf(buf, "USER %.128s\r\n", param->extusername?param->extusername:(unsigned char *)"anonymous");
32 if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){
33 return 703;
34 }
35 param->statscli64 += (int)strlen(buf);
36 param->nwrites++;
37 while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){
38 }
39 if(i < 3) return 704;
40 buf[i] = 0;
41 res = atoi(buf)/100;
42 if(res == 3){
43 sprintf(buf, "PASS %.128s\r\n",
44 param->extusername?
45 (param->extpassword?
46 param->extpassword:(unsigned char *)"")
47 :(unsigned char *)"3proxy@");
48 res = (int)strlen(buf);
49 if((int)socksend(param->remsock, (unsigned char *)buf, res, conf.timeouts[STRING_S]) != (int)strlen(buf)){
50 return 705;
51 }
52 param->statscli64 += res;
53 param->nwrites++;
54 while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0){
55 buf[i] = 0;
56 res = (i>3 && buf[3] != '-')? atoi(buf)/100 : 0;
57 if(res || (nbuf && (len-i) > 256 && i > 3)) {
58 buf += i;
59 len -= i;
60 if(innbuf)*innbuf += i;
61 }
62 if(res) break;
63 }
64 if(i < 3) {
65 return 701;
66 }
67 }
68 if(res != 2) {

Callers 2

proxychildFunction · 0.85
ftpprchildFunction · 0.85

Calls 2

sockgetlinebufFunction · 0.85
socksendFunction · 0.85

Tested by

no test coverage detected