/** * Copyright (c) 2009--2010 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.manager.kickstart.cobbler; import com.redhat.rhn.common.util.MethodUtil; import com.redhat.rhn.frontend.xmlrpc.util.XMLRPCInvoker; import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.List; import redstone.xmlrpc.XmlRpcFault; /** * * Login to Cobbler's XMLRPC API and get a token * @version $Rev$ */ public class CobblerLoginCommand { private static Logger log = Logger.getLogger(CobblerLoginCommand.class); /** * Call the login method and return the token if valid * @param usernameIn of user wanting to login to cobbler * @param passwordIn of user wanting to login * @return String token */ public String login(String usernameIn, String passwordIn) { XMLRPCInvoker helper = (XMLRPCInvoker) MethodUtil.getClassFromConfig( CobblerXMLRPCHelper.class.getName()); List args = new ArrayList(); args.add(usernameIn); args.add(passwordIn); String retval = null; try { retval = (String) helper.invokeMethod("login", args); } catch (XmlRpcFault e) { log.error("XmlRpcFault while logging in. " + "most likely user doesn't have permissions. ", e); throw new NoCobblerTokenException( "We had an error trying to login.", e); } log.debug("token received from cobbler: " + retval); return retval; } /** * Check to see if the passed in token is still valid from * cobbler's perspective. If it is, return true, else return * false. * * @param token to check * @return boolean indicating validity */ public boolean checkToken(String token) { XMLRPCInvoker helper = (XMLRPCInvoker) MethodUtil.getClassFromConfig( CobblerXMLRPCHelper.class.getName()); List args = new ArrayList(); args.add(token); Boolean retval = null; try { retval = (Boolean) helper.invokeMethod("token_check", args); if (retval == null) { return false; } } catch (XmlRpcFault e) { if (e.getMessage().contains("invalid token")) { return false; } log.error("XmlRpcFault while logging in. " + "most likely user doesn't have permissions. ", e); throw new NoCobblerTokenException( "We errored out trying to check the token.", e); } log.debug("token received from cobbler: " + retval); return retval.booleanValue(); } }