static int cb_tls (void *data, mu_config_value_t *val) { int *res = data; static struct mu_kwd tls_kwd[] = { { "no", tls_no }, { "false", tls_no }, { "off", tls_no }, { "0", tls_no }, { "ondemand", tls_ondemand }, { "stls", tls_ondemand }, { "required", tls_required }, { "connection", tls_connection }, /* For compatibility with prior versions: */ { "yes", tls_connection }, { "true", tls_connection }, { "on", tls_connection }, { "1", tls_connection }, { NULL } }; if (mu_cfg_assert_value_type (val, MU_CFG_STRING)) return 1; if (mu_kwd_xlat_name (tls_kwd, val->v.string, res)) mu_error (_("not a valid tls keyword: %s"), val->v.string); return 0; }
static int cb_apop_database_owner (void *data, mu_config_value_t *val) { struct passwd *pw; if (mu_cfg_assert_value_type (val, MU_CFG_STRING)) return 1; pw = getpwnam (val->v.string); if (!pw) { char *p; unsigned long n; n = strtoul (val->v.string, &p, 10); if (*p) { mu_error (_("no such user: %s"), val->v.string); return 1; } apop_database_owner = n; } else apop_database_owner = pw->pw_uid; apop_database_owner_set = 1; return 0; }
static int cb_bulletin_source (void *data, mu_config_value_t *val) { if (mu_cfg_assert_value_type (val, MU_CFG_STRING)) return 1; set_bulletin_source (val->v.string); /* FIXME: Error reporting? */ return 0; }
static int cb_mailbox_mode (mu_debug_t debug, void *data, mu_config_value_t *val) { const char *p; if (mu_cfg_assert_value_type (val, MU_CFG_STRING, debug)) return 1; if (mu_parse_stream_perm_string ((int *)data, val->v.string, &p)) mu_cfg_format_error (debug, MU_DEBUG_ERROR, _("invalid mode string near %s"), p); return 0; }
static int cb_mode (mu_debug_t debug, void *data, mu_config_value_t *val) { char *p; if (mu_cfg_assert_value_type (val, MU_CFG_STRING, debug)) return 1; home_dir_mode = strtoul (val->v.string, &p, 8); if (p[0] || (home_dir_mode & ~0777)) mu_cfg_format_error (debug, MU_DEBUG_ERROR, _("invalid mode specification: %s"), val->v.string); return 0; }
/* preauth prog:///usr/sbin/progname preauth ident[://:port] preauth stdio */ static int cb_preauth (mu_debug_t debug, void *data, mu_config_value_t *val) { if (mu_cfg_assert_value_type (val, MU_CFG_STRING, debug)) return 1; if (strcmp (val->v.string, "stdio") == 0) preauth_mode = preauth_stdio; else if (strcmp (val->v.string, "ident") == 0) return parse_preauth_scheme (debug, val->v.string, NULL); else if (val->v.string[0] == '/') { preauth_program = xstrdup (val->v.string); preauth_mode = preauth_prog; } else { mu_url_t url; char *scheme; int rc = mu_url_create (&url, val->v.string); if (rc) { mu_diag_funcall (MU_DIAG_ERROR, "mu_url_create", val->v.string, rc); return 1; } rc = mu_url_parse (url); if (rc) { mu_cfg_format_error (debug, MU_DEBUG_ERROR, "%s: %s", val->v.string, mu_strerror (rc)); return 1; } rc = mu_url_aget_scheme (url, &scheme); if (rc) { mu_url_destroy (&url); mu_cfg_format_error (debug, MU_DEBUG_ERROR, _("URL error: %s"), mu_strerror (rc)); return 1; } rc = parse_preauth_scheme (debug, scheme, url); mu_url_destroy (&url); free (scheme); return rc; } return 0; }
static int cb_tls_required (void *data, mu_config_value_t *val) { int bv; if (mu_cfg_assert_value_type (val, MU_CFG_STRING)) return 1; if (mu_cfg_parse_boolean (val->v.string, &bv)) mu_error (_("Not a boolean value")); else if (bv) { tls_mode = tls_required; mu_diag_output (MU_DIAG_WARNING, "the \"tls-required\" statement is deprecated, " "use \"tls required\" instead"); } else mu_diag_output (MU_DIAG_WARNING, "the \"tls-required\" statement is deprecated, " "use \"tls\" instead"); return 0; }