X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Freadconf.c;h=375f01a1a5e313d8acbf18eab22f5f38038fbee4;hb=f42deca923414cedcbb6d6646afbef460f50080c;hp=3a4a4c3bfea67f9947ba24b66d2eaf2948bbf8e6;hpb=d4ff61d1edff4054497632be7f36ede86bb8ebec;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/readconf.c b/src/src/readconf.c index 3a4a4c3bf..375f01a1a 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2015 */ +/* Copyright (c) University of Cambridge 1995 - 2016 */ /* See the file NOTICE for conditions of use and distribution. */ /* Functions for reading the configuration file, and for displaying @@ -16,7 +16,7 @@ extern char **environ; static void fn_smtp_receive_timeout(const uschar * name, const uschar * str); static void save_config_line(const uschar* line); static void save_config_position(const uschar *file, int line); -static void print_config(BOOL admin); +static void print_config(BOOL admin, BOOL terse); #define CSTATE_STACK_SIZE 10 @@ -349,6 +349,7 @@ static optionlist optionlist_config[] = { #ifdef EXIM_PERL { "perl_at_start", opt_bool, &opt_perl_at_start }, { "perl_startup", opt_stringptr, &opt_perl_startup }, + { "perl_taintmode", opt_bool, &opt_perl_taintmode }, #endif #ifdef LOOKUP_PGSQL { "pgsql_servers", opt_stringptr, &pgsql_servers }, @@ -2649,7 +2650,7 @@ if (type == NULL) if (Ustrcmp(name, "config") == 0) { - print_config(admin_user); + print_config(admin_user, no_labels); return; } @@ -2708,13 +2709,14 @@ if (type == NULL) { if (environ) { - uschar **p; + uschar ** p; for (p = USS environ; *p; p++) ; qsort(environ, p - USS environ, sizeof(*p), string_compare_by_pointer); for (p = USS environ; *p; p++) { - if (no_labels) *(Ustrchr(*p, '=')) = '\0'; + uschar * q; + if (no_labels && (q = Ustrchr(*p, '='))) *q = '\0'; puts(CS *p); } } @@ -2946,7 +2948,7 @@ Returns: bool for "okay"; false will cause caller to immediately exit. #ifdef SUPPORT_TLS static BOOL -tls_dropprivs_validate_require_cipher(void) +tls_dropprivs_validate_require_cipher(BOOL nowarn) { const uschar *errmsg; pid_t pid; @@ -2960,9 +2962,9 @@ if ( !tls_advertise_hosts || Ustrcmp(tls_advertise_hosts, ":") == 0 ) return TRUE; -else if (!tls_certificate) - log_write(0, LOG_MAIN|LOG_PANIC, - "Warning: No server certificate defined; TLS connections will fail.\n" +else if (!nowarn && !tls_certificate) + log_write(0, LOG_MAIN, + "Warning: No server certificate defined; will use a selfsigned one.\n" " Suggested action: either install a certificate or change tls_advertise_hosts option"); oldsignal = signal(SIGCHLD, SIG_DFL); @@ -3034,7 +3036,7 @@ systems. Therefore they are available only when requested by compile-time options. */ void -readconf_main(void) +readconf_main(BOOL nowarn) { int sep = 0; struct stat statbuf; @@ -3472,7 +3474,7 @@ if ((tls_verify_hosts != NULL || tls_try_verify_hosts != NULL) && /* This also checks that the library linkage is working and we can call routines in it, so call even if tls_require_ciphers is unset */ -if (!tls_dropprivs_validate_require_cipher()) +if (!tls_dropprivs_validate_require_cipher(nowarn)) exit(1); /* Magic number: at time of writing, 1024 has been the long-standing value @@ -3496,16 +3498,16 @@ if (openssl_options != NULL) # endif } -if (gnutls_require_kx || gnutls_require_mac || gnutls_require_proto) +if (!nowarn && (gnutls_require_kx || gnutls_require_mac || gnutls_require_proto)) log_write(0, LOG_MAIN, "WARNING: main options" " gnutls_require_kx, gnutls_require_mac and gnutls_require_protocols" " are obsolete\n"); #endif /*SUPPORT_TLS*/ -if ((!add_environment || *add_environment == '\0') && !keep_environment) +if (!nowarn && !keep_environment && environ && *environ) log_write(0, LOG_MAIN, - "WARNING: purging the environment.\n" - " Suggested action: use keep_environment and add_environment.\n"); + "Warning: purging the environment.\n" + " Suggested action: use keep_environment."); } @@ -4302,10 +4304,10 @@ current = next; /* List the parsed config lines, care about nice formatting and hide the values unless we're the admin user */ void -print_config(BOOL admin) +print_config(BOOL admin, BOOL terse) { config_line_item *i; -const int TS = 2; +const int TS = terse ? 0 : 2; int indent = 0; for (i = config_lines; i; i = i->next) @@ -4345,7 +4347,7 @@ for (i = config_lines; i; i = i->next) /* begin lines are left aligned */ else if (Ustrncmp(current, "begin", 5) == 0 && isspace(current[5])) { - puts(""); + if (!terse) puts(""); puts(CCS current); indent = TS; } @@ -4353,7 +4355,8 @@ for (i = config_lines; i; i = i->next) /* router/acl/transport block names */ else if (current[Ustrlen(current)-1] == ':' && !Ustrchr(current, '=')) { - printf("\n%*s%s\n", TS, "", current); + if (!terse) puts(""); + printf("%*s%s\n", TS, "", current); indent = 2 * TS; }