/*
* 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.*;
/**
* Configuration type for maintaining client configuration.
*
* @author Danny van Heumen
*/
public interface ClientConfig
{
/**
* Allow IRC version 3 capabilities.
*
* @return returns true if IRC version 3 capabilities are allowed,
* or false if we explicitly disallow anything related to
* IRCv3. (Disabling may regress the connection to "classic" IRC
* (RFC1459).)
*/
boolean isVersion3Allowed();
/**
* Enable contact presence periodic task for keeping track of contact
* presence (offline or online).
*
* @return returns true to use contact presence task or
* false otherwise.
*/
boolean isContactPresenceTaskEnabled();
/**
* Enable channel presence periodic task for keeping track of channel
* members presence (available or away).
*
* @return returns true to use channel presence task or
* false otherwise.
*/
boolean isChannelPresenceTaskEnabled();
/**
* Use a SOCKS proxy to connect to the configured IRC server.
*
* The proxy may be null which means that no proxy will be used
* when connecting to the IRC server.
*
* @return returns Proxy configuration or null if no proxy should
* be used.
*/
Proxy getProxy();
/**
* Resolve addresses through the proxy, instead of using a (local) DNS
* resolver.
*
* @return returns true if addresses should be resolved through
* proxy, or false if it should NOT be resolved through
* proxy
*/
boolean isResolveByProxy();
/**
* 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.
*/
SASL getSASL();
/**
* SASL authentication data.
*
* @author Danny van Heumen
*/
static interface SASL
{
/**
* Get user name.
*
* @return Returns the user name.
*/
String getUser();
/**
* Get password.
*
* @return Returns the password.
*/
String getPass();
/**
* Get authorization role.
*
* @return Returns the authorization role if set. (Optional)
*/
String getRole();
}
}