[asterisk-commits] russell: trunk r51234 - in /trunk: ./ main/manager.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Jan 18 10:33:34 MST 2007


Author: russell
Date: Thu Jan 18 11:33:33 2007
New Revision: 51234

URL: http://svn.digium.com/view/asterisk?view=rev&rev=51234
Log:
Merged revisions 51233 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r51233 | russell | 2007-01-18 11:18:43 -0600 (Thu, 18 Jan 2007) | 3 lines

Make the "hasmanager" option in users.conf actually have an effect.
(issue #8740, LnxPrgr3)

........

Modified:
    trunk/   (props changed)
    trunk/main/manager.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/main/manager.c
URL: http://svn.digium.com/view/asterisk/trunk/main/manager.c?view=diff&rev=51234&r1=51233&r2=51234
==============================================================================
--- trunk/main/manager.c (original)
+++ trunk/main/manager.c Thu Jan 18 11:33:33 2007
@@ -917,7 +917,41 @@
 		}
 	}
 	ast_config_destroy(cfg);
-    }
+	cfg = ast_config_load("users.conf");
+	if (!cfg)
+		return -1;
+	cat = NULL;
+	while ( (cat = ast_category_browse(cfg, cat)) ) {
+		if (!strcasecmp(cat, user) && strcasecmp(cat, "general"))
+			break;
+	}
+	if (!cat) {
+		ast_log(LOG_NOTICE, "%s tried to authenticate with nonexistent user '%s'\n", ast_inet_ntoa(s->sin.sin_addr), user);
+		ast_config_destroy(cfg);
+		return -1;
+	}
+	/* collect parameters for the user's entry from users.conf */
+	for (v = ast_variable_browse(cfg, cat); v; v = v->next) {
+		if (!strcasecmp(v->name, "secret"))
+			password = ast_strdupa(v->value);
+		else if (!strcasecmp(v->name, "read"))
+			readperm = get_perm(v->value);
+		else if (!strcasecmp(v->name, "write"))
+			writeperm = get_perm(v->value);
+		else if (!strcasecmp(v->name, "permit") ||
+			   !strcasecmp(v->name, "deny")) {
+			ha = ast_append_ha(v->name, v->value, ha, NULL);
+		} else if (!strcasecmp(v->name, "writetimeout")) {
+			int val = atoi(v->value);
+
+			if (val < 100)
+				ast_log(LOG_WARNING, "Invalid writetimeout value '%s' at line %d\n", v->value, v->lineno);
+			else
+				s->writetimeout = val;
+		}
+	}
+	ast_config_destroy(cfg);
+	}
 
 	if (ha) {
 		int good = ast_apply_ha(ha, &(s->sin));



More information about the asterisk-commits mailing list