int realDo(){ switch(cmdstate){ case LCX_LISTION: lcx_listen(listenPort,refPort,usec); break; case LCX_SLAVE: lcx_slave(refHost,refPort,connHost,connPort,usec); break; case LCX_TRAN: lcx_tran(listenPort,connHost,connPort,usec); break; case SSOCKSD: create_ssocksd_server( listenPort ,usec); break; case RCSOCKS: lcx_listen(listenPort,refPort,usec); //create_rcsocks_server(listenPort,refPort,usec); break; case RSSOCKS: create_rssocks_server(refHost,refPort,usec); break; } return 1; }
int main_func(int argc,char**argv) { if (argc<2) { help(argv[0]); return 0; } const char* command[] = {"-about","-listen","-slave","-tran"}; int32_t i,s = sizeof(command)/sizeof(*command); for (i=0; i<s; i++) { if (strcmp(command[i],argv[1])==0) break; } int32_t n = 2; const char * addr1=NULL, *addr2=NULL; int32_t port1=0,port2=0; switch (i) { case 0: about(); break; case 1: if (argc<4) { help(argv[0]); return 0; } else { port1 = getport(argv[n]); port2 = getport(argv[++n]); } break; case 2: if (argc<6) { help(argv[0]); return 0; } else { addr1 = argv[n]; port1 = getport(argv[++n]); addr2 = argv[++n]; port2 = getport(argv[++n]); } break; case 3: if (argc<5) { help(argv[0]); return 0; } else { port1 = getport(argv[n]); addr2 = argv[++n]; port2 = getport(argv[++n]); } break; default: { help(argv[0]); return 0; } break; } if(port1==-1 || port2==-1 )return 0; const char* logpath=NULL,*hexpath=NULL,*textpath=NULL; while (++n<argc) { if (strcmp(argv[n],"-hex")==0) { if (argc-1<++n) { fprintf(stdout,"\n[-] ERROR: -hex Must supply file name.\n\n"); return 0; } hexpath = argv[n]; } else if (strcmp(argv[n],"-text")==0) { if (argc-1<++n) { fprintf(stdout,"\n[-] ERROR: -text Must supply file name.\n\n"); return 0; } textpath = argv[n]; } else if (strcmp(argv[n],"-log")==0) { if (argc-1<++n) { fprintf(stdout,"\n[-] ERROR: -log Must supply file name.\n\n"); return 0; } logpath = argv[n]; } else { fprintf(stdout,"\n[-] ERROR: %s Undefined.\n\n",argv[n]); return 0; } } if (logpath) { setfile(&lcx_log,logpath); if(lcx_log==NULL)return 0; } if (hexpath) { setfile(&lcx_hex,hexpath); if(lcx_hex==NULL)return 0; } if (textpath) { setfile(&lcx_text,textpath); if(lcx_text==NULL)return 0; } switch(i) { case 1:lcx_listen(port1,port2);break; case 2:lcx_slave(addr1,port1,addr2,port2);break; case 3:lcx_tran(port1,addr2,(uint16_t)port2);break; default:break; } return 0; }