Fix unknown security name
This commit is contained in:
parent
99df23bdc9
commit
5e47e16913
@ -24,6 +24,7 @@ import org.snmp4j.security.SecurityLevel;
|
|||||||
import org.snmp4j.security.SecurityModel;
|
import org.snmp4j.security.SecurityModel;
|
||||||
import org.snmp4j.security.SecurityProtocols;
|
import org.snmp4j.security.SecurityProtocols;
|
||||||
import org.snmp4j.security.USM;
|
import org.snmp4j.security.USM;
|
||||||
|
import org.snmp4j.security.UsmUser;
|
||||||
import org.snmp4j.smi.Address;
|
import org.snmp4j.smi.Address;
|
||||||
import org.snmp4j.smi.GenericAddress;
|
import org.snmp4j.smi.GenericAddress;
|
||||||
import org.snmp4j.smi.OID;
|
import org.snmp4j.smi.OID;
|
||||||
@ -72,28 +73,23 @@ public class SnmpAuthService {
|
|||||||
OctetString engineId = OctetString.fromString(deviceTransportConfig.getEngineId(), 16);
|
OctetString engineId = OctetString.fromString(deviceTransportConfig.getEngineId(), 16);
|
||||||
|
|
||||||
OID authenticationProtocol = new OID(deviceTransportConfig.getAuthenticationProtocol().getOid());
|
OID authenticationProtocol = new OID(deviceTransportConfig.getAuthenticationProtocol().getOid());
|
||||||
byte[] authenticationPassphrase = SecurityProtocols.getInstance().passwordToKey(authenticationProtocol,
|
OctetString authenticationPassphrase = Optional.ofNullable(SecurityProtocols.getInstance().passwordToKey(authenticationProtocol,
|
||||||
new OctetString(deviceTransportConfig.getAuthenticationPassphrase()), engineId.getValue());
|
new OctetString(deviceTransportConfig.getAuthenticationPassphrase()), engineId.getValue()))
|
||||||
if (authenticationPassphrase == null) {
|
.map(OctetString::new)
|
||||||
throw new UnsupportedOperationException("Authentication protocol " + deviceTransportConfig.getAuthenticationProtocol() + " is not supported");
|
.orElseThrow(() -> new UnsupportedOperationException("Authentication protocol " + deviceTransportConfig.getAuthenticationProtocol() + " is not supported"));
|
||||||
}
|
|
||||||
|
|
||||||
OID privacyProtocol = new OID(deviceTransportConfig.getPrivacyProtocol().getOid());
|
OID privacyProtocol = new OID(deviceTransportConfig.getPrivacyProtocol().getOid());
|
||||||
byte[] privacyPassphrase = SecurityProtocols.getInstance().passwordToKey(privacyProtocol,
|
OctetString privacyPassphrase = Optional.ofNullable(SecurityProtocols.getInstance().passwordToKey(privacyProtocol,
|
||||||
authenticationProtocol, new OctetString(deviceTransportConfig.getPrivacyPassphrase()), engineId.getValue());
|
authenticationProtocol, new OctetString(deviceTransportConfig.getPrivacyPassphrase()), engineId.getValue()))
|
||||||
if (privacyPassphrase == null) {
|
.map(OctetString::new)
|
||||||
throw new UnsupportedOperationException("Privacy protocol " + deviceTransportConfig.getPrivacyProtocol() + " is not supported");
|
.orElseThrow(() -> new UnsupportedOperationException("Privacy protocol " + deviceTransportConfig.getPrivacyProtocol() + " is not supported"));
|
||||||
}
|
|
||||||
|
|
||||||
USM usm = snmpTransportService.getSnmp().getUSM();
|
USM usm = snmpTransportService.getSnmp().getUSM();
|
||||||
if (usm.hasUser(engineId, securityName)) {
|
if (usm.hasUser(engineId, securityName)) {
|
||||||
usm.removeAllUsers(username, engineId);
|
usm.removeAllUsers(username, engineId);
|
||||||
}
|
}
|
||||||
usm.addLocalizedUser(
|
UsmUser usmUser = new UsmUser(username, authenticationProtocol, authenticationPassphrase, privacyProtocol, privacyPassphrase, engineId);
|
||||||
engineId.getValue(), username,
|
usm.addUser(username, engineId, usmUser);
|
||||||
authenticationProtocol, authenticationPassphrase,
|
|
||||||
privacyProtocol, privacyPassphrase
|
|
||||||
);
|
|
||||||
|
|
||||||
UserTarget userTarget = new UserTarget();
|
UserTarget userTarget = new UserTarget();
|
||||||
userTarget.setSecurityName(securityName);
|
userTarget.setSecurityName(securityName);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user