--- /dev/null
+<?php
+require_once('config.php');
+//require_once('lib/user_functions.php');
+require_once('lib/common_functions.php');
+require_once('lib/db_functions.php');
+require_once('lib/number_functions.php');
+
+$config = get_config();
+
+$config['sql_link'] = @mysql_connect(
+ $config['sql_server'],
+ $config['sql_username'],
+ $config['sql_password']
+);
+if ( !$config['sql_link'] )
+{
+ print json_encode( array( 'response' => 'failed', 'cause' => 'error', 'detail' => 'Database connection failed.'));
+ exit;
+}
+
+//*************************************************************************************
+ switch ( $_SERVER['PATH_INFO'] )
+ {
+ case "/list":
+ // List all (distinct) phone MAC-adresses registered...
+ $limit = 0;
+ $random = false;
+ $search = null;
+ if ( array_key_exists('limit', $_GET ) && is_numeric( $_GET['limit']))
+ $limit = $_GET['limit'];
+
+ if ( array_key_exists('search', $_GET ) )
+ $search = $_GET['search'];
+ else if ( array_key_exists('random', $_GET ) && (strtolower( $_GET['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', $_GET) && array_key_exists('end', $_GET) )
+ {
+ $start = $_GET['start'];
+ $end = sql_clean( $_GET['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', $_GET))
+ {
+ $number = $_GET['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', $_GET))
+ {
+ $number = $_GET['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', $_GET))
+ {
+ $number = $_GET['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'] );
+?>