Как получить ловушки Snmp V3 в Camel SNMP? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытался получить ловушки Snmp v3, используя компонент Apache Camel SNMP.Я получил ловушки v1 и v2, но не могу получить v3.

import java.util.Date;
import java.util.Objects;

import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.Main;
import org.apache.camel.main.MainSupport;
import org.apache.camel.main.MainListenerSupport;
import org.apache.camel.Processor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.camel.component.snmp.*;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.CamelContext;
import org.apache.camel.StartupListener;
import org.snmp4j.security.*;
import org.snmp4j.PDU;
import java.util.*;
import org.snmp4j.smi.*;
import org.snmp4j.mp.*;
import org.apache.camel.model.dataformat.*; 

public final class Snmp2 {

    public static void main(String[] args) throws Exception {

        // CamelContext contains methods to add routes, components etc
        CamelContext context = new DefaultCamelContext();

        // work with Snmp component
        context.addComponent("snmp", new SnmpComponent());

        // Add the route
        context.addRoutes(new RouteBuilder() {
                public void configure() {

                // When a SNMP TRAP is received on port 162 from any source..
                System.out.println(new OctetString("MD5DES"));
                System.out.println(SnmpConstants.version3);
                System.out.println(AuthMD5.ID);
//              from("snmp:0.0.0.0:162?protocol=udp&type=TRAP&securityName="+new OctetString("MD5DES")+"&snmpVersion="+SnmpConstants.version3+"&securityLevel="+SecurityLevel.NOAUTH_NOPRIV).process(myProcessor);
                from("snmp:0.0.0.0:162?protocol=udp&type=TRAP&securityName="+new OctetString("MD5DES")+"&snmpVersion="+SnmpConstants.version3+"&securityLevel="+SecurityLevel.AUTH_PRIV+"&authenticationPassphrase=UserName&privacyPassphrase=PasswordUser&authenticationProtocol=MD5&privacyProtocol=DES").process(myProcessor).to("file://D:/traps.log");
                }
            });

        // Get notification when the context is started..
        context.addStartupListener(new StartupListener(){
            public void onCamelContextStarted(CamelContext context, boolean alreadyStarted)
            {
                System.out.println("Camel context is started");
            }
        });

            // Start the context
            context.start();

            // Sleep for sometime, so that the context can keep running
            // otherwise the program exits
            Thread.sleep(1000000);

            context.stop();
    }

    public static Processor myProcessor = new Processor() {
        public void process(Exchange trap) throws Exception {

            System.out.println(trap.getIn().getHeaders());

            // getIn() means get the inbound message
            // Since we are using Snmp, we get SnmpMessage object, we need to typecast from Message
            SnmpMessage msg=(SnmpMessage)trap.getIn();

            // PDU refers to SNMP4J PDU class, the camel SNMP component internally uses it
            PDU pdu=msg.getSnmpMessage();



            // Get the VariableBindings (i.e.) the list of OID and value pairs
            // print them each
            pdu.getVariableBindings().forEach(System.out::println);
            /*
            Vector<? extends VariableBinding> v=pdu.getVariableBindings();

                for(VariableBinding b:v)
                {
                    System.out.println(b.getSyntax());
                }
            */
        }
    };

    public static class PrintBean {


        // This also does the same thing
        public void print(String msg)
        {
                System.out.println(msg);
        }
    }

}

Пока я отправляю ловушку, ловушка отправляется успешно.Но я не могу попасть в myProcessor.

...