summaryrefslogtreecommitdiff
path: root/src/YalpServer/AuthPluginHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/YalpServer/AuthPluginHandler.java')
-rw-r--r--src/YalpServer/AuthPluginHandler.java58
1 files changed, 58 insertions, 0 deletions
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;
+ }
+}