SNMP Software Development Kit for HTML Javascript for Windows

ActiveSocket is a Network Communication component for Windows Developers. It runs on any 32 bit and 64 bit Windows Platform, incl. Windows 7, Windows 2008, Windows 2003, Windows 2000, Windows Vista and Windows XP.
It features many IP protocols, incl.: SSH (Secure Shell), RSH (Remote Shell), HTTP(s), FTP, ICMP Ping, NTP, SNMP v1/v2c (Get,GetNext,Set), SNMP MIB translation, SNMP Trap Sender, SNMP Trap Receiver, Telnet, DNS, TCP, UDP, IP-to-Country, Wake-On-LAN and more. Samples are included many popular development platforms, incl. Visual C# .NET, Visual Basic .NET, ASP .NET, Visual Basic, Visual C/C++, ASP, Java, Javascript, PHP, Borland Delphi, Borland C++ Builder, ColdFusion.

SNMP can be well integrated into HTML environments. This document describes how ActiveSocket's SNMP objects can be integrated into HTML projects.

ActiveSocket is compliant with SNMP v1 and SNMP v2c. ActiveSocket automatically detects which SNMP version is running on the remote agent. The SDK supports different SNMP data types, including:

  • String types (also called "octet strings");
  • Integer types (16bit, 32bit, 64bit and unsigned integers);
  • IP Address types;
  • Timetick types;
  • Counter types (32bit and 64bit counters);
  • OID types (also called "Object ID's");
  • Other, less frequently used datatypes.

The following operations are supported:

  • Get - retrieve an object variable from the (remote) agent;
  • GetNext - retrieve the next object variable from a table or list within an agent;
  • Set - set values for object variables within an agent.

Step 1: Installation of ActiveSocket

When using HTML, there are two ways to install the ActiveSocket Toolkit on a client PC:

  • Automatically using HTML code;
  • Using the ActiveSocket Toolkit InstallShield installation.

Automatic installation using HTML code

You can install the ActiveSocket Toolkit automatically using the following HTML code on top of the HTML page:

<head>
  <object codeBase="http://www.activexperts.com/files/network-component/3.1/asocket.cab" classid="CLSID:4F986D6D-E04F-4BEE-B8C7-8252577CB282" lt;/object>
</head>

The ActiveSocket Toolkit will be installated automatically. The user will be asked to confirm the installation, because the DLL is coming from an untrusted site (www.activexperts.com).

There are two ways to avoid prompting:

  • Add the ActiveX/COM location to the user's trusted sites. You can manage trusted manually (by using the Internet Explorer), through a logon script (by appyling the registry change from the logon script) or by using Active Directory Group Policies;
  • OR use a trusted location for the DLL. For instance your Intranet site, because most probably this site has already been added to the list of trusted sites for all users.

Manual installation using the ActiveSocket Toolkit installation procedure

On each client PC, download the ActiveSocket Toolkit from the ActiveXperts Download Site and start the installation. The installation guides you through the installation process.

Step 2: Create a new webpage

Create a new HTML script using your favorite editor. You can simply use notepad. However, a JavaScript editor is recommended, so you can browse through objects, objects properties and object functions. Add the following HTML code to the header section of your HTML code:

<script type="text/javascript" >
</script>

You're now able to write a more advanced scripts to communicate using the ActiveSocket Toolkit.

Step 3: Create the ActiveSocket objects in JavaScript

To query an SNMP agent using JavaScript,you need to declare and create the following ActiveSocket object:

  • SnmpManager; The SNMP manager which allows you to communicate with the SNMP agent;

To create the ActiveSocket objects, add the following lines of codes on top of your JavaScript code (directly after the script tag) :

   var objSnmpManager = new ActiveXObject ( "ActiveXperts.SnmpManager" );
   var objConstants   = new ActiveXObject ( "ActiveXperts.ASConstants" );

Step 4: Execute an SNMP query on a remote SNMP agent

You can now query SNMP OID's. The following VBScript code shows how to execute an SNMP query on a remote SNMP agent from an HTML form:

