Add ability for BAuth by domain
[aaf/authz.git] / cadi / aaf / src / main / java / org / onap / aaf / cadi / sso / AAFSSO.java
index 522568a..f2fb705 100644 (file)
@@ -69,20 +69,28 @@ public class AAFSSO {
        private boolean ok;
 
        public AAFSSO(String[] args) throws IOException, CadiException {
+               this(args,new Properties());
+       }
+       
+       public AAFSSO(String[] args, ProcessArgs pa) throws IOException, CadiException {
+               this(args,pa.process(args, new Properties()));
+       }
+
+       public AAFSSO(String[] args, Properties dp) throws IOException, CadiException {
+               stdOutOrig = System.out;
+               stdErrOrig = System.err;
                ok = true;
                List<String> nargs = parseArgs(args);
-               diskprops = new Properties();
+               diskprops = dp;
                touchDiskprops = false;
 
                dot_aaf = new File(System.getProperty("user.home") + "/.aaf");
                if (!dot_aaf.exists()) {
                        dot_aaf.mkdirs();
                }
-               stdOutOrig = System.out;
-               stdErrOrig = System.err;
                File f = new File(dot_aaf, "sso.out");
                os = new PrintStream(new FileOutputStream(f, true));
-               System.setOut(os);
+               //System.setOut(os);
                System.setErr(os);
 
                sso = new File(dot_aaf, "sso.props");
@@ -95,11 +103,6 @@ public class AAFSSO {
                        }
                }
                
-//             String keyfile = diskprops.getProperty(Config.CADI_KEYFILE);
-//             if(keyfile==null) {
-//                     keyfile = dot_aaf.getCanonicalPath()+".keyfile";
-//                     touchDiskprops=true;
-//             }
                File dot_aaf_kf = new File(dot_aaf, "keyfile");
 
                if (removeSSO) {
@@ -179,6 +182,13 @@ public class AAFSSO {
                                appID=null;
                        }
                        
+                       if(appID!=null && access.getProperty(Config.AAF_APPPASS)==null) {
+                               char[] password = cons.readPassword("Password for %s: ", appID);
+                               String app_pass = access.encrypt(new String(password));
+                               access.setProperty(Config.AAF_APPPASS,app_pass);
+                               diskprops.setProperty(Config.AAF_APPPASS, app_pass);
+                       }
+                       
                        String keystore=access.getProperty(Config.CADI_KEYSTORE);
                        String keystore_pass=access.getProperty(Config.CADI_KEYSTORE_PASSWORD);
                        
@@ -188,6 +198,7 @@ public class AAFSSO {
                                for (File tsf : dot_aaf.listFiles()) {
                                        name = tsf.getName();
                                        if (!name.contains("trust") && (name.endsWith(".jks") || name.endsWith(".p12"))) {
+                                               setLogDefault();
                                                select = cons.readLine("Use %s for Identity? (y/n): ",tsf.getName());
                                                if("y".equalsIgnoreCase(select)) {
                                                        keystore = tsf.getCanonicalPath();
@@ -287,22 +298,22 @@ public class AAFSSO {
                        
                        String locateUrl = access.getProperty(Config.AAF_LOCATE_URL);
                        if(locateUrl==null) {
-                               locateUrl=AAFSSO.cons.readLine("AAF Locator FQDN/machine[:port]=https://");
+                               locateUrl=AAFSSO.cons.readLine("AAF Locator URL=https://");
                                if(locateUrl==null || locateUrl.length()==0) {
                                        err = new StringBuilder(Config.AAF_LOCATE_URL);
                                        err.append(" is required.");
                                        ok = false;
                                        return;
                                } else {
-                                       locateUrl="https://"+locateUrl+"/locate";
+                                       locateUrl="https://"+locateUrl;
                                }
                                access.setProperty(Config.AAF_LOCATE_URL, locateUrl);
                                addProp(Config.AAF_LOCATE_URL, locateUrl);
                        }
                        
-                       String aafUrl = "https://AAF_LOCATE_URL/AAF_NS.service/2.0";
+                       String aafUrl = "https://AAF_LOCATE_URL/AAF_NS.service:2.0";
                        access.setProperty(Config.AAF_URL, aafUrl);
-                       access.setProperty(Config.CM_URL, "https://AAF_LOCATE_URL/AAF_NS.cm/2.0");
+                       access.setProperty(Config.CM_URL, "https://AAF_LOCATE_URL/AAF_NS.cm:2.0");
                        String cadiLatitude = access.getProperty(Config.CADI_LATITUDE);
                        if(cadiLatitude==null) {
                                System.out.println("# If you do not know your Global Coordinates, we suggest bing.com/maps");
@@ -366,7 +377,7 @@ public class AAFSSO {
 
        public void setStdErrDefault() {
                access.setLogLevel(PropAccess.DEFAULT);
-               System.setOut(stdErrOrig);
+               System.setErr(stdErrOrig);
        }
 
        public void setLogDefault(Level level) {
@@ -475,4 +486,8 @@ public class AAFSSO {
        public boolean ok() {
                return ok;
        }
+       
+       public static interface ProcessArgs {
+               public Properties process(final String[] args, final Properties props);
+       }
 }