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

📄 cmds.c

📁 socket5 代理服务代码 socket5 代理服务代码
💻 C
📖 第 1 页 / 共 4 页
字号:
    }    ap = acct;  }  else {    ap = GETPASS("Account:");  }  command("ACCT %s\r\n", ap);}jmp_buf abortprox;void proxabort() {  extern int proxy;  if (!proxy) {    pswitch(1);  }  if (connected) {    proxflag = 1;  }  else {    proxflag = 0;  }  pswitch(0);  longjmp(abortprox,1);}void doproxy(int argc, char *argv[]) {  extern jmp_buf abortprox;  register struct cmd *c;  struct cmd *getcmd();  Sig_t oldintr;  void proxabort();      if (argc < 2 && !another(&argc, &argv, "command")) {    printf("usage: %s command\n", argv[0]);    code = -1;    return;  }  c = getcmd(argv[1]);  if (c == (struct cmd *) -1) {    printf("?Ambiguous command\n");    fflush(stdout);    code = -1;    return;  }  if (c == 0) {    printf("?Invalid command\n");    fflush(stdout);    code = -1;    return;  }  if (!c->c_proxy) {    printf("?Invalid proxy command\n");    fflush(stdout);    code = -1;    return;  }  if (setjmp(abortprox)) {    code = -1;    return;  }  oldintr = Signal(SIGINT, proxabort);  pswitch(1);  if (c->c_conn && !connected) {    printf("Not connected\n");    fflush(stdout);    pswitch(0);    Signal(SIGINT, oldintr);    code = -1;    return;  }  (*c->c_handler)(argc-1, argv+1);  if (connected) {    proxflag = 1;  }  else {    proxflag = 0;  }  pswitch(0);  Signal(SIGINT, oldintr);}void setcase() {  mcase = !mcase;  printf("Case mapping %s.\n", onoff(mcase));  code = mcase;}void setcr() {  crflag = !crflag;  printf("Carriage Return stripping %s.\n", onoff(crflag));  code = crflag;}void setntrans(int argc, char *argv[]) {  if (argc == 1) {    ntflag = 0;    printf("Ntrans off.\n");    code = ntflag;    return;  }  ntflag++;  code = ntflag;  strncpy(ntin, argv[1], 16);  ntin[16] = '\0';  if (argc == 2) {    ntout[0] = '\0';    return;  }  strncpy(ntout, argv[2], 16);  ntout[16] = '\0';}char *dotrans(char *name){  static char new[MAXPATHLEN];  char *cp1, *cp2 = new;  register int i, ostop, found;  for (ostop = 0; *(ntout + ostop) && ostop < 16; ostop++);  for (cp1 = name; *cp1; cp1++) {    found = 0;    for (i = 0; *(ntin + i) && i < 16; i++) {      if (*cp1 == *(ntin + i)) {	found++;	if (i < ostop) {	  *cp2++ = *(ntout + i);	}	break;      }    }    if (!found) {      *cp2++ = *cp1;    }  }  *cp2 = '\0';  return(new);}void setnmap(int argc, char *argv[]) {  char *cp;      if (argc == 1) {    mapflag = 0;    printf("Nmap off.\n");    code = mapflag;    return;  }  if (argc < 3 && !another(&argc, &argv, "mapout")) {    printf("Usage: %s [mapin mapout]\n",argv[0]);    code = -1;    return;  }  mapflag = 1;  code = 1;  cp = index(altarg, ' ');  if (proxy) {    while(*++cp == ' ');    altarg = cp;    cp = index(altarg, ' ');  }  *cp = '\0';  strncpy(mapin, altarg, MAXPATHLEN - 1);  while (*++cp == ' ');  strncpy(mapout, cp, MAXPATHLEN - 1);}char *domap(char *name) {  static char new[MAXPATHLEN];  register char *cp1 = name, *cp2 = mapin;  char *tp[9], *te[9];  int i, toks[9], toknum = 0, match = 1;  for (i=0; i < 9; ++i) {    toks[i] = 0;  }  while (match && *cp1 && *cp2) {    switch (*cp2) {      case '\\':	if (*++cp2 != *cp1) {	  match = 0;	}	break;      case '$':	if (*(cp2+1) >= '1' && (*cp2+1) <= '9') {	  if (*cp1 != *(++cp2+1)) {	    toks[toknum = *cp2 - '1']++;	    tp[toknum] = cp1;	    while (*++cp1 && *(cp2+1) != *cp1);	    te[toknum] = cp1;	  }	  cp2++;	  break;	}	/* FALLTHROUGH */      default:	if (*cp2 != *cp1) {	  match = 0;	}	break;    }    if (match && *cp1) {      cp1++;    }    if (match && *cp2) {      cp2++;    }  }  if (!match && *cp1) {    /* last token mismatch */    toks[toknum] = 0;  }  cp1  = new;  *cp1 = '\0';  cp2  = mapout;  while (*cp2) {    match = 0;    switch (*cp2) {      case '\\':	if (*(cp2 + 1)) {	  *cp1++ = *++cp2;	}	break;      case '[':    LOOP:      if (*++cp2 == '$' && isdigit((unsigned char)*(cp2+1))) { 	if (*++cp2 == '0') {	  char *cp3 = name;				  while (*cp3) {	    *cp1++ = *cp3++;	  }	  match = 1;	} else if (toks[toknum = *cp2 - '1']) {	  char *cp3 = tp[toknum];				  while (cp3 != te[toknum]) {	    *cp1++ = *cp3++;	  }	  match = 1;	}      } else {	while (*cp2 && *cp2 != ',' && *cp2 != ']') {	  if (*cp2 == '\\') {	    cp2++;	  } else if (*cp2 == '$' && isdigit((unsigned char)*(cp2+1))) {	    if (*++cp2 == '0') {	      char *cp3 = name;					      while (*cp3) {		*cp1++ = *cp3++;	      }	    } else if (toks[toknum = *cp2 - '1']) {	      char *cp3=tp[toknum];					      while (cp3 != te[toknum]) {		*cp1++ = *cp3++;	      }	    }	  } else if (*cp2) {	    *cp1++ = *cp2++;	  }	}	if (!*cp2) {	  printf("nmap: unbalanced brackets\n");	  return(name);	}	match = 1;	cp2--;      }      if (match) {	while (*++cp2 && *cp2 != ']') {	  if (*cp2 == '\\' && *(cp2 + 1)) {	    cp2++;	  }	}	if (!*cp2) {	  printf("nmap: unbalanced brackets\n");	  return(name);	}	break;      }		      switch (*++cp2) {	case ',':	  goto LOOP;	case ']':	  break;	default:	  cp2--;	  goto LOOP;      }			      break;      case '$':	if (isdigit((unsigned char)*(cp2 + 1))) {	  if (*++cp2 == '0') {	    char *cp3 = name;				    while (*cp3) {	      *cp1++ = *cp3++;	    }	  } else if (toks[toknum = *cp2 - '1']) {	    char *cp3 = tp[toknum];				    while (cp3 != te[toknum]) {	      *cp1++ = *cp3++;	    }	  }	  break;	}	/* intentional drop through */      default:	*cp1++ = *cp2;	break;    }    cp2++;  }  *cp1 = '\0';  if (!*new) {    return(name);  }  return(new);}void setsunique() {  sunique = !sunique;  printf("Store unique %s.\n", onoff(sunique));  code = sunique;}void setrunique() {  runique = !runique;  printf("Receive unique %s.\n", onoff(runique));  code = runique;}/* change directory to perent directory                                      */void cdup() {  if (command("CDUP\r\n") == ERROR && code == 500) {    if (verbose) printf("CDUP command not recognized, trying XCUP\n");    command("XCUP\r\n");  }}/* restart transfer at specific point                                        */void restart(int argc, char *argv[]) {  extern long atol();  if (argc != 2) {    printf("restart: offset not specified\n");  } else {    restart_point = atol(argv[1]);    printf("restarting at %ld. execute get, put or append to initiate transfer\n", (long)restart_point);  }}/* show remote system type                                                   */void syst() {  command("SYST\r\n");}void macdef(int argc, char *argv[]) {  char *tmp;  int c;  if (macnum == 16) {    printf("Limit of 16 macros have already been defined\n");    code = -1;    return;  }  if (argc < 2 && !another(&argc, &argv, "macro name")) {    printf("Usage: %s macro_name\n",argv[0]);    code = -1;    return;  }  if (interactive) {    printf("Enter macro line by line, terminating it with a null line\n");  }  strncpy(macros[macnum].mac_name, argv[1], 8);  if (macnum == 0) {    macros[macnum].mac_start = macbuf;  } else {    macros[macnum].mac_start = macros[macnum - 1].mac_end + 1;  }  tmp = macros[macnum].mac_start;  while (tmp != macbuf+4096) {    if ((c = getchar()) == EOF) {      printf("macdef:end of file encountered\n");      code = -1;      return;    }    if ((*tmp = c) == '\n') {      if (tmp == macros[macnum].mac_start) {	macros[macnum++].mac_end = tmp;	code = 0;	return;      }      if (*(tmp-1) == '\0') {	macros[macnum++].mac_end = tmp - 1;	code = 0;	return;      }	          *tmp = '\0';    }    tmp++;  }  while (1) {    while ((c = getchar()) != '\n' && c != EOF) /* LOOP */;	    if (c == EOF || getchar() == '\n') {      printf("Macro not defined - 4k buffer exceeded\n");      code = -1;      return;    }  }}/* get size of file on remote machine                                        */void sizecmd(int argc, char *argv[]) {  if (argc < 2 && !another(&argc, &argv, "filename")) {    printf("usage: %s filename\n", argv[0]);    code = -1;    return;  }  command("SIZE %s\r\n", argv[1]);}/* get last modification time of file on remote machine                      */void modtime(int argc, char *argv[]) {  int overbose;  if (argc < 2 && !another(&argc, &argv, "filename")) {    printf("usage: %s filename\n", argv[0]);    code = -1;    return;  }  overbose = verbose;      if (debug == 0) {    verbose = -1;  }      if (command("MDTM %s\r\n", argv[1]) == COMPLETE) {    int yy, mo, day, hour, min, sec;	    sscanf(reply_string, "%*s %04d%02d%02d%02d%02d%02d", &yy, &mo, &day, &hour, &min, &sec);    /* might want to print this in local time */    printf("%s\t%02d/%02d/%04d %02d:%02d:%02d GMT\n", argv[1], mo, day, yy, hour, min, sec);  } else {    printf("%s\n", reply_string);  }  verbose = overbose;}/* show status on reomte machine                                             */void rmtstatus(int argc, char *argv[]) {  command(argc > 1 ? "STAT %s\r\n" : "STAT\r\n" , argv[1]);}/* get file if modtime is more recent than current file                      */void newer(int argc, char *argv[]) {  if (!getit(argc, argv, -1, "w")) return;  printf("Local file \"%s\" is newer than remote file \"%s\"\n", argv[1], argv[2]);}

⌨️ 快捷键说明

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