'failed', 'cause' => 'error', 'detail' => 'Database connection failed.')); exit; } token_auth(); //************************************************************************************* switch ( $_SERVER['PATH_INFO'] ) { case "/get": // Required GET parameters: // user: authentication username, SIP-username without domain component // domain: Domain/realm of the user. username + '@' + domain == SIP address. if ( array_key_exists( 'mac', $_POST) ) { $mac = $_POST['mac']; $relations = get_phone_users ( $mac ); if ( $relations ) { print json_encode( array( 'response' => 'ok', 'list' => $relations )); } else print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'No results.')); } else if ( ( array_key_exists( 'username', $_POST) && array_key_exists( 'domain', $_POST ) ) || array_key_exists('user', $_POST) ) { $username = ""; $domain = ""; if ( array_key_exists('username', $_POST) ) { $username = $_POST['username']; $domain = $_POST['domain']; } else { $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); break; } list ( $username, $domain ) = $user; } $userdata = get_user_phones( $username, $domain ); if ( $userdata ) { print json_encode( array( 'response' => 'ok', 'list' => $userdata )); } else print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'No results.')); } else print json_encode ( array( 'response' => 'invalid') ); break; case "/list": // List all (distinct) phone MAC-adresses registered... $search = null; if ( array_key_exists('search', $_POST ) ) $search = $_POST['search']; $phones = list_phones( $search ); print json_encode( array( 'response' => 'ok', 'list' => $phones )); break; case "/add": // Add a MAC+user... /* Parameters: mac The MAC-address of the phone to add an entry for Either: user A registered username on user@domain form (SIP address) Or: username A registered username, combines with: domain A valid domain .. to form a registered user@domain combo :) */ if ( array_key_exists('mac', $_POST ) && ( array_key_exists('user', $_POST) || ( array_key_exists('username', $_POST) && array_key_exists('domain', $_POST )))) { $username = ""; $domain = ""; if ( array_key_exists('username', $_POST) ) { $username = $_POST['username']; $domain = $_POST['domain']; } else { $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); break; } list ( $username, $domain ) = $user; } $mac = clean_mac($_POST['mac']); if ( !$mac ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'No valid MAC address given.') ); break; } if ( !is_provision_user ( $username, $domain ) ) { print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'User not registered.')); break; } $phones = get_user_phones ( $username, $domain); if ( $phones && in_array( $mac, $phones ) ) { print json_encode( array ( 'response' => 'failed', 'cause' => 'exists', 'detail' => 'This phone and user combination is already configured..')); break; } $res = add_phone_user ( $mac, $username, $domain ); if ( !$res ) { print json_encode( array ( 'response' => 'failed', 'cause' =>'dbfail', 'detail' => 'Failed to add phone to database.')); break; } else { print json_encode( array ( 'response' => 'ok', 'mac' => $mac, 'username' => $username, 'domain' => $domain) ); break; } break; } else print json_encode ( array( 'response' => 'invalid') ); break; case "/remove": // Del a MAC+user... /* Parameters: mac The MAC-address of the phone to add an entry for Either: user A registered username on user@domain form (SIP address) Or: username A registered username, combines with: domain A valid domain .. to form a registered user@domain combo :) */ if ( array_key_exists('mac', $_POST ) && ( array_key_exists('user', $_POST) || ( array_key_exists('username', $_POST) && array_key_exists('domain', $_POST )))) { $username = ""; $domain = ""; if ( array_key_exists('username', $_POST) ) { $username = $_POST['username']; $domain = $_POST['domain']; } else { $user = split_sipaddress($_POST['user']); if ( !$user ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') ); break; } list ( $username, $domain ) = $user; } $mac = clean_mac($_POST['mac']); if ( !$mac ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'No valid MAC address given.') ); break; } $phones = get_user_phones ( $username, $domain); if ( ! $phones || !in_array( $mac, $phones ) ) { print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'Unable to locate requested combination')); break; } $res = delete_phone_user ( $mac, $username, $domain ); if ( !$res ) { print json_encode( array ( 'response' => 'failed', 'cause' =>'dbfail', 'detail' => 'Failed to remove phone from database.')); break; } else { print json_encode( array ( 'response' => 'ok', 'mac' => $mac, 'username' => $username, 'domain' => $domain )); break; } break; } else print json_encode ( array( 'response' => 'invalid') ); break; default: print json_encode ( array( 'response' => 'invalid') ); } mysql_close( $config['sql_link'] ); ?>