r4791 By Boris:
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 16 Sep 2011 09:37:22 +0000 (09:37 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 16 Sep 2011 09:37:22 +0000 (09:37 +0000)
querySNMPData(): fix case blocks
renderSNMPPortFinder(): add extra portlet
RTSNMPDevice::__construct(): dispatch to proper class
RTSNMPv1, RTSNMPv2: add v2, fix naming for v1

ChangeLog
wwwroot/inc/interface.php
wwwroot/inc/ophandlers.php
wwwroot/inc/snmp.php

index b6a0c5d83f0f61aa5a8532ae656a1e6e23d134d0..ecf21044dbf8384d947a3fbd7b0ceead04a25bc6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,7 @@
        bugfix: LivePorts MAC address lister was broken with Huawei S5300 V100R006
        bugfix: SNMP sync was broken when one of default attributes was removed from certain object type
        update: improve Nexus SNMP coverage
+       update: justify the difference between SNMP versions (by Boris Lytochkin)
 0.19.9 2011-09-01
        bugfix: a hotfix for Cacti feature
        bugfix: disabled highlighting text editor in Google Chrome and Safari (closes #455, #462)
index 6058d694e6920d9a1aee7db3bfa81e1704542aeb..4e1585995e64fa78dfbb2940cb147fec411a3d54 100644 (file)
@@ -4707,13 +4707,22 @@ function renderSNMPPortFinder ($object_id)
        echo '</table></form>';
        finishPortlet();
 
-       startPortlet ('SNMPv2/v3');
-       printOpFormIntro ('querySNMPData', array ('ver' => 23));
+       startPortlet ('SNMPv2c');
+       printOpFormIntro ('querySNMPData', array ('ver' => 2));
+       echo '<table cellspacing=0 cellpadding=5 align=center class=widetable>';
+       echo '<tr><th class=tdright><label for=community>Community: </label></th>';
+       echo "<td class=tdleft><input type=text name=community id=community value='${snmpcomm}'></td></tr>";
+       echo '<tr><td colspan=2><input type=submit value="Try now"></td></tr>';
+       echo '</table></form>';
+       finishPortlet();
+
+       startPortlet ('SNMPv3');
+       printOpFormIntro ('querySNMPData', array ('ver' => 3));
 ?>
        <table cellspacing=0 cellpadding=5 align=center class=widetable>
        <tr>
                <th class=tdright><label for=sec_name>Security User:</label></th>
-               <td class=tdleft><input type=text id=sec_name name=sec_name></td>
+               <td class=tdleft><input type=text id=sec_name name=sec_name value='<?php echo${snmpcomm};?>'></td>
        </tr>
        <tr>
                <th class=tdright><label for="sec_level">Security Level:</label></th>
index d8f43882a9b1746ec075ef63bfcc739445d408ea..5d712102f48992e496c789c0b4cdf683912509e9 100644 (file)
@@ -1978,10 +1978,11 @@ function querySNMPData ()
        switch ($_REQUEST['ver'])
        {
        case 1:
+       case 2:
                genericAssertion ('community', 'string');
                $snmpsetup['community'] = $_REQUEST['community'];
                break;
-       case 23:
+       case 3:
                assertStringArg ('sec_name');
                assertStringArg ('sec_level');
                assertStringArg ('auth_protocol');
@@ -1999,6 +2000,7 @@ function querySNMPData ()
        default:
                throw new InvalidRequestArgException ('ver', $_REQUEST['ver']);
        }
+       $snmpsetup['version'] = $_REQUEST['ver'];
        doSNMPmining (getBypassValue(), $snmpsetup); // shows message by itself
 }
 
index b676b8eecc95796d1ceed7911bd8f2d48abf7cd8..a9182441003c406b89489a8f3786fc13cc9aa416 100644 (file)
@@ -1559,13 +1559,18 @@ class RTSNMPDevice {
     protected $snmp;
 
     function __construct($hostname, $snmpsetup) {
-       if( isset($snmpsetup['community']) ) {
+       switch($snmpsetup['version']) {
+       case 1:
+       default:
+           $this->snmp = new RTSNMPv1($hostname, $snmpsetup);
+           break;
+       case 2:
            $this->snmp = new RTSNMPv2($hostname, $snmpsetup);
-       }
-       else {
+           break;
+       case 3:
            $this->snmp = new RTSNMPv3($hostname, $snmpsetup);
+           break;
        }
-
     }
 
     function getName() {
@@ -1607,7 +1612,7 @@ abstract class RTSNMP {
     abstract function snmpwalkoid($oid);
 }
 
-class RTSNMPv2 extends RTSNMP {
+class RTSNMPv1 extends RTSNMP {
     function snmpget($oid) {
        return snmpget($this->hostname, $this->snmpsetup['community'], $oid);
     }
@@ -1621,6 +1626,20 @@ class RTSNMPv2 extends RTSNMP {
     }
 }
 
+class RTSNMPv2 extends RTSNMP {
+    function snmpget($oid) {
+       return snmp2_get($this->hostname, $this->snmpsetup['community'], $oid);
+    }
+
+    function snmpset($oid, $type, $value) {
+       return snmp2_set($this->hostname, $this->snmpsetup['community'], $oid, $type, $value);
+    }
+    
+    function snmpwalkoid($oid) {
+       return snmp2_real_walk($this->hostname, $this->snmpsetup['community'], $oid);
+    }
+}
+
 class RTSNMPv3 extends RTSNMP {
     function snmpget($oid) {
        return snmp3_get($this->hostname, $this->snmpsetup['sec_name'], $this->snmpsetup['sec_level'], $this->snmpsetup['auth_protocol'], $this->snmpsetup['auth_passphrase'], $this->snmpsetup['priv_protocol'], $this->snmpsetup['priv_passphrase'], $oid);