summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2015-12-10 01:02:00 -0800
committerMark Wells <mark@freeside.biz>2015-12-10 01:02:00 -0800
commit41dcb76c7a2cd0f020e4eb360944b99dae10c2a4 (patch)
treeeb5f0ca96c0c48a3a4b0ab514746b083066cae6b /httemplate
parente26b8e8e8036556000defb99879a7ae074b09c60 (diff)
parenta55f3abbb39ddc30d7e8f0a5a573bbf7b691b510 (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/edit/elements/part_export/broadband_snmp.html8
-rw-r--r--httemplate/edit/elements/part_export/broadband_snmp_get.html77
-rw-r--r--httemplate/elements/broadband_snmp_get-dialog.html68
-rw-r--r--httemplate/misc/select-mib-popup.html (renamed from httemplate/elements/select-mib-popup.html)0
-rw-r--r--httemplate/misc/xmlhttp-broadband_snmp_get.cgi35
-rw-r--r--httemplate/view/elements/svc_Common.html4
-rw-r--r--httemplate/view/elements/svc_devices.html3
-rw-r--r--httemplate/view/elements/svc_radius_usage.html7
-rw-r--r--httemplate/view/svc_broadband.cgi1
9 files changed, 195 insertions, 8 deletions
diff --git a/httemplate/edit/elements/part_export/broadband_snmp.html b/httemplate/edit/elements/part_export/broadband_snmp.html
index ebb765dee..b4d57edd5 100644
--- a/httemplate/edit/elements/part_export/broadband_snmp.html
+++ b/httemplate/edit/elements/part_export/broadband_snmp.html
@@ -11,7 +11,7 @@
<& /elements/tr-input-text.html,
label => 'Community',
field => 'community',
- curr_value => $part_export->option('community'),
+ curr_value => $part_export->option('community') || $opt{'export_info'}->{'options'}->{'community'}->{'default'},
&>
<& /elements/tr-checkbox.html,
label => 'Send IP address changes to new address',
@@ -30,7 +30,7 @@ function open_select_mib(obj) {
nd(1); // if there's already one open, close it
var rownum = obj.rownum;
var curr_oid = obj.form.elements['oid' + rownum].value || '';
- var url = '<%$fsurl%>/elements/select-mib-popup.html?' +
+ var url = '<%$fsurl%>misc/select-mib-popup.html?' +
'callback=receive_mib;' +
'arg=' + rownum +
';curr_value=' + curr_oid;
@@ -45,8 +45,10 @@ function open_select_mib(obj) {
function receive_mib(obj, rownum) {
//console.log(JSON.stringify(obj));
// we don't really need the numeric OID or any of the other properties
- document.getElementById('oid'+rownum).value = obj.fullname;
+ var oidfield = document.getElementById('oid'+rownum);
+ oidfield.value = obj.fullname;
document.getElementById('datatype'+rownum).value = obj.type;
+ oidfield.onchange(); //should be same as datatype, only need to run one
}
</script>
diff --git a/httemplate/edit/elements/part_export/broadband_snmp_get.html b/httemplate/edit/elements/part_export/broadband_snmp_get.html
new file mode 100644
index 000000000..8b8717c29
--- /dev/null
+++ b/httemplate/edit/elements/part_export/broadband_snmp_get.html
@@ -0,0 +1,77 @@
+<%doc>
+Quite a bit of false laziness with edit/elements/part_export/broadband_snmp.html
+</%doc>
+<& head.html, %opt &>
+<INPUT TYPE="hidden" NAME="options" VALUE="snmp_community,snmp_version,snmp_timeout">
+<& /elements/tr-select.html,
+ label => 'SNMP version',
+ field => 'snmp_version',
+ options => [ '1', '2c' ],
+ curr_value => $part_export->option('version')
+&>
+<& /elements/tr-input-text.html,
+ label => 'Community',
+ field => 'snmp_community',
+ curr_value => $part_export->option('community') || $opt{'export_info'}->{'options'}->{'snmp_community'}->{'default'},
+&>
+<& /elements/tr-input-text.html,
+ label => 'Timeout (seconds)',
+ field => 'snmp_timeout',
+ curr_value => $part_export->option('timeout') || $opt{'export_info'}->{'options'}->{'snmp_timeout'}->{'default'},
+&>
+</TABLE>
+<script type="text/javascript">
+function open_select_mib_get(obj) {
+ nd(1); // if there's already one open, close it
+ var rownum = obj.rownum;
+ var curr_oid = obj.form.elements['snmp_oid' + rownum].value || '';
+ var url = '<%$fsurl%>misc/select-mib-popup.html?' +
+ 'callback=receive_mib_get;' +
+ 'arg=' + rownum +
+ ';curr_value=' + curr_oid;
+ overlib(
+ OLiframeContent(url, 550, 450, '<% $popup_name %>', 0, 'auto'),
+ CAPTION, 'Select MIB object', STICKY, AUTOSTATUSCAP,
+ MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK,
+ BGCOLOR, '#333399', CGCOLOR, '#333399',
+ CLOSETEXT, 'Close'
+ );
+}
+function receive_mib_get(obj, rownum) {
+ var oidfield = document.getElementById('snmp_oid'+rownum);
+ oidfield.value = obj.fullname;
+ oidfield.onchange();
+}
+</script>
+
+<table bgcolor="#cccccc" border=0 cellspacing=3>
+<TR><TH>Object ID</TH></TR>
+<TR id="broadband_snmp_get_template">
+ <TD>
+ <INPUT NAME="oid" ID="oid" SIZE="54">
+ <INPUT TYPE="button" VALUE="..." ID="openselector" onclick="open_select_mib_get(this)">
+ </TD>
+</TR>
+<& /elements/auto-table.html,
+ template_row => 'broadband_snmp_get_template',
+ fieldorder => ['oid'],
+ data => \@data,
+ table => 'snmp',
+&>
+<INPUT TYPE="hidden" NAME="multi_options" VALUE="snmp_oid">
+<& foot.html, %opt &>
+<%init>
+my %opt = @_;
+
+my $part_export = $opt{part_export} || FS::part_export->new;
+
+my @oids = split("\n", $part_export->option('snmp_oid'));
+
+my @data;
+while (@oids) {
+ my @thisrow = (shift(@oids));
+ push @data, \@thisrow if grep length($_), @thisrow;
+}
+
+my $popup_name = 'popup-'.time."-$$-".rand() * 2**32;
+</%init>
diff --git a/httemplate/elements/broadband_snmp_get-dialog.html b/httemplate/elements/broadband_snmp_get-dialog.html
new file mode 100644
index 000000000..61bb9c763
--- /dev/null
+++ b/httemplate/elements/broadband_snmp_get-dialog.html
@@ -0,0 +1,68 @@
+<%doc>
+Adds a link to display snmp statistics based on broadband_snmp_get export config.
+Performs necessary checks such that, if no such exports are configured for the passed
+service, returns blank space (ie may be safely invoked even if no exports are configured.)
+
+ <& '/elements/broadband_snmp_get-dialog.html', svc => $svc &>
+
+</%doc>
+% if (@snmp) {
+<& '/elements/xmlhttp.html',
+ 'url' => $fsurl.'misc/xmlhttp-broadband_snmp_get.cgi',
+ 'subs' => [ 'broadband_snmp_get_request' ]
+ &>
+<SCRIPT>
+function broadband_snmp_get (svcnum) {
+ var jqd = $( '#broadband_snmp_get_dialog' );
+ if (!jqd.dialog( 'isOpen' )) {
+ jqd.dialog( 'open' );
+ }
+ document.getElementById('broadband_snmp_get_dialog').innerHTML = '<B>Loading...</B>';
+ broadband_snmp_get_request('svcnum',svcnum,
+ function (result) {
+ var objects = JSON.parse(result) || [];
+ if (objects.length) {
+ var table = document.createElement('table');
+ for (i = 0; i < objects.length; i++) {
+ var row = document.createElement('tr');
+ var obj = objects[i];
+ if (obj.error) {
+ var cell = document.createElement('td');
+ cell.colSpan = '2';
+ cell.innerHTML = obj['error'];
+ row.appendChild(cell);
+ } else {
+ var cell = document.createElement('td');
+ cell.innerHTML = obj['label'];
+ row.appendChild(cell);
+ cell = document.createElement('td');
+ cell.innerHTML = obj['value'];
+ row.appendChild(cell);
+ }
+ table.appendChild(row);
+ }
+ var dialog = document.getElementById('broadband_snmp_get_dialog');
+ dialog.innerHTML = '';
+ dialog.appendChild(table);
+ } // if objects.length
+ } // function
+ ); // broadband_snmp_get_request
+} // broadband_snmp_get
+</SCRIPT>
+<SPAN ID="broadband_snmp_get_dialog"></SPAN>
+<SPAN ID="broadband_snmp_get_link">
+<A HREF="javascript: void(0)" onclick="broadband_snmp_get('<% $svcnum %>')">(snmp)</A>
+</SPAN>
+<SCRIPT>
+$( '#broadband_snmp_get_dialog' ).dialog({
+ position: { my: "left top", at: "left top", of: "#broadband_snmp_get_link" },
+ autoOpen: false,
+ title: 'SNMP',
+});
+</SCRIPT>
+% } #if @snmp
+<%init>
+my(%opt) = @_;
+my @snmp = $opt{'svc'}->cust_svc->part_svc->part_export('broadband_snmp_get');
+my $svcnum = $opt{'svc'}->svcnum;
+</%init>
diff --git a/httemplate/elements/select-mib-popup.html b/httemplate/misc/select-mib-popup.html
index f95ce2b97..f95ce2b97 100644
--- a/httemplate/elements/select-mib-popup.html
+++ b/httemplate/misc/select-mib-popup.html
diff --git a/httemplate/misc/xmlhttp-broadband_snmp_get.cgi b/httemplate/misc/xmlhttp-broadband_snmp_get.cgi
new file mode 100644
index 000000000..a6f926722
--- /dev/null
+++ b/httemplate/misc/xmlhttp-broadband_snmp_get.cgi
@@ -0,0 +1,35 @@
+<%doc>
+Requires arg $svcnum. Returns JSON-encoded realtime snmp results
+for configured broadband_snmp_get exports.
+</%doc>
+<% encode_json(\@result) %>\
+<%init>
+
+# access/agent permissions lifted from /view/elements/svc_Common.html
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('View customer services');
+
+my %arg = $cgi->param('arg');
+my $svc = qsearchs({
+ 'select' => 'svc_broadband.*',
+ 'table' => 'svc_broadband',
+ 'addl_from' => ' LEFT JOIN cust_svc USING ( svcnum ) '.
+ ' LEFT JOIN cust_pkg USING ( pkgnum ) '.
+ ' LEFT JOIN cust_main USING ( custnum ) ',
+ 'hashref' => { 'svcnum' => $arg{'svcnum'} },
+ 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql(
+ 'null_right' => 'View/link unlinked services'
+ ),
+}) or die "Unknown svcnum ".$arg{'svcnum'}." in svc_broadband table\n";
+
+my @part_export = $svc->cust_svc->part_svc->part_export('broadband_snmp_get');
+
+my @result;
+foreach my $part_export (@part_export) {
+ push @result, $part_export->snmp_results($svc);
+}
+
+</%init>
+
+
diff --git a/httemplate/view/elements/svc_Common.html b/httemplate/view/elements/svc_Common.html
index d7a1dcf30..296c27bbc 100644
--- a/httemplate/view/elements/svc_Common.html
+++ b/httemplate/view/elements/svc_Common.html
@@ -283,8 +283,8 @@ my $format_field = sub {
} elsif ( $type eq 'checkbox' ) {
$value = $value eq 'Y' ? emt('Yes') : emt('No');
} elsif ( $type =~ /(input-)?mac_addr/ and $value =~ /\w/) {
- my $vendor = Net::MAC::Vendor::lookup($value)->[0];
- $value .= " ($vendor)" if $vendor;
+ my $vendor = Net::MAC::Vendor::lookup($value);
+ $value .= ' ('. $vendor->[0]. ')' if $vendor;
$value = $m->scomp('/elements/mac_addr.html', $value);
}
diff --git a/httemplate/view/elements/svc_devices.html b/httemplate/view/elements/svc_devices.html
index 899e6aa47..3d4e1bbc5 100644
--- a/httemplate/view/elements/svc_devices.html
+++ b/httemplate/view/elements/svc_devices.html
@@ -63,7 +63,8 @@
<% $td %><% $device->part_device->devicename |h %></TD>
% }
<% $td %><% $device->mac_addr_pretty %>
- (<% (Net::MAC::Vendor::lookup($device->mac_addr_formatted('U',':')))->[0] %>)
+% my $vendor = Net::MAC::Vendor::lookup($device->mac_addr_formatted('U',':'));
+ (<% $vendor ? $vendor->[0] : '' %>)
</TD>
<% $td %><% $export_links %></TD>
<% $td %>(
diff --git a/httemplate/view/elements/svc_radius_usage.html b/httemplate/view/elements/svc_radius_usage.html
index 471969175..56198524c 100644
--- a/httemplate/view/elements/svc_radius_usage.html
+++ b/httemplate/view/elements/svc_radius_usage.html
@@ -27,8 +27,11 @@
% ) / 1073741824;
%
% my $last_mac = $svc->attribute_last_sqlradacct( 'CallingStationId' );
-% if ( $last_mac =~ /^\s*(([\dA-F]{2}[\-:]){5}[\dA-F]{2})/i ) {
-% $last_mac .= ' ('. (Net::MAC::Vendor::lookup($1))->[0]. ')';
+% if ( $last_mac =~ /^\s*(([\dA-F]{2}[\-:]){5}[\dA-F]{2})/i
+% && my $vendor = Net::MAC::Vendor::lookup($1)
+% )
+% {
+% $last_mac .= ' ('. $vendor->[0]. ')';
% }
diff --git a/httemplate/view/svc_broadband.cgi b/httemplate/view/svc_broadband.cgi
index 4935a1096..bc272e844 100644
--- a/httemplate/view/svc_broadband.cgi
+++ b/httemplate/view/svc_broadband.cgi
@@ -72,6 +72,7 @@ sub ip_addr {
my $out = $ip_addr;
$out .= ' (' . include('/elements/popup_link-ping.html', ip => $ip_addr) . ')'
if $ip_addr;
+ $out .= include('/elements/broadband_snmp_get-dialog.html', svc => $svc);
if ($svc->cust_svc->part_svc->part_export('cacti')) {
$out .= ' (<A HREF="'
. popurl(2)