#include #include #include #include #include #include #include #include main(argc, argv) int argc; char **argv; { int sock; int rval; struct sockaddr_in server; struct hostent *hp, *gethostbyname(); char buf[1024]; char s[1024]; int x,y,z; char c; char *fname; int fd, status; int temp; char cookiestr[20]; char name[40]; char host[20]; int number; int mode; // 0 - default/normal, 1 - print name mode = 0; strcpy(name,""); if(argc >= 2) { mode = atoi(argv[1]); } if(argc >= 3) { strcpy(name,argv[2]); } else { strcpy(name,"#"); } if(mode != 10) { if(getenv("HTTP_COOKIE") == NULL) { printf("Enter a cookie string: offset%3D: "); gets(cookiestr); } else strcpy(cookiestr,getenv("HTTP_COOKIE")); } if(cookiestr[0] == 0) number = -1; else number = atoi(&cookiestr[9]); if(getenv("REMOTE_ADDR") == NULL) { printf("Enter ip address: "); gets(host); } else strcpy(host,getenv("REMOTE_ADDR")); temp = 0; /* 0 if currently NOT pressed, 1 is currently pressed */ if(mode == 1 && number == -1) { printf("Guest"); exit(0); } sock = socket(AF_INET, SOCK_STREAM, 0); if(sock < 0) { perror("opening stream socket"); exit(1); } server.sin_family = AF_INET; hp = gethostbyname("doorbell"); if(hp == (struct hostent *)0) { fprintf(stderr,"%s: unknown host","doorbell"); exit(2); } bcopy(hp->h_addr, &server.sin_addr, hp->h_length); server.sin_port = htons(5202); if((connect(sock, &server, sizeof(server)), 0) < 0) { perror("connecting stream socket"); exit(1); } strcpy(s,""); sprintf(s,"%d %s %s",number,name,host); if((write(sock, s, strlen(s)), 0) < 0) perror("writing on stream socket"); if(( rval = read(sock, buf, 1024)) < 0) perror("Reading from stream socket"); close(sock); // printf("Message: .%s.\n",buf); sscanf(buf,"%d %s %s",&number,name,host); if(mode == 0) { printf("SetCookie(\"%d\")",number); } if(mode == 1) { printf("%s",name); } }