diff options
Diffstat (limited to 'src/YalpServer/AuthPluginHandler.java')
| -rw-r--r-- | src/YalpServer/AuthPluginHandler.java | 58 |
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; + } +} |
