#!./perl ##################################################################### # # *** W a y - W H O I S *** # Version 1.4 #-------------------------------------------------------------------- # Developed by Lim, Dae-Ho # lawwal@waycgi.com # http://way.co.kr # ##################################################################### # 1999. 3.31 by lawwal Ver 1.0 # 1999. 9. 4 by lawwal Ver 1.1 # 2000. 2.21 by lawwal Ver 1.3 # 2000. 6.23 by lawwal Ver 1.4 ##################################################################### use Socket; &input_form; $input{'도메인명'} = uc($input{'도메인명'}); $input{'도메인명'} =~ s/^ +| +$//g; $input{'도메인명'} =~ s/^\.+|\.+$//g; $input{'분류'} = uc($input{'분류'}); $domain = "$input{'도메인명'}$input{'분류'}"; ✓ if ($input{'도메인명'} ne "") { &job; if(@error) { &result("ERR"); } } &result; ##################################################################### sub check { $domain_ck = $input{'도메인명'}; $domain_ck =~ s/[A-Z0-9\-\.]//g; $domain_ck_2 = $input{'도메인명'}; if($domain_ck) { push(@error, "도메인명은 영문, 숫자, \"-\"기호만을 포함할 수 있습니다."); } if($domain_ck_2 =~ /^\-|\-$/) { push(@error, "\"-\"기호는 제일 앞과 뒤에 사용하실 수 없습니다."); } } ##################################################################### sub job { $domain_ext = $domain; $domain_ext =~ s/.*\.//g; if($domain_ext eq "KR") { $server = "whois.krnic.net"; } elsif($domain_ext eq "MIL") { $server = "whois.nic.mil"; } elsif($domain_ext eq "JP") { $server = "whois.nic.ad.jp"; } elsif($domain_ext eq "FR") { $server = "whois.nic.fr"; } elsif($domain_ext eq "CN") { $server = "whois.cnnic.net.cn"; } elsif($domain_ext eq "SG") { $server = "whois.nic.net.sg"; } elsif($domain_ext eq "DE") { $server = "whois.denic.de"; } elsif($domain_ext eq "TO") { $server = "whois.tonic.to"; } else { $server = "whois.networksolutions.com"; } if($server) { $result = WhoisQuery($server, $domain); } $server || ($server = "rs.internic.net"); if(!$result) { push(@error, "도메인 관리기관($server)에 접속할 수 없습니다. 잠시후 다시 시도해 주시기 바랍니다."); } } ##################################################################### sub WhoisQuery { my $server = shift; my $query = shift; my $result; my $r = "\r"; socket(SOCK, PF_INET, SOCK_STREAM, 6) || return 0; my $sin = sockaddr_in(43, inet_aton($server)); connect(SOCK, $sin) || return 0; my ($old) = select(SOCK); $|=1; select($old); print SOCK "$query$r\n"; while() { $result .= $_; } close(SOCK); return $result; } ##################################################################### sub result { local($err_msg) = @_; $result =~ s/([^(\"|')]|^)((http|https|ftp|telnet|news):\/\/[A-Za-z0-9:&#=_\?\/~\.\+\%\@-]+)/$1$2<\/A>/g; $result =~ s/([A-Za-z0-9]+@[A-Za-z0-9-]+\.[A-Za-z0-9-\.]+)/$1<\/A>/g; $result =~ s/네임서버의 이름이 \.kr로 끝나지 않는 경우.*\n/\n/; print "Content-type: text/html\n\n"; print <<"__HTML__"; Way-WHOIS

__HTML__ if ($input{'도메인명'} eq "") { print <<"__HTML__"; __HTML__ } else { print <<"__HTML__"; __HTML__ if($err_msg eq "ERR") { $result = ""; foreach $er(@error) { $result .= "
  • $er
    \n"; } print <<"__HTML__";
  • __HTML__ } else { $result =~ s/\n/
    /g; $result =~ s/ /  /g; print <<"__HTML__"; __HTML__ } } print " "; exit; } ##################################################################### sub input_form { # 사용할 변수를 지역변수로 선언 local ($form, $tmp, $key, $value); # GET, POST 방식을 판별하여 인자 습득 if($ENV{'REQUEST_METHOD'} eq "GET") { $form = $ENV{'QUERY_STRING'}; } if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $form, $ENV{'CONTENT_LENGTH'}); } # 키와 값으로 구분하고, 16진수를 10진수로 변환 foreach $tmp (split(/&/, $form)) { ($key, $value) = split(/=/, $tmp); $key =~ tr/+/ /; $value =~ tr/+/ /; $key =~ s/%(..)/pack("C", hex($1))/ge; $value =~ s/%(..)/pack("C", hex($1))/ge; $input{$key} = $value; } } #####################################################################
    Way-WHOIS   Version 1.4
    홈으로 - 이전화면
    도메인명
     
    도메인 규칙은 영문과 숫자를 포함할 수 있으며 "-" 기호를 사이에 넣을 수도 있습니다.
    도메인 앞에 www 등을 붙이지 마시고 조회하시기 바랍니다.
    도메인명 $domain
    조회실패 $result
    질의서버 $server
    상세정보 $result