1 ) return -2; return $res; } function update_provision_pw ( $username, $domain, $password ) { global $config; if ( ! ($username && $domain && $password)) return false; $query = sprintf("UPDATE %s SET password = '%s' WHERE username = '%s' AND domain = '%s'", $config['hermes_users_table'], sql_clean($password), sql_clean($username), sql_clean($domain) ); if ( sql_dbexec_rows( $config['hermes_db'], $query) != 1 ) return false; return true; } function list_users ( $search = null ) { global $config; $query = sprintf("SELECT CONCAT(username, '@', domain), displayname FROM %s ORDER BY username,domain", $config['hermes_users_table'] ); if ( array_key_exists ( 'search', $_POST ) ) { $search = $_POST['search']; // TODO: Add some sanitation and input validation! $query = sprintf("SELECT CONCAT(username, '@', domain) FROM %s WHERE CONCAT(username, '@', domain) LIKE '%%%s%%' ORDER BY username,domain", $config['hermes_users_table'], sql_clean( $search ) ); } $result = sql_dbquery( $config['hermes_db'], $query ); if ( !$result ) return null; $list = array(); while ( $row = @mysql_fetch_row( $result ) ) { array_push( $list, array( "user" => $row[0], "displayname" => $row[1] ) ); } return $list; print json_encode( array( 'response' => 'ok', 'list' => $list )); } function get_userdata( $username, $domain ) { global $config; if ( is_kamailio_subscriber( $username, $domain ) // User must be present in both! && is_provision_user( $username, $domain ) ) $type = 'local'; else if ( is_provision_user( $username, $domain ) ) $type = 'remote'; else return null; $provision_data = null; $kamailio_data = null; $query_provision = sprintf ("SELECT id, username, password, displayname, domain, registrar, r_port, proxy, p_port, dialplan, authid, linetext FROM %s WHERE username = '%s' AND domain = '%s'", $config['hermes_users_table'], sql_clean($username), sql_clean($domain)); $provision_data = sql_dbquery_single( $config['hermes_db'] , $query_provision ); if ( ! $provision_data ) return false; if ( $type == 'local' ) { // WARNING: Note the typo in the name of the 'permittedcalls' column! $query_kamailio = sprintf ("SELECT id, username, domain, password, email_address, ha1, ha1b, rpid, permittedcalls FROM %s WHERE username = '%s' AND domain = '%s'", $config['kamailio_subscriber_table'], sql_clean($username), sql_clean($domain)); $kamailio_data = sql_dbquery_single( $config['kamailio_db'] , $query_kamailio ); if ( ! $kamailio_data ) return false; } $user['type'] = $type; $user['username'] = $provision_data['username']; $user['password'] = $provision_data['password']; $user['domain'] = $provision_data['domain']; $user['authid'] = $provision_data['authid']; $user['registrar'] = $provision_data['registrar']; $user['r_port'] = $provision_data['r_port']; $user['proxy'] = $provision_data['proxy']; $user['p_port'] = $provision_data['p_port']; $user['dialplan'] = $provision_data['dialplan']; $user['displayname'] = $provision_data['displayname']; $user['linetext'] = $provision_data['linetext']; if ( $type == 'local' ) { $user['email'] = $kamailio_data['email_address']; $user['ha1'] = $kamailio_data['ha1']; $user['ha1b'] = $kamailio_data['ha1b']; $user['rpid'] = $kamailio_data['rpid']; $user['permittedcalls'] = $kamailio_data['permitedcalls']; } return $user; } ?>