]> arthur.barton.de Git - netatalk.git/commitdiff
ldap_uuid_string
authorFrank Lahm <franklahm@googlemail.com>
Mon, 5 Mar 2012 11:52:05 +0000 (12:52 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Mon, 5 Mar 2012 11:52:05 +0000 (12:52 +0100)
include/atalk/ldapconfig.h
include/atalk/uuid.h
libatalk/acl/ldap.c
libatalk/acl/uuid.c

index 5a5b657061ff467c5a52c8b0d819927588460243..f170f036d01c8deebd591f6cf4bec44295b42b2d 100644 (file)
@@ -14,6 +14,7 @@ extern char *ldap_auth_pw;
 extern char *ldap_userbase;
 extern char *ldap_groupbase;
 extern char *ldap_uuid_attr;
+extern char *ldap_uuid_string;
 extern char *ldap_name_attr;
 extern char *ldap_group_attr;
 extern char *ldap_uid_attr;
index 93bad6b31df7358b598e6b72003173d2e0136c5a..024ac7a0535895a38f6841f2f9cfaeebf383eb00 100644 (file)
@@ -16,7 +16,6 @@
 #define AFP_UUID_H
 
 #define UUID_BINSIZE 16
-#define UUID_STRINGSIZE 36
 
 typedef unsigned char *uuidp_t;
 typedef unsigned char atalk_uuid_t[UUID_BINSIZE];
@@ -28,18 +27,6 @@ typedef enum {UUID_USER   = 1,
 #define UUIDTYPESTR_MASK 3
 extern char *uuidtype[];
 
-/* afp_options.c needs these. defined in libatalk/ldap.c */
-extern char *ldap_host;
-extern int  ldap_auth_method;
-extern char *ldap_auth_dn;
-extern char *ldap_auth_pw;
-extern char *ldap_userbase;
-extern char *ldap_groupbase;
-extern char *ldap_uuid_attr;
-extern char *ldap_name_attr;
-extern char *ldap_group_attr;
-extern char *ldap_uid_attr;
-
 /******************************************************** 
  * Interface
  ********************************************************/
index 724ac4d5ba8e59d59bf4aa2f73c2cc3450165765..122abb5ba1b433ec17a5770bde0864d94419f581 100644 (file)
@@ -49,6 +49,7 @@ int  ldap_userscope;
 char *ldap_groupbase;
 int  ldap_groupscope;
 char *ldap_uuid_attr;
+char *ldap_uuid_string;
 char *ldap_name_attr;
 char *ldap_group_attr;
 char *ldap_uid_attr;
@@ -63,6 +64,7 @@ struct ldap_pref ldap_prefs[] = {
     {&ldap_groupbase,  "ldap_groupbase",   0, 0, -1},
     {&ldap_groupscope, "ldap_groupscope",  1 ,1, -1},
     {&ldap_uuid_attr,  "ldap_uuid_attr",   0, 0, -1},
+    {&ldap_uuid_string,"ldap_uuid_string", 0, 0,  0},
     {&ldap_name_attr,  "ldap_name_attr",   0, 0, -1},
     {&ldap_group_attr, "ldap_group_attr",  0, 0, -1},
     {&ldap_uid_attr,   "ldap_uid_attr",    0, 0,  0},
index 7c0cf12e4fec035d9e81808aeeed5d5da49ad8c5..4d8a875dc3d38a739814916d705d37a70635265b 100644 (file)
@@ -28,6 +28,7 @@
 #include <atalk/logger.h>
 #include <atalk/afp.h>
 #include <atalk/uuid.h>
+#include <atalk/ldapconfig.h>
 #include <atalk/util.h>
 
 #include "aclldap.h"
@@ -75,8 +76,8 @@ void uuid_string2bin( const char *uuidstring, uuidp_t uuid) {
     int nibble = 1;
     int i = 0;
     unsigned char c, val = 0;
-
-    while (*uuidstring) {
+    
+    while (*uuidstring && i < UUID_BINSIZE) {
         c = *uuidstring;
         if (c == '-') {
             uuidstring++;
@@ -102,21 +103,28 @@ void uuid_string2bin( const char *uuidstring, uuidp_t uuid) {
 
 /*!
  * Convert 16 byte binary uuid to neat ascii represantation including dashes.
- *
+ * Use defined or default ascii mask for dash placement
  * Returns pointer to static buffer.
  */
 const char *uuid_bin2string(unsigned char *uuid) {
-    static char uuidstring[UUID_STRINGSIZE + 1];
-
+    static char uuidstring[64];
+    const char *uuidmask;
     int i = 0;
     unsigned char c;
 
-    while (i < UUID_STRINGSIZE) {
+    if (ldap_uuid_string)
+        uuidmask = ldap_uuid_string;
+    else
+        uuidmask = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
+
+    LOG(log_debug, logtype_afpd, "uuid_bin2string{uuid}: mask: %s", uuidmask);
+               
+    while (i < strlen(uuidmask)) {
         c = *uuid;
         uuid++;
         sprintf(uuidstring + i, "%02X", c);
         i += 2;
-        if (i==8 || i==13 || i==18 || i==23)
+        if (uuidmask[i] == '-')
             uuidstring[i++] = '-';
     }
     uuidstring[i] = 0;