X-Git-Url: https://git.defcon.no/?a=blobdiff_plain;f=alias.php;fp=alias.php;h=0000000000000000000000000000000000000000;hb=220a8d4c07bfb4cb6be8122fda7dc6ceb0d1da8f;hp=6451b2eef3efa52c774c1997afbd9b072df6f3e5;hpb=e9dd114b2570a41c4f517bdee270fbc2c791de92;p=hermes diff --git a/alias.php b/alias.php deleted file mode 100644 index 6451b2e..0000000 --- a/alias.php +++ /dev/null @@ -1,212 +0,0 @@ - 'failed', 'cause' => 'error', 'detail' => 'Database connection failed.')); - exit; -} - -//************************************************************************************* - switch ( $_SERVER['PATH_INFO'] ) - { - case "/list": - /* - Required parameters should be... - destination - */ - $list = array(); - $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; - $list = get_e164_alias( $dest_username, $dest_domain ); - } - else if ( $dest_username && $dest_domain ) - { - $list = get_aliases( $dest_username, $dest_domain ); - } - } - 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; - - $list = get_destination( $alias_username, $alias_domain ); - } - else - $list = get_aliases( null, null ); - - - print json_encode ( array( 'response' => 'ok', 'aliases' => $list ) ); - break; - case "/add": - if ( array_key_exists( 'destination', $_GET) - && ( ( array_key_exists( 'alias_username', $_GET) && array_key_exists( 'alias_domain', $_GET ) ) || array_key_exists('alias', $_GET) ) ) - { - $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']) ) - { - // TODO: Provide a better response.. - print json_encode ( array( 'response' => 'invalid', 'cause' => 'destination' ) ); - break; - } - if ( !verify_sipadress( $alias_username . "@" . $alias_domain) ) - { - // TODO: Provide a better response.. - print json_encode ( array( 'response' => 'invalid', 'cause' => 'alias' ) ); - break; - } - - // TODO: Verify that alias does not collide with existing SIP-adress - if ( is_kamailio_domain( $alias_domain) && is_kamailio_subscriber($alias_username, $alias_domain) ) - { - print json_encode ( array( 'response' => 'failed', 'cause' => 'exists', 'detail' => 'The desired alias collides with an existing non-alias.' )); - break; - } - - list ( $dest_username, $dest_domain ) = split_sipaddress( $_GET['destination']); - - if ( (!$dest_username)||(!$dest_domain)) - { - // TODO: Provide a better response.. - print json_encode ( array( 'response' => 'invalid', 'cause' => 'alias' ) ); - break; - } - if ( !is_kamailio_domain( $alias_domain ) ) - { - print json_encode ( array( 'response' => 'invalid', 'cause' => 'nxdomain' ) ); - break; - } - if ( is_kamailio_domain( $dest_domain) && ( !is_kamailio_subscriber($dest_username, $dest_domain) ) ) - { - print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'Requesting a local alias, but there is no such user')); - break; - } - if ( verify_e164( $alias_username ) && is_kamailio_subscriber($dest_username, $dest_domain) ) - { - $t = get_e164_alias( $dest_username, $dest_domain ); - if ( $t ) - { - print json_encode ( array( - 'response' => 'failed', - 'cause' => 'exists', - 'detail' => 'User already has E164 number alias', - 'alias' => $t['alias'] )); - break; - } - } - if ( alias_exists ( $alias_username, $alias_domain ) ) - { - print json_encode( array ( 'response' => 'failed', 'cause' => 'exists', 'detail' => 'The requested alias is already present.')); - break; - } - if ( add_alias( $alias_username, $alias_domain, $dest_username, $dest_domain ) ) - { - print json_encode( array ('response' => 'ok', - 'alias' => $alias_username . "@" . $alias_domain, - 'destination' => $dest_username . "@" . $dest_domain )); - break; - } - print json_encode ( array ( 'response' => 'error' )); - break; - } - else - { - print json_encode ( array( 'response' => 'invalid') ); - } - break; - case "/remove": - if ( ( array_key_exists( 'alias_username', $_GET) && array_key_exists( 'alias_domain', $_GET ) ) || array_key_exists('alias', $_GET) ) - { - $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) ) - { - // TODO: Provide a better response.. - print json_encode ( array( 'response' => 'invalid', 'cause' => 'address', 'detail' => 'Not a valid SIP address' ) ); - break; - } - if ( ! alias_exists ( $alias_username, $alias_domain ) ) - { - print json_encode( array ( 'response' => 'failed', 'cause' => 'nonexistant', 'detail' => 'The requested alias does not exist.')); - break; - } - if ( remove_alias( $alias_username, $alias_domain ) ) - { - print json_encode( array ('response' => 'ok', - 'alias' => $alias_username . "@" . $alias_domain)); - break; - } - print json_encode ( array ( 'response' => 'error' )); - break; - } - print json_encode ( array( 'response' => 'invalid') ); - break; - default: - print json_encode ( array( 'response' => 'invalid') ); - } -mysql_close( $config['sql_link'] ); -?>