作者 主題: 兩個perl的CGI,請各位先進幫忙看看有無錯誤、漏洞。  (閱讀 4502 次)

0 會員 與 1 訪客 正在閱讀本文。

Tim

  • 活潑的大學生
  • ***
  • 文章數: 450
  • 性別: 男
    • 檢視個人資料
    • http://www.lab.mlc.edu.tw/
我不懂perl,程式碼是從網路及書上拼裝起來的,請有經驗的先進們幫忙除錯:
==============================================
偵測各校網路線路正常否的 CGI
#!/usr/bin/sperl5

# 接收傳遞過來的參數
$server = $ENV{'QUERY_STRING'};

# 檢查主機網路是否正常
use Net::Ping ;
$p=Net::Ping->new("icmp",1) ;
$chk_server = $p->ping($server) ;

if ( $chk_server ) { # 如果線路檢查正常,進而以此網頁再去檢查 port 80
   print qq~
   <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=big5">
   <meta http-equiv="refresh" content="0; url=chk_port80.pl?$server">
   </head>
   <body bgcolor="lime">
   </body>
   </html>
   ~;

} else { # 線路檢查結果不通,顯示網站維修的訊息。
   print qq~
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=big5">
   <title>目前施工中</title>
   </head>
   <body onload="setTimeout('history.back()', 10000)">
   <p align="center">網站 http://$server/ 維修中<br>十秒鐘後自動返回前一頁。</p>
   <p align="center"><img border="0" src="working.gif"></p>
   <p align="center">
        <applet code="Circlet.class" height="60" width="240">
          <param name="font" value="Winfhs|bi|60">
          <param name="message" value="近期重新開放...目前施工中 !!!">
        </applet>
   </p>
   <p align="center"><img border="0" src="underconstruction.gif"></p>
   </body>
   </html>
   ~;

}

$p->close() ;

==============================================
偵測各校主機 port 80 的 CGI
#!/usr/bin/perl

use IO::Socket;
my ($line, $port, $sock, @servers);

#接收命令行輸入
$server = $ARGV[0];

#掃描通訊埠
$port = 80 ;

# 開始掃描 port 80
$sock = IO::Socket::INET->new(
   PeerAddr => $server,
   PeerPort => $port,
   Proto => 'tcp');

if ($sock)  { # 如果 port 80 正常,整個網站轉址過去
   print qq~
   <html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=big5">
   <meta http-equiv="refresh" content="0; url=http://$server/">
   </head>
   <body bgcolor="magenta">
   線路檢查正常,網站轉換中,請稍候......
   </body>
   </html>
   ~;

} else { # port 80 不通時,顯示施工中的訊息
   print qq~
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=big5">
   <title>目前施工中</title>
   </head>
   <body onload="setTimeout('history.back()', 10000)">
   <p align="center">網站 http://$server/ 維修中<br>十秒鐘後自動返回前一頁。</p>
   <p align="center"><img border="0" src="working.gif"></p>
   <p align="center">
   <applet code="Circlet.class" height="60" width="240">
     <param name="font" value="Winfhs|bi|60">
     <param name="message" value="近期重新開放...目前施工中 !!!">
   </applet>
   </p>
   <p align="center"><img border="0" src="underconstruction.gif"></p>
   </body>
   </html>
   ~;

}

==============================================
這兒有個測試網頁
http://freebsd.lab.mlc.edu.tw/mlc_vh.htm