From: Jason Parker Date: Fri, 11 May 2007 19:56:57 +0000 (+0000) Subject: Add autosystemname setting to asterisk.conf X-Git-Tag: 1.6.0-beta1~3^2~2702 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a693e4d58c120afec718ec28d2befc354341e8f5;p=thirdparty%2Fasterisk.git Add autosystemname setting to asterisk.conf 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 --- diff --git a/Makefile b/Makefile index 8799c0745d..ae4b0464c4 100644 --- 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" ; \ diff --git a/main/asterisk.c b/main/asterisk.c index be8ef8c1d2..c44e2cbd67 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -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)