/* * Jitsi Videobridge, OpenSource video conferencing. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jitsi.jicofo.openfire; import java.io.File; import org.jivesoftware.util.*; import org.jivesoftware.openfire.container.Plugin; import org.jivesoftware.openfire.container.PluginManager; import org.jivesoftware.openfire.XMPPServer; import org.jitsi.jicofo.*; import org.slf4j.*; import org.slf4j.Logger; import org.xmpp.component.*; import org.xmpp.packet.*; /** * SIP gateway for Jitsi Videobridge conferences. */ public class JicofoPlugin { /** * The Log. */ private static final Logger Log = LoggerFactory.getLogger(JicofoPlugin.class); private FocusComponent component; private ComponentManager componentManager; private String subdomain; private File pluginDirectory; public void initializePlugin(ComponentManager componentManager, PluginManager manager, File pluginDirectory) { boolean added = false; this.componentManager = componentManager; try { Log.info("JicofoPlugin - initializePlugin"); this.pluginDirectory = pluginDirectory; String hostName = JiveGlobals.getProperty("org.jitsi.videobridge.nat.harvester.public.address", XMPPServer.getInstance().getServerInfo().getHostname()); String domain = XMPPServer.getInstance().getServerInfo().getXMPPDomain(); String focusUserJid = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.focus.user.jid", "focus@"+domain); String focusUserPassword = JiveGlobals.getProperty("org.jitsi.videobridge.ofmeet.focus.user.password", null); if (focusUserPassword != null) { Log.info("JicofoPlugin - using focus " + focusUserJid + ":" + hostName); System.setProperty("net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED", "true"); System.setProperty(FocusManager.HOSTNAME_PNAME, hostName); System.setProperty(FocusManager.XMPP_DOMAIN_PNAME, domain); System.setProperty(FocusManager.FOCUS_USER_DOMAIN_PNAME, domain); System.setProperty(FocusManager.FOCUS_USER_NAME_PNAME, (new JID(focusUserJid)).getNode()); System.setProperty(FocusManager.FOCUS_USER_PASSWORD_PNAME, focusUserPassword); String subdomain = "ofmeet-focus"; FocusComponent component = new FocusComponent(false); componentManager.addComponent(subdomain, component); added = true; } else { Log.error("Focus user not setup. password missing " + focusUserJid); } } catch (Exception ce) { ce.printStackTrace(System.err); } if (added) { this.componentManager = componentManager; this.subdomain = subdomain; this.component = component; } else { this.componentManager = null; this.subdomain = null; this.component = null; } } public void destroyPlugin() { Log.info("JicofoPlugin - destroyPlugin"); if ((componentManager != null) && (subdomain != null)) { try { component.shutdown(); componentManager.removeComponent(subdomain); } catch (ComponentException ce) { // TODO Auto-generated method stub } componentManager = null; subdomain = null; component = null; } } }