Merge "Sonar fix: Perm.java"
[aaf/authz.git] / auth / auth-certman / src / main / java / org / onap / aaf / auth / cm / validation / CertmanValidator.java
index ea97dd0..5835b31 100644 (file)
@@ -22,6 +22,7 @@
 package org.onap.aaf.auth.cm.validation;
 
 import java.util.List;
+import java.util.regex.Pattern;
 
 import org.onap.aaf.auth.dao.cass.ArtiDAO;
 import org.onap.aaf.auth.dao.cass.ArtiDAO.Data;
@@ -47,15 +48,21 @@ public class CertmanValidator extends Validator{
     private static final String MUST_HAVE_AT_LEAST = " must have at least ";
     private static final String IS_NULL = " is null.";
     private static final String ARTIFACTS_MUST_HAVE_AT_LEAST = "Artifacts must have at least ";
-
+       private static final Pattern ALPHA_NUM = Pattern.compile("[a-zA-Z0-9]*");
+       
+       private static boolean disallowTmp = true;
+       public static void allowTmp() {
+               disallowTmp=false;
+       }
+       
     public CertmanValidator nullBlankMin(String name, List<String> list, int min) {
-        if(list==null) {
+        if (list==null) {
             msg(name + IS_NULL);
         } else {
-            if(list.size()<min) {
+            if (list.size()<min) {
                 msg(name + MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));
             } else {
-                for(String s : list) {
+                for (String s : list) {
                     nullOrBlank("List Item",s);
                 }
             }
@@ -64,38 +71,25 @@ public class CertmanValidator extends Validator{
     }
 
     public CertmanValidator artisRequired(List<ArtiDAO.Data> list, int min) {
-        if(list==null) {
+        if (list==null) {
             msg(ARTIFACT_LIST_IS_NULL);
         } else {
-            if(list.size()<min) {
+            if (list.size()<min) {
                 msg(ARTIFACTS_MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));
             } else {
-                for(ArtiDAO.Data a : list) {
+                for (ArtiDAO.Data a : list) {
                     allRequired(a);
+                    if(disallowTmp && a.dir!=null && a.dir.startsWith("/tmp")) {
+                       msg("Certificates may not be deployed into /tmp directory (they will be removed at a random time by O/S)");
+                    }
                 }
             }
         }
         return this;
     }
 
-    public CertmanValidator artisKeys(List<ArtiDAO.Data> list, int min) {
-        if(list==null) {
-            msg(ARTIFACT_LIST_IS_NULL);
-        } else {
-            if(list.size()<min) {
-                msg(ARTIFACTS_MUST_HAVE_AT_LEAST + min + ENTR + (min==1?Y:IES));
-            } else {
-                for(ArtiDAO.Data a : list) {
-                    keys(a);
-                }
-            }
-        }
-        return this;
-    }
-
-
     public CertmanValidator keys(ArtiDAO.Data add) {
-        if(add==null) {
+        if (add==null) {
             msg("Artifact is null.");
         } else {
             nullOrBlank(MECHID, add.mechid);
@@ -105,14 +99,15 @@ public class CertmanValidator extends Validator{
     }
     
     private CertmanValidator allRequired(Data a) {
-        if(a==null) {
+        if (a==null) {
             msg("Artifact is null.");
         } else {
             nullOrBlank(MECHID, a.mechid);
             nullOrBlank(MACHINE, a.machine);
             nullOrBlank("ca",a.ca);
             nullOrBlank("dir",a.dir);
-            nullOrBlank("os_user",a.os_user);
+               match("NS must be dot separated AlphaNumeric",a.ns,NAME_CHARS);
+            match("O/S User must be AlphaNumeric",a.os_user,ALPHA_NUM);
             // Note: AppName, Notify & Sponsor are currently not required
         }
         return this;