view src/master/master-settings.h @ 9002:9d0037a997f4 HEAD

Initial commit for config rewrite.
author Timo Sirainen <tss@iki.fi>
date Tue, 27 Jan 2009 18:21:53 -0500
parents d1954af8aa3b
children c33bd8517c63
line wrap: on
line source

#ifndef MASTER_SETTINGS_H
#define MASTER_SETTINGS_H

#include "network.h"

#define DOVECOT_CONFIG_BIN_PATH BINDIR"/doveconf"

enum mail_protocol {
        MAIL_PROTOCOL_ANY,
        MAIL_PROTOCOL_IMAP,
	MAIL_PROTOCOL_POP3,
	MAIL_PROTOCOL_LDA
};

struct listener {
	struct ip_addr ip;
	unsigned int port;
	int fd;
	bool wanted;
};
ARRAY_DEFINE_TYPE(listener, struct listener);

struct master_auth_socket_unix_settings {
	const char *path;
};

struct master_auth_socket_settings {
	const char *type;

	ARRAY_DEFINE(masters, struct master_auth_socket_unix_settings *);
};

struct master_auth_settings {
	const char *name;
	const char *executable;
	const char *user;
	const char *chroot;

	unsigned int count;
	unsigned int process_size;

	const char *mechanisms;
	bool debug;

	ARRAY_DEFINE(sockets, struct master_auth_socket_settings *);

	/* .. */
	uid_t uid;
	gid_t gid;
};

struct master_settings {
	/* common */
	const char *base_dir;
	const char *log_path;
	const char *info_log_path;
	const char *log_timestamp;
	const char *syslog_facility;

	/* general */
	const char *protocols;
	const char *listen;
	const char *ssl_listen;

	const char *ssl;
	const char *ssl_key_file;
	unsigned int ssl_parameters_regenerate;
	bool nfs_check;
	bool version_ignore;

	/* login */
	const char *login_dir;
	const char *login_executable;
	const char *login_user;

	bool login_process_per_connection;
	bool login_chroot;
	bool disable_plaintext_auth;

	unsigned int login_process_size;
	unsigned int login_processes_count;
	unsigned int login_max_processes_count;

	/* mail */
	const char *valid_chroot_dirs;
	const char *mail_chroot;
	unsigned int max_mail_processes;
	unsigned int mail_max_userip_connections;
	bool verbose_proctitle;

	unsigned int first_valid_uid, last_valid_uid;
	unsigned int first_valid_gid, last_valid_gid;
	const char *mail_access_groups;
	const char *mail_privileged_group;
	const char *mail_uid;
	const char *mail_gid;

	const char *mail_plugins;
	const char *imap_capability;

	const char *mail_location;
	bool mail_debug;
	bool mail_nfs_index;
	unsigned int umask;
	bool mail_drop_priv_before_exec;

	const char *mail_executable;
	unsigned int mail_process_size;
	const char *mail_log_prefix;
	unsigned int mail_log_max_lines_per_sec;

	/* dict */
	const char *dict_db_config;
	unsigned int dict_process_count;

	ARRAY_DEFINE(auths, struct master_auth_settings *);

	ARRAY_DEFINE(dicts, const char *);
	ARRAY_DEFINE(plugin_envs, const char *);

#ifndef CONFIG_BINARY
	/* .. */
	struct master_server_settings *server;
	enum mail_protocol protocol;

	ARRAY_TYPE(listener) listens;
	ARRAY_TYPE(listener) ssl_listens;

	uid_t login_uid, mail_uid_t;
	gid_t mail_gid_t, mail_priv_gid_t;

	const char *imap_generated_capability;
	ARRAY_TYPE(const_string) all_settings;
#endif
};

struct master_server_settings {
	struct master_settings *defaults;
	struct master_settings *imap;
	struct master_settings *pop3;

	gid_t login_gid;
};

extern struct master_server_settings *master_set;
extern struct setting_parser_info master_setting_parser_info;

int master_settings_read(const char *path,
			 struct master_server_settings **set_r);
bool master_settings_check(struct master_server_settings *set,
			   bool nochecks, bool nofixes);
void master_settings_export_to_env(const struct master_settings *set);

void master_settings_init(void);
void master_settings_deinit(void);

#endif