<html>
  <head>
    <title>ActiveSocket HTML/JavaScript Sample</title>

    <object codeBase="http://www.activexperts.com/files/network-component/cab/3.1/asocket.cab" classid="CLSID:4F986D6D-E04F-4BEE-B8C7-8252577CB282" </object>

    <script type="text/javascript" >
    
      var objSnmpManager     = new ActiveXObject ( "ActiveXperts.SnmpManager" );
      var objConstants       = new ActiveXObject ( "ActiveXperts.ASConstants" );
          
      function Init ()
      {
        objSnmpManager.Initialize ();
      }
      
      function UnInit ()
      {
        objSnmpManager.Shutdown ();
      }
      
      function Get ()
      {
        objSnmpManager.Open ( textSnmpAgent.value, textSnmpCommunity.value );
      
        if ( objSnmpManager.LastError == 0 )
        {
          var objSnmpObject = objSnmpManager.Get ( textOid.value );
        
          if ( objSnmpManager.LastError == 0 )
          {
            textValue.value = objSnmpObject.Value;
            
            DisplayType ( objSnmpObject.Type );
          }
        }
        textResult.value = objSnmpManager.LastError + " : " + objSnmpManager.GetErrorDescription ( objSnmpManager.LastError );

        objSnmpManager.Close ();
      }
      
      function DisplayType (lType)
      {
        switch ( lType )
        {
          case objConstants.asSNMP_TYPE_INTEGER32:          textType.value = "asSNMP_TYPE_INTEGER32";        break;
          case objConstants.asSNMP_TYPE_BITS:               textType.value = "asSNMP_TYPE_BITS";             break;
          case objConstants.asSNMP_TYPE_OCTETSTRING:        textType.value = "asSNMP_TYPE_OCTETSTRING";      break;
          case objConstants.asSNMP_TYPE_NULL:               textType.value = "asSNMP_TYPE_NULL";             break;
          case objConstants.asSNMP_TYPE_OBJECTIDENTIFIER:   textType.value = "asSNMP_TYPE_OBJECTIDENTIFIER"; break;
          case objConstants.asSNMP_TYPE_SEQUENCE:           textType.value = "asSNMP_TYPE_SEQUENCE";         break; 
          case objConstants.asSNMP_TYPE_IPADDRESS:          textType.value = "asSNMP_TYPE_IPADDRESS";        break;
          case objConstants.asSNMP_TYPE_COUNTER32:          textType.value = "asSNMP_TYPE_COUNTER32";        break;
          case objConstants.asSNMP_TYPE_GAUGE32:            textType.value = "asSNMP_TYPE_GAUGE32";          break;
          case objConstants.asSNMP_TYPE_TIMETICKS:          textType.value = "asSNMP_TYPE_TIMETICKS";        break;
          case objConstants.asSNMP_TYPE_OPAQUE:             textType.value = "asSNMP_TYPE_OPAQUE";           break;
          case objConstants.asSNMP_TYPE_COUNTER64:          textType.value = "asSNMP_TYPE_COUNTER64";        break;
          case objConstants.asSNMP_TYPE_UNSIGNED32:         textType.value = "asSNMP_TYPE_UNSIGNED32";       break;
        }
      }
    </script>
  </head>
   
  <body OnLoad="Init()" OnUnload="UnInit" >
    <font face="sans-serif" size="2">
    <hr size="1" color="#707070">
    <b><font size="4">ActiveXperts ActiveSocket HTML/JavaScript Sample</font></b>
    <br>
    <br>
    Get SNMP values from an SNMP agent.
    <br>
    <br>
    <hr size="1" color="#707070">
    <br>
    <table border="0" bgcolor="#f0f0f0" ID="table1" >
      <tr>
        <td width="120" valign="top">SNMP Agent:</td>
        <td width="450">
          <input size="50" type="text" id="textSnmpAgent" value="DELL09" >
          </select>
        </td>
      </tr>
      <tr>
        <td valign="top">SNMP Community:</td>
        <td>
          <input size="50" type="text" id="textSnmpCommunity" value="public" >
        </td>
      </tr>
      <tr>
        <td valign="top">Object ID:<br>
        </td>
        <td>
          <input size="50" type="text" id="textOid" value="system.sysDescr.0" >
          <br>
          <br>
        </td>
      </tr>
      <tr>
        <td vAlign="top">Value:</td>
        <td>
          <input size="50" type="text"" id="textValue" value="" >
        </td>
      </tr>
      <tr>
        <td vAlign="top">Type:</td>
        <td>
          <input size="50" type="text"" id="textType" value="" >
        </td>
      </tr>
      <tr>
        <td vAlign="top">Result:</td>
        <td>
          <input size="50" type="text" id="textResult" value="" >                   
        </td>
      </tr>
      <tr>
        <td></td>
        <td>
          <input type="button" onclick="Get()" value="Get" style="width: 100px;" >
        </td>
      </tr>  
    </table>
    <br>
    <hr size="1" color="#707070">
  </body>
</html>

There are many working samples included with the product. You can also find them on the ActiveXperts FTP site: ftp.activexperts-labs.com/samples/asocket.