Exemplo n.º 1
0
//get net interface info
void getnetinfo(const char *netname, struct str_net_addr *net_info) //ccc
{
  struct ifaddrs *ifaces, *ifa;
  char abuf[64], mbuf[64], dbuf[64];
  
  if (getifaddrs (&ifaces) < 0)
  {
       printf ("Couldn't get any interfaces\n");
	   if(ifaces)
	   	  freeifaddrs (ifaces);
	   return;
  }
 
  for (ifa = ifaces; ifa != NULL; ifa = ifa->ifa_next)
  {

	  if(strcmp(ifa->ifa_name, netname)==0)
	  {
	  
      	  printf ("%-15s%#.4x  %-15s %-15s %-15s\n",
	      ifa->ifa_name, ifa->ifa_flags,
	      addr_string (ifa->ifa_addr, abuf, sizeof (abuf)),
	      addr_string (ifa->ifa_netmask, mbuf, sizeof (mbuf)),
	      addr_string (ifa->ifa_broadaddr, dbuf, sizeof (dbuf)));
	  	  str2ip(abuf, net_info->ip);
		  str2ip(mbuf, net_info->mask);
	  }
  }
  freeifaddrs(ifaces);
}
Exemplo n.º 2
0
int main(int argc, char *argv[]){
  int sockfd, i;
  Address a;

  setbuf(stdout, NULL);

  puts("NIH Proxy");
  puts("Specify an HTTP server to connect to");
  puts("DNS is too hard; just provide an IP address");

  char target[20];
  fgets(target, 20, stdin);
  char* octet = strtok(target, ".\n");
  
  for(i=0;i<4;i++){
    if(!octet) error("Invalid IP address");
    a.octets[i] = atoi(octet);
    if(a.octets < 0 || a.octets[i] > 256) {
      fprintf(stderr, "Invalid host\n");
      exit(-1);
    }
    octet = strtok(NULL, ".\n");
  }

  filter(&a);
  printf("Connecting to %s\n", addr_string(&a));

  int sin_addr = 0;
  
  for(i=0; i<4;i++){
    sin_addr <<= 8;
    sin_addr |= a.octets[i];
  }
  
  struct sockaddr_in serv_addr;
  sockfd = socket(AF_INET, SOCK_STREAM, 0);
  serv_addr.sin_family = AF_INET;
  serv_addr.sin_port = htons(80);
  serv_addr.sin_addr.s_addr = htonl(sin_addr);

  alarm(5);
  connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr));
  char *buf = calloc(256, 1);

  int len = sprintf(buf, "GET / HTTP/1.1\nHost: %s\n\n", addr_string(&a));
  write(sockfd, buf, len);
  int total_len = 0;
  while(total_len < 1024*10){
    len = read(sockfd, buf, 255);
    if(len <= 0) break;
    total_len += len;
    buf[len] = 0;
    fputs(buf, stdout);
    if(len < 255) break;
  }
  close(sockfd);
  return 0;
}
Exemplo n.º 3
0
U8_EXPORT u8_string u8_sockaddr_string(struct sockaddr *s)
{
  if (s->sa_family==AF_INET) {
    struct sockaddr_in *inaddr=(struct sockaddr_in *)s;
    return addr_string(ntohs(inaddr->sin_port),
		       (unsigned char *)&(inaddr->sin_addr),4);}
#if HAVE_SYS_UN_H
  else if (s->sa_family==AF_UNIX) {
    struct sockaddr_un *unaddr=(struct sockaddr_un *)s;
    return u8_mkstring("%s@unix",unaddr->sun_path);}
#endif
#ifdef AF_INET6
  else if (s->sa_family==AF_INET6) {
    struct sockaddr_in6 *inaddr=(struct sockaddr_in6 *)s;
    return addr_string(ntohs(inaddr->sin6_port),
		       (unsigned char *)&(inaddr->sin6_addr),8);}
#endif
  else return u8_strdup("strange sockaddr");
}