X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fconfig.c;h=907d27fce7b98a06703ed632e2584600d44c1666;hb=a7d7e3f128e15f282f2a96aba513823aa9603c22;hp=eadd6cb2fd990e9b9d840e040647fb689be5dfef;hpb=cdb873062246d255bb3813d4443bcaa0992e03ff;p=citadel.git diff --git a/citadel/config.c b/citadel/config.c index eadd6cb2f..907d27fce 100644 --- a/citadel/config.c +++ b/citadel/config.c @@ -1,7 +1,7 @@ /* * Read and write the citadel.config file * - * Copyright (c) 1987-2016 by the citadel.org team + * Copyright (c) 1987-2017 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3. @@ -13,7 +13,10 @@ */ #include "sysdep.h" +#include +#include #include +#include #include #include #include @@ -24,15 +27,13 @@ long config_msgnum = 0; HashList *ctdlconfig = NULL; // new configuration -void config_warn_if_port_unset(char *key, int default_port) \ +void config_warn_if_port_unset(char *key, int default_port) { int p = CtdlGetConfigInt(key); if ((p < -1) || (p == 0) || (p > UINT16_MAX)) { - syslog(LOG_EMERG, - "configuration setting %s is not -1 (disabled) or a valid TCP-Port - check your config! Default setting is: %d", - key, default_port - ); + syslog(LOG_ERR, "config: setting %s is not -1 (disabled) or a valid TCP port - setting to default %d", key, default_port); + CtdlSetConfigInt(key, default_port); } } @@ -41,12 +42,11 @@ void config_warn_if_empty(char *key) { if (IsEmptyStr(CtdlGetConfigStr(key))) { - syslog(LOG_EMERG, "configuration setting %s is empty, but must not - check your config!", key); + syslog(LOG_ERR, "config: setting %s is empty, but must not - check your config!", key); } } - void validate_config(void) { /* @@ -57,32 +57,31 @@ void validate_config(void) { config_warn_if_empty("c_aideroom"); config_warn_if_empty("c_twitroom"); config_warn_if_empty("c_nodename"); - config_warn_if_empty("c_default_cal_zone"); /* * Sanity check for port bindings */ - config_warn_if_port_unset("c_smtp_port", 25); - config_warn_if_port_unset("c_pop3_port", 110); - config_warn_if_port_unset("c_imap_port", 143); - config_warn_if_port_unset("c_msa_port", 587); - config_warn_if_port_unset("c_port_number", 504); - config_warn_if_port_unset("c_smtps_port", 465); - config_warn_if_port_unset("c_pop3s_port", 995); - config_warn_if_port_unset("c_imaps_port", 993); - config_warn_if_port_unset("c_pftcpdict_port", -1); - config_warn_if_port_unset("c_managesieve_port", 2020); - config_warn_if_port_unset("c_xmpp_c2s_port", 5222); - config_warn_if_port_unset("c_xmpp_s2s_port", 5269); - config_warn_if_port_unset("c_nntp_port", 119); - config_warn_if_port_unset("c_nntps_port", 563); + config_warn_if_port_unset("c_smtp_port", 25); + config_warn_if_port_unset("c_pop3_port", 110); + config_warn_if_port_unset("c_imap_port", 143); + config_warn_if_port_unset("c_msa_port", 587); + config_warn_if_port_unset("c_port_number", 504); + config_warn_if_port_unset("c_smtps_port", 465); + config_warn_if_port_unset("c_pop3s_port", 995); + config_warn_if_port_unset("c_imaps_port", 993); + config_warn_if_port_unset("c_pftcpdict_port", -1); + config_warn_if_port_unset("c_managesieve_port", 2020); + config_warn_if_port_unset("c_xmpp_c2s_port", 5222); + config_warn_if_port_unset("c_xmpp_s2s_port", 5269); + config_warn_if_port_unset("c_nntp_port", 119); + config_warn_if_port_unset("c_nntps_port", 563); if (getpwuid(ctdluid) == NULL) { - syslog(LOG_EMERG, "The UID (%d) citadel is configured to use is not defined in your system (/etc/passwd?)!", ctdluid); + syslog(LOG_ERR, "config: uid (%d) does not exist ... citserver will run as root", ctdluid); } - } + /* * Put some sane default values into our configuration. Some will be overridden when we run setup. */ @@ -143,7 +142,6 @@ void brand_new_installation_set_defaults(void) { } - /* * Migrate a supplied legacy configuration to the new in-db format. * No individual site should ever have to do this more than once. @@ -206,10 +204,6 @@ void migrate_legacy_config(struct legacy_config *lconfig) CtdlSetConfigInt( "c_pftcpdict_port" , lconfig->c_pftcpdict_port ); CtdlSetConfigInt( "c_managesieve_port" , lconfig->c_managesieve_port ); CtdlSetConfigInt( "c_auth_mode" , lconfig->c_auth_mode ); - CtdlSetConfigStr( "c_funambol_host" , lconfig->c_funambol_host ); - CtdlSetConfigInt( "c_funambol_port" , lconfig->c_funambol_port ); - CtdlSetConfigStr( "c_funambol_source" , lconfig->c_funambol_source ); - CtdlSetConfigStr( "c_funambol_auth" , lconfig->c_funambol_auth ); CtdlSetConfigInt( "c_rbl_at_greeting" , lconfig->c_rbl_at_greeting ); CtdlSetConfigStr( "c_master_user" , lconfig->c_master_user ); CtdlSetConfigStr( "c_master_pass" , lconfig->c_master_pass ); @@ -226,7 +220,6 @@ void migrate_legacy_config(struct legacy_config *lconfig) } - /* * Called during the initialization of Citadel server. * It verifies the system's integrity and reads citadel.config into memory. @@ -326,6 +319,9 @@ void initialize_config_system(void) { if (CtdlGetConfigLong("c_pop3_fastest") == 0) CtdlSetConfigLong("c_pop3_fastest", 3600); // once per hour default if (CtdlGetConfigLong("c_pop3_fastest") < 300) CtdlSetConfigLong("c_pop3_fastest", 300); // 5 minutes min + /* LDAP sync frequency */ + if (CtdlGetConfigLong("c_ldap_sync_freq") == 0) CtdlSetConfigLong("c_ldap_sync_freq", 300); // every 5 minutes default + /* "create new user" only works with native authentication mode */ if (CtdlGetConfigInt("c_auth_mode") != AUTHMODE_NATIVE) { CtdlSetConfigInt("c_disable_newu", 1); @@ -333,7 +329,6 @@ void initialize_config_system(void) { } - /* * Called when Citadel server is shutting down. * Clears out the config hash table. @@ -344,7 +339,6 @@ void shutdown_config_system(void) } - /* * Set a system config value. Simple key/value here. */ @@ -389,7 +383,6 @@ void CtdlSetConfigInt(char *key, int value) } - /* * Delete a system config value. */ @@ -413,8 +406,6 @@ void CtdlDelConfig(char *key) } - - /* * Fetch a system config value. Caller does *not* own the returned value and may not alter it. */ @@ -470,18 +461,6 @@ long CtdlGetConfigLong(char *key) } - -/**********************************************************************/ - - - - - - - - - - void CtdlGetSysConfigBackend(long msgnum, void *userdata) { config_msgnum = msgnum; } @@ -500,12 +479,10 @@ char *CtdlGetSysConfig(char *sysconfname) { return NULL; } - /* We want the last (and probably only) config in this room */ begin_critical_section(S_CONFIG); config_msgnum = (-1L); - CtdlForEachMessage(MSGS_LAST, 1, NULL, sysconfname, NULL, - CtdlGetSysConfigBackend, NULL); + CtdlForEachMessage(MSGS_LAST, 1, NULL, sysconfname, NULL, CtdlGetSysConfigBackend, NULL); msgnum = config_msgnum; end_critical_section(S_CONFIG); @@ -525,10 +502,12 @@ char *CtdlGetSysConfig(char *sysconfname) { CtdlGetRoom(&CC->room, hold_rm); - if (conf != NULL) do { + if (conf != NULL) { + do { extract_token(buf, conf, 0, '\n', sizeof buf); strcpy(conf, &conf[strlen(buf)+1]); } while ( (!IsEmptyStr(conf)) && (!IsEmptyStr(buf)) ); + } return(conf); } @@ -537,4 +516,3 @@ char *CtdlGetSysConfig(char *sysconfname) { void CtdlPutSysConfig(char *sysconfname, char *sysconfdata) { CtdlWriteObject(SYSCONFIGROOM, sysconfname, sysconfdata, (strlen(sysconfdata)+1), NULL, 0, 1, 0); } -