in collector/snmp/src/main/java/org/apache/karaf/decanter/collector/snmp/SnmpPoller.java [78:158]
public void activate(Dictionary<String, Object> configuration) throws Exception {
this.configuration = configuration;
String addressConfig = (configuration.get("address") != null) ? (String) configuration.get("address") : "127.0.0.1/161";
this.address = GenericAddress.parse(addressConfig);
String protocol = (configuration.get("protocol") != null) ? (String) configuration.get("protocol") : "tcp";
if (protocol.equalsIgnoreCase("tcp")) {
this.transport = new DefaultTcpTransportMapping();
} else if (protocol.equalsIgnoreCase("udp")) {
this.transport = new DefaultUdpTransportMapping();
} else {
throw new IllegalStateException("Unknown SNMP protocol: " + protocol + " (udp and tcp are supported)");
}
int retries = (configuration.get("retries") != null) ? Integer.parseInt((String) configuration.get("retries")) : 2;
long timeout = (configuration.get("timeout") != null) ? Long.parseLong((String) configuration.get("timeout")) : 1500;
treeList = (configuration.get("treelist") != null) ? Boolean.parseBoolean((String) configuration.get("treelist")) : false;
oids = (configuration.get("oids") != null) ? (String) configuration.get("oids") : "";
this.snmp = new Snmp(transport);
int snmpVersion = (configuration.get("snmp.version") != null) ? Integer.parseInt((String) configuration.get("snmp.version")) : SnmpConstants.version3;
if (snmpVersion == SnmpConstants.version3) {
UserTarget userTarget = new UserTarget();
int securityLevel = (configuration.get("security.level") != null) ? Integer.parseInt((String) configuration.get("security.level")) : SecurityLevel.AUTH_PRIV;
userTarget.setSecurityLevel(securityLevel);
String securityName = (configuration.get("security.name") != null) ? (String) configuration.get("security.name") : "";
userTarget.setSecurityName(convertToOctetString(securityName));
userTarget.setAddress(address);
userTarget.setRetries(2);
userTarget.setTimeout(timeout);
userTarget.setVersion(snmpVersion);
this.target = userTarget;
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
String authenticationProtocolConfig = (configuration.get("authentication.protocol") != null) ? (String) configuration.get("authentication.protocol") : "MD5";
OID authenticationProtocol = convertAuthenticationProtocol(authenticationProtocolConfig);
String authenticationPassphraseConfig = (configuration.get("authentication.passphrase") != null) ? (String) configuration.get("authentication.passphrase") : "";
OctetString authenticationPassphrase = convertToOctetString(authenticationPassphraseConfig);
String privacyProtocolConfig = (configuration.get("privacy.protocol") != null) ? (String) configuration.get("privacy.protocol") : "DES";
OID privacyProtocol = convertPrivacyProtocol(privacyProtocolConfig);
String privacyPassphraseConfig = (configuration.get("privacy.passphrase") != null) ? (String) configuration.get("privacy.passphrase") : "";
OctetString privacyPassphrase = convertToOctetString(privacyPassphraseConfig);
UsmUser user = new UsmUser(convertToOctetString(securityName), authenticationProtocol,
authenticationPassphrase, privacyProtocol, privacyPassphrase);
usm.addUser(convertToOctetString(securityName), user);
ScopedPDU scopedPDU = new ScopedPDU();
String snmpContextEngineId = (configuration.get("snmp.context.engine.id") != null) ? (String) configuration.get("snmp.context.engine.id") : null;
if (snmpContextEngineId != null) {
scopedPDU.setContextEngineID(new OctetString(snmpContextEngineId));
}
String snmpContextName = (configuration.get("snmp.context.name") != null) ? (String) configuration.get("snmp.context.name") : null;
if (snmpContextName != null) {
scopedPDU.setContextName(new OctetString(snmpContextName));
}
this.pdu = scopedPDU;
} else {
CommunityTarget communityTarget = new CommunityTarget();
String snmpCommunity = (configuration.get("snmp.community") != null) ? (String) configuration.get("snmp.community") : "public";
communityTarget.setCommunity(convertToOctetString(snmpCommunity));
communityTarget.setAddress(address);
communityTarget.setRetries(retries);
communityTarget.setTimeout(timeout);
communityTarget.setVersion(snmpVersion);
this.target = communityTarget;
this.pdu = new PDU();
}
this.transport.listen();
}