Update aaf client module
[aaf/authz.git] / authz-certman / src / main / java / com / att / authz / cm / service / CertManAPI.java
diff --git a/authz-certman/src/main/java/com/att/authz/cm/service/CertManAPI.java b/authz-certman/src/main/java/com/att/authz/cm/service/CertManAPI.java
deleted file mode 100644 (file)
index adf65ed..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*******************************************************************************\r
- * ============LICENSE_START====================================================\r
- * * org.onap.aaf\r
- * * ===========================================================================\r
- * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
- * * ===========================================================================\r
- * * Licensed under the Apache License, Version 2.0 (the "License");\r
- * * you may not use this file except in compliance with the License.\r
- * * You may obtain a copy of the License at\r
- * * \r
- *  *      http://www.apache.org/licenses/LICENSE-2.0\r
- * * \r
- *  * Unless required by applicable law or agreed to in writing, software\r
- * * distributed under the License is distributed on an "AS IS" BASIS,\r
- * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * * See the License for the specific language governing permissions and\r
- * * limitations under the License.\r
- * * ============LICENSE_END====================================================\r
- * *\r
- * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
- * *\r
- ******************************************************************************/\r
-package com.att.authz.cm.service;\r
-\r
-import java.lang.reflect.Constructor;\r
-import java.util.ArrayList;\r
-import java.util.EnumSet;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-import java.util.TreeMap;\r
-\r
-import com.att.aft.dme2.api.DME2Exception;\r
-//import com.att.aft.dme2.api.DME2FilterHolder;\r
-//import com.att.aft.dme2.api.DME2FilterHolder.RequestDispatcherType;\r
-import com.att.aft.dme2.api.DME2Manager;\r
-import com.att.aft.dme2.api.DME2Server;\r
-import com.att.aft.dme2.api.DME2ServerProperties;\r
-import com.att.aft.dme2.api.DME2ServiceHolder;\r
-import com.att.aft.dme2.api.util.DME2FilterHolder;\r
-import com.att.aft.dme2.api.util.DME2FilterHolder.RequestDispatcherType;\r
-import com.att.aft.dme2.api.util.DME2ServletHolder;\r
-//import com.att.aft.dme2.api.DME2ServletHolder;\r
-import com.att.authz.cm.api.API_Artifact;\r
-import com.att.authz.cm.api.API_Cert;\r
-import com.att.authz.cm.ca.CA;\r
-import com.att.authz.cm.facade.Facade1_0;\r
-import com.att.authz.cm.facade.FacadeFactory;\r
-import com.att.authz.cm.mapper.Mapper.API;\r
-import com.att.authz.env.AuthzEnv;\r
-import com.att.authz.env.AuthzTrans;\r
-import com.att.authz.env.AuthzTransFilter;\r
-import com.att.authz.server.AbsServer;\r
-import com.att.cache.Cache;\r
-import com.att.cache.Cache.Dated;\r
-import com.att.cadi.Access;\r
-import com.att.cadi.Access.Level;\r
-import com.att.cadi.CadiException;\r
-import com.att.cadi.TrustChecker;\r
-import com.att.cadi.aaf.v2_0.AAFAuthn;\r
-import com.att.cadi.aaf.v2_0.AAFCon;\r
-import com.att.cadi.aaf.v2_0.AAFConHttp;\r
-import com.att.cadi.aaf.v2_0.AAFLurPerm;\r
-import com.att.cadi.aaf.v2_0.AAFTrustChecker;\r
-import com.att.cadi.config.Config;\r
-import com.att.cssa.rserv.HttpMethods;\r
-import com.att.inno.env.APIException;\r
-import com.att.inno.env.Data;\r
-import com.att.inno.env.Env;\r
-import com.att.inno.env.Trans;\r
-import com.att.inno.env.util.Split;\r
-\r
-public class CertManAPI extends AbsServer {\r
-\r
-       private static final String USER_PERMS = "userPerms";\r
-       private static final Map<String,CA> certAuths = new TreeMap<String,CA>();\r
-       private static final String AAF_CERTMAN_CA_PREFIX = null;\r
-       public Facade1_0 facade1_0; // this is the default Facade\r
-       public Facade1_0 facade1_0_XML; // this is the XML Facade\r
-       public Map<String, Dated> cacheUser;\r
-       public AAFAuthn<?> aafAuthn;\r
-       public AAFLurPerm aafLurPerm;\r
-\r
-       private String[] EMPTY;\r
-       private AAFCon<?> aafcon;\r
-       \r
-       /**\r
-        * Construct AuthzAPI with all the Context Supporting Routes that Authz needs\r
-        * \r
-        * @param env\r
-        * @param si \r
-        * @param dm \r
-        * @param decryptor \r
-        * @throws APIException \r
-        */\r
-       public CertManAPI(AuthzEnv env) throws Exception {\r
-               super(env,"CertMan");\r
-               env.setLog4JNames("log4j.properties","authz","cm","audit","init","trace");\r
-               \r
-               //aafcon = new AAFConHttp(env);\r
-               \r
-               aafLurPerm = aafcon.newLur();\r
-               // Note: If you need both Authn and Authz construct the following:\r
-               aafAuthn = aafcon.newAuthn(aafLurPerm);\r
-\r
-               String aaf_env = env.getProperty(Config.AAF_ENV);\r
-               if(aaf_env==null) {\r
-                       throw new APIException("aaf_env needs to be set");\r
-               }\r
-               \r
-               // Initialize Facade for all uses\r
-               AuthzTrans trans = env.newTrans();\r
-               \r
-               // Load Supported Certificate Authorities by property \r
-               for(String key : env.existingStaticSlotNames()) {\r
-                       if(key.startsWith(AAF_CERTMAN_CA_PREFIX)) {\r
-                               int idx = key.indexOf('.');\r
-                               String[] params = Split.split(';', env.getProperty(key));\r
-                               if(params.length>1) {\r
-                                       @SuppressWarnings("unchecked")\r
-                                       Class<CA> cac = (Class<CA>)Class.forName((String)params[0]);\r
-                                       Class<?> ptype[] = new Class<?>[params.length+1];\r
-                                       ptype[0]=Trans.class;\r
-                                       ptype[1]=String.class;\r
-                                       Object pinst[] = new Object[params.length+1];\r
-                                       pinst[0]=trans;\r
-                                       pinst[1]= key.substring(idx+1);\r
-                                       for(int i=1;i<params.length;++i) {\r
-                                               idx = i+1;\r
-                                               ptype[idx]=String.class;\r
-                                               pinst[idx]=params[i];\r
-                                       }\r
-                                       Constructor<CA> cons = cac.getConstructor(ptype);\r
-                                       CA ca = cons.newInstance(pinst);\r
-                                       certAuths.put(ca.getName(),ca);\r
-                               }\r
-                       }\r
-               }\r
-               if(certAuths.size()==0) {\r
-                       throw new APIException("No Certificate Authorities have been configured in CertMan");\r
-               }\r
-               \r
-               CMService service = new CMService(trans, this);\r
-               // note: Service knows how to shutdown Cluster on Shutdown, etc.  See Constructor\r
-               facade1_0 = FacadeFactory.v1_0(this,trans, service,Data.TYPE.JSON);   // Default Facade\r
-               facade1_0_XML = FacadeFactory.v1_0(this,trans,service,Data.TYPE.XML); \r
-               \r
-\r
-               synchronized(env) {\r
-                       if(cacheUser == null) {\r
-                               cacheUser = Cache.obtain(USER_PERMS);\r
-                               Cache.startCleansing(env, USER_PERMS);\r
-                               Cache.addShutdownHook(); // Setup Shutdown Hook to close cache\r
-                       }\r
-               }\r
-               \r
-               ////////////////////////////////////////////////////////////////////////////\r
-               // APIs\r
-               ////////////////////////////////////////////////////////////////////////\r
-               API_Cert.init(this);\r
-               API_Artifact.init(this);\r
-               \r
-               StringBuilder sb = new StringBuilder();\r
-               trans.auditTrail(2, sb);\r
-               trans.init().log(sb);\r
-       }\r
-       \r
-       public CA getCA(String key) {\r
-               return certAuths.get(key);\r
-       }\r
-\r
-       public String[] getTrustChain(String key) {\r
-               CA ca = certAuths.get(key);\r
-               if(ca==null) {\r
-                       return EMPTY;\r
-               } else {\r
-                       return ca.getTrustChain();\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Setup XML and JSON implementations for each supported Version type\r
-        * \r
-        * We do this by taking the Code passed in and creating clones of these with the appropriate Facades and properties\r
-        * to do Versions and Content switches\r
-        * \r
-        */\r
-       public void route(HttpMethods meth, String path, API api, Code code) throws Exception {\r
-               String version = "1.0";\r
-               // Get Correct API Class from Mapper\r
-               Class<?> respCls = facade1_0.mapper().getClass(api); \r
-               if(respCls==null) throw new Exception("Unknown class associated with " + api.getClass().getName() + ' ' + api.name());\r
-               // setup Application API HTML ContentTypes for JSON and Route\r
-               String application = applicationJSON(respCls, version);\r
-               route(env,meth,path,code,application,"application/json;version="+version,"*/*");\r
-\r
-               // setup Application API HTML ContentTypes for XML and Route\r
-               application = applicationXML(respCls, version);\r
-               route(env,meth,path,code.clone(facade1_0_XML),application,"application/xml;version="+version);\r
-               \r
-               // Add other Supported APIs here as created\r
-       }\r
-       \r
-       public void routeAll(HttpMethods meth, String path, API api, Code code) throws Exception {\r
-               route(env,meth,path,code,""); // this will always match\r
-       }\r
-\r
-\r
-       /**\r
-        * Start up AuthzAPI as DME2 Service\r
-        * @param env\r
-        * @param props\r
-        * @throws DME2Exception\r
-        * @throws CadiException \r
-        */\r
-       public void startDME2(Properties props) throws DME2Exception, CadiException {\r
-        DME2Manager dme2 = new DME2Manager("AAF Certman DME2Manager", props);\r
-\r
-\r
-        DME2ServiceHolder svcHolder;\r
-        List<DME2ServletHolder> slist = new ArrayList<DME2ServletHolder>();\r
-        svcHolder = new DME2ServiceHolder();\r
-        String serviceName = env.getProperty("DMEServiceName",null);\r
-       if(serviceName!=null) {\r
-               svcHolder.setServiceURI(serviceName);\r
-               svcHolder.setManager(dme2);\r
-               svcHolder.setContext("/");\r
-               \r
-               \r
-               \r
-               DME2ServletHolder srvHolder = new DME2ServletHolder(this, new String[]{"/cert"});\r
-               srvHolder.setContextPath("/*");\r
-               slist.add(srvHolder);\r
-               \r
-               EnumSet<RequestDispatcherType> edlist = EnumSet.of(\r
-                               RequestDispatcherType.REQUEST,\r
-                               RequestDispatcherType.FORWARD,\r
-                               RequestDispatcherType.ASYNC\r
-                               );\r
-\r
-               ///////////////////////\r
-               // Apply Filters\r
-               ///////////////////////\r
-               List<DME2FilterHolder> flist = new ArrayList<DME2FilterHolder>();\r
-               \r
-               // Secure all GUI interactions with AuthzTransFilter\r
-               flist.add(new DME2FilterHolder(\r
-                               new AuthzTransFilter(env,aafcon,TrustChecker.NOTRUST),\r
-                               "/*", edlist));\r
-               \r
-\r
-               svcHolder.setFilters(flist);\r
-               svcHolder.setServletHolders(slist);\r
-               \r
-               DME2Server dme2svr = dme2.getServer();\r
-               DME2ServerProperties dsprops = dme2svr.getServerProperties();\r
-               dsprops.setGracefulShutdownTimeMs(1000);\r
-       \r
-               env.init().log("Starting AAF Certman Jetty/DME2 server...");\r
-               dme2svr.start();\r
-               try {\r
-//                     if(env.getProperty("NO_REGISTER",null)!=null)\r
-                       dme2.bindService(svcHolder);\r
-                       env.init().log("DME2 is available as HTTP"+(dsprops.isSslEnable()?"/S":""),"on port:",dsprops.getPort());\r
-                   while(true) { // Per DME2 Examples...\r
-                       Thread.sleep(5000);\r
-                   }\r
-               } catch(InterruptedException e) {\r
-                   env.init().log("AAF Jetty Server interrupted!");\r
-               } catch(Exception e) { // Error binding service doesn't seem to stop DME2 or Process\r
-                   env.init().log(e,"DME2 Initialization Error");\r
-                       dme2svr.stop();\r
-                       System.exit(1);\r
-               }\r
-       } else {\r
-               env.init().log("Properties must contain DMEServiceName");\r
-       }\r
-       }\r
-\r
-       public static void main(String[] args) {\r
-               setup(CertManAPI.class, "certman.props");\r
-\r
-       }\r
-\r
-}\r