You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
5.1 KiB
147 lines
5.1 KiB
package gov.nist.javax.sip;
|
|
|
|
import gov.nist.core.net.AddressResolver;
|
|
import gov.nist.javax.sip.clientauthutils.AccountManager;
|
|
import gov.nist.javax.sip.clientauthutils.AuthenticationHelper;
|
|
import gov.nist.javax.sip.clientauthutils.SecureAccountManager;
|
|
import gov.nist.javax.sip.header.extensions.JoinHeader;
|
|
import gov.nist.javax.sip.header.extensions.ReplacesHeader;
|
|
|
|
import java.io.IOException;
|
|
import java.net.InetAddress;
|
|
import java.net.SocketAddress;
|
|
import java.util.Collection;
|
|
|
|
import javax.sip.Dialog;
|
|
import javax.sip.SipStack;
|
|
import javax.sip.header.HeaderFactory;
|
|
|
|
/**
|
|
* SIP Stack extensions to be added to the next spec revision. Only these may be safely used in
|
|
* the interim between now and the next release. SipStackImpl implements this interface.
|
|
*
|
|
* The following new stack initialization flags are defined (not the gov.nist prefix will be
|
|
* dropped when the spec is updated):
|
|
*
|
|
* <ul>
|
|
*<li>gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING
|
|
*<li>gov.nist.javax.sip.IS_BACK_TO_BACK_USER_AGENT
|
|
*<li>gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG
|
|
*<li>gov.nist.javax.sip.MAX_FORK_TIME_SECONDS
|
|
* </ul>
|
|
* @author M. Ranganathan
|
|
*
|
|
*/
|
|
public interface SipStackExt extends SipStack {
|
|
|
|
/**
|
|
* Get the collection of dialogs currently in the Dialog table. This is useful for debugging
|
|
* purposes.
|
|
*
|
|
*/
|
|
public Collection<Dialog> getDialogs();
|
|
|
|
/**
|
|
* Get the ReferedTo dialog in the Replaces header.
|
|
*
|
|
* @return Dialog object matching the Replaces header, provided it is in an appropriate state
|
|
* to be replaced, <code>null</code> otherwise
|
|
*
|
|
* @since 2.0
|
|
*/
|
|
public Dialog getReplacesDialog(ReplacesHeader replacesHeader);
|
|
|
|
/**
|
|
* Get the authentication helper.
|
|
*
|
|
*
|
|
* @param accountManager -- account manager (for fetching credentials).
|
|
* @param headerFactory -- header factory.
|
|
*
|
|
* @return - the authentication helper which can be used for generating the appropriate
|
|
* headers for handling authentication challenges for user agents.
|
|
*
|
|
* @since 2.0
|
|
*/
|
|
public AuthenticationHelper getAuthenticationHelper(AccountManager accountManager,
|
|
HeaderFactory headerFactory);
|
|
|
|
/**
|
|
* Get the authentication helper.
|
|
*
|
|
*
|
|
* @param accountManager -- account manager (for fetching credentials).
|
|
* @param headerFactory -- header factory.
|
|
*
|
|
* @return - the authentication helper which can be used for generating the appropriate
|
|
* headers for handling authentication challenges for user agents.
|
|
*
|
|
* @since 2.0
|
|
*/
|
|
public AuthenticationHelper getSecureAuthenticationHelper(SecureAccountManager accountManager,
|
|
HeaderFactory headerFactory);
|
|
|
|
/**
|
|
* Set the address resolution interface. The address resolver allows you to register custom
|
|
* lookup schemes ( for example DNS SRV lookup ) that are not directly supported by the JDK.
|
|
*
|
|
* @param addressResolver -- the address resolver to set.
|
|
*
|
|
* @since 2.0
|
|
*/
|
|
public void setAddressResolver(AddressResolver addressResolver);
|
|
|
|
/**
|
|
* Get the dialog in the Join header.
|
|
*
|
|
* @return Dialog object matching the Join header, provided it is in an appropriate state to
|
|
* be replaced, <code>null</code> otherwise
|
|
*
|
|
* @since 2.0
|
|
*/
|
|
public Dialog getJoinDialog(JoinHeader joinHeader);
|
|
|
|
/**
|
|
* Set the list of cipher suites supported by the stack. A stack can have only one set of
|
|
* suites. These are not validated against the supported cipher suites of the java runtime, so
|
|
* specifying a cipher here does not guarantee that it will work.<br>
|
|
* The stack has a default cipher suite of:
|
|
* <ul>
|
|
* <li> TLS_RSA_WITH_AES_128_CBC_SHA </li>
|
|
* <li> SSL_RSA_WITH_3DES_EDE_CBC_SHA </li>
|
|
* <li> TLS_DH_anon_WITH_AES_128_CBC_SHA </li>
|
|
* <li> SSL_DH_anon_WITH_3DES_EDE_CBC_SHA </li>
|
|
* </ul>
|
|
*
|
|
* <b>NOTE: This function must be called before adding a TLS listener</b>
|
|
*
|
|
* @since 2.0
|
|
* @param newCipherSuites -- The new set of ciphers to support.
|
|
*
|
|
*/
|
|
public void setEnabledCipherSuites(String[] newCipherSuites);
|
|
|
|
/**
|
|
* Creates and binds, if necessary, a TCP socket connected to the specified
|
|
* destination address and port and then returns its local address.
|
|
*
|
|
* @param dst the destination address that the socket would need to connect
|
|
* to.
|
|
* @param dstPort the port number that the connection would be established
|
|
* with.
|
|
* @param localAddress the address that we would like to bind on
|
|
* (null for the "any" address).
|
|
* @param localPort the port that we'd like our socket to bind to (0 for a
|
|
* random port).
|
|
*
|
|
* @return the SocketAddress that this handler would use when connecting to
|
|
* the specified destination address and port.
|
|
*
|
|
* @throws IOException
|
|
*/
|
|
public SocketAddress obtainLocalAddress(InetAddress dst, int dstPort,
|
|
InetAddress localAddress, int localPort)
|
|
throws IOException;
|
|
|
|
}
|