⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmds.c

📁 socket5 代理服务代码 socket5 代理服务代码
💻 C
📖 第 1 页 / 共 4 页
字号:
  mflag = 0;  longjmp(jabort,0);}void mput(int argc, char **argv) {  extern jmp_buf jabort;  register int i;  Sig_t oldintr;  int ointer;  char *tp;  void mabort();      if (argc < 2 && !another(&argc, &argv, "local-files")) {    printf("usage: %s local-files\n", argv[0]);    code = -1;    return;  }  mname = argv[0];  mflag = 1;  oldintr = Signal(SIGINT, mabort);  setjmp(jabort);  if (proxy) {    char *cp, *tp2, tmpbuf[MAXPATHLEN];	    while ((cp = remglob(argv,0)) != NULL) {      if (*cp == 0) {	mflag = 0;	continue;      }      if (mflag && confirm(argv[0], cp)) {	tp = cp;	if (mcase) {	  while (*tp && !islower((unsigned char)*tp)) {	    tp++;	  }	  if (!*tp) {	    tp = cp;	    tp2 = tmpbuf;	    while ((*tp2 = *tp)) {	      if (isupper((unsigned char)*tp2)) {		*tp2 = 'a' + *tp2 - 'A';	      }	      tp++;	      tp2++;	    }	  }	  tp = tmpbuf;	}	if (ntflag) {	  tp = dotrans(tp);	}	if (mapflag) {	  tp = domap(tp);	}	sendrequest((sunique) ? "STOU" : "STOR", cp, tp, cp != tp || !interactive);	if (!mflag && fromatty) {	  ointer = interactive;	  interactive = 1;	  if (confirm("Continue with","mput")) {	    mflag++;	  }	  interactive = ointer;	}      }    }    Signal(SIGINT, oldintr);    mflag = 0;    return;  }  for (i = 1; i < argc; i++) {    register char **cpp, **gargs;    if (!doglob) {      if (mflag && confirm(argv[0], argv[i])) {	tp = (ntflag) ? dotrans(argv[i]) : argv[i];	tp = (mapflag) ? domap(tp) : tp;	sendrequest((sunique) ? "STOU" : "STOR", argv[i], tp, tp != argv[i] || !interactive);	if (!mflag && fromatty) {	  ointer = interactive;	  interactive = 1;	  if (confirm("Continue with","mput")) {	    mflag++;	  }	  interactive = ointer;	}      }      continue;    }    gargs = ftpglob(argv[i]);    if (globerr != NULL) {      printf("%s\n", globerr);      if (gargs) {	blkfree(gargs);	free((char *)gargs);      }      continue;    }    for (cpp = gargs; cpp && *cpp != NULL; cpp++) {      if (mflag && confirm(argv[0], *cpp)) {	tp = (ntflag) ? dotrans(*cpp) : *cpp;	tp = (mapflag) ? domap(tp) : tp;	sendrequest((sunique) ? "STOU" : "STOR", *cpp, tp, *cpp != tp || !interactive);	if (!mflag && fromatty) {	  ointer = interactive;	  interactive = 1;	  if (confirm("Continue with","mput")) {	    mflag++;	  }	  interactive = ointer;	}      }    }    if (gargs != NULL) {      blkfree(gargs);      free((char *)gargs);    }  }  Signal(SIGINT, oldintr);  mflag = 0;}/* Receive one file.                                                         */int getit(int argc, char *argv[], int restartit, char *mode) {  int loc = 0;  char *oldargv1, *oldargv2;  if (argc == 2) {    argc++;    argv[2] = argv[1];    loc++;  }  if (argc < 2 && !another(&argc, &argv, "remote-file"))    goto usage;  if (argc < 3 && !another(&argc, &argv, "local-file")) {  usage:    printf("usage: %s remote-file [ local-file ]\n", argv[0]);    code = -1;    return (0);  }  oldargv1 = argv[1];  oldargv2 = argv[2];  if (!globulize(&argv[2])) {    code = -1;    return (0);  }  if (loc && mcase) {    char *tp = argv[1], *tp2, tmpbuf[MAXPATHLEN];	    while (*tp && !islower((unsigned char)*tp)) tp++;    if (!*tp) {      tp = argv[2];      tp2 = tmpbuf;      while ((*tp2 = *tp)) {	if (isupper((unsigned char)*tp2)) *tp2 = tolower(*tp2);	tp2++;	tp++;      }      argv[2] = tmpbuf;    }  }  if (loc && ntflag)    argv[2] = dotrans(argv[2]);  if (loc && mapflag)    argv[2] = domap(argv[2]);  if (restartit) {    struct stat stbuf;    int ret;	    ret = stat(argv[2], &stbuf);    if (restartit == 1) {      if (ret < 0) {	fprintf(stderr, "local: %s: %s\n", argv[2],		strerror(errno));	return (0);      }      restart_point = stbuf.st_size;    } else {      if (ret == 0) {	int overbose;			overbose = verbose;	if (debug == 0)	  verbose = -1;	if (command("MDTM %s\r\n", argv[1]) == COMPLETE) {	  int yy, mo, day, hour, min, sec;	  struct tm *tm;	  verbose = overbose;	  sscanf(reply_string,		 "%*s %04d%02d%02d%02d%02d%02d",		 &yy, &mo, &day, &hour, &min, &sec);	  tm = gmtime(&stbuf.st_mtime);	  tm->tm_mon++;	  if ((tm->tm_year + 1900) > yy)	    return (1);	  else if ((tm->tm_year + 1900) == yy) {	    if (tm->tm_mon > mo)	      return (1);	  } else if (tm->tm_mon == mo) {	    if (tm->tm_mday > day)	      return (1);	  } else if (tm->tm_mday == day) {	    if (tm->tm_hour > hour)	      return (1);	  } else if (tm->tm_hour == hour) {	    if (tm->tm_min > min)	      return (1);	  } else if (tm->tm_min == min) {	    if (tm->tm_sec > sec)	      return (1);	  }	} else {	  printf("%s\n", reply_string);	  verbose = overbose;	  return (0);	}      }    }  }      recvrequest("RETR", argv[2], argv[1], mode,	      argv[1] != oldargv1 || argv[2] != oldargv2);  restart_point = 0;  return (0);}void reget(int argc, char *argv[]) {  getit(argc, argv, 1, "r+w");}void get(int argc, char *argv[]){  getit(argc, argv, 0, restart_point ? "r+w" : "w" );}/* Get multiple files.                                                       */void mget(int argc, char **argv) {  extern jmp_buf jabort;  Sig_t oldintr;  int ointer;  char *cp, *tp, *tp2, tmpbuf[MAXPATHLEN];  void mabort();  if (argc < 2 && !another(&argc, &argv, "remote-files")) {    printf("usage: %s remote-files\n", argv[0]);    code = -1;    return;  }  mname = argv[0];  mflag = 1;  oldintr = Signal(SIGINT,mabort);  setjmp(jabort);  while ((cp = remglob(argv,proxy)) != NULL) {    if (*cp == '\0') {      mflag = 0;      continue;    }    if (mflag && confirm(argv[0], cp)) {      tp = cp;      if (mcase) {	while (*tp && !islower((unsigned char)*tp)) {	  tp++;	}	if (!*tp) {	  tp = cp;	  tp2 = tmpbuf;		    	  while ((*tp2 = *tp)) {	    if (isupper((unsigned char)*tp2)) *tp2 = tolower(*tp2);	    tp2++;	    tp++;	  }	}	tp = tmpbuf;      }      if (ntflag) {	tp = dotrans(tp);      }      if (mapflag) {	tp = domap(tp);      }      recvrequest("RETR", tp, cp, "w", tp != cp || !interactive);      if (!mflag && fromatty) {	ointer = interactive;	interactive = 1;	if (confirm("Continue with","mget")) {	  mflag++;	}	interactive = ointer;      }    }  }  Signal(SIGINT,oldintr);  mflag = 0;}char *remglob(char *argv[], int doswitch) {  char temp[16];  static char buf[MAXPATHLEN];  static FILE *ftemp = NULL;  static char **args;  int oldverbose, oldhash;  char *cp, *mode;  if (!mflag) {    if (!doglob) {      args = NULL;    }    else {      if (ftemp) {	fclose(ftemp);	ftemp = NULL;      }    }    return(NULL);  }  if (!doglob) {    if (args == NULL)      args = argv;    if ((cp = *++args) == NULL)      args = NULL;    return (cp);  }  if (ftemp == NULL) {    strcpy(temp, _PATH_TMP);    mktemp(temp);    oldverbose = verbose, verbose = 0;    oldhash = hash, hash = 0;    if (doswitch) {      pswitch(!proxy);    }    for (mode = "w"; *++argv != NULL; mode = "a")      recvrequest ("NLST", temp, *argv, mode, 0);    if (doswitch) {      pswitch(!proxy);    }    verbose = oldverbose; hash = oldhash;    ftemp = fopen(temp, "r");    unlink(temp);    if (ftemp == NULL) {      printf("can't find list of remote files, oops\n");      return (NULL);    }  }  if (fgets(buf, sizeof (buf), ftemp) == NULL) {    fclose(ftemp), ftemp = NULL;    return (NULL);  }  if ((cp = index(buf, '\n')) != NULL)    *cp = '\0';  return (buf);}char *onoff(int bool) {  return (bool ? "on" : "off");}/* Show status.                                                              *//*                                                                           *//* ARGSUSED                                                                  */void status(int argc, char *argv[]) {  int i;  if (connected) {    printf("Connected to %s.\n", hostname);  } else {    printf("Not connected.\n");  }  if (!proxy) {    pswitch(1);    if (connected) {      printf("Connected for proxy commands to %s.\n", hostname);    } else {      printf("No proxy connection.\n");    }    pswitch(0);  }  printf("Mode: %s; Type: %s; Form: %s; Structure: %s\n",	 modename, typename, formname, structname);  printf("Verbose: %s; Bell: %s; Prompting: %s; Globbing: %s\n", 	 onoff(verbose), onoff(bell), onoff(interactive),	 onoff(doglob));  printf("Store unique: %s; Receive unique: %s\n", onoff(sunique),	 onoff(runique));  printf("Case: %s; CR stripping: %s\n",onoff(mcase),onoff(crflag));  if (ntflag) {    printf("Ntrans: (in) %s (out) %s\n", ntin,ntout);  } else {    printf("Ntrans: off\n");  }  if (mapflag) {    printf("Nmap: (in) %s (out) %s\n", mapin, mapout);  } else {    printf("Nmap: off\n");  }      printf("Hash mark printing: %s; Use of PORT cmds: %s\n",	 onoff(hash), onoff(sendport));  if (macnum > 0) {    printf("Macros:\n");    for (i=0; i<macnum; i++) {      printf("\t%s\n",macros[i].mac_name);    }  }  code = 0;}/* Set beep on cmd completed mode.                                           *//*                                                                           *//* VARARGS                                                                   */void setbell() {  bell = !bell;  printf("Bell mode %s.\n", onoff(bell));  code = bell;}/* Turn on packet tracing.                                                   *//*                                                                           *//* VARARGS                                                                   */void settrace() {  trace = !trace;  printf("Packet tracing %s.\n", onoff(trace));  code = trace;}/* Toggle hash mark printing during transfers.                               *//*                                                                           *//* VARARGS                                                                   */void sethash() {  hash = !hash;  printf("Hash mark printing %s", onoff(hash));  code = hash;  if (hash)    printf(" (%d bytes/hash mark)", 1024);  printf(".\n");}/* Turn on printing of server echo's.                                        *//*                                                                           *//* VARARGS                                                                   */void setverbose() {  verbose = !verbose;  printf("Verbose mode %s.\n", onoff(verbose));  code = verbose;}/* Toggle PORT cmd use before each data connection.                          *//*                                                                           *//* VARARGS                                                                   */void setport() {  sendport = !sendport;  printf("Use of PORT cmds %s.\n", onoff(sendport));  code = sendport;}/* Turn on interactive prompting during mget, mput, and mdelete.             *//*                                                                           */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -