[svn-commits] tzafrir: tools/trunk r5088 - /tools/trunk/xpp/dahdi.cgi

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sun Oct 12 18:09:17 CDT 2008


Author: tzafrir
Date: Sun Oct 12 18:09:17 2008
New Revision: 5088

URL: http://svn.digium.com/view/dahdi?view=rev&rev=5088
Log:
A CGI script to give some information about Zaptel through the 
Dahdi perl interface.

A simple demo. Not installed automatically.

Added:
    tools/trunk/xpp/dahdi.cgi   (with props)

Added: tools/trunk/xpp/dahdi.cgi
URL: http://svn.digium.com/view/dahdi/tools/trunk/xpp/dahdi.cgi?view=auto&rev=5088
==============================================================================
--- tools/trunk/xpp/dahdi.cgi (added)
+++ tools/trunk/xpp/dahdi.cgi Sun Oct 12 18:09:17 2008
@@ -1,0 +1,265 @@
+#! /usr/bin/perl -wT
+
+# Written by Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+# Copyright (C) 2008, Xorcom
+# This program is free software; you can redistribute and/or
+# modify it under the same terms as Perl itself.
+
+use strict;
+use File::Basename;
+BEGIN { my $dir = dirname($0); unshift(@INC, "$dir", "$dir/perl_modules"); }
+
+use CGI::Pretty qw/:standard start_ul start_li start_div start_pre/;
+use Dahdi;
+use Dahdi::Xpp;
+use Dahdi::Hardware;
+
+$ENV{'PATH'} = '/bin:/usr/bin';
+
+my $DEF_TOK = '<Default>';
+
+my $style=<<END;
+<!--
+body {
+  margin-left: 0em;
+  margin-right: 5em;
+  //color: navy;
+  background-color: #white;
+}
+
+dfn {
+  font-style: italic;
+  text-decoration: underline;
+}
+
+#content {
+  margin-left: 10em;
+}
+
+h1, h2, h3 {
+  color: #d03;
+  margin-top: 2ex;
+}
+
+h1 { 
+  text-align: center;
+  color: #d03;
+  background-color: #ccc;
+  margin-left:5em;
+}
+/*
+li:hover {
+  background-color: #44c;
+}
+
+li li:hover {
+  background-color: #448;
+}
+*/
+/*li.status-ok  */
+.status-noconf  {background-color: red; }
+.status-notused {background-color: pink; } 
+
+#toc {
+  position: fixed;
+  width: 9em;
+  top: 3ex;
+  bottom: 0pt;
+  height: 100%;
+  margins-left: 1em;
+  color: #448;
+
+}
+
+#toc p {
+  display: block;
+  //text-align: center;
+  height: 3ex;
+}
+
+#toc a {
+  text-decoration: none;
+  /*
+  background-color: #F0FFF0;
+  */
+  font-weight: bold; 
+  display: block; 
+  padding: 0.2em; 
+  width: 80%; 
+  margin-bottom: 0.2ex; 
+  border-top: 1px solid #8bd;
+  color: #8bd;
+  text-align: right;
+}
+
+-->
+END
+
+my @Toc = ();
+
+sub header_line($$) {
+	my ($text, $anchor) = @_;
+	print a({-name=>$anchor},h2($text));
+	push(@Toc, [$text, $anchor] );
+}
+
+print header,
+	start_html(
+		-title=>"DAHDI Information",
+		-style=>{-code=>$style}),
+	h1("DAHDI Information");
+
+print start_div({-id=>'content'});
+
+sub dahdi_spans() {
+	my %ChansStat = (num=>0, configured=>0, inuse=>0);
+
+	header_line("DAHDI Spans", 'spans');
+	
+	print p('Here we list the ',
+		dfn({-title=> 'A span is a logical unit of dahdi
+			channels. e.g.: all the channels that come from 
+			a specific port, or all the analog channels from 
+			a certain PCI card'},
+			'spans'),
+		' that DAHDI devices registered
+		with DAHDI. For each span we list all of its channels.'
+		),
+		p('A channel that appears in ',
+		span({-class=>'status-noconf'},'red text'),' ',
+		'is one that has not been configured at all. Either not
+		listed in system.conf, or dahdi_cfg was not run.'
+		),
+		p('A channel that appears in ',
+		span({-class=>'status-notused'},'pink text'),' ',
+		'is one that has been configured but is not used by any
+		application. This usually means that either Asterisk is
+		not running or Asterisk is not configured to use this
+		channel'
+		),
+		p('If a port is disconnected it will have a "RED" alarm.
+		For a FXO port this will only be on the specific port.
+		For a BRI, E1 or T1 port it will be an alarm on the apn
+		and all of the channels.'),
+		;
+
+
+
+	foreach my $span (Dahdi::spans()) {
+		my $spanno = $span->num;
+		my $index = 0;
+		
+		print h3(a({-name=>"zap_span_$spanno"}, "Span $spanno: ", 
+			$span->name, " ", $span->description)),
+			start_ul;
+		foreach my $chan ($span->chans()) {
+			my $batt = '';
+			$batt = "(battery)" if $chan->battery;
+			my $type = $chan->type;
+			my $sig = $chan->signalling;
+			my $info = $chan->info;
+			my $chan_stat = 'ok';
+			$ChansStat{num}++;
+			if (!$sig) {
+				$chan_stat = 'noconf';
+			} else {
+				$ChansStat{configured}++;
+				if ($info =~ /\(In use\)/) {
+					$ChansStat{inuse}++; 
+				} else {
+					$chan_stat = 'notused';
+				}
+			}
+			# TODO: color differently if no signalling and
+			# if not in-use and in alarm.
+			print li({-class=>"status-$chan_stat"}, 
+				$chan->num, " $type, $sig $info $batt");
+		}
+		print end_ul;
+	}
+}
+
+sub dahdi_hardware() {
+	header_line("DAHDI Hardware", 'zap_hard');
+
+	print p('Here we list all the DAHDI hardware devices on your 
+		system. If a device is not currently handled by a
+		driver, it will	appear as ',
+		span({-class=>'status-noconf'},'red text'),'.');
+
+	my $hardware = Dahdi::Hardware->scan;
+
+	print start_ul;
+	foreach my $device ($hardware->device_list) {
+		my $driver = $device->driver || "";
+		my $status = 'ok';
+
+		if (! $device->loaded) {
+			$status = 'noconf';
+		}
+
+		print li({-class=>"status-$status"}, 
+			$device->hardware_name, ": ", $driver, 
+			" [".$device->vendor,"/". $device->product. "]	",
+			$device->description);
+	}
+	print end_ul;
+}
+
+sub astribanks() {
+	header_line("Astribanks", 'astribanks');
+
+	print p('Here we list all the Astribank devices (That are
+		handled by the drivers). For each Astribank we list
+		its XPDs. A ',
+		dfn({-title=>
+			'a logical unit of the Astribank. It will '.
+			'be registered in DAHDI as a single span. This	'.
+			'can be either an analog (FXS or FXO) module or	'.
+			'a single port in case of a BRI and PRI modules.'
+			},
+			'XPD'),'. ',
+		' that is registered will have a link to the
+		information about the span below. One that is not
+		registered will appear as ',
+		span({-class=>'status-noconf'},'red text'),'.');
+
+	print start_ul;
+
+	foreach my $xbus (Dahdi::Xpp::xbuses()) {
+		print start_li, 
+		      $xbus->name." (".$xbus->label .", ".$xbus->connector .")",
+		      start_ul;
+		foreach my $xpd ($xbus->xpds) {
+			my $chan_stat = 'ok';
+			my $span_str = 'UNREGISTERED';
+			if ($xpd->spanno) {
+				my $spanno = $xpd->spanno;
+				$span_str =
+				a({-href=>"#zap_span_$spanno"},
+					"Span $spanno");
+			} else {
+				$chan_stat = 'noconf';
+			}
+			print li({-class=>"status-$chan_stat"}, 
+				'[', $xpd->type, '] ', $span_str, $xpd->fqn
+				);
+		}
+		print end_ul, end_li;
+	}
+	print end_ul;
+}
+
+
+dahdi_hardware();
+
+astribanks();
+
+dahdi_spans();
+
+print end_div(); # content
+
+print div({-id=>'toc'},
+	p( a{-href=>'/'},'[Homepage]' ),
+	( map {p( a({-href=> '#'.$_->[1]},$_->[0] ) )}  @Toc ),
+);

Propchange: tools/trunk/xpp/dahdi.cgi
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tools/trunk/xpp/dahdi.cgi
------------------------------------------------------------------------------
    svn:executable = *

Propchange: tools/trunk/xpp/dahdi.cgi
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: tools/trunk/xpp/dahdi.cgi
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the svn-commits mailing list