public void activate()

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();
    }