'failed', 'cause' => 'error', 'detail' => 'Database connection failed.')); exit; } token_auth(); //************************************************************************************* switch ( $_SERVER['PATH_INFO'] ) { case "/list": // List all (distinct) phone MAC-adresses registered... $limit = 0; $random = false; $search = null; if ( array_key_exists('limit', $_POST ) && is_numeric( $_POST['limit'])) $limit = $_POST['limit']; if ( array_key_exists('search', $_POST ) ) $search = $_POST['search']; else if ( array_key_exists('random', $_POST ) && (strtolower( $_POST['random'] ) === 'true')) $random = true; $numbers = null; if ( $random ) { $numbers = get_random_numbers( $limit ); } else { $numbers = get_numbers ( $search, $limit ); } if ( $numbers ) { print json_encode( array( 'response' => 'ok', 'list' => $numbers )); break; } print json_encode( array( 'response' => 'failed', 'cause' => 'empty', 'detail' => 'Empty result.' )); break; case "/add_range": if ( array_key_exists('start', $_POST) && array_key_exists('end', $_POST) ) { $start = $_POST['start']; $end = sql_clean( $_POST['end'] ); $result = add_range( $start, $end ); if ( $result === 'ok' ) { print json_encode ( array( 'response' => 'ok') ); } else { print json_encode ( array( 'response' => 'failed', 'cause' => 'rejected', 'detail' => $result ) ); } } break; case "/add": // TODO: This should return better responses! // Currently, it will fail with "invalid" if ( array_key_exists('number', $_POST)) { $number = $_POST['number']; if (! verify_e164( $number ) ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'rejected', 'detail' => "Not a valid e164 number" )); break; } if ( number_inpool( $number ) ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'exists', 'detail' => "Number is already in the pool" )); break; } $result = add_number( $number ); if ( $result ) { print json_encode ( array( 'response' => 'ok', 'detail' => 'Added ' . $number, 'number' => $number ) ); break; } else { print json_encode ( array( 'response' => 'failed', 'cause' => 'rejected' )); } } print json_encode ( array( 'response' => 'invalid') ); break; case "/remove": if ( array_key_exists('number', $_POST)) { $number = $_POST['number']; if (! verify_e164( $number ) ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'rejected', 'detail' => "Not a valid e164 number" )); break; } if ( !number_inpool( $number ) ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => "Number not in pool" )); break; } if ( !remove_number ( $number ) ) { print json_encode ( array( 'response' => 'failed', 'cause' => 'dbfail', 'detail' => "Failed to remove number" )); break; } print json_encode ( array( 'response' => 'ok', 'detail' => 'Removed ' . $number, 'number' => $number ) ); break; } print json_encode ( array( 'response' => 'invalid') ); break; case "/inpool": if ( array_key_exists('number', $_POST)) { $number = $_POST['number']; if ( number_inpool( $number ) ) print json_encode ( array( 'response' => 'ok', 'number' => $number ) ); else print json_encode ( array( 'response' => 'failed', 'cause' => 'nonexistant') ); break; } default: print json_encode ( array( 'response' => 'invalid') ); } mysql_close( $config['sql_link'] ); ?>