summaryrefslogtreecommitdiffstats
path: root/src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java')
-rw-r--r--src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java b/src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java
new file mode 100644
index 00000000..55659d3c
--- /dev/null
+++ b/src/org.gluster.storage.management.core/src/org/gluster/storage/management/core/utils/ValidationUtil.java
@@ -0,0 +1,95 @@
+package org.gluster.storage.management.core.utils;
+
+import java.util.regex.Pattern;
+
+public class ValidationUtil {
+
+ // Access control may contains IP with wild card(*), hostname and/or multiple ip/hostnames
+ public static boolean isValidAccessControl(String ac) {
+ String access[] = ac.split(",");
+ String ip;
+ boolean isValidAccessControl = true;
+ for (int i = 0; i < access.length && isValidAccessControl; i++) {
+ ip = access[i].trim();
+ isValidAccessControl = (isValidIpWithWC(ip) || isValidHostName(ip));
+ }
+ return isValidAccessControl;
+ }
+
+ public static String getInvalidIpOrHostname(String ac) {
+ String access[] = ac.split(",");
+ String ip;
+ boolean isValidAccessControl = true;
+ for (int i = 0; i < access.length && isValidAccessControl; i++) {
+ ip = access[i].trim();
+ if (!(isValidIpWithWC(ip) || isValidHostName(ip))) {
+ return access[i];
+ }
+ }
+ return "";
+ }
+
+ public static boolean isValidIpWithWC(String ip) {
+ String ipAddress[] = ip.split("\\.");
+ boolean isValid = true;
+
+ if (ip.equals("0.0.0.0") || ip.equals("255.255.255.255")) { // Invalidate the special ip's
+ isValid = false;
+ }
+
+ int iterator=ipAddress.length-1;
+
+ if (ipAddress.length <= 4 && ipAddress[ipAddress.length - 1].equals("*")) {
+ iterator = ipAddress.length - 2;
+ } else if (ipAddress.length < 4 || ipAddress.length > 4 ){
+ isValid = false;
+ iterator = ipAddress.length - 1;
+ }
+
+ for (int i = 0; i <= iterator && isValid; i++) {
+ if (ipAddress[i].equals("*")) {
+ isValid = (i == ipAddress.length - 1) ? isValid : false;
+ } else {
+ isValid = isValidIpQuad(ipAddress[i]);
+ }
+ }
+ return isValid;
+ }
+
+ public static boolean isValidIp(String ip) {
+ String ipAddress[] = ip.split("\\.");
+ boolean isValid = true;
+
+ if (ip.equals("0.0.0.0") || ip.equals("255.255.255.255")) { // Invalidate the special ip's
+ isValid = false;
+ }
+ if (ipAddress.length < 4) {
+ isValid = false;
+ }
+ for (int i = 0; i < ipAddress.length && isValid; i++) {
+ isValid = isValidIpQuad(ipAddress[i]);
+ }
+ return isValid;
+ }
+
+ private static boolean isValidIpQuad(String ipQuad) {
+ Pattern pattern = Pattern.compile("([01]?\\d\\d?|2[0-4]\\d|25[0-5])");
+ return pattern.matcher(ipQuad).matches();
+ }
+
+ public static boolean isValidHostName(String hostName) {
+ Pattern pattern = Pattern
+ .compile("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$");
+ return pattern.matcher(hostName).matches();
+ }
+
+ public static void main(String[] argv) {
+ String ip = "0.0.0.0";
+ // System.out.println("Is valid ip (" + ip + ")? " + isValidIp(ip));
+ String hostName = "myhost.q";
+ // System.out.println(isValidHostName(hostName));
+ // System.out.println(isValidHostName(hostName));
+ System.out.println(isValidAccessControl(hostName));
+ }
+
+}