X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=SimpleServer.xs;h=b233e6950a75ef3fa3578e7bee3ee9a3b455d1d6;hb=b6513f979a86cfbea9f8cc50c37c5d9869ba4878;hp=d8df0bfd7d64a69e240496826f5266117ab9c266;hpb=52d9256f339b3dceac739478b0eafcfb03014dc6;p=simpleserver-moved-to-github.git diff --git a/SimpleServer.xs b/SimpleServer.xs index d8df0bf..b233e69 100644 --- a/SimpleServer.xs +++ b/SimpleServer.xs @@ -25,7 +25,10 @@ */ /*$Log: SimpleServer.xs,v $ -/*Revision 1.14 2002-03-05 00:34:13 mike +/*Revision 1.15 2002-09-16 13:55:53 sondberg +/*Added support for authentication into SimpleServer. +/* +/*Revision 1.14 2002/03/05 00:34:13 mike /*Support for implementation_id (commented out until it's /*in mainstream Yaz) /* @@ -1111,6 +1114,8 @@ bend_initresult *bend_init(bend_initrequest *q) /*char *name_ptr; char *ver_ptr;*/ char *ptr; + char *user = NULL; + char *passwd = NULL; dSP; ENTER; @@ -1143,6 +1148,20 @@ bend_initresult *bend_init(bend_initrequest *q) hv_store(href, "PEER_NAME", 9, newSVpv(q->peer_name, 0), 0); hv_store(href, "HANDLE", 6, newSVsv(&sv_undef), 0); hv_store(href, "PID", 3, newSViv(getpid()), 0); + if (q->auth) { + if (q->auth->which == Z_IdAuthentication_open) { + char *openpass = xstrdup (q->auth->u.open); + char *cp = strchr (openpass, '/'); + if (cp) { + *cp = '\0'; + user = nmem_strdup (odr_getmem (q->stream), openpass); + passwd = nmem_strdup (odr_getmem (q->stream), cp + 1); + } + xfree(openpass); + } + hv_store(href, "USER", 4, newSVpv(user, 0), 0); + hv_store(href, "PASS", 4, newSVpv(passwd, 0), 0); + } PUSHMARK(sp);