/* * Copyright 2006-2010 Daniel Henninger. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */ package net.sf.kraken.web; import redstone.xmlrpc.XmlRpcServlet; import org.jivesoftware.admin.AuthCheckFilter; import org.jivesoftware.util.PropertyEventListener; import org.jivesoftware.util.PropertyEventDispatcher; import org.apache.log4j.Logger; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletException; /** * @author Daniel Henninger */ @SuppressWarnings("serial") public class GatewayXMLRPC extends XmlRpcServlet implements PropertyEventListener { static Logger Log = Logger.getLogger(GatewayXMLRPC.class); XMLRPCConduit conduit; @Override public void init(ServletConfig servletConfig) { try { super.init(servletConfig); conduit = new XMLRPCConduit(); PropertyEventDispatcher.addListener(this); this.getXmlRpcServer().addInvocationHandler("Manager", conduit); AuthCheckFilter.addExclude("kraken/xml-rpc"); } catch (ServletException e) { Log.error("Error while loading XMLRPC servlet: ", e); } } @Override public void destroy() { AuthCheckFilter.removeExclude("kraken/xml-rpc"); PropertyEventDispatcher.removeListener(this); conduit = null; } public void propertySet(String property, Map<String, Object> params) { if (property.equals("plugin.gateway.xmlrpc.password") && conduit != null) { conduit.authPassword = (String)params.get("value"); } } public void propertyDeleted(String property, Map<String, Object> params) { if (property.equals("plugin.gateway.xmlrpc.password") && conduit != null) { conduit.authPassword = null; } } public void xmlPropertySet(String property, Map<String, Object> params) { propertySet(property, params); } public void xmlPropertyDeleted(String property, Map<String, Object> params) { propertyDeleted(property, params); } }