mod_authn_anon.c revision d7f6dee15e1a8c1ca4073daf6852b9604b8c2985
/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as
* applicable.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Adapted to allow anonymous logins, just like with Anon-FTP, when
* one gives the magic user name 'anonymous' and ones email address
* as the password.
*
* Just add the following tokes to your <directory> setup:
*
* Anonymous magic-userid [magic-userid]...
*
* Anonymous_MustGiveEmail [ on | off ] default = on
* Anonymous_LogEmail [ on | off ] default = on
* Anonymous_VerifyEmail [ on | off ] default = off
* Anonymous_NoUserId [ on | off ] default = off
*
* The magic user id is something like 'anonymous', it is NOT case sensitive.
*
* The MustGiveEmail flag can be used to force users to enter something
* in the password field (like an email address). Default is on.
*
* Furthermore the 'NoUserID' flag can be set to allow completely empty
* usernames in as well; this can be is convenient as a single return
* in broken GUIs like W95 is often given by the user. The Default is off.
*
* Dirk.vanGulik@jrc.it; http://ewse.ceo.org; http://me-www.jrc.it/~dirkx
*
*/
#include "apr_strings.h"
#define APR_WANT_STRFUNC
#include "apr_want.h"
#include "ap_provider.h"
#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
#include "http_log.h"
#include "http_request.h"
#include "http_protocol.h"
#include "mod_auth.h"
typedef struct anon_auth_user {
char *user;
struct anon_auth_user *next;
typedef struct {
int nouserid;
int logemail;
int verifyemail;
int mustemail;
int anyuserid;
static void *create_authn_anon_dir_config(apr_pool_t *p, char *d)
{
/* just to illustrate the defaults really. */
conf->verifyemail = 0;
return conf;
}
{
if (!*arg) {
return "Anonymous string cannot be empty, use Anonymous_NoUserId";
}
/* squeeze in a record */
}
else {
}
}
return NULL;
}
static const command_rec authn_anon_cmds[] =
{
"a space-separated list of user IDs"),
OR_AUTHCFG, "Limited to 'on' or 'off'"),
OR_AUTHCFG, "Limited to 'on' or 'off'"),
OR_AUTHCFG, "Limited to 'on' or 'off'"),
OR_AUTHCFG, "Limited to 'on' or 'off'"),
{NULL}
};
const char *sent_pw)
{
/* Ignore if we are not configured */
return AUTH_USER_NOT_FOUND;
}
*/
if (!*user) {
}
}
}
else {
while (p) {
break;
}
p = p->next;
}
}
/* Now if the supplied user-ID was ok, grant access if:
* (a) no passwd was sent and no password and no verification
* were configured.
* (b) password was sent and no verification was configured
* (c) verification was configured and the password (sent or not)
* looks like an email address
*/
if ( (res == AUTH_USER_FOUND)
&& ( !conf->verifyemail
{
"Anonymous: Passwd <%s> Accepted",
}
return AUTH_GRANTED;
}
}
static const authn_provider authn_anon_provider =
{
};
static void register_hooks(apr_pool_t *p)
{
}
{
create_authn_anon_dir_config, /* dir config creater */
NULL, /* dir merger ensure strictness */
NULL, /* server config */
NULL, /* merge server config */
authn_anon_cmds, /* command apr_table_t */
register_hooks /* register hooks */
};