diff options
Diffstat (limited to 'src/YalpServer')
| -rw-r--r-- | src/YalpServer/AuthPlugin.java | 30 | ||||
| -rw-r--r-- | src/YalpServer/AuthPluginHandler.java | 58 | ||||
| -rwxr-xr-x | src/YalpServer/InitServer.java | 1 | ||||
| -rwxr-xr-x | src/YalpServer/ServerControlImpl.java | 138 |
4 files changed, 170 insertions, 57 deletions
diff --git a/src/YalpServer/AuthPlugin.java b/src/YalpServer/AuthPlugin.java new file mode 100644 index 0000000..4c505e3 --- /dev/null +++ b/src/YalpServer/AuthPlugin.java @@ -0,0 +1,30 @@ +package YalpServer; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +import YalpInterfaces.*; + +public class AuthPlugin { + + private String log4jFile = "log4j_server.conf"; + + public AuthPluginInterface itf; + public PluginInfo info; + + private static Logger logger = + Logger.getLogger("Yalp.Server.AuthPlugin"); + + public AuthPlugin() { + PropertyConfigurator.configureAndWatch(log4jFile); + logger.debug("AuthPlugin()"); + } + + public AuthPlugin(AuthPluginInterface _itf, PluginInfo _info) { + PropertyConfigurator.configureAndWatch(log4jFile); + logger.debug("AuthPlugin("+_info.name+")"); + info = _info; + itf = _itf; + } + +} diff --git a/src/YalpServer/AuthPluginHandler.java b/src/YalpServer/AuthPluginHandler.java new file mode 100644 index 0000000..1011b69 --- /dev/null +++ b/src/YalpServer/AuthPluginHandler.java @@ -0,0 +1,58 @@ +package YalpServer; + +import java.util.ArrayList; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +import YalpInterfaces.*; + +public class AuthPluginHandler { + + private ArrayList<AuthPlugin> plugins; + private static int auth_ids = 0; + + private String log4jFile = "log4j_server.conf"; + + private static Logger logger = + Logger.getLogger("Yalp.Server.AuthPluginHandler"); + + public AuthPluginHandler() { + PropertyConfigurator.configureAndWatch(log4jFile); + logger.debug("AuthPluginHandler()"); + plugins = new ArrayList<AuthPlugin>(); + } + + public PluginInfo addPlugin(AuthPlugin plugin) + { + logger.debug("addPlugin("+plugin.info.name+")"); + plugin.info.id = auth_ids++; + plugins.add(plugin); + return plugin.info; + } + + Session logon( String userName, + String password, + String ipAddress, + SessionHolder session, + YalpErrorHolder err ) + { + YalpUserHolder user = new YalpUserHolder(); + PluginInfo[] p = {}; + + for (AuthPlugin plugin : plugins) + { + plugin.itf.userVerify(userName, password, err, user); + if (err.value.code == YalpErrorCode.OK) + { + session.value = new Session (auth_ids++, user.value, ipAddress, p); + return session.value; + } + } + + /* user not accepted return dummy objects (null causes segfault in corba) */ + YalpUser no_user = new YalpUser(-1, "", "", AccessRights.DENY); + Session s = new Session (-1, no_user, "0.0.0.0", p); + return s; + } +} diff --git a/src/YalpServer/InitServer.java b/src/YalpServer/InitServer.java index 387d23a..850c5bc 100755 --- a/src/YalpServer/InitServer.java +++ b/src/YalpServer/InitServer.java @@ -54,6 +54,7 @@ public class InitServer { private static ServerSettings settings = new ServerSettings(); public static InputPluginHandler inputHandler = new InputPluginHandler(); public static OutputPluginHandler outputHandler = new OutputPluginHandler(); + public static AuthPluginHandler authHandler = new AuthPluginHandler(); private ServerControlImpl srvCon; private ServerControlInterface srv; 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<br>
* @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<Session> sessions;
+ private ArrayList<PluginInfo> 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<Session> ();
+ this.plugin_infos = new ArrayList<PluginInfo> ();
+
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<PluginInfo> all_plugins = new ArrayList<PluginInfo>();
+
+ 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
|
