Guest User

Untitled

a guest
Sep 12th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. Dart.SNMP v4.2.0 throws NotImplementedException under provided scenario. Is this user error or library error?
  2. using System;
  3. using System.Threading;
  4. using Dart.Snmp;
  5. using System.Diagnostics;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9. class Program
  10. {
  11. ManualResetEvent _snmpCompleteEvent = new ManualResetEvent(false);
  12. const string IP = "XXX.XXX.X.XX";
  13. const string USERNAME = "username123";
  14.  
  15. static void Main(string[] args)
  16. {
  17. new Program().Run();
  18. }
  19.  
  20. private void Run()
  21. {
  22. Manager SnmpMgr = new Manager();
  23. _snmpCompleteEvent.Reset();
  24. SnmpMgr.Start(SendBadSnmp3RequestWorker, null);
  25. _snmpCompleteEvent.WaitOne();
  26. _snmpCompleteEvent.Reset();
  27. SnmpMgr.Start(SendGoodSnmp3RequestWorker, null);
  28. _snmpCompleteEvent.WaitOne();
  29. }
  30.  
  31. private void SendBadSnmp3RequestWorker(ManagerSlave slave, object state)
  32. {
  33. RequestMessage requestMessage = CreateGetRequestMessage(useValidSecurity: false);
  34. ResponseMessage responseMessage = slave.GetResponse(requestMessage, IP);
  35. Debug.Assert(responseMessage.ErrorStatus == ErrorStatus.AuthorizationError, "This should have been an authorization error");
  36. _snmpCompleteEvent.Set();
  37. }
  38.  
  39. private void SendGoodSnmp3RequestWorker(ManagerSlave slave, object state)
  40. {
  41. RequestMessage requestMessage = CreateGetRequestMessage(useValidSecurity: true);
  42. try
  43. {
  44. ResponseMessage responseMessage = slave.GetResponse(requestMessage, IP);
  45. }
  46. catch (NotImplementedException exception)
  47. {
  48. //Exception is encountered, but why?
  49. _snmpCompleteEvent.Set();
  50. throw;
  51. }
  52. }
  53.  
  54. private RequestMessage CreateGetRequestMessage(bool useValidSecurity)
  55. {
  56. const string sysName = "1.3.6.1.2.1.1.5";
  57. RequestMessage requestMessage = new GetMessage();
  58.  
  59. requestMessage.Version = SnmpVersion.Three;
  60. requestMessage.Variables.Clear();
  61. requestMessage.Variables.Add(new Variable(sysName));
  62. if (useValidSecurity)
  63. SetValidAuthorizationSecurity(requestMessage);
  64. else
  65. SetInvalidAuthorizationSecurity(requestMessage);
  66.  
  67. return requestMessage;
  68. }
  69.  
  70. private void SetInvalidAuthorizationSecurity(RequestMessage requestMessage)
  71. {
  72. requestMessage.Security = new Security
  73. {
  74. Username = USERNAME,
  75. AuthenticationProtocol = AuthenticationProtocol.None,
  76. AuthenticationPassword = string.Empty,
  77. PrivacyProtocol = PrivacyProtocol.None,
  78. PrivacyPassword = string.Empty
  79. };
  80. }
  81.  
  82. private void SetValidAuthorizationSecurity(RequestMessage requestMessage)
  83. {
  84. requestMessage.Security = new Security
  85. {
  86. Username = USERNAME,
  87. AuthenticationProtocol = AuthenticationProtocol.Sha,
  88. AuthenticationPassword = USERNAME,
  89. PrivacyProtocol = PrivacyProtocol.Des,
  90. PrivacyPassword = USERNAME
  91. };
  92. }
  93. }
  94. }
Add Comment
Please, Sign In to add comment