/*
* Jicofo, the Jitsi Conference Focus.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jitsi.jicofo.util;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.jabber.*;
import java.util.*;
/**
* Class contains factory methods for creating <tt>JabberAccountID</tt> used by
* the focus of Jitsi Meet conference.
*
* @author Pawel Domas
*/
public class FocusAccountFactory
{
private FocusAccountFactory(){ }
/**
* Creates focus XMPP account properties configured for given
* <tt>domain</tt> which uses anonymous login method.
*
* @param serverAddress XMPP server address.
* @param domain name of the XMPP domain on which the focus will register.
* @param userName user name used by the focus user.
*
* @return the map of new focus account properties for given domain.
*/
public static Map<String, String> createFocusAccountProperties(
String serverAddress,
String domain,
String userName)
{
HashMap<String, String> properties = new HashMap<String, String>();
String resource = userName + System.nanoTime();
String userID = userName + "@" + domain + "/" + resource;
properties.put(ProtocolProviderFactory.USER_ID, userID);
properties.put(ProtocolProviderFactory.SERVER_ADDRESS, serverAddress);
properties.put(ProtocolProviderFactory.SERVER_PORT, "5222");
// This is used as the multi user chat nick when joining the room
properties.put(
ProtocolProviderFactory.ACCOUNT_DISPLAY_NAME,
userName);
properties.put(ProtocolProviderFactory.RESOURCE,
resource);
properties.put(ProtocolProviderFactory.RESOURCE_PRIORITY, "30");
properties.put(JabberAccountID.ANONYMOUS_AUTH, "true");
properties.put(ProtocolProviderFactory.IS_CARBON_DISABLED, "true");
properties.put(ProtocolProviderFactory.DEFAULT_ENCRYPTION, "true");
properties.put(ProtocolProviderFactory.DEFAULT_SIPZRTP_ATTRIBUTE,
"false");
properties.put("ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP", "true");
properties.put(ProtocolProviderFactory.IS_USE_ICE, "true");
//properties.put(ProtocolProviderFactory.IS_USE_GOOGLE_ICE, "true");
properties.put(ProtocolProviderFactory.IS_ACCOUNT_DISABLED, "false");
properties.put(ProtocolProviderFactory.IS_PREFERRED_PROTOCOL, "false");
properties.put(ProtocolProviderFactory.IS_SERVER_OVERRIDDEN, "false");
properties.put(ProtocolProviderFactory.AUTO_DISCOVER_JINGLE_NODES,
"false");
properties.put(ProtocolProviderFactory.PROTOCOL, ProtocolNames.JABBER);
properties.put(ProtocolProviderFactory.IS_USE_UPNP, "false");
properties.put(ProtocolProviderFactory.USE_DEFAULT_STUN_SERVER, "true");
//FIXME: this is not used, but have to check before remove
properties.put("Encodings.G722/8000","700");
properties.put("Encodings.GSM/8000","0");
properties.put("Encodings.H263-1998/90000","0");
properties.put("Encodings.H264/90000","0");
properties.put("Encodings.PCMA/8000","600");
properties.put("Encodings.PCMU/8000","650");
properties.put("Encodings.SILK/12000","0");
properties.put("Encodings.SILK/16000","0");
properties.put("Encodings.SILK/24000","0");
properties.put("Encodings.SILK/8000","0");
properties.put("Encodings.VP8/90000","100");
properties.put("Encodings.iLBC/8000","10");
properties.put("Encodings.opus/48000","1000");
properties.put("Encodings.red/90000","0");
properties.put("Encodings.speex/16000","0");
properties.put("Encodings.speex/32000","0");
properties.put("Encodings.speex/8000","0");
properties.put("Encodings.telephone-event/8000","0");
properties.put("Encodings.ulpfec/90000","0");
properties.put("G722/8000","0");
properties.put("GSM/8000","0");
properties.put("H263-1998/90000","0");
properties.put("H264/90000","0");
properties.put("OVERRIDE_ENCODINGS","true");
return properties;
}
/**
* Creates focus XMPP account properties configured for given
* <tt>domain</tt> which login as authenticated admin user
* (we expect it to be admin or otherwise focus will refuse to join
* the room).
*
* @param serverAddress XMPP server address.
* @param domain name of the XMPP domain on which the focus will register.
* @param userName the nickname used by the focus in MUC room
* (also used as login name).
* @param password focus user admin password.
*
* @return the map of new focus account properties for given domain.
*/
public static Map<String, String> createFocusAccountProperties(
String serverAddress,
String domain,
String userName,
String password)
{
Map<String, String> properties
= createFocusAccountProperties(
serverAddress, domain, userName);
properties.put(ProtocolProviderFactory.AUTHORIZATION_NAME, userName);
/*String pass = new String(Base64.encode(password.getBytes()));
properties.put(ProtocolProviderFactory.PASSWORD,
pass);*/
properties.put(ProtocolProviderFactory.PASSWORD, password);
properties.put(JabberAccountID.ANONYMOUS_AUTH, "false");
return properties;
}
}