Properly parse search size expressions as off_t, not int.
[doldaconnect.git] / daemon / auth-pam.c
index b11825a..35b0a05 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Dolda Connect - Modular multiuser Direct Connect-style client
- *  Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com)
+ *  Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -34,8 +34,6 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
-#include <ucontext.h>
-#include <security/pam_appl.h>
 #include <errno.h>
 
 #ifdef HAVE_CONFIG_H
 #include "utils.h"
 #include "conf.h"
 #include "log.h"
+#include "module.h"
+
+#ifdef HAVE_PAM
+#include <ucontext.h>
+#include <security/pam_appl.h>
 
 struct pamdata
 {
@@ -168,9 +171,9 @@ static int inithandle(struct authhandle *auth, char *username)
     data = newpamdata();
     conv.conv = (int (*)(int, const struct pam_message **, struct pam_response **, void *))pamconv;
     conv.appdata_ptr = auth;
-    if((buf = icwcstombs(confgetstr("auth", "pamserv"), NULL)) == NULL)
+    if((buf = icwcstombs(confgetstr("auth-pam", "pamserv"), NULL)) == NULL)
     {
-       flog(LOG_ERR, "could not initialize pam since auth.pamserv cannot be translated into the current locale: %s", strerror(errno));
+       flog(LOG_ERR, "could not initialize pam since auth-pam.pamserv cannot be translated into the current locale: %s", strerror(errno));
        releasepam(data);
        return(1);
     }
@@ -197,7 +200,7 @@ static void pamauththread(struct authhandle *auth)
     data->validctxt = 0;
 }
 
-static int pamauth(struct authhandle *auth, char *passdata)
+static int pamauth(struct authhandle *auth, struct socket *sk, char *passdata)
 {
     struct pamdata *data;
     
@@ -321,7 +324,7 @@ static int closesess(struct authhandle *auth)
     return(rc);
 }
 
-struct authmech authmech_pam =
+static struct authmech authmech_pam =
 {
     .inithandle = inithandle,
     .release = release,
@@ -332,3 +335,31 @@ struct authmech authmech_pam =
     .name = L"pam",
     .enabled = 1
 };
+
+static int init(int hup)
+{
+    if(!hup)
+       regmech(&authmech_pam);
+    return(0);
+}
+
+static struct configvar myvars[] =
+{
+    /** The name of the PAM service file to use. */
+    {CONF_VAR_STRING, "pamserv", {.str = L"doldacond"}},
+    {CONF_VAR_END}
+};
+
+static struct module me =
+{
+    .conf =
+    {
+       .vars = myvars
+    },
+    .init = init,
+    .name = "auth-pam"
+};
+
+MODULE(me);
+
+#endif /* HAVE_PAM */