Commit 40a723d7 authored by Peio Rigaux's avatar Peio Rigaux

Fills new fields in db (country_code and country_name) on userinfo creation...

Fills new fields in db (country_code and country_name) on userinfo creation with a call to api.ipapi.com
parent acf73956
Pipeline #8065 passed with stage
in 13 seconds
......@@ -62,4 +62,19 @@ define('ALLOW_SAME_EMAILS_ON_MULTILPLE_ACCOUNTS', True);
*/
define('RECOVER_ACCOUNT_IF_EXISTS', False);
?>
\ No newline at end of file
/*
* Enabling geoloc of accounts in user_info table.
* When this option is set, the fields coutry_name and country_code will be filled
* with a call to api.ipapi.com
*
* Default value: False
*/
define("ENABLE_NEW_ACCOUNTS_GEOLOC", False);
/* API key for geoloc. If you need geoloc and don't have a key,
* ask it on ipapi.com
*/
define("GEOLOC_ACCESS_KEY", "");
?>
......@@ -99,4 +99,4 @@ define("EXPIRATION_DELAY", 180);
*/
define ("INVALID_CONFIRMATION_KEY", "ERROR");
?>
\ No newline at end of file
?>
......@@ -32,4 +32,4 @@ define("LOG_FILE", "/var/opt/belledonne-communications/log/account-manager.log")
*/
define("LOG_DIR", "/var/opt/belledonne-communications/log/");
?>
\ No newline at end of file
?>
<?php
/*
Flexisip Account Manager is a set of tools to manage SIP accounts.
Copyright (C) 2019 Belledonne Communications SARL, All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
include_once __DIR__ . '/../config/config.php';
class Geoloc {
static function getGeolocInfosFromIp($ip_address){
if($ip_address == "::1" || $ip_address == "127.0.0.1" || $ip_address == "localhost"){
$service_url = 'https://ipecho.net/plain';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
Logger::getInstance()->error('Error occured during curl exec (getting public ip of server). Additionnal info: ' . var_export($info));
return false;
} else{
Logger::getInstance()->debug("Getting external public ip from ipecho.net= " . $curl_response);
$ip_address = $curl_response;
}
curl_close($curl);
}
$service_url = 'http://api.ipapi.com/' . $ip_address .'?access_key='. GEOLOC_ACCESS_KEY .'&fields=country_code,country_name';
Logger::getInstance()->debug("Getting geoloc infos for ip after parse if=" . $ip_address);
Logger::getInstance()->debug("Geoloc url = " . $service_url);
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
Logger::getInstance()->error('Error occured during curl exec (geoloc). Additionnal info: ' . var_export($info));
return false;
}
curl_close($curl);
Logger::getInstance()->debug('geoloc, curl response : ' . $curl_response);
$decoded = json_decode($curl_response);
return $decoded;
}
}
......@@ -24,7 +24,7 @@ class Logger {
private static $instance = null;
private $log_file;
public function __construct() {
if (!LOGS_ENABLED) {
return;
......@@ -38,17 +38,17 @@ class Logger {
$this->log_file = LOG_DIR . "/" . date('d-M-Y') . '.logs';
}
}
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new Logger();
}
return self::$instance;
}
function mylog($level, $message) {
private function mylog($level, $message) {
if (!LOGS_ENABLED) {
return;
}
......@@ -85,4 +85,4 @@ class Logger {
}
}
?>
\ No newline at end of file
?>
......@@ -70,5 +70,8 @@ define ("PHONE_NOT_E164", "ERROR_PHONE_ISNT_E164");
define ("MAX_SMS_ALLOWED_EXCEEDED", "ERROR_MAX_SMS_EXCEEDED");
define ("SMS_API_FAILURE", "ERROR_CANT_SEND_SMS");
/* Geoloc error */
define ("GEOLOC_FAILED", "ERROR_GEOLOC_FAILED");
?>
\ No newline at end of file
?>
......@@ -26,7 +26,7 @@ use \Ovh\Sms\SmsApi;
include_once __DIR__ . '/../database/database.php';
include_once __DIR__ . '/../objects/sms.php';
include_once __DIR__ . '/../misc/logging.php';
include_once __DIR__ . '/../xmlrpc/results_values.php';
include_once __DIR__ . '/results_values.php';
include_once __DIR__ . '/utilities.php';
// Internationalization
......@@ -47,13 +47,13 @@ function send_sms_ovh($phone, $key, $lang) {
Logger::getInstance()->warning("[SMS] SMS API disabled");
return SMS_DISABLED;
}
$sms = new SmsApi(SMS_OVH_API_KEY, SMS_OVH_API_SECRET, SMS_OVH_ENDPOINT, SMS_OVH_CONSUMER_KEY);
$accounts = $sms->getAccounts();
$sms->setAccount($accounts[0]);
if (SMS_USE_SENDER) {
$senders = $sms->getSenders();
/* The account must be validated in the OVH interface and by OVH itself */
if (count($senders) == 0) {
Logger::getInstance()->warning("[SMS] No sender found, creating one " . SMS_OVH_SENDER . " / " . SMS_OVH_REASON . " : " . SMS_OVH_DESC);
......@@ -83,7 +83,7 @@ function send_sms_ovh($phone, $key, $lang) {
$text = get_sms_string_for_lang($lang);
$text = str_replace("#CODE#", $key, $text);
$result = $message->send($text);
$credits_removed = $result['totalCreditsRemoved'];
Logger::getInstance()->message("[SMS] " . $credits_removed . " credit removed");
$invalid_receiver = $result['invalidReceivers'];
......@@ -126,15 +126,15 @@ function send_sms($phone, $key, $lang) {
Logger::getInstance()->warning("[SMS] SMS API disabled");
return SMS_DISABLED;
}
if (startswith($phone, TESTS_PHONE_PREFIX)) {
Logger::getInstance()->error("[SMS] Not sending sms to fake number used for tests purposes: " . $phone);
return TEST_ACCOUNTS_DISABLED;
}
$now_date = new DateTime('now');
$now = $now_date->getTimestamp() * 1000;
$database = new Database();
$db = $database->getConnection();
$sms = new SMS($db);
......@@ -158,7 +158,7 @@ function send_sms($phone, $key, $lang) {
$sms->count = 1;
$sms->create();
}
if (SMS_OVH_API_KEY != NULL && SMS_OVH_API_KEY != "" && SMS_OVH_API_SECRET != NULL && SMS_OVH_API_SECRET != "" && SMS_OVH_CONSUMER_KEY != NULL && SMS_OVH_CONSUMER_KEY != "" && SMS_OVH_ENDPOINT != NULL && SMS_OVH_ENDPOINT != "") {
try {
send_sms_ovh($phone, $key, $lang);
......@@ -176,4 +176,4 @@ function send_sms($phone, $key, $lang) {
return SMS_API_FAILURE;
}
?>
\ No newline at end of file
?>
<?php
include_once __DIR__ . '/../database/database.php';
include_once __DIR__ . '/../objects/account.php';
include_once __DIR__ . '/../objects/password.php';
include_once __DIR__ . '/../objects/alias.php';
include_once __DIR__ . '/../objects/user_info.php';
include_once __DIR__ . '/utilities.php';
include_once __DIR__ . '/geoloc.php';
include_once __DIR__ . '/results_values.php';
// args = [username, ha1, firstname, lastname, gender, subscribe, [domain], [algo]]
function update_account_user_info($username, $ha1, $firstname, $lastname, $gender, $subscribe, $domain, $algo) {
Logger::getInstance()->message("update_account_user_info(" . $username . ", " . $domain . " : " . $firstname . ", " . $lastname . ", " . $gender . ", " . $subscribe . ")");
$database = new Database();
$db = $database->getConnection();
$account = new Account($db);
$account->username = $username;
$account->domain = $domain;
if (!$account->getOne()) {
return ACCOUNT_NOT_FOUND;
}
Logger::getInstance()->debug("userInfo : Account after get one " . $account);
$password = new Password($db);
$password->account_id = $account->id;
$password->algorithm = $algo;
if (!$password->getOne()) {
return PASSWORD_NOT_FOUND;
}
if (!password_match($ha1, $password->password)) {
return PASSWORD_DOESNT_MATCH;
}
$user_info = new UserInfo($db);
$user_info->account_id = $account->id;
if(ENABLE_NEW_ACCOUNTS_GEOLOC){
Logger::getInstance()->debug("userInfo : Account ip after enable geoloc if " . $account->ip_address);
$country_infos = Geoloc::getGeolocInfosFromIp($account->ip_address);
if($country_infos){
$user_info->country_code = $country_infos->country_code;
$user_info->country_name = $country_infos->country_name;
}
//error message is displayed from geoloc method.
else{
return GEOLOC_FAILED;
}
Logger::getInstance()->debug("Getting geoloc infos : country_code=".
$country_infos->country_code . ' country_name=' . $country_infos->country_name);
}
$update = $user_info->getOne();
$user_info->firstname = $firstname;
$user_info->lastname = $lastname;
$user_info->gender = $gender;
$user_info->subscribe = $subscribe;
if ($update) {
$user_info->update();
} else {
$user_info->create();
}
return OK;
}
......@@ -23,7 +23,7 @@ class Account {
public $id;
public $username;
public $domain;
public $domain;
public $email;
public $activated;
public $confirmation_key;
......@@ -32,7 +32,7 @@ class Account {
public $creation_time;
public $expire_time;
public $alias;
public function __construct($db) {
$this->conn = $db;
}
......@@ -54,6 +54,9 @@ class Account {
if (!empty($this->activated)) {
$to_string = $to_string . "activated=" . $this->activated . ", ";
}
if (!empty($this->ip_address)) {
$to_string = $to_string . "ip_address=" . $this->ip_address . ", ";
}
if (!empty($this->confirmation_key)) {
$to_string = $to_string . "confirmation_key=" . $this->confirmation_key . ", ";
}
......@@ -119,7 +122,7 @@ class Account {
}
function create() {
$query = "INSERT INTO " . ACCOUNTS_DB_TABLE . " SET username=:username, domain=:domain, email=:email, activated=:activated,
$query = "INSERT INTO " . ACCOUNTS_DB_TABLE . " SET username=:username, domain=:domain, email=:email, activated=:activated,
confirmation_key=:confirmation_key, ip_address=:ip_address, user_agent=:user_agent, creation_time=:creation_time";
if (USE_IN_APP_PURCHASES) {
......@@ -163,7 +166,7 @@ class Account {
function update() {
$query = "UPDATE " . ACCOUNTS_DB_TABLE . " SET username=:username, domain=:domain, activated=:activated";
if (!empty($this->email)) {
$query = $query . ", email=:email";
}
......@@ -188,7 +191,7 @@ class Account {
$stmt->bindParam(":domain", $this->domain);
$stmt->bindParam(":activated", $this->activated);
$stmt->bindParam(":id", $this->id);
if (!empty($this->email)) {
$this->email = htmlspecialchars(strip_tags($this->email));
$stmt->bindParam(":email", $this->email);
......@@ -223,7 +226,7 @@ class Account {
}
function getAll() {
$query = "SELECT ac.id, ac.username, ac.domain, ac.activated, ac.confirmation_key, ac.email, al.alias FROM " . ACCOUNTS_DB_TABLE .
$query = "SELECT ac.id, ac.username, ac.domain, ac.activated, ac.confirmation_key, ac.email, al.alias FROM " . ACCOUNTS_DB_TABLE .
" ac LEFT JOIN " . ALIAS_DB_TABLE . " al ON ac.id = al.account_id";
$stmt = $this->conn->prepare($query);
Logger::getInstance()->debug("GetAll " . (string)$this);
......@@ -232,7 +235,7 @@ class Account {
}
function getOne() {
$query = "SELECT ac.id, ac.username, ac.domain, ac.activated, ac.confirmation_key, ac.email, al.alias FROM " . ACCOUNTS_DB_TABLE .
$query = "SELECT ac.id, ac.username, ac.domain, ac.activated, ac.confirmation_key, ac.email, ac.ip_address, al.alias FROM " . ACCOUNTS_DB_TABLE .
" ac LEFT JOIN " . ALIAS_DB_TABLE . " al ON ac.id = al.account_id";
if (!empty($this->id)) {
......@@ -270,7 +273,7 @@ class Account {
$stmt->bindParam(1, $this->email);
} else if (!empty($this->confirmation_key)) {
$stmt->bindParam(1, $this->confirmation_key);
}
}
Logger::getInstance()->debug("GetOne " . (string)$this);
if ($stmt->execute()) {
......@@ -286,7 +289,9 @@ class Account {
$this->email = $row['email'];
$this->activated = $row['activated'];
$this->confirmation_key = $row['confirmation_key'];
$this->ip_address = $row['ip_address'];
$this->alias = $row['alias'];
return true;
}
Logger::getInstance()->error($stmt->errorInfo());
......@@ -294,4 +299,4 @@ class Account {
}
}
?>
\ No newline at end of file
?>
......@@ -26,8 +26,10 @@ class UserInfo {
public $firstname;
public $lastname;
public $gender;
public $country_code;
public $country_name;
public $subscribe;
public function __construct($db) {
$this->conn = $db;
}
......@@ -35,22 +37,28 @@ class UserInfo {
public function __toString() {
$to_string = "UserInfo: ";
if (!empty($this->id)) {
$to_string = $to_string . "id=" . $this->id . ", ";
$to_string .= "id=" . $this->id . ", ";
}
if (!empty($this->account_id)) {
$to_string = $to_string . "account_id=" . $this->account_id . ", ";
$to_string .= "account_id=" . $this->account_id . ", ";
}
if (!empty($this->firstname)) {
$to_string = $to_string . "firstname=" . $this->firstname . ", ";
$to_string .= "firstname=" . $this->firstname . ", ";
}
if (!empty($this->lastname)) {
$to_string = $to_string . "lastname=" . $this->lastname . ", ";
$to_string .= "lastname=" . $this->lastname . ", ";
}
if (!empty($this->gender)) {
$to_string = $to_string . "gender=" . $this->gender . ", ";
$to_string .= "gender=" . $this->gender . ", ";
}
if (!empty($this->country_code)) {
$to_string .= "country_code=" . $this->country_code . ", ";
}
if (!empty($this->country_name)) {
$to_string .= "country_name=" . $this->country_name . ", ";
}
if (!empty($this->subscribe)) {
$to_string = $to_string . "subscribe=" . $this->subscribe . ", ";
$to_string .= "subscribe=" . $this->subscribe . ", ";
}
return substr($to_string, 0, -2);
}
......@@ -71,13 +79,15 @@ class UserInfo {
function createTable() {
$query = "CREATE TABLE IF NOT EXISTS " . USER_INFO_DB_TABLE . " (
id INTEGER(11) UNSIGNED NOT NULL AUTO_INCREMENT,
account_id INTEGER(11) UNSIGNED NOT NULL,
firstname VARCHAR(128) NOT NULL,
lastname VARCHAR(128) NOT NULL,
gender enum('male','female') NOT NULL,
subscribe enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (id))";
id INTEGER(11) UNSIGNED NOT NULL AUTO_INCREMENT,
account_id INTEGER(11) UNSIGNED NOT NULL,
firstname VARCHAR(128) NOT NULL,
lastname VARCHAR(128) NOT NULL,
gender enum('male','female') NOT NULL,
country_code VARCHAR(32),
country_name VARCHAR(512),
subscribe enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (id))";
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$stmt = $this->conn->prepare($query);
......@@ -109,6 +119,10 @@ class UserInfo {
function create() {
$query = "INSERT INTO " . USER_INFO_DB_TABLE . " SET account_id=:account_id, firstname=:firstname, lastname=:lastname, gender=:gender, subscribe=:subscribe";
if(ENABLE_NEW_ACCOUNTS_GEOLOC){
$query .= ", country_code=:country_code, country_name=:country_name";
}
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$stmt = $this->conn->prepare($query);
......@@ -124,6 +138,15 @@ class UserInfo {
$stmt->bindParam(":gender", $this->gender);
$stmt->bindParam(":subscribe", $this->subscribe);
if(ENABLE_NEW_ACCOUNTS_GEOLOC){
$this->country_code = htmlspecialchars(strip_tags($this->country_code));
$this->country_name = htmlspecialchars(strip_tags($this->country_name));
$stmt->bindParam(":country_code", $this->country_code);
$stmt->bindParam(":country_name", $this->country_name);
}
Logger::getInstance()->debug("Creating " . (string)$this);
if ($stmt->execute()) {
$this->id = $this->conn->lastInsertId();
......@@ -217,6 +240,8 @@ class UserInfo {
$this->firstname = $row['firstname'];
$this->lastname = $row['lastname'];
$this->gender = $row['gender'];
$this->country_code = $row['country_code'];
$this->country_name = $row['country_name'];
$this->subscribe = $row['subscribe'];
return true;
}
......@@ -225,4 +250,4 @@ class UserInfo {
}
}
?>
\ No newline at end of file
?>
......@@ -30,7 +30,7 @@ include_once __DIR__ . '/../misc/utilities.php';
include_once __DIR__ . '/accounts_email.php';
include_once __DIR__ . '/accounts_phone.php';
include_once __DIR__ . '/results_values.php';
include_once __DIR__ . '/../misc/results_values.php';
// args = [username, [domain]]
function xmlrpc_is_account_used($method, $args) {
......
......@@ -26,8 +26,8 @@ include_once __DIR__ . '/../objects/alias.php';
include_once __DIR__ . '/../objects/user_info.php';
include_once __DIR__ . '/../misc/utilities.php';
include_once __DIR__ . '/results_values.php';
include_once __DIR__ . '/../misc/user_info.php';
include_once __DIR__ . '/../misc/results_values.php';
// args = [username, email, [hash], useragent, [domain], [algo]]
function xmlrpc_create_email_account($method, $args) {
......@@ -53,7 +53,7 @@ function xmlrpc_create_email_account($method, $args) {
$account = new Account($db);
$account->username = $user;
$account->domain = $domain;
if ($account->getOne()) {
return USERNAME_TAKEN;
}
......@@ -74,6 +74,7 @@ function xmlrpc_create_email_account($method, $args) {
$account->email = $email;
$account->user_agent = $user_agent;
$account->ip_address = getIp();
$account->activated = AUTO_ACTIVATE_ACCOUNT ? "1" : "0";
$account->create();
......@@ -97,7 +98,18 @@ function xmlrpc_create_email_account($method, $args) {
}*/
}
return OK;
// args = [username, email, [hash], useragent, [domain], [algo]]
// args needed = [username, ha1, firstname, lastname, gender, subscribe, [domain], [algo]]
//need username + domain
//We call this function to set the geoloc if enabled
if(ENABLE_NEW_ACCOUNTS_GEOLOC){
return update_account_user_info($account->username, $hashed_password, NULL, NULL, "unknown", '0', $account->domain, $algo);
}
else {
return OK;
}
}
// args = [username, email, md5_hash, sha256_hash, useragent, [domain]], return OK
......@@ -122,7 +134,7 @@ function xmlrpc_create_email_md5_sha256_account($method, $args) {
$account = new Account($db);
$account->username = $user;
$account->domain = $domain;
if ($account->getOne()) {
return USERNAME_TAKEN;
}
......@@ -174,7 +186,15 @@ function xmlrpc_create_email_md5_sha256_account($method, $args) {
}*/
}
return OK;
//We call this function to set the geoloc if enabled
// args needed = [username, ha1, firstname, lastname, gender, subscribe, [domain], [algo]]
//need username + domain
if(ENABLE_NEW_ACCOUNTS_GEOLOC){
return update_account_user_info($account->username, $md5_hash, NULL, NULL, "unknown", '0', $account->domain, MD5);
}
else {
return OK;
}
}
// args = [username, key, [domain], [algo]]
......@@ -210,7 +230,7 @@ function xmlrpc_activate_email_account($method, $args) {
$account->activated = "1";
$account->update();
$expiration = NULL;
// TODO
/*if (USE_IN_APP_PURCHASES) {
......@@ -287,7 +307,7 @@ function xmlrpc_update_email($method, $args) {
$account = new Account($db);
$account->username = $user;
$account->domain = $domain;
if (!$account->getOne()) {
return ACCOUNT_NOT_FOUND;
}
......@@ -342,7 +362,7 @@ function xmlrpc_delete_email_account($method, $args) {
$account = new Account($db);
$account->username = $username;
$account->domain = $domain;
if (!$account->getOne()) {
return ACCOUNT_NOT_FOUND;
}
......@@ -389,4 +409,4 @@ function xmlrpc_accounts_email_register_methods($server) {
xmlrpc_server_register_method($server, 'delete_email_account', 'xmlrpc_delete_email_account');// args = [username, email, ha1, [domain], [algo]]
}
?>
\ No newline at end of file
?>
......@@ -27,7 +27,9 @@ include_once __DIR__ . '/../objects/user_info.php';
include_once __DIR__ . '/../misc/utilities.php';
include_once __DIR__ . '/results_values.php';
include_once __DIR__ . '/../misc/user_info.php';
include_once __DIR__ . '/../misc/results_values.php';
// args = [phone, [username], [password], useragent, [domain], [lang], [algo]]
function xmlrpc_create_phone_account($method, $args) {
......@@ -44,7 +46,7 @@ function xmlrpc_create_phone_account($method, $args) {
if (!check_parameter($phone, "phone")) {
return MISSING_PHONE_PARAM;
} else if (!startswith($phone, "+")) {
mylog("[ERROR] Phone doesn't start by +");
Logger::getInstance()->error("Phone doesn't start by +");
return PHONE_NOT_E164;
} else if ($algo == NULL) {
return ALGO_NOT_SUPPORTED;
......@@ -131,7 +133,15 @@ function xmlrpc_create_phone_account($method, $args) {
}
}
return OK;
//We call this function to set the geoloc if enabled
// args needed = [username, ha1, firstname, lastname, gender, subscribe, [domain], [algo]]
//need username + domain
if (ENABLE_NEW_ACCOUNTS_GEOLOC){
return update_account_user_info($account->username, $hashed_password, NULL, NULL, "unknown", '0', $account->domain, $algo);
}
else {
return OK;
}
}
// args = [phone, username, key, [domain], [algo]]
......@@ -288,7 +298,7 @@ function xmlrpc_delete_phone_account($method, $args) {
$account = new Account($db);
$account->username = $username;
$account->domain = $domain;
if (!$account->getOne()) {
return ACCOUNT_NOT_FOUND;
}
......@@ -345,11 +355,11 @@ function xmlrpc_is_phone_number_used($method, $args) {
$alias = new Alias($db);
$alias->alias = $phone;
$alias->domain = $domain;
if ($alias->getOne()) {
return OK_ALIAS;
}
$account = new Account($db);
$account->username = $phone;
$account->domain = $domain;
......@@ -386,10 +396,10 @@ function xmlrpc_get_phone_number_for_account($method, $args) {
if ($alias->getOne()) {
return $user;
}
return ACCOUNT_NOT_FOUND;
}
$phone = $account->alias;
if ($phone == NULL) {
return ALIAS_NOT_FOUND;
......@@ -399,7 +409,7 @@ function xmlrpc_get_phone_number_for_account($method, $args) {
return ACCOUNT_NOT_FOUND;
}
return $phone;
return $phone;
}
function xmlrpc_accounts_phone_register_methods($server) {
......@@ -407,9 +417,9 @@ function xmlrpc_accounts_phone_register_methods($server) {
xmlrpc_server_register_method($server, 'activate_phone_account', 'xmlrpc_activate_phone_account');// args = [phone, username, key, [domain], [algo]], return ha1_password
xmlrpc_server_register_method($server, 'recover_phone_account', 'xmlrpc_recover_phone_account');// args = [phone, [domain], [lang]], return username
xmlrpc_server_register_method($server, 'delete_phone_account', 'xmlrpc_delete_phone_account');// args = [username, phone, ha1, [domain], [algo]]
xmlrpc_server_register_method($server, 'is_phone_number_used', 'xmlrpc_is_phone_number_used');// args = [phone], return OK_ACCOUNT, OK_ALIAS or NOK
xmlrpc_server_register_method($server, 'get_phone_number_for_account', 'xmlrpc_get_phone_number_for_account');// args = [username, [domain]], return a phone number or an error
}
?>
\ No newline at end of file
?>
......@@ -26,7 +26,7 @@ include_once __DIR__ . '/../objects/alias.php';
include_once __DIR__ . '/../misc/utilities.php';
include_once __DIR__ . '/results_values.php';
include_once __DIR__ . '/../misc/results_values.php';
// args = [phone, [domain]]
function xmlrpc_is_alias_used($method, $args) {
......@@ -46,7 +46,7 @@ function xmlrpc_is_alias_used($method, $args) {
$alias = new Alias($db);
$alias->alias = $phone;
$alias->domain = $domain;
if (!$alias->getOne()) {
return ALIAS_NOT_FOUND;
}
......@@ -72,7 +72,7 @@ function xmlrpc_link_phone_number_with_account($method, $args) {
/*} else if (db_alias_is_in_use($phone, $domain)) {
return PHONE_TAKEN;*/
}
$database = new Database();
$db = $database->getConnection();
$account = new Account($db);
......@@ -105,9 +105,9 @@ function xmlrpc_activate_phone_number_link($method, $args) {
$ha1 = $args[3];
$domain = get_domain($args[4]);
$algo = get_algo($args[5]);
Logger::getInstance()->message("[XMLRPC] xmlrpc_activate_phone_number_link(" . $user . ", " . $domain . ", " . $phone . ", " . $key . ", " . $algo . ")");
if (!check_parameter($phone, "phone")) {
return MISSING_PHONE_PARAM;
} else if (!check_parameter($user)) {
......@@ -121,7 +121,7 @@ function xmlrpc_activate_phone_number_link($method, $args) {
$account = new Account($db);
$account->username = $user;
$account->domain = $domain;
if (!$account->getOne()) {
return ACCOUNT_NOT_FOUND;
}
......@@ -147,7 +147,7 @@ function xmlrpc_activate_phone_number_link($method, $args) {
$alias = new Alias($db);
$alias->alias = $phone;
$alias->domain = $domain;