diff options
Diffstat (limited to 'libglusterfs/src/graph.c')
-rw-r--r-- | libglusterfs/src/graph.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/libglusterfs/src/graph.c b/libglusterfs/src/graph.c index db80e21272a..d36cf7b3da5 100644 --- a/libglusterfs/src/graph.c +++ b/libglusterfs/src/graph.c @@ -16,7 +16,7 @@ #include "defaults.h" #include <unistd.h> #include "syscall.h" - +#include <regex.h> #include "libglusterfs-messages.h" #if 0 @@ -68,7 +68,47 @@ _gf_dump_details (int argc, char **argv) } #endif +int +glusterfs_read_secure_access_file (void) +{ + FILE *fp = NULL; + char line[100] = {0,}; + int cert_depth = 1; /* Default SSL CERT DEPTH */ + regex_t regcmpl; + char *key = {"^option transport.socket.ssl-cert-depth"}; + char keyval[50] = {0,}; + int start = 0, end = 0, copy_len = 0; + regmatch_t result[1] = {{0} }; + + fp = fopen (SECURE_ACCESS_FILE, "r"); + if (!fp) + goto out; + /* Check if any line matches with key */ + while (fgets(line, sizeof(line), fp) != NULL) { + if (regcomp (®cmpl, key, REG_EXTENDED)) { + goto out; + } + if (!regexec (®cmpl, line, 1, result, 0)) { + start = result[0].rm_so; + end = result[0].rm_eo; + copy_len = end - start; + strcpy (keyval, line+copy_len); + if (keyval[0]) { + cert_depth = atoi(keyval); + if (cert_depth == 0) + cert_depth = 1; /* Default SSL CERT DEPTH */ + break; + } + } + regfree(®cmpl); + } + +out: + if (fp) + fclose (fp); + return cert_depth; +} int glusterfs_xlator_link (xlator_t *pxl, xlator_t *cxl) |