📄 rrdm_status.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 + -