From 9c8a8b0926b13b07fb1e5394903401e7a3f1ff79 Mon Sep 17 00:00:00 2001 From: Instrumental Date: Mon, 16 Jul 2018 18:41:10 -0500 Subject: Changes from Testing AAF Config Issue-ID: AAF-378 Change-Id: Icca28ee4e76b8329c7e068ba9305f9f647b6e479 Signed-off-by: Instrumental --- .../java/org/onap/aaf/cadi/configure/Agent.java | 181 +++++++++++---------- .../onap/aaf/cadi/register/RemoteRegistrant.java | 2 +- .../main/java/org/onap/aaf/cadi/config/Config.java | 3 +- 3 files changed, 94 insertions(+), 92 deletions(-) (limited to 'cadi') diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/configure/Agent.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/configure/Agent.java index a86649db..7f1b0cf6 100644 --- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/configure/Agent.java +++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/configure/Agent.java @@ -35,14 +35,17 @@ import java.security.KeyPair; import java.security.KeyStore; import java.security.cert.X509Certificate; import java.util.ArrayDeque; +import java.util.Arrays; import java.util.Date; import java.util.Deque; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; +import java.util.TreeMap; import org.onap.aaf.cadi.CadiException; import org.onap.aaf.cadi.CmdLine; @@ -754,7 +757,7 @@ public class Agent { psProps.print("# Configuration File generated on "); psProps.println(new Date().toString()); psProps.println(HASHES); - for(String tag : new String[] {Config.CADI_LATITUDE,Config.CADI_LONGITUDE}) { + for(String tag : LOC_TAGS) { psProps.print(tag); psProps.print('='); psProps.println(getProperty(pa, trans, false, tag, "%s: ",tag)); @@ -788,19 +791,14 @@ public class Agent { if(!fkf.exists()) { CmdLine.main(new String[] {"keygen",fkf.toString()}); } - psCredProps.print("cadi_keyfile="); - psCredProps.println(fkf.getCanonicalPath()); - - psCredProps.print(Config.AAF_APPID); - psCredProps.print('='); - psCredProps.println(fqi); - Symm filesymm = Symm.obtain(fkf); - psCredProps.print(Config.AAF_APPPASS); - psCredProps.print("=enc:"); - String ps = pa.decrypt(pa.getProperty(Config.AAF_APPPASS), false); - ps = filesymm.enpass(ps); - psCredProps.println(ps); + Map normal = new TreeMap<>(); + Map creds = new TreeMap<>(); + + directedPut(pa, filesymm, normal,creds, Config.CADI_KEYFILE, fkf.getCanonicalPath()); + directedPut(pa, filesymm, normal,creds, Config.AAF_APPID,fqi); + directedPut(pa, filesymm, normal,creds, Config.AAF_APPPASS,null); + String cts = pa.getProperty(Config.CADI_TRUSTSTORE); if(cts!=null) { @@ -820,7 +818,7 @@ public class Agent { } } if(!origTruststore.exists()) { - throw new CadiException(cts + "does not exist"); + throw new CadiException(cts + " does not exist"); } } @@ -829,97 +827,73 @@ public class Agent { if(!newTruststore.exists()) { Files.copy(origTruststore.toPath(), newTruststore.toPath()); } - psCredProps.print(Config.CADI_TRUSTSTORE); - psCredProps.print("="); - psCredProps.println(newTruststore.getCanonicalPath()); - - psCredProps.print(Config.CADI_TRUSTSTORE_PASSWORD); - psCredProps.print("=enc:"); - ps = pa.decrypt(pa.getProperty(Config.CADI_TRUSTSTORE_PASSWORD), false); - ps = filesymm.enpass(ps); - psCredProps.println(ps); + + directedPut(pa, filesymm, normal,creds, Config.CADI_TRUSTSTORE,newTruststore.getCanonicalPath()); + directedPut(pa, filesymm, normal,creds, Config.CADI_TRUSTSTORE_PASSWORD,null); } -// String cadi_x509_issuers = pa.getProperty(Config.CADI_X509_ISSUERS); -// if(cadi_x509_issuers!=null) { -// psCredProps.print(Config.CADI_X509_ISSUERS); -// psCredProps.print('='); -// psCredProps.println(cadi_x509_issuers); -// } + if(aafcon!=null) { // get Properties from Remote AAF + final String locator = getProperty(pa,aafcon.env,false,Config.AAF_LOCATE_URL,"AAF Locator URL: "); - - try { - if(aafcon!=null) { // get Properties from Remote AAF - final String locator = getProperty(pa,aafcon.env,false,Config.AAF_LOCATE_URL,"AAF Locator URL: "); - - Future acf = aafcon.client(new SingleEndpointLocator(locator)) - .read("/configure/"+fqi+"/aaf", configDF); - if(acf.get(TIMEOUT)) { - PrintStream pstemp; - for(Props props : acf.value.getProps()) { - if(Config.CADI_X509_ISSUERS.equals(props.getTag())) { - pstemp=psCredProps; - } else { - pstemp = psProps; - } - pstemp.print(props.getTag()); - pstemp.print('='); - pstemp.println(props.getValue()); - } - ok = true; - } else if(acf.code()==401){ - trans.error().log("Bad Password sent to AAF"); - } else { - trans.error().log(errMsg.toMsg(acf)); + Future acf = aafcon.client(new SingleEndpointLocator(locator)) + .read("/configure/"+fqi+"/aaf", configDF); + if(acf.get(TIMEOUT)) { + for(Props props : acf.value.getProps()) { + directedPut(pa, filesymm, normal,creds, props.getTag(),props.getValue()); } + ok = true; + } else if(acf.code()==401){ + trans.error().log("Bad Password sent to AAF"); } else { - String cpf = pa.getProperty(Config.CADI_PROP_FILES); - if(cpf!=null){ - for(String f : Split.split(File.pathSeparatorChar, cpf)) { - System.out.format("Reading %s\n",f); - FileInputStream fis = new FileInputStream(f); - try { - Properties props = new Properties(); - props.load(fis); - PrintStream pstemp; - String key,value; - for(Entry prop : props.entrySet()) { - key = prop.getKey().toString(); - if(Config.CADI_X509_ISSUERS.equals(key)) { - pstemp=psCredProps; - value = prop.getValue().toString(); - } else if(key.endsWith("_password")){ - if(Config.AAF_APPPASS.equals(key) || Config.CADI_TRUSTSTORE_PASSWORD.equals(key)) { - continue; - } - value = "enc:" + filesymm.enpass(prop.getValue().toString()); - pstemp = psCredProps; - } else if(Config.CADI_TRUSTSTORE.equals(key)) { - continue; - } else { - value = prop.getValue().toString(); - pstemp = psProps; - } - pstemp.print(key); - pstemp.print('='); - pstemp.println(value); - } - } finally { - fis.close(); + trans.error().log(errMsg.toMsg(acf)); + } + } else { + String cpf = pa.getProperty(Config.CADI_PROP_FILES); + if(cpf!=null){ + for(String f : Split.split(File.pathSeparatorChar, cpf)) { + System.out.format("Reading %s\n",f); + FileInputStream fis = new FileInputStream(f); + try { + Properties props = new Properties(); + props.load(fis); + for(Entry prop : props.entrySet()) { + directedPut(pa, filesymm, normal,creds, prop.getKey().toString(),prop.getValue().toString()); } + } finally { + fis.close(); } } - ok = true; } - } finally { - psProps.close(); + ok = true; } if(ok) { + for(Entry es : normal.entrySet()) { + psProps.print(es.getKey()); + psProps.print('='); + psProps.println(es.getValue()); + } + + for(Entry es : creds.entrySet()) { + psCredProps.print(es.getKey()); + psCredProps.print('='); + psCredProps.println(es.getValue()); + } + File newFile = new File(dir,rootFile+".props"); + if(newFile.exists()) { + File backup = new File(dir,rootFile+".props.backup"); + newFile.renameTo(backup); + System.out.println("Backed up to " + backup.getCanonicalPath()); + } fProps.renameTo(newFile); System.out.println("Created " + newFile.getCanonicalPath()); fProps = newFile; + if(fSecureProps.exists()) { + File backup = new File(dir,fSecureProps.getName()+".backup"); + fSecureProps.renameTo(backup); + System.out.println("Backed up to " + backup.getCanonicalPath()); + } fSecureTempProps.renameTo(fSecureProps); System.out.println("Created " + fSecureProps.getCanonicalPath()); fProps = newFile; @@ -937,7 +911,36 @@ public class Agent { tt.done(); } } + + private static List CRED_TAGS = Arrays.asList(new String[] { + Config.CADI_KEYFILE, + Config.AAF_APPID, Config.AAF_APPPASS, + Config.CADI_KEYSTORE, Config.CADI_KEYSTORE_PASSWORD, Config.CADI_KEY_PASSWORD, + Config.CADI_TRUSTSTORE,Config.CADI_TRUSTSTORE_PASSWORD, + Config.CADI_ALIAS, Config.CADI_X509_ISSUERS + }); + + private static List LOC_TAGS = Arrays.asList(new String[] {Config.CADI_LATITUDE, Config.CADI_LONGITUDE}); + private static void directedPut(final PropAccess orig, final Symm symm, final Map main, final Map secured, final String tag, final String value) throws IOException { + if(!LOC_TAGS.contains(tag)) { // Location already covered + String val = value==null?orig.getProperty(tag):value; + if(tag.endsWith("_password")) { + if(val.length()>4) { + if(val.startsWith("enc:")) { + val = orig.decrypt(value, true); + } + val = "enc:" + symm.enpass(val); + } + } + if(CRED_TAGS.contains(tag)) { + secured.put(tag, val); + } else { + main.put(tag, val); + } + } + } + private static void validate(final PropAccess pa) throws LocatorException, CadiException, APIException { System.out.println("Validating Configuration..."); final AAFCon aafcon = new AAFConHttp(pa,Config.AAF_URL,new SecurityInfoC(pa)); diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/register/RemoteRegistrant.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/register/RemoteRegistrant.java index bed201aa..b21f8975 100644 --- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/register/RemoteRegistrant.java +++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/register/RemoteRegistrant.java @@ -87,7 +87,7 @@ public class RemoteRegistrant implements Registrant { mep.setPort(port); try { - String hostnameToRegister = access.getProperty(Config.CADI_REGISTRATION_HOSTNAME, null); + String hostnameToRegister = access.getProperty(Config.AAF_REGISTER_AS, null); if(hostnameToRegister==null) { hostnameToRegister = access.getProperty(Config.HOSTNAME, null); } diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java b/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java index b4e31f2f..42c38896 100644 --- a/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java +++ b/cadi/core/src/main/java/org/onap/aaf/cadi/config/Config.java @@ -74,14 +74,12 @@ public class Config { private static final String OAUTH_TOKEN_MGR = OAUTH+".TokenMgr"; private static final String OAUTH_HTTP_TAF = OAUTH+".OAuth2HttpTaf"; private static final String OAUTH_DIRECT_TAF = OAUTH+".OAuthDirectTAF"; - public static final String UTF_8 = "UTF-8"; // Property Names associated with configurations. // As of 1.0.2, these have had the dots removed so as to be compatible with JavaBean style // configurations as well as property list style. public static final String HOSTNAME = "hostname"; - public static final String CADI_REGISTRATION_HOSTNAME = "cadi_registration_hostname"; public static final String CADI_PROP_FILES = "cadi_prop_files"; // Additional Properties files (separate with ;) public static final String CADI_LOGLEVEL = "cadi_loglevel"; public static final String CADI_LOGDIR = "cadi_log_dir"; @@ -142,6 +140,7 @@ public class Config { public static final String AAF_ROOT_COMPANY = "aaf_root_company"; public static final String AAF_LOCATE_URL = "aaf_locate_url"; //URL for AAF locator private static final String AAF_LOCATE_URL_TAG = "AAF_LOCATE_URL"; // Name of Above for use in Config Variables. + public static final String AAF_REGISTER_AS = "aaf_register_as"; public static final String AAF_APPID = "aaf_id"; public static final String AAF_APPPASS = "aaf_password"; public static final String AAF_LUR_CLASS = "aaf_lur_class"; -- cgit 1.2.3-korg