home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / AAA_SNMP_O1997295282006.psc / FreeSnmpV1.ctl < prev    next >
Text File  |  2006-05-28  |  8KB  |  328 lines

  1. VERSION 5.00
  2. Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "mswinsck.ocx"
  3. Begin VB.UserControl FreeSnmpV1 
  4.    ClientHeight    =   525
  5.    ClientLeft      =   0
  6.    ClientTop       =   0
  7.    ClientWidth     =   525
  8.    InvisibleAtRuntime=   -1  'True
  9.    Picture         =   "FreeSnmpV1.ctx":0000
  10.    ScaleHeight     =   525
  11.    ScaleWidth      =   525
  12.    ToolboxBitmap   =   "FreeSnmpV1.ctx":0139
  13.    Begin MSWinsockLib.Winsock WS1 
  14.       Left            =   0
  15.       Top             =   600
  16.       _ExtentX        =   741
  17.       _ExtentY        =   741
  18.       _Version        =   393216
  19.       Protocol        =   1
  20.    End
  21. End
  22. Attribute VB_Name = "FreeSnmpV1"
  23. Attribute VB_GlobalNameSpace = False
  24. Attribute VB_Creatable = True
  25. Attribute VB_PredeclaredId = False
  26. Attribute VB_Exposed = True
  27. Option Explicit
  28.  
  29. Private OcxRemoteIP As String
  30. Private OcxPort As String
  31. Private OcxCommunity As String
  32.  
  33.  
  34. Public Event Error(sErrMsg As String)
  35. Public Event Result(sRemoteIP As String, sReqId As Long, sSnmpErr As Byte, sSnmpErrIndex As Byte, _
  36.                     sSnmpOID() As String, sSnmpValueType() As Byte, sSnmpValue() As String)
  37.                     
  38.  
  39. Public Property Get RemoteIP() As String
  40.     RemoteIP = OcxRemoteIP
  41. End Property
  42.  
  43. Public Property Let RemoteIP(ByVal vNewValue As String)
  44.     OcxRemoteIP = vNewValue
  45.     PropertyChanged "RemoteIP"
  46. End Property
  47.  
  48. Public Property Get Port() As String
  49.     Port = OcxPort
  50. End Property
  51.  
  52. Public Property Let Port(ByVal vNewValue As String)
  53.     OcxPort = vNewValue
  54.     PropertyChanged "Port"
  55. End Property
  56.  
  57. Public Property Get Community() As String
  58.     Community = OcxCommunity
  59. End Property
  60.  
  61. Public Property Let Community(ByVal vNewValue As String)
  62.     OcxCommunity = vNewValue
  63.     PropertyChanged "Community"
  64. End Property
  65.  
  66. Public Sub SnmpGet(RequestID As Long, ParamArray sOID_arr() As Variant)
  67.  
  68. Dim OutPacket As String
  69. Dim F As Integer
  70. Dim sTempOID() As String
  71.  
  72. On Local Error GoTo error_handler
  73.  
  74. If UBound(sOID_arr) = -1 Then
  75.      RaiseEvent Error("Error, OID is empty.")
  76.      Exit Sub
  77.      End If
  78. If OcxRemoteIP = "" Then
  79.      RaiseEvent Error("RemoteIP error")
  80.      Exit Sub
  81.      End If
  82. If OcxPort < 1 Or OcxPort > 65535 Then
  83.      RaiseEvent Error("Port error")
  84.      Exit Sub
  85.      End If
  86. If OcxCommunity = "" Then
  87.      RaiseEvent Error("Community error")
  88.      Exit Sub
  89.      End If
  90. If RequestID < 1 Then
  91.      RaiseEvent Error("ReqID error")
  92.      Exit Sub
  93.      End If
  94.      
  95. ReDim sTempOID(LBound(sOID_arr) To UBound(sOID_arr))
  96. For F = LBound(sOID_arr) To UBound(sOID_arr)
  97.     sTempOID(F) = CStr(sOID_arr(F))
  98.     Next
  99.    
  100. OutPacket = GenMultiPacket(OcxCommunity, RequestID, 160, sTempOID())
  101.  
  102. With WS1
  103.  .RemotePort = OcxPort
  104.  .RemoteHost = OcxRemoteIP
  105.  .SendData OutPacket
  106. End With
  107.         
  108.         
  109. Exit Sub
  110. error_handler:
  111.     
  112.     RaiseEvent Error("[" & Err.Description & "] in 'SnmpGetNext()'")
  113.         
  114.     
  115. End Sub
  116.  
  117.  
  118.  
  119. Public Sub SnmpGetNext(RequestID As Long, ParamArray sOID_arr() As Variant)
  120.  
  121. Dim OutPacket As String
  122. Dim F As Integer
  123. Dim sTempOID() As String
  124.  
  125. On Local Error GoTo error_handler
  126.  
  127. If UBound(sOID_arr) = -1 Then
  128.      RaiseEvent Error("Error, OID is empty.")
  129.      Exit Sub
  130.      End If
  131. If OcxRemoteIP = "" Then
  132.      RaiseEvent Error("RemoteIP error")
  133.      Exit Sub
  134.      End If
  135. If OcxPort < 1 Or OcxPort > 65535 Then
  136.      RaiseEvent Error("Port error")
  137.      Exit Sub
  138.      End If
  139. If OcxCommunity = "" Then
  140.      RaiseEvent Error("Community error")
  141.      Exit Sub
  142.      End If
  143. If RequestID < 1 Then
  144.      RaiseEvent Error("ReqID error")
  145.      Exit Sub
  146.      End If
  147.      
  148. ReDim sTempOID(LBound(sOID_arr) To UBound(sOID_arr))
  149. For F = LBound(sOID_arr) To UBound(sOID_arr)
  150.     sTempOID(F) = CStr(sOID_arr(F))
  151.     Next
  152.  
  153. OutPacket = GenMultiPacket(OcxCommunity, RequestID, 161, sTempOID())
  154.  
  155. With WS1
  156.  .RemotePort = OcxPort
  157.  .RemoteHost = OcxRemoteIP
  158.  .SendData OutPacket
  159. End With
  160.         
  161.         
  162. Exit Sub
  163. error_handler:
  164.     
  165.     RaiseEvent Error("[" & Err.Description & "] in 'SnmpGetNext()'")
  166.         
  167.     
  168. End Sub
  169.  
  170. Public Sub SnmpSet(RequestID As Long, sOID_set As String, sCommunity_set As String, _
  171.                     ValueType As Byte, Value As Variant)
  172. Dim OutPacket As String
  173. Dim F As Integer
  174.     
  175. On Local Error GoTo error_handler
  176.         
  177. If OcxRemoteIP = "" Then
  178.      RaiseEvent Error("RemoteIP error")
  179.      Exit Sub
  180.      End If
  181. If OcxPort = 0 Or OcxPort > 65535 Then
  182.      RaiseEvent Error("Port error")
  183.      Exit Sub
  184.      End If
  185. If sCommunity_set = "" Then
  186.      RaiseEvent Error("Community error")
  187.      Exit Sub
  188.      End If
  189. If sOID_set = "" Then
  190.      RaiseEvent Error("OID error")
  191.      Exit Sub
  192.      End If
  193. If RequestID > 1 Then
  194.      RaiseEvent Error("ReqID error")
  195.      Exit Sub
  196.      End If
  197.         
  198. OutPacket = GenSimplePacket(Trim(sCommunity_set), Trim(sOID_set), RequestID, 163, ValueType, Value)
  199.  
  200.  
  201. With WS1
  202.  .RemotePort = OcxPort
  203.  .RemoteHost = OcxRemoteIP
  204.  .SendData OutPacket
  205. End With
  206.         
  207. Exit Sub
  208. error_handler:
  209.     
  210.     RaiseEvent Error("[" & Err.Description & "] in 'SnmpSet()'")
  211.     
  212. End Sub
  213.  
  214.  
  215.  
  216.  
  217. '##### UserControl ############################################################
  218.  
  219. Private Sub UserControl_Initialize()
  220. On Local Error GoTo error_handler
  221.  
  222.     With WS1
  223.         .Protocol = sckUDPProtocol
  224.         .LocalPort = 0
  225.         .RemotePort = 161
  226.     End With
  227.  
  228.     If OcxPort = "" Then OcxPort = "161"
  229.     If OcxCommunity = "" Then OcxCommunity = "public"
  230.     Exit Sub
  231.  
  232. error_handler:
  233.     
  234.     RaiseEvent Error("[" & Err.Description & "] in 'Control_Initialize()")
  235. End Sub
  236.  
  237. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  238.     OcxRemoteIP = PropBag.ReadProperty("RemoteIP", "")
  239.     OcxPort = PropBag.ReadProperty("Port", "161")
  240.     OcxCommunity = PropBag.ReadProperty("Community", "public")
  241. End Sub
  242.  
  243. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  244.     Call PropBag.WriteProperty("Community", OcxCommunity, "public")
  245.     Call PropBag.WriteProperty("RemoteIP", OcxRemoteIP, "")
  246.     Call PropBag.WriteProperty("Port", OcxPort, "161")
  247. End Sub
  248.  
  249. Private Sub UserControl_Resize()
  250.    UserControl.Height = 500
  251.    UserControl.Width = 500
  252. End Sub
  253.  
  254. '##### WS1 ############################################################
  255.  
  256. Private Sub WS1_DataArrival(ByVal bytesTotal As Long)
  257. 'DecodePacket
  258. '************
  259. '(0) = "255" 'No error
  260. '(1) = SnmpPacketID
  261. '(2) = SnmpOID
  262. '(3) = SnmpVType
  263. '(4) = SnmpVal
  264. '(5) = ErrorByte
  265. '(6) = OrgPacket
  266. '(7) = SnmpStatusError
  267. '(8) = SnmpErrorIndex
  268.         
  269. If bytesTotal > 1 Then
  270.         
  271. Dim AData As String
  272. Dim DeAAata() As String
  273. Dim RemIP As String
  274. Dim sId As Long
  275. Dim sError As Byte
  276. Dim sErrorIndex As Byte
  277. Dim sOID() As String
  278. Dim sType() As Byte
  279. Dim sValue() As String
  280. Dim N, mTemp As Integer
  281.  
  282.  
  283.     WS1.GetData AData
  284.     RemIP = WS1.RemoteHostIP
  285.  
  286.     DeAAata = DecodePacket(AData)
  287.  
  288.     If DeAAata(0, 0) = 255 Then
  289.  
  290.         sId = DeAAata(0, 1)
  291.         sError = DeAAata(0, 7)
  292.         sErrorIndex = DeAAata(0, 8)
  293.    
  294.             mTemp = UBound(DeAAata)
  295.             ReDim sOID(0 To mTemp)
  296.             ReDim sType(0 To mTemp)
  297.             ReDim sValue(0 To mTemp)
  298.        
  299.             For N = 0 To mTemp
  300.                 sOID(N) = DeAAata(N, 2)
  301.                 If sError = 0 Then
  302.                    sType(N) = CByte(DeAAata(N, 3))
  303.                    sValue(N) = ConvertSnmpValue(CByte(DeAAata(N, 3)), DeAAata(N, 4))
  304.                 Else
  305.                    sType(N) = 255
  306.                    sValue(N) = SnmpErrStatusDesc(sError) & ", OID Index: " & sErrorIndex
  307.                    End If
  308.                 Next
  309.  
  310.  
  311.         RaiseEvent Result(RemIP, sId, sError, sErrorIndex, sOID(), sType(), sValue())
  312.     Else
  313.         'Error in decode packet
  314.         RaiseEvent Error("Error in packet: " & DeAAata(0, 4) & " Byte no. " & DeAAata(0, 5))
  315.         End If
  316.  
  317. Else
  318.         RaiseEvent Error("Reset Connection")
  319.     End If
  320.  
  321.   
  322. End Sub
  323.  
  324. Private Sub WS1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  325.     RaiseEvent Error("WinSock Error: " & Number & " " & Description)
  326.     CancelDisplay = True
  327. End Sub
  328.