Fixed HTTP-client query-string handling bug.
[doldaconnect.git] / daemon / auth.c
index 0d34fbb..d8c7a35 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
@@ -38,7 +38,7 @@ static void authless_release(struct authhandle *auth)
 {
 }
 
-static int authless_authenticate(struct authhandle *auth, char *data)
+static int authless_authenticate(struct authhandle *auth, struct socket *sk, char *data)
 {
     return(AUTH_SUCCESS);
 }
@@ -80,10 +80,10 @@ void authputhandle(struct authhandle *auth)
 {
     if(--auth->refcount)
        return;
-    if(auth->text != NULL)
-       free(auth->text);
     if(auth->mechdata != NULL)
        auth->mech->release(auth);
+    if(auth->text != NULL)
+       free(auth->text);
     free(auth);
 }
 
@@ -112,11 +112,18 @@ struct authhandle *initauth(wchar_t *mechname, char *username)
     return(auth);
 }
 
-int authenticate(struct authhandle *handle, char *data)
+int authenticate(struct authhandle *handle, struct socket *sk, char *data)
 {
     if(handle->mech == NULL)
        return(AUTH_ERR);
-    return(handle->mech->authenticate(handle, data));
+    return(handle->mech->authenticate(handle, sk, data));
+}
+
+int authavailable(struct authmech *mech, struct socket *sk)
+{
+    if(mech->available == NULL)
+       return(1);
+    return(mech->available(sk));
 }
 
 int authrenewcred(struct authhandle *handle)
@@ -148,12 +155,9 @@ void regmech(struct authmech *mech)
 
 static void preinit(int hup)
 {
-    extern struct authmech authmech_pam;
-    
     if(hup)
        return;
     regmech(&authless);
-    regmech(&authmech_pam);
 }
 
 static int init(int hup)
@@ -164,8 +168,10 @@ static int init(int hup)
 
 static struct configvar myvars[] =
 {
-    {CONF_VAR_STRING, "pamserv", {.str = L"doldacond"}},
-    {CONF_VAR_BOOL, "authless", {.num = 1}},
+    /** Specifies whether insecure authentication is to be allowed. If
+     * you are not completely sure what you are doing, never turn this
+     * on without also turning on net.onlylocal. */
+    {CONF_VAR_BOOL, "authless", {.num = 0}},
     {CONF_VAR_END}
 };