/* * Copyright (c) 2009 Manuel Traut and Volker Dahnke * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: Manuel Traut and Volker Dahnke */ package YalpAuth.YalpPGSqlAuth; import YalpInterfaces.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; import org.omg.PortableServer.POA; /* * Class PGSqlAuth * * Postgre SQL database connection * * @author Volker Dahnke / Manuel Traut * * @version 2.1 2009-11-21
*/ public class PGSqlAuth { private static ORB orb; private static POA poa; private static YalpAuthPluginImpl psql; private static AuthPluginInterface authPlugin; private static ServerControlInterface srvCon; private static PluginInfo pluginInfo; public PGSqlAuth(String[] argv) { pluginInfo = new PluginInfo(); pluginInfo.name = "Postgre SQL Auth Plugin"; pluginInfo.description = "provides Postgre SQL database based user authentification"; pluginInfo.type = PluginType.AUTH_PLUGIN; // pluginInfo.supportedTypes = new MediaType[]; try { this.orb = ORB.init(argv, null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); } catch(Exception e) { /* t.b.d. error handling */ System.out.println("couldn't host plugin implementation"); } try { poa.the_POAManager().activate(); } catch(org.omg.PortableServer.POAManagerPackage.AdapterInactive e) { /* t.b.d. error handling */ System.out.println("poa inactive"); } YalpErrorHolder err = new YalpErrorHolder(); try { org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = "YALP_Server"; srvCon = ServerControlInterfaceHelper.narrow(ncRef.resolve_str(name)); } catch (Exception e) { System.out.println("Couldn't connect to YALP Server"); System.exit(0); } psql = new YalpAuthPluginImpl(); psql.setORB(orb); try { poa.activate_object(psql); org.omg.CORBA.Object ref = poa.servant_to_reference(psql); authPlugin = AuthPluginInterfaceHelper.narrow(ref); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = "YALP_Postgre_SQL_Auth"; NameComponent path[] = ncRef.to_name(name); ncRef.rebind(path, authPlugin); PluginInfoHolder tmp = new PluginInfoHolder(pluginInfo); srvCon.ping(err); System.out.println(err.value.descr); srvCon.registerAuthPlugin(authPlugin, tmp, err ); pluginInfo = tmp.value; if(err.value.code != YalpErrorCode.OK) { System.out.println("registring authplugin failed"); return; } psql.setInfo(pluginInfo); System.out.println("auth plugin registered"); orb.run(); } catch (Exception e) { System.out.println("binding plugin failed 1"); e.printStackTrace(); System.exit(0); } } }