--- /usr/src/usr.bin/whois/whois.c.orig Tue Nov 6 13:57:37 2001 +++ whois.c Tue Nov 6 21:45:20 2001 @@ -90,9 +90,15 @@ main(int argc, char *argv[]) { struct addrinfo *res; + struct sockaddr_in dkh_addr; + struct hostent *dkh_hst; const char *host; - char *qnichost; - int ch, flags, use_qnichost; + char *qnichost, *getreq, *ibuf, *foutput, *garba; + char hostname[sizeof("www.dk-hostmaster.dk")]; + char corba[16384]; + int ch, flags, use_qnichost, dkh_fd; + size_t ilen; + FILE *dkhfi, *dkhfo; #ifdef SOCKS SOCKSinit(argv[0]); @@ -161,6 +167,40 @@ if (!(flags & WHOIS_QUICK)) flags |= WHOIS_INIC_FALLBACK | WHOIS_RECURSE; } + if(strcmp(host, "whois.dk-hostmaster.dk") == 0){ + memset((char *) &dkh_addr, 0, sizeof(dkh_addr)); + memcpy(hostname, "www.dk-hostmaster.dk",sizeof("www.dk-hostmaster.dk")); + getreq = (char *)malloc(sizeof(argv[0])+sizeof("GET /perl/Whois.pl?lang=da&query= HTTP/1.0.\nHost: www.dk-hostmaster.dk.\n\n")); + foutput = (char *)malloc(16384); + sprintf(getreq,"GET /perl/Whois.pl?lang=da&query=%s HTTP/1.0.\nHost: www.dk-hostmaster.dk.\n\n", argv[0]); + + dkh_addr.sin_family=AF_INET; + dkh_addr.sin_port=htons(80); + dkh_hst = gethostbyname(hostname); + dkh_addr.sin_addr=*(struct in_addr *)(dkh_hst->h_addr_list[0]); + + dkh_fd = socket(PF_INET, SOCK_STREAM, 0); + connect(dkh_fd, (struct sockaddr *)&dkh_addr, sizeof(dkh_addr)); + if(dkh_fd > -1){ + dkhfi = fdopen(dkh_fd, "r"); + dkhfo = fdopen(dkh_fd, "w"); + fprintf(dkhfo,"%s",getreq); + fflush(dkhfo); + while ((ibuf = fgetln(dkhfi, &ilen)) != NULL) { + ibuf[--ilen] = '\0'; + snprintf(foutput,16384,"%s%s\n",foutput,ibuf); + } + } + close(dkh_fd); + /*FEDE*/ + garba = strstr(foutput, "
");
+ memcpy(corba, garba, strlen(garba));
+ garba = &corba[5];
+ bcopy("\0",strstr(garba, ""),1);
+ /*SVIN*/
+ printf("%s\n",garba);
+ exit(0);
+ }
while (argc--) {
if (use_qnichost)
if ((qnichost = choose_server(*argv)) != NULL)