pz:authentication may carry user group password PAZ-885
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 13 Aug 2013 09:07:28 +0000 (11:07 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 13 Aug 2013 09:07:28 +0000 (11:07 +0200)
If pz:authentication has at least one blank in it, that forces
Pazpar2 to use idPass Z39.50 authentication. Two forms are allowed
 user password
 user group password
If no blanks are present, open authentication is in use.

src/connection.c

index d5b5be2..465693e 100644 (file)
@@ -441,7 +441,24 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man)
         ZOOM_options_set(zoptions, "apdulog", apdulog);
 
     if ((auth = session_setting_oneval(sdb, PZ_AUTHENTICATION)))
-        ZOOM_options_set(zoptions, "user", auth);
+    {
+        const char *cp1 = strchr(auth, ' ');
+        if (!cp1)
+            ZOOM_options_set(zoptions, "user", auth);
+        else
+        {
+            const char *cp2 = strchr(cp1 + 1, ' ');
+
+            ZOOM_options_setl(zoptions, "user", auth, cp1 - auth);
+            if (!cp2)
+                ZOOM_options_set(zoptions, "password", cp1 + 1);
+            else
+            {
+                ZOOM_options_setl(zoptions, "group", cp1 + 1, cp2 - cp1 - 1);
+                ZOOM_options_set(zoptions, "password", cp2 + 1);
+            }
+        }
+    }
     if ((sru = session_setting_oneval(sdb, PZ_SRU)) && *sru)
         ZOOM_options_set(zoptions, "sru", sru);
     if ((sru_version = session_setting_oneval(sdb, PZ_SRU_VERSION))