/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.protocol.irc; import java.net.*; /** * Basic implementation of ClientConfig. * * <p> * The implementation of ClientConfig enables advanced options by default. * Options can be disabled at will. * </p> * * @author Danny van Heumen */ public class ClientConfigImpl implements ClientConfig { /** * Allow IRC version 3 capabilities. */ private boolean version3Allowed = true; /** * Contact presence periodic task enable flag. */ private boolean contactPresenceTaskEnabled = true; /** * Channel presence periodic task enable flag. */ private boolean channelPresenceTaskEnabled = true; /** * The proxy configuration. */ private Proxy proxy = null; /** * Resolve addresses through proxy. */ private boolean resolveByProxy = true; /** * Get SASL authentication data. */ private SASLImpl sasl = null; /** * Get version 3 allowed flag. * * @return returns <tt>true</tt> if allowed, or <tt>false</tt> if not. */ @Override public boolean isVersion3Allowed() { return this.version3Allowed; } /** * Set version 3 allowed. * * @param allowed version 3 allowed */ public void setVersion3Allowed(final boolean allowed) { this.version3Allowed = allowed; } /** * Get current value of contact presence enable flag. * * @return returns <tt>true</tt> if enabled. */ @Override public boolean isContactPresenceTaskEnabled() { return this.contactPresenceTaskEnabled; } /** * Set new value for contact presence enable flag. * * @param value new value for flag */ public void setContactPresenceTaskEnabled(final boolean value) { this.contactPresenceTaskEnabled = value; } /** * Get current value of channel presence enable flag. * * @return returns <tt>true</tt> if enabled. */ @Override public boolean isChannelPresenceTaskEnabled() { return this.channelPresenceTaskEnabled; } /** * Set new value for channel presence enable flag. * * @param value new value for flag */ public void setChannelPresenceTaskEnabled(final boolean value) { this.channelPresenceTaskEnabled = value; } /** * Get the proxy to use connecting to IRC server. * * @return returns proxy configuration or <tt>null</tt> if no proxy should * be used */ @Override public Proxy getProxy() { return this.proxy; } /** * Set a new proxy instance. * * The proxy may be <tt>null</tt> signaling that a proxy connection is not * necessary. * * @param proxy the new proxy instance */ public void setProxy(final Proxy proxy) { this.proxy = proxy; } /** * Get resolve by proxy value. * * @return returns <tt>true</tt> to resolve by proxy, or <tt>false</tt> to * resolve via (local) DNS. */ @Override public boolean isResolveByProxy() { return this.resolveByProxy; } /** * Set resolve by proxy value. Indicates whether or not to use the proxy to * resolve addresses. */ public void setResolveByProxy(final boolean resolveByProxy) { this.resolveByProxy = resolveByProxy; } /** * Get the configured SASL authentication data. * * @return Returns the SASL authentication data if set, or null if no * authentication data is set. If no authentication data is set, * this would mean SASL authentication need not be used. */ @Override public SASL getSASL() { return this.sasl; } /** * Set SASL authentication data. * * @param sasl the SASL authentication data */ public void setSASL(final SASLImpl sasl) { this.sasl = sasl; } /** * Type for storing SASL authentication data. * * @author Danny van Heumen */ public static class SASLImpl implements SASL { /** * User name. */ private final String user; /** * Password. */ private final String pass; /** * Authorization role. */ private final String role; /** * Constructor for authentication without an explicit authorization * role. * * @param userName the user name * @param password the password */ public SASLImpl(final String userName, final String password) { this(userName, password, null); } /** * Constructor for authentication with authorization role. * * @param userName the user name * @param password the password * @param role the authorization role */ public SASLImpl(final String userName, final String password, final String role) { if (userName == null) { throw new NullPointerException("userName"); } this.user = userName; if (password == null) { throw new NullPointerException("password"); } this.pass = password; this.role = role; } /** * Get the user name. * * @return Returns the user name. */ public String getUser() { return this.user; } /** * Get the password. * * @return Returns the password. */ public String getPass() { return this.pass; } /** * Get the authorization role. * * @return Returns the authorization role. */ public String getRole() { return this.role; } } }