/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.notification.common; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import com.rabbitmq.client.SaslConfig; import com.rabbitmq.client.SaslMechanism; import com.rabbitmq.client.impl.ExternalMechanism; import com.rabbitmq.client.impl.PlainMechanism; /** * Implementation to allow the ANONYMOUS auth mechanism * * @author Xandros * */ public class CustomSaslConfig implements SaslConfig { private final String[] mechanisms; public static final CustomSaslConfig PLAIN = new CustomSaslConfig("PLAIN"); public static final CustomSaslConfig EXTERNAL = new CustomSaslConfig("EXTERNAL"); public static final CustomSaslConfig ANONYMOUS = new CustomSaslConfig("ANONYMOUS"); public CustomSaslConfig() { this.mechanisms = new String[] { "PLAIN", "EXTERNAL", "ANONYMOUS" }; } private CustomSaslConfig(String mechanism) { this.mechanisms = new String[] { mechanism }; } @Override public SaslMechanism getSaslMechanism(String[] serverMechanisms) { Set<String> server = new HashSet<String>(Arrays.asList(serverMechanisms)); for (String m : mechanisms) { if (server.contains(m)) { if (m.equals("PLAIN")) { return new PlainMechanism(); } else if (m.equals("EXTERNAL")) { return new ExternalMechanism(); } else if (m.equals("ANONYMOUS")) { return new AnonymousMechanism(); } } } return null; } }