director-settings.c revision 263fa7b43fb222f9805b80f62090907fe3f9ec13
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek/* Copyright (c) 2009-2011 Dovecot authors, see the included COPYING file */
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#include "lib.h"
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#include "buffer.h"
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#include "settings-parser.h"
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#include "service-settings.h"
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#include "director-settings.h"
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek/* <settings checks> */
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic struct file_listener_settings director_unix_listeners_array[] = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek { "login/director", 0, "", "" },
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek { "director-admin", 0600, "", "" }
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic struct file_listener_settings *director_unix_listeners[] = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek &director_unix_listeners_array[0],
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek &director_unix_listeners_array[1]
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic buffer_t director_unix_listeners_buf = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek director_unix_listeners,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek sizeof(director_unix_listeners), { 0, }
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic struct file_listener_settings director_fifo_listeners_array[] = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek { "login/proxy-notify", 0, "", "" }
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic struct file_listener_settings *director_fifo_listeners[] = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek &director_fifo_listeners_array[0]
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic buffer_t director_fifo_listeners_buf = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek director_fifo_listeners,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek sizeof(director_fifo_listeners), { 0, }
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek/* </settings checks> */
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstruct service_settings director_service_settings = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .name = "director",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .protocol = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .type = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .executable = "director",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .user = "$default_internal_user",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .group = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .privileged_group = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .extra_groups = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .chroot = ".",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .drop_priv_before_exec = FALSE,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .process_min_avail = 0,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .process_limit = 1,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .client_limit = 0,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .service_count = 0,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .idle_kill = -1U,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .vsz_limit = (uoff_t)-1,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .unix_listeners = { { &director_unix_listeners_buf,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek sizeof(director_unix_listeners[0]) } },
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .fifo_listeners = { { &director_fifo_listeners_buf,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek sizeof(director_fifo_listeners[0]) } },
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .inet_listeners = ARRAY_INIT,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .process_limit_1 = TRUE
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#undef DEF
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek#define DEF(type, name) \
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek { type, #name, offsetof(struct director_settings, name), NULL }
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekstatic const struct setting_define director_setting_defines[] = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek DEF(SET_STR, master_user_separator),
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek DEF(SET_STR, director_servers),
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek DEF(SET_STR, director_mail_servers),
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek DEF(SET_TIME, director_user_expire),
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek DEF(SET_UINT, director_doveadm_port),
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek SETTING_DEFINE_LIST_END
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekconst struct director_settings director_default_settings = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .master_user_separator = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .director_servers = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .director_mail_servers = "",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .director_user_expire = 60*15,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .director_doveadm_port = 0
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek};
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozekconst struct setting_parser_info director_setting_parser_info = {
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .module_name = "director",
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .defines = director_setting_defines,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek .defaults = &director_default_settings,
c71e0a6710418991d759a329b8dcb77c7ad3e16eJakub Hrozek
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek .type_offset = (size_t)-1,
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek .struct_size = sizeof(struct director_settings),
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek .parent_offset = (size_t)-1
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek};
c0f9f5a0f6d71a1596ee3cef549b4b02295313c3Jakub Hrozek