static int authenticate(struct mansession *s, struct message *m) { struct opbx_config *cfg; char iabuf[INET_ADDRSTRLEN]; char *cat; char *user = astman_get_header(m, "Username"); char *pass = astman_get_header(m, "Secret"); char *authtype = astman_get_header(m, "AuthType"); char *key = astman_get_header(m, "Key"); char *events = astman_get_header(m, "Events"); cfg = opbx_config_load("manager.conf"); if (!cfg) return -1; cat = opbx_category_browse(cfg, NULL); while(cat) { if (strcasecmp(cat, "general")) { /* This is a user */ if (!strcasecmp(cat, user)) { struct opbx_variable *v; struct opbx_ha *ha = NULL; char *password = NULL; v = opbx_variable_browse(cfg, cat); while (v) { if (!strcasecmp(v->name, "secret")) { password = v->value; } else if (!strcasecmp(v->name, "permit") || !strcasecmp(v->name, "deny")) { ha = opbx_append_ha(v->name, v->value, ha); } else if (!strcasecmp(v->name, "writetimeout")) { int val = atoi(v->value); if (val < 100) opbx_log(LOG_WARNING, "Invalid writetimeout value '%s' at line %d\n", v->value, v->lineno); else s->writetimeout = val; } v = v->next;