// authNoPriv private static IPrivacyProvider GetPrivacy(SNMPV3AuthenticationProvider authProvider, string auth) { IAuthenticationProvider authenticationProvider; if (authProvider == SNMPV3AuthenticationProvider.MD5) { authenticationProvider = new MD5AuthenticationProvider(new OctetString(auth)); } else { authenticationProvider = new SHA1AuthenticationProvider(new OctetString(auth)); } return(new DefaultPrivacyProvider(authenticationProvider)); }
// authPriv private static IPrivacyProvider GetPrivacy(SNMPV3AuthenticationProvider authProvider, string auth, SNMPV3PrivacyProvider privProvider, string priv) { IAuthenticationProvider authenticationProvider; if (authProvider == SNMPV3AuthenticationProvider.MD5) { authenticationProvider = new MD5AuthenticationProvider(new OctetString(auth)); } else { authenticationProvider = new SHA1AuthenticationProvider(new OctetString(auth)); } if (privProvider == SNMPV3PrivacyProvider.DES) { return(new DESPrivacyProvider(new OctetString(priv), authenticationProvider)); } return(new AESPrivacyProvider(new OctetString(priv), authenticationProvider)); }
public void WalkV3Async(IPAddress ipAddress, string oid, SNMPV3Security security, string username, SNMPV3AuthenticationProvider authProvider, SecureString auth, SNMPV3PrivacyProvider privProvider, SecureString priv, WalkMode walkMode) { Task.Run(() => { try { var ipEndpoint = new IPEndPoint(ipAddress, Port); // Discovery var discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); var report = discovery.GetResponse(Timeout, ipEndpoint); IPrivacyProvider privacy; switch (security) { case SNMPV3Security.AuthPriv: privacy = GetPrivacy(authProvider, SecureStringHelper.ConvertToString(auth), privProvider, SecureStringHelper.ConvertToString(priv)); break; // noAuthNoPriv case SNMPV3Security.AuthNoPriv: privacy = GetPrivacy(authProvider, SecureStringHelper.ConvertToString(auth)); break; default: privacy = GetPrivacy(); break; } var results = new List <Variable>(); Messenger.BulkWalk(VersionCode.V3, ipEndpoint, new OctetString(username), OctetString.Empty, new ObjectIdentifier(oid), results, Timeout, 10, walkMode, privacy, report); foreach (var result in results) { OnReceived(new SNMPReceivedArgs(result.Id, result.Data)); } OnComplete(); } catch (Lextm.SharpSnmpLib.Messaging.TimeoutException) { OnTimeoutReached(); } catch (ErrorException) { OnError(); } }); }
public void SetV3Async(IPAddress ipAddress, string oid, SNMPV3Security security, string username, SNMPV3AuthenticationProvider authProvider, SecureString auth, SNMPV3PrivacyProvider privProvider, SecureString priv, string data) { Task.Run(() => { try { var ipEndpoint = new IPEndPoint(ipAddress, Port); // Discovery var discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); var report = discovery.GetResponse(Timeout, ipEndpoint); IPrivacyProvider privacy; switch (security) { case SNMPV3Security.AuthPriv: privacy = GetPrivacy(authProvider, SecureStringHelper.ConvertToString(auth), privProvider, SecureStringHelper.ConvertToString(priv)); break; // noAuthNoPriv case SNMPV3Security.AuthNoPriv: privacy = GetPrivacy(authProvider, SecureStringHelper.ConvertToString(auth)); break; default: privacy = GetPrivacy(); break; } var request = new SetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(username), OctetString.Empty, new List <Variable> { new Variable(new ObjectIdentifier(oid), new OctetString(data)) }, privacy, Messenger.MaxMessageSize, report); var reply = request.GetResponse(Timeout, ipEndpoint); OnComplete(); } catch (Lextm.SharpSnmpLib.Messaging.TimeoutException) { OnTimeoutReached(); } catch (ErrorException) { OnError(); } }); }
public void Getv3Async(IPAddress ipAddress, string oid, SNMPV3Security security, string username, SNMPV3AuthenticationProvider authProvider, string auth, SNMPV3PrivacyProvider privProvider, string priv, SNMPOptions options) { Task.Run(() => { try { var ipEndpoint = new IPEndPoint(ipAddress, options.Port); // Discovery var discovery = Messenger.GetNextDiscovery(SnmpType.GetRequestPdu); var report = discovery.GetResponse(options.Timeout, ipEndpoint); IPrivacyProvider privacy; switch (security) { case SNMPV3Security.AuthPriv: privacy = GetPrivacy(authProvider, auth, privProvider, priv); break; // noAuthNoPriv case SNMPV3Security.AuthNoPriv: privacy = GetPrivacy(authProvider, auth); break; default: privacy = GetPrivacy(); break; } var request = new GetRequestMessage(VersionCode.V3, Messenger.NextMessageId, Messenger.NextRequestId, new OctetString(username), new List <Variable> { new Variable(new ObjectIdentifier(oid)) }, privacy, Messenger.MaxMessageSize, report); var reply = request.GetResponse(options.Timeout, ipEndpoint); var result = reply.Pdu().Variables[0]; OnReceived(new SNMPReceivedArgs(result.Id, result.Data)); OnComplete(); } catch (Lextm.SharpSnmpLib.Messaging.TimeoutException) { OnTimeout(); } catch (ErrorException) { OnError(); } }); }