]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
normalize the scanning of "general" options in the config file.
authorLuigi Rizzo <rizzo@icir.org>
Tue, 12 Dec 2006 10:35:10 +0000 (10:35 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Tue, 12 Dec 2006 10:35:10 +0000 (10:35 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48409 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index a0ecbd83ec29b264249b04dd3662ac0ade612e4c..f160813e6d135c113a2f5fda7da5faa676c36713 100644 (file)
@@ -105,7 +105,6 @@ struct eventqent {
 
 static AST_LIST_HEAD_STATIC(all_events, eventqent);
 
-static int portno = DEFAULT_MANAGER_PORT;
 static int displayconnects = 1;
 static int timestampevents = 0;
 static int httptimeout = 60;
@@ -2910,6 +2909,7 @@ int init_manager(void)
        struct hostent *hp;
        struct ast_hostent ahp;
        struct ast_manager_user *user = NULL;
+       struct ast_variable *var;
 
        if (!registered) {
                /* Register default actions */
@@ -2942,7 +2942,6 @@ int init_manager(void)
                /* Append placeholder event so master_eventq never runs dry */
                append_event("Event: Placeholder\r\n\r\n", 0);
        }
-       portno = DEFAULT_MANAGER_PORT;
        displayconnects = 1;
        cfg = ast_config_load("manager.conf");
        if (!cfg) {
@@ -2951,8 +2950,10 @@ int init_manager(void)
        }
 
        /* default values */
+       memset(&ami_desc.sin, 0, sizeof(struct sockaddr_in));
        memset(&amis_desc.sin, 0, sizeof(amis_desc.sin));
        amis_desc.sin.sin_port = htons(5039);
+       ami_desc.sin.sin_port = htons(DEFAULT_MANAGER_PORT);
 
        ami_tls_cfg.enabled = 0;
        if (ami_tls_cfg.certfile)
@@ -2962,71 +2963,54 @@ int init_manager(void)
                free(ami_tls_cfg.cipher);
        ami_tls_cfg.cipher = ast_strdup("");
 
-       /* XXX change this into a loop on  ast_variable_browse(cfg, "general"); */
-
-       if ((val = ast_variable_retrieve(cfg, "general", "sslenable")))
-               ami_tls_cfg.enabled = ast_true(val);
-       if ((val = ast_variable_retrieve(cfg, "general", "sslbindport")))
-               amis_desc.sin.sin_port = htons(atoi(val));
-       if ((val = ast_variable_retrieve(cfg, "general", "sslbindaddr"))) {
-               if ((hp = ast_gethostbyname(val, &ahp))) {
-                       memcpy(&amis_desc.sin.sin_addr, hp->h_addr, sizeof(amis_desc.sin.sin_addr));
-                       have_sslbindaddr = 1;
+       for (var = ast_variable_browse(cfg, "general"); var; var = var->next) {
+               val = var->value;
+               if (!strcasecmp(var->name, "ssenable"))
+                       ami_tls_cfg.enabled = ast_true(val);
+               else if (!strcasecmp(var->name, "ssbindport"))
+                       amis_desc.sin.sin_port = htons(atoi(val));
+               else if (!strcasecmp(var->name, "ssbindaddr")) {
+                       if ((hp = ast_gethostbyname(val, &ahp))) {
+                               memcpy(&amis_desc.sin.sin_addr, hp->h_addr, sizeof(amis_desc.sin.sin_addr));
+                               have_sslbindaddr = 1;
+                       } else {
+                               ast_log(LOG_WARNING, "Invalid bind address '%s'\n", val);
+                       }
+               } else if (!strcasecmp(var->name, "sslcert")) {
+                       free(ami_tls_cfg.certfile);
+                       ami_tls_cfg.certfile = ast_strdup(val);
+               } else if (!strcasecmp(var->name, "sslcipher")) {
+                       free(ami_tls_cfg.cipher);
+                       ami_tls_cfg.cipher = ast_strdup(val);
+               } else if (!strcasecmp(var->name, "enabled")) {
+                       enabled = ast_true(val);
+               } else if (!strcasecmp(var->name, "block-sockets")) {
+                       block_sockets = ast_true(val);
+               } else if (!strcasecmp(var->name, "webenabled")) {
+                       webenabled = ast_true(val);
+               } else if (!strcasecmp(var->name, "port")) {
+                       ami_desc.sin.sin_port = htons(atoi(val));
+               } else if (!strcasecmp(var->name, "bindaddr")) {
+                       if (!inet_aton(val, &ami_desc.sin.sin_addr)) {
+                               ast_log(LOG_WARNING, "Invalid address '%s' specified, using 0.0.0.0\n", val);
+                               memset(&ami_desc.sin.sin_addr, 0, sizeof(ami_desc.sin.sin_addr));
+                       }
+               } else if (!strcasecmp(var->name, "displayconnects")) {
+                       displayconnects = ast_true(val);
+               } else if (!strcasecmp(var->name, "timestampevents")) {
+                       timestampevents = ast_true(val);
+               } else if (!strcasecmp(var->name, "debug")) {
+                       manager_debug = ast_true(val);
+               } else if (!strcasecmp(var->name, "httptimeout")) {
+                       newhttptimeout = atoi(val);
                } else {
-                       ast_log(LOG_WARNING, "Invalid bind address '%s'\n", val);
-               }
-       }
-       if ((val = ast_variable_retrieve(cfg, "general", "sslcert"))) {
-               free(ami_tls_cfg.certfile);
-               ami_tls_cfg.certfile = ast_strdup(val);
-       }
-       if ((val = ast_variable_retrieve(cfg, "general", "sslcipher"))) {
-               free(ami_tls_cfg.cipher);
-               ami_tls_cfg.cipher = ast_strdup(val);
-       }
-
-       val = ast_variable_retrieve(cfg, "general", "enabled");
-       if (val)
-               enabled = ast_true(val);
-
-       val = ast_variable_retrieve(cfg, "general", "block-sockets");
-       if (val)
-               block_sockets = ast_true(val);
-
-       val = ast_variable_retrieve(cfg, "general", "webenabled");
-       if (val)
-               webenabled = ast_true(val);
-
-       if ((val = ast_variable_retrieve(cfg, "general", "port"))) {
-               if (sscanf(val, "%d", &portno) != 1) {
-                       ast_log(LOG_WARNING, "Invalid port number '%s'\n", val);
-                       portno = DEFAULT_MANAGER_PORT;
-               }
+                       ast_log(LOG_NOTICE, "Invalid keyword <%s> = <%s> in manager.conf [general]\n",
+                               var->name, val);
+               }       
        }
 
-       if ((val = ast_variable_retrieve(cfg, "general", "displayconnects")))
-               displayconnects = ast_true(val);
-
-       if ((val = ast_variable_retrieve(cfg, "general", "timestampevents")))
-               timestampevents = ast_true(val);
-
-       if ((val = ast_variable_retrieve(cfg, "general", "debug")))
-               manager_debug = ast_true(val);
-
-       if ((val = ast_variable_retrieve(cfg, "general", "httptimeout")))
-               newhttptimeout = atoi(val);
-
-       memset(&ami_desc.sin, 0, sizeof(struct sockaddr_in));
        if (enabled)
                ami_desc.sin.sin_family = AF_INET;
-       ami_desc.sin.sin_port = htons(portno);
-
-       if ((val = ast_variable_retrieve(cfg, "general", "bindaddr"))) {
-               if (!inet_aton(val, &ami_desc.sin.sin_addr)) {
-                       ast_log(LOG_WARNING, "Invalid address '%s' specified, using 0.0.0.0\n", val);
-                       memset(&ami_desc.sin.sin_addr, 0, sizeof(ami_desc.sin.sin_addr));
-               }
-       }
        if (!have_sslbindaddr)
                amis_desc.sin.sin_addr = ami_desc.sin.sin_addr;
        if (ami_tls_cfg.enabled)
@@ -3036,7 +3020,6 @@ int init_manager(void)
        AST_LIST_LOCK(&users);
 
        while ((cat = ast_category_browse(cfg, cat))) {
-               struct ast_variable *var = NULL;
 
                if (!strcasecmp(cat, "general"))
                        continue;