summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.core
diff options
context:
space:
mode:
authorSelvam <selvam@gluster.com>2011-04-08 11:39:32 +0530
committerSelvam <selvam@gluster.com>2011-04-12 14:17:49 +0530
commit491325d013f1b1b5ac033eac4ff8b1d565e669e8 (patch)
tree6e7b67daef46f9f7d99e4997dd6a2329ec2bf504 /src/com.gluster.storage.management.core
parentd4ed073c4d386724e4d0376e296ca84f975c3ad4 (diff)
Volume property page - access control update
Diffstat (limited to 'src/com.gluster.storage.management.core')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java2
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java3
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java68
3 files changed, 71 insertions, 2 deletions
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
index baa3edb9..daa96cd4 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
@@ -49,7 +49,7 @@ public class Volume extends Entity {
GLUSTERFS, NFS
};
- private static final String OPTION_AUTH_ALLOW = "auth.allow:";
+ private static final String OPTION_AUTH_ALLOW = "auth.allow";
private static final String[] VOLUME_TYPE_STR = new String[] { "Plain Distribute", "Distributed Mirror",
"Distributed Stripe" };
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
index d1533f25..5ed83810 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
@@ -49,6 +49,7 @@ public class GlusterUtil {
private static final String VOLUME_TRANSPORT_TYPE_PFX = "Transport-type:";
private static final String VOLUME_BRICKS_GROUP_PFX = "Bricks";
private static final String VOLUME_OPTIONS_RECONFIG_PFX = "Options Reconfigured";
+ private static final String VOLUME_OPTION_AUTH_ALLOW = "auth.allow:";
private static final ProcessUtil processUtil = new ProcessUtil();
@@ -324,7 +325,7 @@ public class GlusterUtil {
String volumeName = extractToken(line, VOLUME_NAME_PFX);
if (volumeName != null) {
if (volume != null) {
- // add the previously read volume to volume list
+
volumes.add(volume);
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java
new file mode 100644
index 00000000..76dc748e
--- /dev/null
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java
@@ -0,0 +1,68 @@
+package com.gluster.storage.management.core.utils;
+
+import java.util.regex.Matcher;
+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(",");
+ boolean isValidAccessControl = true;
+ for (int i = 0; i < access.length && isValidAccessControl; i++) {
+ isValidAccessControl = (isValidIpWithWC(access[i]) || isValidHostName(access[i]));
+ }
+ return isValidAccessControl;
+ }
+
+ 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;
+ }
+
+ for (int i = 0; i < ipAddress.length && 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;
+ }
+
+ for (int i = 0; i < ipAddress.length && isValid; i++) {
+ isValid = isValidIpQuad(ipAddress[i]);
+ }
+ return isValid;
+ }
+
+ public 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 = "Selvam-sd.com";
+ System.out.println(isValidHostName(hostName));
+ }
+
+}