#include #include #include #include #include #include #include #include #define INVALID_SOCKET -1 #define SOCKET_ERROR -1 #define port 6667 #define ENABLE_BUFFER_SHOWING 1 typedef int SOCKET; typedef struct sockaddr_in SOCKADDR_IN; typedef struct sockaddr SOCKADDR; int main(int argc,char* argv[]) { if(argc <= 2) { printf("Usage: %s \"Nick\" \"User\" \"ChannelToJoin\" \"Server(IP Only)\" \"Port\" (Please include the \" \")\n",argv[0]); } else { char *strdel(char *s, size_t n); SOCKET sock; SOCKADDR_IN sin; char buffer[BUFSIZ]; char *ptr; char msg[256]; sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr(("%s",argv[4])); sin.sin_family = AF_INET; sin.sin_port = htons(port); char *autorize=":HellDragon!"; connect(sock, (SOCKADDR *)&sin, sizeof(sin)); sprintf (buffer, "NICK %s\n", (char*)argv[1]); send (sock, buffer, strlen (buffer), 0); sprintf (buffer, "USER %s %s %s :%s\n", (char*)argv[2],(char*)argv[2],(char*)argv[2],(char*)argv[2]); send (sock, buffer, strlen (buffer), 0); sprintf (buffer, "JOIN %s\n", (char*)argv[3]); send (sock, buffer, strlen (buffer), 0); send (sock, buffer, strlen (buffer), 0); while(1) { memset(buffer, '\0', BUFSIZ); recv(sock, buffer, BUFSIZ-1, 0); if(ENABLE_BUFFER_SHOWING == 1) { printf("%s",buffer); } if (strstr(buffer, "PING :")) { ptr = strstr(buffer, "PING :") + strlen("PING :"); snprintf(msg, 256, "PONG :%s\n", ptr); send(sock, msg, strlen(msg), 0); } if ((strstr(buffer, autorize)) && (strstr(buffer, ".raw"))) { ptr = strstr(buffer, ".raw"); ptr = strstr(ptr, " "); send(sock, ("%s\r\n",ptr), strlen(ptr), 0); } if ((strstr(buffer, autorize)) && (strstr(buffer, ".exec"))) { // HELP } if ((strstr(buffer, autorize)) && (strstr(buffer, ".stats"))) { // HELP } if ((strstr(buffer, autorize)) && (strstr(buffer, ".quit"))) { ptr = strstr(buffer, ".quit"); send(sock, "QUIT bye\r\n", 6, 0); { close(sock); printf("\nNOW EXITING...\n"); exit(0); } } } return EXIT_SUCCESS; } }