⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rrdm_status.pl

📁 OpenCDN内容分发系统
💻 PL
字号:
#!/usr/bin/perl -I ../../## rrdm_status.pl## The oCDN package is released under the terms of the Perl Artistic Licence# (see http://www.perl.com/pub/a/language/misc/Artistic.html) by their# Copyright Holders, hosted at the University of Roma "La Sapienza",# at http://labtel.ing.uniroma1.it/opencdn#use CGI;use RPC::XML;use RPC::XML::Client;use Sys::Hostname;use etc::CommConf qw($rrdm_addr $rrdm_port);my $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst;my $rtime, $utime;$q = new CGI;$req = $q->param('req');$cli = RPC::XML::Client->new("http://$rrdm_addr:$rrdm_port",                             'useragent', ['timeout', 3]);$risp = $cli -> simple_request('Status', $req);print $q->header(-expires=>'-10y');print $q->start_html(-title=>'OpenCDN Status Response Page');#print "Request: $req<br>";if ($req eq "node") {  if ((keys %{$risp})) {    print $q->h2('Nodes registration data');    print "<table border=1 cellspacing=2 cellpadding=4>\n";    print $q->Tr($q->td(['Address', 'FP', 'type', 'character', 'port', 'transport',                         'Last Registration', 'Next Registration'])), "\n";    foreach $IP (sort keys %$risp) {      foreach $FP (sort keys %{$$risp{$IP}}) {        if ($FP ne 'port' && $FP ne 'transport' && $FP ne 'health' &&            $FP ne 'character' && $FP ne 'rtime' && $FP ne 'utime') {          ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =            localtime(${$risp}{$IP}{'rtime'});          $rtime = sprintf "%4d-%02d-%02d %02d:%02d:%02d\n",                            $year+1900,$mon+1,$mday,$hour,$min,$sec;          ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =            localtime(${$risp}{$IP}{'utime'});          $utime = sprintf "%4d-%02d-%02d %02d:%02d:%02d\n",                            $year+1900,$mon+1,$mday,$hour,$min,$sec;          print $q->Tr($q->td([            "<a href=\"node_status.pl?req=stats&addr=$IP\&port=${$risp}{$IP}{port}\">$IP</a>",            $FP, ${$risp}{$IP}{$FP}, ${$risp}{$IP}{character}, ${$risp}{$IP}{port},            ${$risp}{$IP}{'transport'}, $rtime, $utime ])), "\n";          #" I dont know why syntax higligth need this        }      }    }    print "</table><BR>\n";  } else {    print "No Node Data";  }}if ($req eq "footp") {  if ((keys %{$risp})) {    print $q->h2('FootPrints registration data');    print "<table border=1 cellspacing=2 cellpadding=4>\n";    print $q->Tr($q->td(['FootPrint', 'Address', 'Type'])), "\n";    foreach $FP (sort keys %$risp) {      foreach $IP (sort keys %{$$risp{$FP}}) {        print $q->Tr($q->td([$FP, $IP, ${$risp}{$FP}{$IP}])), "\n";      }    }    print "</table><BR>\n";  } else {      print "No Footprint Data";  }}if ($req eq "program") {  if ((keys %{$risp})) {    print $q->h2('Surrogates data');    print "<table border=1 cellspacing=2 cellpadding=4>\n";    print $q->Tr($q->td(['Program', 'Footprint', 'Timestamp', 'Surrogate URI',                         'Relay Address'])), "\n";    foreach $pro (sort keys %$risp) {      foreach $FP (sort keys %{$$risp{$pro}}) {        foreach $IP (sort keys %{$$risp{$pro}{$FP}}) {          ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =              localtime(${$risp}{$pro}{$FP}{$IP}[1]);          $rtime = sprintf "%4d-%02d-%02d %02d:%02d:%02d\n",                            $year+1900,$mon+1,$mday,$hour,$min,$sec;          print $q->Tr($q->td([$pro, $FP, $rtime,                               ${$risp}{$pro}{$FP}{$IP}[0], $IP])), "\n";        }      }    }    print "</table><BR>\n";  } else {      print "No Program Data";  }}if ($req eq "origin") {  if ((keys %{$risp})) {    print $q->h2('Content sources information');    print "<table border=1 cellspacing=2 cellpadding=4>\n";    my $tag, $transport, $ip, $port, $odesc, $prereq, $postreq;    my $desc, $duration, $audio, $video, $language;    print $q->Tr($q->td( {-bgcolor => "#cccccc"}, [      'Tag',      '<ul><li>Program URI</li>           <li>transport</li>           <li>origin addr:port</li>           <li>provided by</li>           <li>prerequisite</li>           <li>postrequisite</li>           <li>last registration</li>           <li>next registration</li></ul>',      '<ul><li>Content description</li>           <li>Duration</li>           <li>Language</li>           <li>Audio</li>           <li>Video</li></ul>'])), "\n";    foreach $pro (sort keys %$risp) {      $tag       = ${$risp}{$pro}{'tag'};      $transport = ${$risp}{$pro}{'transport'};      $ip        = ${$risp}{$pro}{'ip'};      $port      = ${$risp}{$pro}{'port'};      $odesc     = ${$risp}{$pro}{'odesc'};      $prereq    = ${$risp}{$pro}{'prereq'};      $postreq   = ${$risp}{$pro}{'postreq'};      $desc      = ${$risp}{$pro}{'desc'};      $duration  = ${$risp}{$pro}{'duration'};      $audio     = ${$risp}{$pro}{'audio'};      $video     = ${$risp}{$pro}{'video'};      $language  = ${$risp}{$pro}{'language'};      $rtime     = ${$risp}{$pro}{'rtime'};      $utime     = ${$risp}{$pro}{'utime'};      ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =            localtime($rtime);      $rtime = sprintf "%4d-%02d-%02d %02d:%02d:%02d\n",                        $year+1900,$mon+1,$mday,$hour,$min,$sec;      ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =            localtime($utime);      $utime = sprintf "%4d-%02d-%02d %02d:%02d:%02d\n",                        $year+1900,$mon+1,$mday,$hour,$min,$sec;      print $q->Tr($q->td([       $tag,       "<ul><li>$pro</li>            <li>$transport</li>            <li><a href=\"xmlrpc_status.pl?req=origin\&addr=$ip&port=$port\">$ip:$port</a></li>            <li>$odesc</li>            <li>$prereq</li>            <li>$postreq</li>            <li>$rtime</li>            <li>$utime</li></ul>",       "<ul><li>$desc</li>            <li>$duration</li>            <li>$language</li>            <li>$audio</li>            <li>$video</li></ul>"      ])), "\n";    }    print "</table><BR>\n";  } else {    print "No Origin Data";  }}if ($req eq "peers") {  if ((keys %{$risp})) {    print $q->h2('Peering data');    print "<table border=1 cellspacing=2 cellpadding=4>\n";    print $q->Tr($q->td(['program', 'peer', 'keeps from'])), "\n";    foreach $pro (sort keys %$risp) {      foreach $peer (sort keys %{$$risp{$pro}}) {         print $q->Tr($q->td([$pro, $peer, ${$risp}{$pro}{$peer}])), "\n";      }    }    print "</table><BR>\n";  } else {      print "No Peers Data";  }}print $q->end_html;exit;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -