X-Git-Url: https://git.defcon.no/?a=blobdiff_plain;f=api%2Fuser.php;h=260ac35016365afc7f19a8d703beccd74ce019e5;hb=87cde98c94c33708506b8e94db43726393df5dfa;hp=a601d77fbff1ce9dbffc2436c5f0de0373e0cf2f;hpb=ad1d2910ca34f0d69be10b637a4294a400beceb8;p=hermes diff --git a/api/user.php b/api/user.php index a601d77..260ac35 100644 --- a/api/user.php +++ b/api/user.php @@ -1,4 +1,30 @@ 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -52,9 +78,9 @@ token_auth(); // Now, do funky stuff. /* - Test if user exists in both 'kamailio.subscribers' and 'provision.users' + Test if user exists in both 'kamailio.subscribers' and 'hermes.users' * Return 'response' => 'ok', 'type' => 'local', 'user' => complete user object. - Test if user exists in 'provision.user' only + Test if user exists in 'hermes.user' only * Return 'response' => 'ok', 'type' => 'remote', 'user' => complete user object. If user does is neither local nor remote * Return 'response' => 'failed' with 'cause' => 'nonexistant' @@ -87,8 +113,8 @@ token_auth(); * SQL SELECT CONCAT() WHERE CONCAT() must be used *shrug* */ $search = null; - if ( array_key_exists ( 'search', $_GET ) ) - $search = $_GET['search']; // TODO: Add some sanitation and input validation! + if ( array_key_exists ( 'search', $_POST ) ) + $search = $_POST['search']; // TODO: Add some sanitation and input validation! $list = list_users( $search ); print json_encode( array( 'response' => 'ok', 'list' => $list )); break; @@ -101,20 +127,20 @@ token_auth(); email Verify that domain is local (lookup in the 'kamailio.domain' table. - Verify that the username is available (nonexistant for domain in kamilio.subscribers (and provision.users?)) + Verify that the username is available (nonexistant for domain in kamilio.subscribers (and hermes.users?)) * Autocreate password * Add username, domain, email and created password to the 'kamailio.subscriber' table - * Get the registrar+port, proxy+port from the 'provision.servers' table. + * Get the registrar+port, proxy+port from the 'hermes.servers' table. * standard dialplan from configuration. - * Add to the 'provision.users' table: + * Add to the 'hermes.users' table: username -> username password -> generated password displayname -> displayname domain -> domain - registrar -> provision.servers.registrar - r_port -> provision.servers.r_port - proxy -> provision.servers.proxy - p_port -> provision.servers.p_port + registrar -> hermes.servers.registrar + r_port -> hermes.servers.r_port + proxy -> hermes.servers.proxy + p_port -> hermes.servers.p_port authid -> username dialplan -> standard dialplan linetext -> username @@ -124,20 +150,20 @@ token_auth(); */ // Test required parameters: if ( - ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) || array_key_exists('user', $_GET) ) - && array_key_exists( 'displayname', $_GET ) - && array_key_exists( 'email', $_GET ) ) + ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) || array_key_exists('user', $_POST) ) + && array_key_exists( 'displayname', $_POST ) + && array_key_exists( 'email', $_POST ) ) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -147,8 +173,8 @@ token_auth(); } $password = generate_password(); - $displayname = $_GET['displayname']; - $email = $_GET['email']; + $displayname = $_POST['displayname']; + $email = $_POST['email']; if ( !is_kamailio_domain( $domain ) ) { @@ -209,9 +235,10 @@ token_auth(); delete_provision_user( $username, $domain ); // Give errormessage, and quit. print json_encode( array( 'response' => 'failed', 'cause' => 'dbfail', 'detail' => 'Failed to read recently added data. Operations rolled back' ) ); - + break; } print json_encode( array( 'response' => 'ok', 'user' => $userdata )); + break; } else print json_encode( array( 'response' => 'invalid', 'cause' => 'parameters' ) ); @@ -232,13 +259,13 @@ token_auth(); linetext Verify that the domain is not a local kamailio domain (REMOTE user..) - Verify that the username+domain is not already registered in 'provision.users'. + Verify that the username+domain is not already registered in 'hermes.users'. * If r_port is empty, set to 5060 * If proxy/port is empty, set to registrar/port * If authid is empty, set to username * If dialplan is empty, set to standard dialplan * If linetext is empty, set to username@domain - * Add to the 'provision.users' table: + * Add to the 'hermes.users' table: username -> username password -> supplied password displayname -> displayname @@ -257,21 +284,21 @@ token_auth(); // Test required parameters: if ( - ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) || array_key_exists('user', $_GET) ) - && array_key_exists( 'displayname', $_GET ) - && array_key_exists( 'password', $_GET ) - && array_key_exists( 'registrar', $_GET ) ) + ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) || array_key_exists('user', $_POST) ) + && array_key_exists( 'displayname', $_POST ) + && array_key_exists( 'password', $_POST ) + && array_key_exists( 'registrar', $_POST ) ) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -280,16 +307,16 @@ token_auth(); list ( $username, $domain ) = $user; } - $password = $_GET['password']; - $displayname = $_GET['displayname']; - $registrar = $_GET['registrar']; - $r_port = ( array_key_exists('r_port', $_GET) ) ? $_GET['r_port'] : 5060; + $password = $_POST['password']; + $displayname = $_POST['displayname']; + $registrar = $_POST['registrar']; + $r_port = ( array_key_exists('r_port', $_POST) ) ? $_POST['r_port'] : 5060; - $proxy = ( array_key_exists('proxy', $_GET) ) ? $_GET['proxy'] : $registrar; - $p_port = ( array_key_exists('p_port', $_GET) ) ? $_GET['p_port'] : $r_port; - $authid = ( array_key_exists('authid', $_GET) ) ? $_GET['authid'] : $username; - $dialplan = ( array_key_exists('dialplan', $_GET) ) ? $_GET['dialplan'] : $config['standard_dialplan']; - $linetext = ( array_key_exists('linetext', $_GET) ) ? $_GET['linetext'] : $username . '@' . $domain; + $proxy = ( array_key_exists('proxy', $_POST) ) ? $_POST['proxy'] : $registrar; + $p_port = ( array_key_exists('p_port', $_POST) ) ? $_POST['p_port'] : $r_port; + $authid = ( array_key_exists('authid', $_POST) ) ? $_POST['authid'] : $username; + $dialplan = ( array_key_exists('dialplan', $_POST) ) ? $_POST['dialplan'] : $config['standard_dialplan']; + $linetext = ( array_key_exists('linetext', $_POST) ) ? $_POST['linetext'] : $username . '@' . $domain; if ( is_kamailio_domain( $domain ) ) { @@ -330,9 +357,10 @@ token_auth(); delete_provision_user( $username, $domain ); // Give errormessage, and quit. print json_encode( array( 'response' => 'failed', 'cause' => 'dbfail', 'detail' => 'Failed to read recently added data. Operations rolled back' ) ); - + break; } print json_encode( array( 'response' => 'ok', 'user' => $userdata )); + break; } else print json_encode( array( 'response' => 'invalid', 'cause' => 'parameters' ) ); @@ -342,9 +370,9 @@ token_auth(); Required parameters should be... ( username & domain ) | user - * Verify that no associations/relations exist in 'provision.phones' - * Verify that the user exists in 'provision.users' - * Remove from 'provision.users' + * Verify that no associations/relations exist in 'hermes.phones' + * Verify that the user exists in 'hermes.users' + * Remove from 'hermes.users' * Test to see of user exists in 'kamailio.subscriber'. * Remove from 'kamailio.subscribers' * Return response' => 'ok', 'type' => 'local' @@ -354,20 +382,20 @@ token_auth(); * If no such user exists, return 'response' => 'failed' with 'cause' => 'nonexistant' * On other failures, return 'response' => 'failed' with 'cause' => 'error' (may set 'detail' => 'message') */ - if ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) - || array_key_exists('user', $_GET) ) + if ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) + || array_key_exists('user', $_POST) ) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -405,29 +433,29 @@ token_auth(); ( username & domain ) | user password - * Verify that no associations/relations exist in 'provision.phones' + * Verify that no associations/relations exist in 'hermes.phones' * Verify that the user exists ... - * Test to see of user exists in 'provision.users' + * Test to see of user exists in 'hermes.users' * Test to see of user exists in 'kamailio.subscriber'. * If no such user exists, return 'response' => 'failed' with 'cause' => 'nonexistant' - * Update user passwords in 'provision' and 'kamailio' as appropriate + * Update user passwords in 'hermes' and 'kamailio' as appropriate * On other failures, return 'response' => 'failed' with 'cause' => 'error' (may set 'detail' => 'message') */ - if ( array_key_exists('password', $_GET) && - ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) - || array_key_exists('user', $_GET) )) + if ( array_key_exists('password', $_POST) && + ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) + || array_key_exists('user', $_POST) )) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -435,7 +463,7 @@ token_auth(); } list ( $username, $domain ) = $user; } - $password = $_GET['password']; + $password = $_POST['password']; // Check compatibility of password? TODO... // Fetch old password for rollback? TODO... @@ -478,21 +506,21 @@ token_auth(); ( username & domain ) | user email */ - if ( array_key_exists('email', $_GET) && - ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) - || array_key_exists('user', $_GET) )) + if ( array_key_exists('email', $_POST) && + ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) + || array_key_exists('user', $_POST) )) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -500,7 +528,7 @@ token_auth(); } list ( $username, $domain ) = $user; } - $email = $_GET['email']; + $email = $_POST['email']; // Check for user in kamailio if ( is_kamailio_subscriber( $username, $domain ) ) @@ -530,28 +558,28 @@ token_auth(); Required parameters should be... ( username & domain ) | user - * Verify that no associations/relations exist in 'provision.phones' + * Verify that no associations/relations exist in 'hermes.phones' * Verify that the user exists ... - * Test to see of user exists in 'provision.users' + * Test to see of user exists in 'hermes.users' * Test to see of user exists in 'kamailio.subscriber'. * If no such user exists, return 'response' => 'failed' with 'cause' => 'nonexistant' * Get update parameters, and change as appropriate ;) * On other failures, return 'response' => 'failed' with 'cause' => 'error' (may set 'detail' => 'message') */ - if ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) - || array_key_exists('user', $_GET) ) + if ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) + || array_key_exists('user', $_POST) ) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); @@ -571,9 +599,9 @@ token_auth(); $params = array('displayname', 'dialplan', 'linetext', 'registrar', 'r_port', 'proxy', 'p_port'); foreach ( $params as $p ) { - if ( array_key_exists($p, $_GET ) ) + if ( array_key_exists($p, $_POST ) ) { - $data = $_GET[$p]; + $data = $_POST[$p]; $t = update_provision_data($p, $username, $domain, $data); if ( $t != true ) { @@ -617,20 +645,20 @@ token_auth(); print json_encode( array( 'response' => 'invalid', 'cause' => 'parameters' ) ); break; case "/available": - if ( ( array_key_exists( 'username', $_GET) && array_key_exists( 'domain', $_GET ) ) - || array_key_exists('user', $_GET) ) + if ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) + || array_key_exists('user', $_POST) ) { $username = ""; $domain = ""; - if ( array_key_exists('username', $_GET) ) + if ( array_key_exists('username', $_POST) ) { - $username = $_GET['username']; - $domain = $_GET['domain']; + $username = $_POST['username']; + $domain = $_POST['domain']; } else { - $user = split_sipaddress($_GET['user']); + $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') );