bool WSClientParser::Login() { switch_log_printf( SWITCH_CHANNEL_UUID_LOG(this->uuid), SWITCH_LOG_INFO, "WSClientParser::Login( " "this : %p, " "user : '******', " "domain : '%s', " "site : '%s', " "custom : '%s' " ") \n", this, mpUser, mpDomain, mpSite, mpCustom ); bool bFlag = true; // 暂时不做PHP验证 switch_event_t *locate_params; switch_xml_t xml = NULL; switch_event_create(&locate_params, SWITCH_EVENT_GENERAL); switch_assert(locate_params); switch_event_add_header_string(locate_params, SWITCH_STACK_BOTTOM, "source", "mod_ws"); switch_event_add_header_string(locate_params, SWITCH_STACK_BOTTOM, "site", mpSite); switch_event_add_header_string(locate_params, SWITCH_STACK_BOTTOM, "custom", mpCustom); /* Locate user */ if (switch_xml_locate_user_merged("id", mpUser, mpDomain, NULL, &xml, locate_params) != SWITCH_STATUS_SUCCESS) { switch_log_printf( SWITCH_CHANNEL_UUID_LOG(this->uuid), SWITCH_LOG_ERROR, "WSClientParser::Login( " "[Fail], " "this : %p, " "user : '******', " "domain : '%s' ", this, mpUser, mpDomain ); bFlag = false; } switch_event_destroy(&locate_params); // 发送登录成功事件 ws_login(); return bFlag; }
static abyss_bool user_attributes(const char *user, const char *domain_name, const char **ppasswd, const char **pvm_passwd, const char **palias, const char **pallowed_commands) { const char *passwd; const char *vm_passwd; const char *alias; const char *allowed_commands; switch_event_t *params; switch_xml_t x_user, x_params, x_param; passwd = NULL; vm_passwd = NULL; alias = NULL; allowed_commands = NULL; if (ppasswd) *ppasswd = NULL; if (pvm_passwd) *pvm_passwd = NULL; if (palias) *palias = NULL; if (pallowed_commands) *pallowed_commands = NULL; params = NULL; switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS); switch_assert(params); switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "number_alias", "check"); if (switch_xml_locate_user_merged("id", user, domain_name, NULL, &x_user, params) != SWITCH_STATUS_SUCCESS) { switch_event_destroy(¶ms); return FALSE; } switch_event_destroy(¶ms); alias = switch_xml_attr(x_user, "number-alias"); if ((x_params = switch_xml_child(x_user, "params"))) { for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) { const char *var = switch_xml_attr_soft(x_param, "name"); const char *val = switch_xml_attr_soft(x_param, "value"); if (!strcasecmp(var, "password")) { passwd = val; } else if (!strcasecmp(var, "vm-password")) { vm_passwd = val; } else if (!strcasecmp(var, "http-allowed-api")) { allowed_commands = val; } } } if (ppasswd && passwd) { *ppasswd = strdup(passwd); } if (pvm_passwd && vm_passwd) { *pvm_passwd = strdup(vm_passwd); } if (palias && alias) { *palias = strdup(alias); } if (pallowed_commands && allowed_commands) { *pallowed_commands = strdup(allowed_commands); } if (x_user) { switch_xml_free(x_user); } return TRUE; }