一个用于网络的工具函数库

  •   2009-07-31/22:56
  • <?PHP

    /*
    PHP Net Toolpack v0.1 08.05.2000,
    by waddler(@netlife.fi)
    phpnettoolpack.sourceforge.net
    To be distributed under GNU GPL
    */

    // whois(hostname [,username, [port]])
    Function whois ($a_server, $a_query="", $a_port=43) {
    $sock = fsockopen($a_server, $a_port, &$errno, &$errstr, 10);
    if (!$sock)
    {
    echo "$errstr ($errno)<BR>n";
    } else {
    fputs($sock, "$a_queryrn");
    while(!feof($sock))
    {
    $buf = fgets($sock,128);
    if (ereg( "Whois Server:", $buf))
    {
    $a_server = str_replace( "Whois Server: ", "", $buf);
    $a_server = trim($a_server);
    }
    }
    fclose($sock);

    if ($a_server)
    {
    print "<B>$a_query is registered at $a_server:</B><BR>";
    $sock = fsockopen($a_server, 43, &$errno, &$errstr, 10);
    if(!$sock)
    {
    echo "Could not open connection to $a_server on port $a_port.n";
    echo "$errstr ($errno)<BR>n";
    } else {
    fputs($sock, "$a_queryrn");
    while(!feof($sock))
    {
    echo fgets($sock,128);
    }
    fclose($sock);
    }
    } else {
    echo "<b>$a_query was not found.</b><BR>";
    }
    }
    }


    // finger(hostname [,username, [port]])
    Function finger ($a_server, $a_query="", $a_port=79) {
    $sock=fsockopen($a_server,$a_port, &$errno, &$errstr, 10);
    if (!$sock)
    {
    $ret_str = "$errstr ($errno)<BR>n";
    } else {
    fputs($sock,"$a_queryn");
    while (!feof($sock)) { $ret_str .= fgets($sock,128); }
    fclose($sock);
    }
    echo $ret_str;
    return $ret_str;
    }


    // traceroute(hostname)
    Function traceroute ($a_query) {
    exec("traceroute $a_query",$ret_strs);
    $str_count = count($ret_strs);
    for ($count=0; $count < $str_count; $count++)
    print "$count/$str_count".$ret_strs[$count]."n";
    }


    // -----------------------------------------------------------


    $app_name = "PHP Net Toolpack";
    $app_version = "0.1";

    $TOOLS = array(
    "finger" => "Finger",
    "traceroute" => "Traceroute",
    "whois" => "Whois?"
    );

    // when included inside <select name="tool"> on a html file ..
    if ($tool=="listtools")
    {
    while (list($key, $val) = each($TOOLS)) {
    print " <OPTION VALUE="".$key."">".$val."</OPTION>n";
    }
    exit;
    }

    // print appropriate html header
    print "<HTML>";
    if ($tool)
    {
    print "<HEAD><TITLE>".$tool." for ".$query."</TITLE></HEAD>n";
    print "<BODY>n<H3>".$tool." for ".$query." ..</H3>n";
    } else {
    print "<HEAD><TITLE>".$app_name."</TITLE></HEAD>n";
    print "<BODY>n<H3>".$app_name."</H3>n";
    }

    // check what tool they want to use and do what is necessary
    switch($tool) {
    case "finger":
    if ($query)
    {
    print "<PRE>n";
    finger($server, $query);
    print "</PRE>";
    } else {
    ?>

    <FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
    Server : <INPUT TYPE="text" NAME="server" VALUE="localhost"> <BR>
    Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
    <INPUT TYPE="submit" VALUE="Finger">
    </FORM>

    <?PHP
    }
    break;

    case "traceroute":
    if ($query)
    {
    print "<PRE>n";
    traceroute($query);
    print "</PRE>";
    } else {
    ?>

    <FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
    Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
    <INPUT TYPE="submit" VALUE="Trace route">
    </FORM>

    <?PHP
    }
    break;


    case "whois":
    if ($query)
    {
    print "<PRE>n";
    whois($server,$query);
    print "</PRE>";
    } else {
    ?>  

    <!-- <UL>
    To look up a NIC handle, host name, or registrant,
    use one of the keywords below:<BR>
    <LI>To search by NIC handle (or contact), type "handle WA3509"</LI><BR>
    <LI>To search by name, type "name lastname, firstname" </LI><BR>
    <LI>To search by company name, type "name The Sample Corporation" </LI><BR>
    <LI>To search by domain name, type "example.com" </LI><BR>
    <LI>To search by IP address, type "host 121.23.2.7" </LI><BR>
    <LI>To search by host or nameserver name, type "host ns1.worldnic.com" </LI><BR>
    (examples are from networksolutions.com)
    </UL> -->

    <FORM ACTION="<?PHP echo($PHP_SELF. "?tool=".$tool); ?>" METHOD="post">
    This will find .com, .org, and .net domains<BR>
    Server : <INPUT TYPE="text" NAME="server" VALUE="rs.internic.net"> <BR>
    Query : <INPUT TYPE="text" NAME="query" SIZE="40" MAXLENGTH="100"> <BR>
    <INPUT TYPE="submit" VALUE="<?PHP echo $TOOLS[$tool]; ?>">
    </FORM>

    <?PHP
    }
    break;

    default:
    print "<UL>Currently supported tools are:n";
    while (list($key, $val) = each($TOOLS)) {
    echo "<LI><A HREF="".$PHP_SELF."?tool=".$key."">".$val."</A></LI>n";
    }
    print "</UL>n";
    break;
    }

    print "n<HR><SMALL>".$app_name." v".$app_version."</SMALL>n";
    print "<BODY>n</HTML>";

    ?> 

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多