Example #1
0
File: client.c Project: Sconso/Irc
void				be_client(char *ip, int port)
{
	t_socket		sock;
	fd_set			rdfs;
	char			*ask;
	char			*prompt;

	sock = init_connection(ip, port);
	while (1)
	{
		init_socks(sock, &rdfs);
		if (FD_ISSET(STDIN_FILENO, &rdfs))
			client_in(sock);
		else if (FD_ISSET(sock, &rdfs))
		{
			client_out(sock);
			ask = ft_strdup("/gp\n");
			ft_send(sock, ask);
			free(ask);
			prompt = get_message(sock);
			ft_putstr("\n");
			ft_putstr(prompt);
			free(prompt);
		}
	}
}
Example #2
0
int main(int argc, char **argv){
  /* using device name */
  char *device_name;

  /* pcap error message buffer */
  char ebuf[PCAP_ERRBUF_SIZE];

  /* pcap_compile */
  char *cmdbuf;
  int Oflag = 1;
  struct bpf_program fcode;
  bpf_u_int32 localnet, netmask; 

  int timeout = 1000;


  if(set_sighdl() < 0){
    perror("set signal handler(SIGINT):");
    exit(1);
  }

  if(!get_option(argc, argv)){
    printf("Syntax Error...\n");
    printf("Usage:goblin [-i interface] [-c \"condition\"] [-m rst/tail] [-t n(msec)]\n");
    exit(1);
  }

  sum_packet = 0;
  sum_ack = 0;
  sum_syn = 0;


  if((mode = set_mode(argv)) == 0){
    printf("Undefined Mode (\"rst\" or \"tail\")\n");
    exit(1);
  }

  if((timeout = set_timeout(mode,argv)) == 0){
    printf("Illigal Time  < 0\n");
    exit(1);
  }
	   
  init_socks();
  
  if(option.i != 0){
    device_name = (char*)malloc( (strlen(argv[option.i]) + 1) * sizeof(char) );
    strcpy(device_name,argv[option.i]);
  }
  else{
    if((device_name = pcap_lookupdev(ebuf)) == NULL){
      fprintf(stderr,"%s\n",ebuf);
      exit(1);
    }
  }

  printf("PROMISC DEV: %s\n",device_name);
  //  pd = pcap_open_live(device_name, DEFAULT_LEN, 1, 1000, ebuf);
  pd = pcap_open_live(device_name, ETHER_MAX_LEN, 1, timeout, ebuf);
  if(option.i != 0) free(device_name);

  if(pd == NULL){
    fprintf(stderr,"%s\n",ebuf);
    exit(1);
  }

  if (pcap_lookupnet(device_name, &localnet, &netmask, ebuf) < 0) {
    localnet = 0;
    netmask = 0;
    fprintf(stderr,"%s", ebuf);
    exit(1);
  }

  if(option.c != 0){
    cmdbuf = argv[option.c];
    if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0){
      fprintf(stderr,"%s", pcap_geterr(pd));
      exit(1);
    }
    if (pcap_setfilter(pd, &fcode) < 0){
      fprintf(stderr,"%s", pcap_geterr(pd));
      exit(1);
    }
  }


  switch(mode){
  case 't':
    if( pcap_loop(pd, -1, capture_packet, NULL) < 0 ){
      fprintf(stdout,"pcap_loop:%s\n",pcap_geterr(pd));
      exit(1);
    }
    break;

  case 'r':
    if( pcap_loop(pd, -1, discriminate_packet, NULL) < 0 ){
      fprintf(stdout,"pcap_loop:%s\n",pcap_geterr(pd));
      exit(1);
    }
    break;
  }

  return 0;
}
Example #3
0
/* client Spad server sockets.  Two sockets are created: server[0]
   is the internet server socket, and server[1] is a local domain socket. */
int
open_server(char *server_name)
{
  char *s, name[256];

  init_socks();
#ifndef HAVE_MSG_NOSIGNAL
#ifdef SIGPIPE
  bsdSignal(SIGPIPE, sigpipe_handler,RestartSystemCalls);
#endif
#endif
  if (make_server_name(name, server_name) == -1)
    return -2;
  /* create the socket internet socket */
  server[0].socket = 0;
/*  server[0].socket = fricas_communication_link(AF_INET);
  if (is_invalid_socket(&server[0])) {
    server[0].socket = 0;
  } else {
    server[0].addr.i_addr.sin_family = AF_INET;
    server[0].addr.i_addr.sin_addr.s_addr = INADDR_ANY;
    server[0].addr.i_addr.sin_port = 0;
    if (bind(server[0].socket, &server[0].addr.i_addr,
             sizeof(server[0].addr.i_addr))) {
      perror("binding INET stream socket");
      server[0].socket = 0;
      return -1;
    }
    length = sizeof(server[0].addr.i_addr);
    if (getsockname(server[0].socket, &server[0].addr.i_addr, &length)) {
      perror("getting INET server socket name");
      server[0].socket = 0;
      return -1;
    }
    server_port = ntohs(server[0].addr.i_addr.sin_port);
    FD_SET(server[0].socket, &socket_mask);
    FD_SET(server[0].socket, &server_mask);
    listen(server[0].socket,5);
  } */
  /* Next create the local domain socket */
  server[1].socket = fricas_communication_link(FRICAS_AF_LOCAL);
  if (is_invalid_socket(&server[1])) {
    perror("opening local server socket");
    server[1].socket = 0;
    return -2;
  } else {
    server[1].addr.u_addr.sa_family = FRICAS_AF_LOCAL;
    memset(server[1].addr.u_addr.sa_data, 0,
           sizeof(server[1].addr.u_addr.sa_data));
    strcpy(server[1].addr.u_addr.sa_data, name);
    if (bind(server[1].socket, &server[1].addr.u_addr,
             sizeof(server[1].addr.u_addr))) {
      perror("binding local server socket");
      server[1].socket = 0;
      return -2;
    }
    FD_SET(server[1].socket, &socket_mask);
    FD_SET(server[1].socket, &server_mask);
    listen(server[1].socket, 5);
  }
  s = getenv("SPADSERVER");
  if (s == NULL) {
/*    fprintf(stderr, "Not a spad server system\n"); */
    return -1;
  }
  return 0;
}