From 1fc571e228fd4d483fa82c74c6ea059c7adbfde7 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Sat, 21 Nov 2009 19:13:19 +0100 Subject: Auth: fixed Authentication handling - on server side, iterate through registrated auth plugins for any request - auth pg sql plugin, moved parts of old rmi based code, to new corba layout - remove of plugins not implemented yet - changing user details not implemented yet Signed-off-by: Manuel Traut --- src/YalpServer/ServerControlImpl.java | 138 ++++++++++++++++++++-------------- 1 file changed, 81 insertions(+), 57 deletions(-) (limited to 'src/YalpServer/ServerControlImpl.java') diff --git a/src/YalpServer/ServerControlImpl.java b/src/YalpServer/ServerControlImpl.java index 2470175..f8e4579 100755 --- a/src/YalpServer/ServerControlImpl.java +++ b/src/YalpServer/ServerControlImpl.java @@ -35,34 +35,45 @@ import org.apache.log4j.PropertyConfigurator; * @version 0.6 14-12-2005
* @see client */ -public class ServerControlImpl extends ServerControlInterfacePOA { - +public class ServerControlImpl extends ServerControlInterfacePOA +{ private ORB orb; private InitServer srv; private InputPluginHandler inputHandler; private OutputPluginHandler outputHandler; + private AuthPluginHandler authHandler; + + private ArrayList sessions; + private ArrayList plugin_infos; private String log4jFile = "log4j_server.conf"; private static Logger logger = Logger.getLogger("Yalp.Server.ServerControlImpl"); -public ServerControlImpl() { +public ServerControlImpl() +{ + this.sessions = new ArrayList (); + this.plugin_infos = new ArrayList (); + PropertyConfigurator.configureAndWatch(log4jFile); logger.debug("ServerControlImpl()"); } - public void setORB(ORB _orb) { + public void setORB(ORB _orb) + { logger.debug("setOrb()"); orb = _orb; } - public void init(InitServer _srv) { + public void init(InitServer _srv) + { logger.debug("init()"); srv = _srv; inputHandler = srv.inputHandler; outputHandler = srv.outputHandler; + authHandler = srv.authHandler; } /* @@ -74,40 +85,28 @@ public ServerControlImpl() { * @param session (out) * @param error (out) */ - public void clientLogon( String userName, + public void clientLogon( String name, String password, - String ipAdress, + String ipAddress, SessionHolder session, YalpErrorHolder err ) { logger.debug("clientLogon()"); - /* t.b.d. session managmnet */ - try { - - - System.out.println("logon: "+userName+" - "+ipAdress); - - session.value = new Session(); - session.value.id = 666; - session.value.me = new YalpUser(); - session.value.me.id = 333; - session.value.me.name = userName; - session.value.me.realName = "huhu"; - session.value.me.level = AccessRights.ADMIN; - session.value.ip = "127.0.0.1"; - session.value.availablePlugins = new PluginInfo[0]; - - YalpError error = new YalpError(); - error.code = YalpErrorCode.OK; - error.descr = "no error"; - error.level = YalpErrorLevel.ERROR_LEVEL_DEBUG; - error.msg = ""; - err.value = error; - - } catch (Exception e) { - System.out.println(e.toString()); - } - System.out.println("t.b.d. clientLogon nothing implemented at the moment"); + + YalpError error = new YalpError(); + error.code = YalpErrorCode.OK; + error.descr = "authentication successfull"; + error.msg = "nice isn't it"; + error.level = YalpErrorLevel.ERROR_LEVEL_INFO; + err.value = error; + + session.value = authHandler.logon(name, password, ipAddress, session, err); + + ArrayList all_plugins = new ArrayList(); + + PluginInfo[] t = {}; + session.value.availablePlugins = plugin_infos.toArray(t); + sessions.add(session.value); } /* @@ -116,12 +115,18 @@ public ServerControlImpl() { * @param session * @param error (out) */ - public void clientLogoff( Session bye, YalpErrorHolder err) { + public void clientLogoff( Session bye, YalpErrorHolder err) + { logger.debug("clientLogoff"); - // srv.remClient( bye.ip, bye.me.name ); + YalpError error = new YalpError(); error.code = YalpErrorCode.OK; - err = new YalpErrorHolder(error); + error.descr = "logged out"; + error.msg = "sad isn't it"; + error.level = YalpErrorLevel.ERROR_LEVEL_INFO; + err.value = error; + + sessions.remove(bye); } /* @@ -221,9 +226,8 @@ public ServerControlImpl() { public void registerOutputPlugin( OutputPluginInterface itf, PluginInfoHolder info, YalpErrorHolder err ) { - logger.debug("registerOutputPlugin()"); - /* t.b.d. itf handling */ logger.info("registering output plugin: " + info.value.name ); + OutputPluginInterface outputItf; try { @@ -241,6 +245,7 @@ public ServerControlImpl() { inf = outputHandler.addPlugin( newPlugin ); info.value = inf; + plugin_infos.add( inf ); YalpError error = new YalpError(); error.msg = "plugin registered"; @@ -291,35 +296,32 @@ public ServerControlImpl() { PluginInfoHolder info, YalpErrorHolder err ) { logger.info("registering input plugin: " + info.value.name ); + InputPluginInterface inputItf; + try { inputItf = InputPluginInterfaceHelper.narrow(itf); } catch( Exception e ) { e.printStackTrace(); return; } - logger.debug("create new InputPlugin"); + InputPlugin newPlugin = new InputPlugin(inputItf, info.value); - logger.debug("add new InputPlugin to Handler"); + + PluginInfo inf = new PluginInfo(); + if( newPlugin != null ) - inputHandler.addPlugin( newPlugin ); - logger.debug("error handling"); + inf = inputHandler.addPlugin( newPlugin ); + + info.value = inf; + plugin_infos.add( inf ); + YalpError error = new YalpError(); error.msg = "plugin registered"; error.descr = ""; error.code = YalpErrorCode.OK; error.level = YalpErrorLevel.ERROR_LEVEL_INFO; err.value = error; - PluginInfo inf = new PluginInfo(); - inf.id = 666; - inf.name = info.value.name; - inf.description = info.value.description; - inf.type = info.value.type; - inf.supportedTypes= info.value.supportedTypes; - inf.access = info.value.access; - inf.maxClients = info.value.maxClients; - inf.actClients = info.value.actClients; - info.value = inf; } /* @@ -362,15 +364,37 @@ public ServerControlImpl() { public void registerAuthPlugin( org.omg.CORBA.Object itf, PluginInfoHolder info, YalpErrorHolder err ) { - logger.debug("registerAuthPlugin()"); - /* t.b.d. itf handling */ + logger.info("registering auth plugin: " + info.value.name ); + + AuthPluginInterface authItf; + + try { + authItf = AuthPluginInterfaceHelper.narrow(itf); + } catch( Exception e ) { + e.printStackTrace(); + return; + } + + AuthPlugin newPlugin = new AuthPlugin(authItf, info.value); + + PluginInfo inf = new PluginInfo(); + + if( newPlugin != null ) + inf = authHandler.addPlugin( newPlugin ); + + info.value = inf; + plugin_infos.add (inf); + YalpError error = new YalpError(); + error.msg = "plugin registered"; + error.descr = ""; error.code = YalpErrorCode.OK; - err = new YalpErrorHolder(error); + error.level = YalpErrorLevel.ERROR_LEVEL_INFO; + err.value = error; } /* - * remove input plugin + * remove auth plugin * * @param plugin which should be registered * @param error -- cgit v1.2.3