Add autosystemname setting to asterisk.conf
authorJason Parker <jparker@digium.com>
Fri, 11 May 2007 19:56:57 +0000 (19:56 +0000)
committerJason Parker <jparker@digium.com>
Fri, 11 May 2007 19:56:57 +0000 (19:56 +0000)
When enabled, it will set the systemname to be the hostname of the system

Issue 9713, patch by Juggie - slightly modified by me, to "failover" to localhost

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@63967 65c4cc65-6c06-0410-ace0-fbb531ad65f3

Makefile
main/asterisk.c

index 8799c07..ae4b046 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -545,6 +545,7 @@ samples: adsi
                echo ";[options]" ; \
                echo ";internal_timing = yes" ; \
                echo ";systemname = my_system_name ; prefix uniqueid with a system name for global uniqueness issues" ; \
+               echo ";autosystemname = yes ; automatically set systemname to hostname - uses 'localhost' on failure" ; \
                echo "; Changing the following lines may compromise your security." ; \
                echo ";[files]" ; \
                echo ";astctlpermissions = 0660" ; \
index be8ef8c..c44e2cb 100644 (file)
@@ -2374,6 +2374,7 @@ static void ast_readconfig(void)
        struct ast_config *cfg;
        struct ast_variable *v;
        char *config = AST_CONFIG_FILE;
+       char hostname[MAXHOSTNAMELEN] = "";
 
        if (ast_opt_override_config) {
                cfg = ast_config_load(ast_config_AST_CONFIG_FILE);
@@ -2523,6 +2524,15 @@ static void ast_readconfig(void)
                        ast_copy_string(ast_config_AST_RUN_GROUP, v->value, sizeof(ast_config_AST_RUN_GROUP));
                } else if (!strcasecmp(v->name, "systemname")) {
                        ast_copy_string(ast_config_AST_SYSTEM_NAME, v->value, sizeof(ast_config_AST_SYSTEM_NAME));
+               } else if (!strcasecmp(v->name, "autosystemname")) {
+                       if (ast_true(v->value)) {
+                               if (!gethostname(hostname, sizeof(hostname) - 1))
+                                       ast_copy_string(ast_config_AST_SYSTEM_NAME, hostname, sizeof(ast_config_AST_SYSTEM_NAME));
+                               else {
+                                       ast_log(LOG_ERROR, "Cannot obtain hostname for this system.  Using 'localhost' instead.\n");
+                                       ast_copy_string(ast_config_AST_SYSTEM_NAME, "localhost", sizeof(ast_config_AST_SYSTEM_NAME));
+                               }
+                       }
                } else if (!strcasecmp(v->name, "languageprefix")) {
                        ast_language_is_prefix = ast_true(v->value);
 #if defined(HAVE_SYSINFO)