]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conf.c
conf.c: code cleanup
[ngircd-alex.git] / src / ngircd / conf.c
index d19109fcf63f8806c786d3adf2ba8235fd25ee82..4da5b9e0742ac55ccc6c2c3276ce3d184443c751 100644 (file)
@@ -109,56 +109,24 @@ ConfSSL_Init(void)
 }
 
 /**
- * Output SSL configuration variable containing a file name.
- * And make sure that the given file is readable.
+ * Make sure that a configured file is readable.
  *
- * @returns true when the file is readable.
+ * Currently, this function is only used for SSL-related options ...
+ *
+ * @param Var Configuration variable
+ * @param Filename Configured filename
  */
-static bool
-ssl_print_configvar(const char *name, const char *file)
+static void
+CheckFileReadable(const char *Var, const char *Filename)
 {
        FILE *fp;
 
-       if (!file) {
-               printf("  %s =\n", name);
-               return true;
-       }
-
-       fp = fopen(file, "r");
+       fp = fopen(Filename, "r");
        if (fp)
                fclose(fp);
        else
-               fprintf(stderr, "ERROR: %s \"%s\": %s\n",
-                       name, file, strerror(errno));
-
-       printf("  %s = %s\n", name, file);
-       return fp != NULL;
-}
-
-/**
- * Output SSL-related configuration variables.
- *
- * @returns true when all SSL-related configuration variables are valid.
- */
-static bool
-ConfSSL_Puts(void)
-{
-       bool ret;
-
-       ret = ssl_print_configvar("SSLKeyFile", Conf_SSLOptions.KeyFile);
-
-       if (!ssl_print_configvar("SSLCertFile", Conf_SSLOptions.CertFile))
-               ret = false;
-
-       if (!ssl_print_configvar("SSLDHFile", Conf_SSLOptions.DHFile))
-               ret = false;
-
-       if (array_bytes(&Conf_SSLOptions.KeyFilePassword))
-               puts("  SSLKeyFilePassword = <secret>");
-
-       array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
-
-       return ret;
+               Config_Error(LOG_ERR, "Can't read \"%s\" (\"%s\"): %s",
+                            Filename, Var, strerror(errno));
 }
 
 #endif
@@ -334,12 +302,11 @@ Conf_Test( void )
        config_valid = Validate_Config(true, false);
 
        /* Valid tty? */
-       if( isatty( fileno( stdin )) && isatty( fileno( stdout ))) {
-               puts( "OK, press enter to see a dump of your service configuration ..." );
-               getchar( );
-       } else {
-               puts( "Ok, dump of your server configuration follows:\n" );
-       }
+       if(isatty(fileno(stdin)) && isatty(fileno(stdout))) {
+               puts("OK, press enter to see a dump of your server configuration ...");
+               getchar();
+       } else
+               puts("Ok, dump of your server configuration follows:\n");
 
        puts("[GLOBAL]");
        printf("  Name = %s\n", Conf_ServerName);
@@ -913,7 +880,9 @@ Read_Config( bool ngircd_starting )
                                continue;
                        }
 
-                       Config_Error( LOG_ERR, "%s, line %d: Unknown section \"%s\"!", NGIRCd_ConfFile, line, section );
+                       Config_Error(LOG_ERR,
+                                    "%s, line %d: Unknown section \"%s\"!",
+                                    NGIRCd_ConfFile, line, section);
                        section[0] = 0x1;
                }
                if( section[0] == 0x1 ) continue;
@@ -977,6 +946,14 @@ Read_Config( bool ngircd_starting )
        /* No MOTD phrase configured? (re)try motd file. */
        if (array_bytes(&Conf_Motd) == 0)
                Read_Motd(Conf_MotdFile);
+
+#ifdef SSL_SUPPORT
+       /* Make sure that all SSL-related files are readable */
+       CheckFileReadable("SSLCertFile", Conf_SSLOptions.CertFile);
+       CheckFileReadable("SSLDHFile", Conf_SSLOptions.DHFile);
+       CheckFileReadable("SSLKeyFile", Conf_SSLOptions.KeyFile);
+#endif
+
        return true;
 }
 
@@ -1074,8 +1051,8 @@ WarnPAM(int UNUSED Line)
 /**
  * Handle legacy "NoXXX" options in [GLOBAL] section.
  *
- * TODO: This function and support for "NoXXX" should be removed starting
- * with ngIRCd release 19! (One release after marking it "deprecated").
+ * TODO: This function and support for "NoXXX" could be removed starting
+ * with ngIRCd release 19 (one release after marking it "deprecated").
  *
  * @param Var  Variable name.
  * @param Arg  Argument string.
@@ -1084,7 +1061,7 @@ WarnPAM(int UNUSED Line)
 static bool
 CheckLegacyNoOption(const char *Var, const char *Arg)
 {
-       if( strcasecmp( Var, "NoDNS" ) == 0 ) {
+       if(strcasecmp(Var, "NoDNS") == 0) {
                Conf_DNS = !Check_ArgIsTrue( Arg );
                return true;
        }
@@ -1192,9 +1169,9 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
        size_t len;
        const char *section;
 
-       assert( Line > 0 );
-       assert( Var != NULL );
-       assert( Arg != NULL );
+       assert(Line > 0);
+       assert(Var != NULL);
+       assert(Arg != NULL);
 
        if (strcasecmp(Var, "Name") == 0) {
                len = strlcpy(Conf_ServerName, Arg, sizeof(Conf_ServerName));
@@ -1256,12 +1233,13 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
                if (len == 0)
                        return;
                if (len >= LINE_LEN) {
-                       Config_Error_TooLong( Line, Var );
+                       Config_Error_TooLong(Line, Var);
                        return;
                }
                if (!array_copyb(&Conf_Motd, Arg, len + 1))
-                       Config_Error(LOG_WARNING, "%s, line %d: Could not append MotdPhrase: %s",
-                                                       NGIRCd_ConfFile, Line, strerror(errno));
+                       Config_Error(LOG_WARNING,
+                                    "%s, line %d: Could not append MotdPhrase: %s",
+                                    NGIRCd_ConfFile, Line, strerror(errno));
                Using_MotdFile = false;
                return;
        }
@@ -1305,8 +1283,12 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
        }
 
        if (CheckLegacyNoOption(Var, Arg)) {
-               Config_Error(LOG_WARNING, "%s, line %d: \"No\"-Prefix has been removed, use \"%s = %s\" in [FEATURES] section instead",
-                                       NGIRCd_ConfFile, Line, NoNo(Var), InvertArg(Arg));
+               /* TODO: This function and support for "NoXXX" could be
+                * be removed starting with ngIRCd release 19 (one release
+                * after marking it "deprecated"). */
+               Config_Error(LOG_WARNING,
+                            "%s, line %d (section \"Global\"): \"No\"-Prefix is deprecated, use \"%s = %s\" in [Options] section!",
+                            NGIRCd_ConfFile, Line, NoNo(Var), InvertArg(Arg));
                if (strcasecmp(Var, "NoIdent") == 0)
                        WarnIdent(Line);
                else if (strcasecmp(Var, "NoPam") == 0)