]> git.defcon.no Git - hermes/blobdiff - alias.php
Several changes: Parameter-changes to several nodes, stubs added, verification of...
[hermes] / alias.php
index 398c12ae3126e59d2436294f44ec0a150e8cfe42..0c24b01d0f3b67950d03f54b2ca164d922c1d5f9 100644 (file)
--- a/alias.php
+++ b/alias.php
@@ -23,15 +23,69 @@ if ( !$config['sql_link'] )
        switch ( $_SERVER['PATH_INFO'] )
        {
                case "/list":
+                       /*
+                       Required parameters should be...
+                               destination
+                       */
+                       $dest_username = "";
+                       $dest_domain   = "";
+                       $e164_only = false;
+                       if ( array_key_exists( 'destination', $_GET) )
+                       {
+                               $tmp = split_sipaddress($_GET['destination']);
+                               if ( !$tmp )
+                               {
+                                       print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') );
+                                       break;
+                               }
+                               list ( $dest_username, $dest_domain ) = $tmp;
+
+                               if ( array_key_exists( 'e164', $_GET ) )
+                               {
+                                       if ( strtolower($_GET['e164']) == "true" ) $e164_only = true;
+                               }
+                               // TODO: Well. Code. This is a stub
+
+                               print json_encode ( array( 'response' => 'failed', 'cause' => 'notimplemented', 'detail' => 'Requested feature valid, but not implemented' ) );
+                       }
+                       else if ( array_key_exists( 'alias', $_GET) )
+                       {
+                               $tmp = split_sipaddress($_GET['alias']);
+                               if ( !$tmp )
+                               {
+                                       print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') );
+                                       break;
+                               }
+                               list ( $alias_username, $alias_domain ) = $tmp;
+
+                               // TODO: Well. Code. This is a stub
+
+                               print json_encode ( array( 'response' => 'failed', 'cause' => 'notimplemented', 'detail' => 'Requested feature valid, but not implemented' ) );
+                       }
+                       else 
+                               print json_encode( array( 'response' => 'invalid', 'cause' => 'parameters' ) );
                        break;
                case "/add":
                        if ( array_key_exists( 'destination', $_GET) 
-                               //&& array_key_exists( 'domain', $_GET ) 
-                               && array_key_exists( 'alias_username', $_GET ) 
-                               && array_key_exists( 'alias_domain', $_GET ) )
+                               && ( ( array_key_exists( 'alias_username', $_GET) && array_key_exists( 'alias_domain', $_GET ) ) || array_key_exists('alias', $_GET) ) )
                        {
-                               $alias_username = $_GET['alias_username'];
-                               $alias_domain   = $_GET['alias_domain'];
+                               $alias_username = "";
+                               $alias_domain = "";
+                               if ( array_key_exists('alias_username', $_GET) )
+                               {
+                                       $alias_username = $_GET['alias_username'];
+                                       $alias_domain = $_GET['alias_domain'];
+                               }
+                               else
+                               {
+                                       $alias = split_sipaddress($_GET['alias']);
+                                       if ( !$alias )
+                                       {
+                                               print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') );
+                                               break;
+                                       }
+                                       list ( $alias_username, $alias_domain ) = $alias;
+                               }
 
                                if ( !verify_sipadress($_GET['destination']) ) 
                                {
@@ -46,6 +100,8 @@ if ( !$config['sql_link'] )
                                        break;
                                }
 
+                               // TODO: Verify that alias does not collide with existing SIP-adress
+
                                list ( $dest_username, $dest_domain ) = split_sipaddress( $_GET['destination']);
 
                                if ( (!$dest_username)||(!$dest_domain))
@@ -98,11 +154,25 @@ if ( !$config['sql_link'] )
                        }       
                        break;
                case "/remove":
-                       if ( array_key_exists( 'alias_username', $_GET ) 
-                               && array_key_exists( 'alias_domain', $_GET ) )
+                       if ( ( array_key_exists( 'alias_username', $_GET) && array_key_exists( 'alias_domain', $_GET ) ) || array_key_exists('alias', $_GET) )
                        {
-                               $alias_username = $_GET['alias_username'];
-                               $alias_domain   = $_GET['alias_domain'];
+                               $alias_username = "";
+                               $alias_domain = "";
+                               if ( array_key_exists('alias_username', $_GET) )
+                               {
+                                       $alias_username = $_GET['alias_username'];
+                                       $alias_domain = $_GET['alias_domain'];
+                               }
+                               else
+                               {
+                                       $alias = split_sipaddress($_GET['alias']);
+                                       if ( !$alias )
+                                       {
+                                               print json_encode ( array( 'response' => 'failed', 'cause' => 'invalid', 'detail' => 'Invalid SIP address') );
+                                               break;
+                                       }
+                                       list ( $alias_username, $alias_domain ) = $alias;
+                               }
 
                                if ( !verify_sipadress( $alias_username . "@" . $alias_domain) )
                                {