/*
 * cfgdirectives.c:
 * List of valid config directives.
 *
 * This is ugly; it would be nice to pick this information automatically
 * somehow from the source, but that's a matter for another day.
 *
 * Copyright (c) 2001 Chris Lightfoot. All rights reserved.
 *
 */

static const char rcsid[] = "$Id: cfgdirectives.c,v 1.26 2003/11/24 19:58:28 chris Exp $";

#ifdef HAVE_CONFIG_H
#include "configuration.h"
#endif /* HAVE_CONFIG_H */

#include <stdlib.h>
#include <string.h>

char *cfgdirectives[] = {
    /* global directives */
    "listen-address",
    "max-children",
    "append-domain",
    "strip-domain",
    "timeout-seconds",
    "log-facility",
    "log-stderr",
    "apop-only",
    "mailbox",
    "no-detach",
    "permit-empty-passwords",
    "onlogin-child-wait",
    "log-bad-passwords",
 
#if defined(MBOX_BSD) && defined(MBOX_BSD_SAVE_INDICES)
    "mailspool-index",
#endif
    
#ifdef USE_TCP_WRAPPERS
    "tcp-wrappers-name",
#endif

#ifdef USE_DRAC
    "drac-server",
#endif

#ifdef USE_WHOSON
    "whoson-enable",
#endif
    
#ifdef MBOX_MAILDIR
    "maildir-exclusive-lock",
#endif

#ifdef USE_TLS
    "tls-no-bug-workarounds",
#endif

    "authcache-enable",
    "authcache-use-client-host",
    "authcache-entry-lifetime",

#ifdef AUTH_PAM
    /* auth-pam options */
    "auth-pam-enable",
    "auth-pam-facility",
    "auth-pam-mailbox",
    "auth-pam-mail-user",
    "auth-pam-mail-group",
#endif

#ifdef AUTH_PASSWD
    /* auth-passwd options */
    "auth-passwd-enable",
    "auth-passwd-mailbox",
    "auth-passwd-mail-group",
#endif

#ifdef AUTH_MYSQL
    /* auth-mysql options */
    "auth-mysql-enable",
    "auth-mysql-username",
    "auth-mysql-password",
    "auth-mysql-database",
    "auth-mysql-hostname",
    "auth-mysql-mail-group",
    "auth-mysql-pass-query",
    "auth-mysql-apop-query",
    "auth-mysql-onlogin-query",
#endif /* AUTH_MYSQL */

#ifdef AUTH_PGSQL
    /* auth-pgsql options */
    "auth-pgsql-enable",
    "auth-pgsql-username",
    "auth-pgsql-password",
    "auth-pgsql-database",
    "auth-pgsql-hostname",
    "auth-pgsql-mail-group",
    "auth-pgsql-pass-query",
    "auth-pgsql-apop-query",
    "auth-pgsql-onlogin-query",
#endif /* AUTH_PGSQL */

#ifdef AUTH_LDAP
    "auth-ldap-enable",
    "auth-ldap-url",
    "auth-ldap-searchdn",
    "auth-ldap-password",
    "auth-ldap-use-tls",
    "auth-ldap-filter",
    "auth-ldap-scope",
    "auth-ldap-mailbox",
    "auth-ldap-mailbox-attr",
    "auth-ldap-mboxtype-attr",
    "auth-ldap-mail-user",
    "auth-ldap-mail-user-attr",
    "auth-ldap-mail-group",
    "auth-ldap-mail-group-attr",
#endif /* AUTH_LDAP */
    
#ifdef AUTH_OTHER
    "auth-other-enable",
    "auth-other-program",
    "auth-other-user",
    "auth-other-group",
    "auth-other-timeout",
#endif /* AUTH_OTHER */
 
#ifdef AUTH_PERL
    "auth-perl-enable",
    "auth-perl-start",
    "auth-perl-finish",
    "auth-perl-apop",
    "auth-perl-pass",
    "auth-perl-onlogin",
#endif /* AUTH_PERL */

#ifdef AUTH_FLATFILE
    "auth-flatfile-enable",
    "auth-flatfile-mail-user",
    "auth-flatfile-mail-group",
    "auth-flatfile-passwd-file",
#endif /* AUTH_FLATFILE */

    /* final entry must be NULL */
    NULL};

int is_cfgdirective_valid(const char *s) {
    char **t;
    for (t = cfgdirectives; *t; ++t)
        if (strcmp(s, *t) == 0) return 1;
    return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1