X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fvalidation%2FValidator.java;h=1e40604390c06977c26f6c281d8535668b0bbacc;hb=82755753f41112e1cdd91b2994620ad074dfbf20;hp=de20e476152ede36bddc5bbd36c5a0fbb4405b3b;hpb=f85f0889b3b0e5e9694afab4dd01a4a97a155188;p=aaf%2Fauthz.git diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/validation/Validator.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/validation/Validator.java index de20e476..1e406043 100644 --- a/auth/auth-core/src/main/java/org/onap/aaf/auth/validation/Validator.java +++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/validation/Validator.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -29,183 +29,229 @@ import org.onap.aaf.auth.layer.Result; public class Validator { - private static final String ESSENTIAL = "\\x25\\x28\\x29\\x2C-\\x2E\\x30-\\x39\\x3D\\x40-\\x5A\\x5F\\x61-\\x7A"; - private static final Pattern ESSENTIAL_CHARS = Pattern.compile("["+ESSENTIAL+"]+"); - public static final Pattern ACTION_CHARS = Pattern.compile( - "["+ESSENTIAL+"]+" + // All AlphaNumeric+ - "|\\*" // Just Star - ); - public static final Pattern INST_CHARS = Pattern.compile( - "["+ESSENTIAL+"]+[\\*]*" + // All AlphaNumeric+ possibly ending with * - "|\\*" + // Just Star - "|(([:/]\\*)|([:/][!]{0,1}["+ESSENTIAL+"]+[\\*]*[:/]*))+" // Key :asdf:*:sdf*:sdk - ); - public static final Pattern ID_CHARS = Pattern.compile("[\\w.-]+@[\\w.-]+"); - public static final Pattern NAME_CHARS = Pattern.compile("[\\w.-]+"); - public static final Pattern DESC_CHAR = Pattern.compile("["+ESSENTIAL+"\\x20]+"); - public static List nsKeywords; - protected final Pattern actionChars; - protected final Pattern instChars; - private StringBuilder msgs; - - static { - nsKeywords = new ArrayList<>(); - nsKeywords.add(".access"); - nsKeywords.add(".owner"); - nsKeywords.add(".admin"); - nsKeywords.add(".member"); - nsKeywords.add(".perm"); - nsKeywords.add(".role"); - nsKeywords.add(".ns"); - nsKeywords.add(".cred"); - } - - public Validator() { - actionChars = ACTION_CHARS; - instChars = INST_CHARS; - } - - public final String errs() { - return msgs.toString(); - } - - public final Validator nullOrBlank(String name, String str) { - if(str==null) { - msg(name + " is null."); - } else if(str.length()==0) { - msg(name + " is blank."); - } - return this; - } - - public final Validator isNull(String name, Object o) { - if(o==null) { - msg(name + " is null."); - } - return this; - } - - protected final boolean noMatch(String str, Pattern p) { - return !p.matcher(str).matches(); - } - protected final boolean nob(String str, Pattern p) { - return str==null || !p.matcher(str).matches(); - } - - protected final void msg(String ... strs) { - if(msgs==null) { - msgs=new StringBuilder(); - } - for(String str : strs) { - msgs.append(str); - } - msgs.append('\n'); - } - - public final boolean err() { - return msgs!=null; - } - - public final Validator notOK(Result res) { - if(res==null) { - msgs.append("Result object is blank"); - } else if(res.notOK()) { - msgs.append(res.getClass().getSimpleName() + " is not OK"); - } - return this; - } - - protected Validator intRange(String text, int target, int start, int end) { - if(targetend) { - msg(text + " is out of range (" + start + '-' + end + ')'); - } - return this; - } - - protected Validator floatRange(String text, float target, float start, float end) { - if(targetend) { - msg(text + " is out of range (" + start + '-' + end + ')'); - } - return this; - } - - protected Validator description(String type, String description) { - if(description!=null) { - if(noMatch(description, DESC_CHAR)) { - msg(type + " Description is invalid."); - } - } - return this; - } - - public final Validator permType(String type) { - if(nob(type,NAME_CHARS)) { - msg("Perm Type [" +type + "] is invalid."); - } - return this; - } - - public final Validator permType(String type, String ns) { - if(type==null) { - msg("Perm Type is null"); - } else if(ns==null) { - msg("Perm NS is null"); - } else if(nob(type,NAME_CHARS)) { - msg("Perm Type [" + (ns+(type.length()==0?"":'.'))+type + "] is invalid."); - } - return this; - } - - public final Validator permInstance(String instance) { - if(nob(instance,instChars)) { - msg("Perm Instance [" + instance + "] is invalid."); - } - return this; - } - - public final Validator permAction(String action) { - // TODO check for correct Splits? Type|Instance|Action ? - if(nob(action, actionChars)) { - msg("Perm Action [" + action + "] is invalid."); - } - return this; - } - - public final Validator role(String role) { - if(nob(role, NAME_CHARS)) { - msg("Role [" + role + "] is invalid."); - } - return this; - } - - public final Validator ns(String ns) { - if(ns==null) { - msg("NS is null"); - return this; - } else if(nob(ns,NAME_CHARS)) { - msg("NS [" + ns + "] is invalid."); - } - for(String s : nsKeywords) { - if(ns.endsWith(s)) { - msg("NS [" + ns + "] may not be named with NS keywords"); - break; - } - } - return this; - } - - public final Validator key(String key) { - if(nob(key,NAME_CHARS)) { - msg("NS Prop Key [" + key + "] is invalid"); - } - return this; - } - - public final Validator value(String value) { - if(nob(value,ESSENTIAL_CHARS)) { - msg("NS Prop value [" + value + "] is invalid"); - } - return this; - } + private static final String ESSENTIAL = "\\x25\\x28\\x29\\x2C-\\x2E\\x30-\\x39\\x3D\\x40-\\x5A\\x5F\\x61-\\x7A"; + private static final Pattern ESSENTIAL_CHARS = Pattern.compile("["+ESSENTIAL+"]+"); + public static final Pattern ACTION_CHARS = Pattern.compile( + "["+ESSENTIAL+"]+" + // All AlphaNumeric+ + "|\\*" // Just Star + ); + public static final Pattern INST_CHARS = Pattern.compile( + "["+ESSENTIAL+"]+[\\*]*" + // All AlphaNumeric+ possibly ending with * + "|\\*" + // Just Star + "|(([:/]\\*)|([:/][!]{0,1}["+ESSENTIAL+"]+[\\*]*[:/]*))+" // Key :asdf:*:sdf*:sdk + ); + public static final Pattern ID_CHARS = Pattern.compile("[\\w.-]+@[\\w.-]+"); + public static final Pattern NAME_CHARS = Pattern.compile("[\\w.-]+"); + public static final Pattern DESC_CHAR = Pattern.compile("["+ESSENTIAL+"\\x20]+"); + protected static List nsKeywords; + private final Pattern actionChars; + private final Pattern instChars; + private StringBuilder msgs; + public static final String PERM_TYPE = "Perm Type ["; + public static final String IS_INVALID = "] is invalid."; + public static final String ROLE_STR = "Role ["; + static { + nsKeywords = new ArrayList<>(); + nsKeywords.add(".access"); + nsKeywords.add(".owner"); + nsKeywords.add(".admin"); + nsKeywords.add(".member"); + nsKeywords.add(".perm"); + nsKeywords.add(".role"); + nsKeywords.add(".ns"); + nsKeywords.add(".cred"); + } + + public Validator() { + actionChars = ACTION_CHARS; + instChars = INST_CHARS; + } + + public final String errs() { + return msgs.toString(); + } + + public final Validator nullOrBlank(String name, String str) { + if (str==null) { + msg(name + " is null."); + } else if (str.length()==0) { + msg(name + " is blank."); + } + return this; + } + + public final Validator isNull(String name, Object o) { + if (o==null) { + msg(name + " is null."); + } + return this; + } + + protected final boolean noMatch(String str, Pattern p) { + return str==null || !p.matcher(str).matches(); + } + + protected final void match(String text, String str, Pattern p) { + if(str==null || !p.matcher(str).matches()) { + msg(text); + } + } + + protected final boolean nob(String str, Pattern p) { + return str==null || !p.matcher(str).matches(); + } + + protected final void msg(String ... strs) { + if (msgs==null) { + msgs=new StringBuilder(); + } + for (String str : strs) { + msgs.append(str); + } + msgs.append('\n'); + } + + public final boolean err() { + return msgs!=null; + } + + public final Validator notOK(Result res) { + if (res==null) { + msgs.append("Result object is blank"); + } else if (res.notOK()) { + msgs.append(res.getClass().getSimpleName()).append(" is not OK"); + } + return this; + } + + protected Validator intRange(String text, int target, int start, int end) { + if (targetend) { + msg(text + " is out of range (" + start + '-' + end + ')'); + } + return this; + } + + protected Validator floatRange(String text, float target, float start, float end) { + if (targetend) { + msg(text + " is out of range (" + start + '-' + end + ')'); + } + return this; + } + + protected Validator description(String type, String description) { + if (description != null && noMatch(description, DESC_CHAR)) { + msg(type + " Description is invalid."); + } + return this; + } + + public final Validator permType(String type) { + if (nob(type,NAME_CHARS)) { + msg(PERM_TYPE +type + IS_INVALID); + } + return this; + } + + public final Validator permTypeWithUser(String user, String type) { + if (type==null) { + msg("Perm Type is null"); + } else if (user==null) { + msg("User is null"); + } else { + if(!(type.startsWith(user) && type.endsWith(":id"))) { + if(nob(type,NAME_CHARS)) { + msg(PERM_TYPE + type + IS_INVALID); + } + } + } + return this; + } + + public final Validator permType(String type, String ns) { + if (type==null) { + msg("Perm Type is null"); + } else if (ns==null) { + msg("Perm NS is null"); + } else if (nob(type,NAME_CHARS)) { + msg(PERM_TYPE + (ns+(type.length()==0?"":'.')) + type + IS_INVALID); + } + return this; + } + + public final Validator permInstance(String instance) { + if(!"/".equals(instance) && nob(instance,instChars)) { + msg("Perm Instance [" + instance + IS_INVALID); + } + return this; + } + + public final Validator permAction(String action) { + // TODO check for correct Splits? Type|Instance|Action ? + if (nob(action, actionChars)) { + msg("Perm Action [" + action + IS_INVALID); + } + return this; + } + + public final Validator role(String user, String role) { + boolean quit = false; + if(role==null) { + msg("Role is null"); + quit = true; + } + if(user==null) { + msg("User is null"); + quit = true; + } + if(!quit) { + if(role.startsWith(user) && role.endsWith(":user")) { + if(!(role.length() == user.length() + 5)) { + msg(ROLE_STR + role + IS_INVALID); + } + } else if (nob(role, NAME_CHARS)) { + msg(ROLE_STR + role + IS_INVALID); + } + } + return this; + } + + + public final Validator role(String role) { + if (nob(role, NAME_CHARS)) { + msg(ROLE_STR + role + IS_INVALID); + } + return this; + } + + public final Validator ns(String ns) { + if (ns==null) { + msg("NS is null"); + return this; + } else if (nob(ns,NAME_CHARS)) { + msg("NS [" + ns + IS_INVALID); + } + for (String s : nsKeywords) { + if (ns.endsWith(s)) { + msg("NS [" + ns + "] may not be named with NS keywords"); + break; + } + } + return this; + } + + public final Validator key(String key) { + if (nob(key,NAME_CHARS)) { + msg("NS Prop Key [" + key + "] is invalid"); + } + return this; + } + + public final Validator value(String value) { + if (nob(value,ESSENTIAL_CHARS)) { + msg("NS Prop value [" + value + "] is invalid"); + } + return this; + } + }