]> git.defcon.no Git - hermes/blobdiff - api/numbers.php
Moved API-files to a separate API directory.
[hermes] / api / numbers.php
diff --git a/api/numbers.php b/api/numbers.php
new file mode 100644 (file)
index 0000000..e9fc796
--- /dev/null
@@ -0,0 +1,141 @@
+<?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'] );
+?>