silcd: allow ServerType, Location, Admin and AdminEmail to be empty
[silc.git] / apps / silcd / serverconfig.c
index 6a3cbf050269c627160f689616f4b3062759bed5..d2d062a79da93147fdbbc808511ba991e8c937c5 100644 (file)
@@ -2,9 +2,10 @@
 
   serverconfig.c
 
-  Author: Giovanni Giacobbi <giovanni@giacobbi.net>
+  Authors: Giovanni Giacobbi <giovanni@giacobbi.net>
+           Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1997 - 2007 Pekka Riikonen
+  Copyright (C) 1997 - 2014 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -655,6 +656,14 @@ SILC_CONFIG_CALLBACK(fetch_serverinfo)
       SILC_SERVER_LOG_ERROR(("Error: Could not load private key file."));
       return SILC_CONFIG_EPRINTLINE;
     }
+
+    /* Warn if key length is < 4096 (some versions created 4095 bit keys). */
+    if (silc_pkcs_private_key_get_len(server_info->private_key) < 4095) {
+      fprintf(stderr,
+              "warning: Your server private key %s length is under 4096 bits. "
+             "It is recommended to use at least 4096 bits. Consider "
+             "generating a new server key pair.\n", file_tmp);
+    }
   }
   else
     return SILC_CONFIG_EINTERNAL;
@@ -1255,10 +1264,10 @@ static const SilcConfigTable table_serverinfo[] = {
   { "hostname",                SILC_CONFIG_ARG_STR,    fetch_serverinfo, NULL},
   { "primary",         SILC_CONFIG_ARG_BLOCK,  fetch_serverinfo, table_serverinfo_c},
   { "secondary",       SILC_CONFIG_ARG_BLOCK,  fetch_serverinfo, table_serverinfo_c},
-  { "servertype",      SILC_CONFIG_ARG_STR   fetch_serverinfo, NULL},
-  { "location",                SILC_CONFIG_ARG_STR   fetch_serverinfo, NULL},
-  { "admin",           SILC_CONFIG_ARG_STR   fetch_serverinfo, NULL},
-  { "adminemail",      SILC_CONFIG_ARG_STR   fetch_serverinfo, NULL},
+  { "servertype",      SILC_CONFIG_ARG_STRE,   fetch_serverinfo, NULL},
+  { "location",                SILC_CONFIG_ARG_STRE,   fetch_serverinfo, NULL},
+  { "admin",           SILC_CONFIG_ARG_STRE,   fetch_serverinfo, NULL},
+  { "adminemail",      SILC_CONFIG_ARG_STRE,   fetch_serverinfo, NULL},
   { "user",            SILC_CONFIG_ARG_STR,    fetch_serverinfo, NULL},
   { "group",           SILC_CONFIG_ARG_STR,    fetch_serverinfo, NULL},
   { "publickey",       SILC_CONFIG_ARG_STR,    fetch_serverinfo, NULL},