2012-06-04 14:58:40 +00:00
<? php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
2013-06-09 21:39:18 +00:00
Copyright (C) 2008-2013 All Rights Reserved.
2012-06-04 14:58:40 +00:00
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php" ;
require_once "includes/require.php" ;
//set default variables
$dir_count = 0 ;
$file_count = 0 ;
$row_count = 0 ;
$tmp_array = '' ;
2013-04-09 22:27:02 +00:00
$device_template = '' ;
2012-06-04 14:58:40 +00:00
2013-05-24 10:49:18 +00:00
//get the domain_uuid
//get the domain
$domain_array = explode ( ":" , $_SERVER [ "HTTP_HOST" ]);
//get the domain_uuid
$sql = "select * from v_domains " ;
$sql .= "where domain_name = '" . $_SESSION [ 'domain_name' ] . "' " ;
$prep_statement = $db -> prepare ( $sql );
$prep_statement -> execute ();
$result = $prep_statement -> fetchAll ( PDO :: FETCH_NAMED );
foreach ( $result as $row ) {
$_SESSION [ "domain_uuid" ] = $row [ "domain_uuid" ];
}
unset ( $result , $prep_statement );
2012-06-04 14:58:40 +00:00
//if password was defined in the system -> variables page then require the password.
2012-08-11 22:52:50 +00:00
if ( strlen ( $_SESSION [ 'provision' ][ 'password' ][ 'var' ]) > 0 ) {
2012-06-04 14:58:40 +00:00
//deny access if the password doesn't match
2012-10-03 14:10:37 +00:00
if ( $_SESSION [ 'provision' ][ 'password' ][ 'var' ] != check_str ( $_REQUEST [ 'password' ])) {
2012-07-05 18:22:02 +00:00
//log the failed auth attempt to the system, to be available for fail2ban.
2012-06-04 14:58:40 +00:00
openlog ( 'FusionPBX' , LOG_NDELAY , LOG_AUTH );
2012-10-03 14:10:37 +00:00
syslog ( LOG_WARNING , '[' . $_SERVER [ 'REMOTE_ADDR' ] . "] provision attempt bad password for " . check_str ( $_REQUEST [ 'mac' ]));
2012-06-04 14:58:40 +00:00
closelog ();
usleep ( rand ( 1000000 , 3500000 )); //1-3.5 seconds.
echo "access denied" ;
return ;
}
}
//send a request to a remote server to validate the MAC address and secret
if ( strlen ( $_SERVER [ 'auth_server' ]) > 0 ) {
2012-10-03 14:10:37 +00:00
$result = send_http_request ( $_SERVER [ 'auth_server' ], 'mac=' . check_str ( $_REQUEST [ 'mac' ]) . '&secret=' . check_str ( $_REQUEST [ 'secret' ]));
2012-06-04 14:58:40 +00:00
if ( $result == "false" ) {
echo "access denied" ;
exit ;
}
}
2012-07-05 18:22:02 +00:00
//define PHP variables from the HTTP values
2012-10-03 14:10:37 +00:00
$mac = check_str ( $_REQUEST [ 'mac' ]);
$file = check_str ( $_REQUEST [ 'file' ]);
if ( strlen ( check_str ( $_REQUEST [ 'template' ])) > 0 ) {
2013-04-09 22:27:02 +00:00
$device_template = check_str ( $_REQUEST [ 'template' ]);
2012-06-04 14:58:40 +00:00
}
2012-07-05 18:22:02 +00:00
//check alternate MAC source
if ( empty ( $mac )){
if ( $_SERVER [ 'HTTP_USER_AGENT' ][ strlen ( $_SERVER [ 'HTTP_USER_AGENT' ]) - 17 - 1 ] == " " ) {
$mac = substr ( $_SERVER [ 'HTTP_USER_AGENT' ], - 17 );
} //Yealink: 17 digit mac appended to the user agent, so check for a space exactly 17 digits before the end.
} //check alternates
2012-06-04 14:58:40 +00:00
2012-07-05 18:22:02 +00:00
//prepare the mac address
2012-10-03 14:10:37 +00:00
//normalize the mac address to lower case
$mac = strtolower ( $mac );
//replace all non hexadecimal values and validate the mac address
$mac = preg_replace ( "#[^a-fA-F0-9./]#" , "" , $mac );
if ( strlen ( $mac ) != 12 ) {
echo "invalid mac address" ;
exit ;
}
2012-07-05 18:22:02 +00:00
//use the mac address to find the vendor
switch ( substr ( $mac , 0 , 6 )) {
case "00085d" :
2013-04-09 22:27:02 +00:00
$device_vendor = "aastra" ;
2012-07-05 18:22:02 +00:00
break ;
case "000e08" :
2013-04-09 22:27:02 +00:00
$device_vendor = "linksys" ;
2012-07-05 18:22:02 +00:00
break ;
case "0004f2" :
2013-04-09 22:27:02 +00:00
$device_vendor = "polycom" ;
2012-07-05 18:22:02 +00:00
break ;
case "00907a" :
2013-04-09 22:27:02 +00:00
$device_vendor = "polycom" ;
2012-07-05 18:22:02 +00:00
break ;
case "001873" :
2013-04-09 22:27:02 +00:00
$device_vendor = "cisco" ;
2012-07-05 18:22:02 +00:00
break ;
2013-05-10 16:41:36 +00:00
case "a44c11" :
$phone_vendor = "cisco" ;
break ;
case "30e4db" :
$phone_vendor = "cisco" ;
break ;
case "68efbd" :
$phone_vendor = "cisco" ;
break ;
2012-07-05 18:22:02 +00:00
case "00045a" :
2013-04-09 22:27:02 +00:00
$device_vendor = "linksys" ;
2012-07-05 18:22:02 +00:00
break ;
case "000625" :
2013-04-09 22:27:02 +00:00
$device_vendor = "linksys" ;
2012-07-05 18:22:02 +00:00
break ;
case "001565" :
2013-04-09 22:27:02 +00:00
$device_vendor = "yealink" ;
2012-07-05 18:22:02 +00:00
break ;
case "000413" :
2013-04-09 22:27:02 +00:00
$device_vendor = "snom" ;
2012-07-05 18:22:02 +00:00
default :
2013-04-09 22:27:02 +00:00
$device_vendor = "" ;
2012-06-04 14:58:40 +00:00
}
2013-04-09 22:27:02 +00:00
//check to see if the mac_address exists in v_devices
if ( mac_exists_in_devices ( $db , $mac )) {
//get the device_template
if ( strlen ( $device_template ) == 0 ) {
$sql = "SELECT * FROM v_devices " ;
2012-06-04 14:58:40 +00:00
$sql .= "where domain_uuid=:domain_uuid " ;
2013-04-09 22:27:02 +00:00
$sql .= "and device_mac_address=:mac " ;
2012-06-04 14:58:40 +00:00
$prep_statement_2 = $db -> prepare ( check_sql ( $sql ));
if ( $prep_statement_2 ) {
2013-04-29 14:45:25 +00:00
$prep_statement_2 -> bindParam ( ':domain_uuid' , $_SESSION [ 'domain_uuid' ]);
2012-06-04 14:58:40 +00:00
$prep_statement_2 -> bindParam ( ':mac' , $mac );
$prep_statement_2 -> execute ();
$row = $prep_statement_2 -> fetch ();
2013-04-28 07:24:41 +00:00
$device_uuid = $row [ "device_uuid" ];
2013-04-09 22:27:02 +00:00
$device_label = $row [ "device_label" ];
if ( strlen ( $row [ "device_vendor" ]) > 0 ) {
$device_vendor = $row [ "device_vendor" ];
2012-07-05 18:22:02 +00:00
}
2013-04-09 22:27:02 +00:00
$device_model = $row [ "device_model" ];
$device_firmware_version = $row [ "device_firmware_version" ];
$device_provision_enable = $row [ "device_provision_enable" ];
$device_template = $row [ "device_template" ];
$device_username = $row [ "device_username" ];
$device_password = $row [ "device_password" ];
$device_time_zone = $row [ "device_time_zone" ];
$device_description = $row [ "device_description" ];
2012-06-04 14:58:40 +00:00
}
}
//find a template that was defined on another phone and use that as the default.
2013-04-09 22:27:02 +00:00
if ( strlen ( $device_template ) == 0 ) {
$sql = "SELECT * FROM v_devices " ;
2012-06-04 14:58:40 +00:00
$sql .= "where domain_uuid=:domain_uuid " ;
2013-04-09 22:27:02 +00:00
$sql .= "and device_template like '%/%' " ;
2012-06-04 14:58:40 +00:00
$prep_statement3 = $db -> prepare ( check_sql ( $sql ));
if ( $prep_statement3 ) {
2013-04-29 14:45:25 +00:00
$prep_statement3 -> bindParam ( ':domain_uuid' , $_SESSION [ 'domain_uuid' ]);
2012-06-04 14:58:40 +00:00
$prep_statement3 -> bindParam ( ':mac' , $mac );
$prep_statement3 -> execute ();
$row = $prep_statement3 -> fetch ();
2013-04-09 22:27:02 +00:00
$device_label = $row [ "device_label" ];
$device_vendor = $row [ "device_vendor" ];
$device_model = $row [ "device_model" ];
$device_firmware_version = $row [ "device_firmware_version" ];
$device_provision_enable = $row [ "device_provision_enable" ];
$device_template = $row [ "device_template" ];
$device_username = $row [ "device_username" ];
$device_password = $row [ "device_password" ];
$device_time_zone = $row [ "device_time_zone" ];
$device_description = $row [ "device_description" ];
2012-06-04 14:58:40 +00:00
}
}
}
else {
//use the user_agent to pre-assign a template for 1-hit provisioning. Enter the a unique string to match in the user agent, and the template it should match.
$template_list = array (
"Linksys/SPA-2102" => "linksys/spa2102" ,
2013-04-29 14:45:25 +00:00
"Linksys/SPA-3102" => "linksys/spa3102" ,
2013-05-10 16:41:36 +00:00
"Cisco/SPA301" => "cisco/spa301" ,
"Cisco/SPA301D" => "cisco/spa302d" ,
"Cisco/SPA303" => "cisco/spa303" ,
"Cisco/SPA501G" => "cisco/spa501g" ,
"Cisco/SPA502G" => "cisco/spa502g" ,
"Cisco/SPA504G" => "cisco/spa504g" ,
"Cisco/SPA508G" => "cisco/spa508g" ,
"Cisco/SPA509G" => "cisco/spa509g" ,
"Cisco/SPA512G" => "cisco/spa512g" ,
"Cisco/SPA514G" => "cisco/spa514g" ,
"Cisco/SPA525G2" => "cisco/spa525g2" ,
"snom370" => "snom/370" ,
"snom370" => "snom/320"
2012-06-04 14:58:40 +00:00
);
foreach ( $template_list as $key => $val ){
if ( stripos ( $_SERVER [ 'HTTP_USER_AGENT' ], $key ) !== false ) {
2013-04-09 22:27:02 +00:00
$device_template = $val ;
2012-06-04 14:58:40 +00:00
break ;
}
}
unset ( $template_list );
2012-07-05 18:22:02 +00:00
//mac address does not exist in the table so add it
2013-04-09 22:27:02 +00:00
$device_uuid = uuid ();
$sql = "insert into v_devices " ;
2012-06-04 14:58:40 +00:00
$sql .= "(" ;
$sql .= "domain_uuid, " ;
2013-04-09 22:27:02 +00:00
$sql .= "device_uuid, " ;
$sql .= "device_mac_address, " ;
$sql .= "device_vendor, " ;
$sql .= "device_model, " ;
$sql .= "device_provision_enable, " ;
$sql .= "device_template, " ;
$sql .= "device_username, " ;
$sql .= "device_password, " ;
$sql .= "device_description " ;
2012-06-04 14:58:40 +00:00
$sql .= ")" ;
$sql .= "values " ;
$sql .= "(" ;
2013-04-29 14:45:25 +00:00
$sql .= "'" . $_SESSION [ 'domain_uuid' ] . "', " ;
2013-04-09 22:27:02 +00:00
$sql .= "' $device_uuid ', " ;
2012-06-04 14:58:40 +00:00
$sql .= "' $mac ', " ;
2013-04-09 22:27:02 +00:00
$sql .= "' $device_vendor ', " ;
2012-06-04 14:58:40 +00:00
$sql .= "'', " ;
$sql .= "'true', " ;
2013-04-09 22:27:02 +00:00
$sql .= "' $device_template ', " ;
2012-06-04 14:58:40 +00:00
$sql .= "'', " ;
$sql .= "'', " ;
$sql .= "'auto { $_SERVER [ 'HTTP_USER_AGENT' ] } ' " ;
$sql .= ")" ;
$db -> exec ( check_sql ( $sql ));
unset ( $sql );
}
2013-04-29 14:45:25 +00:00
//if the domain name directory exists then only use templates from it
2013-06-09 05:05:17 +00:00
if ( is_dir ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . '/resources/templates/provision/' . $_SESSION [ 'domain_name' ])) {
2013-04-29 14:45:25 +00:00
$device_template = $_SESSION [ 'domain_name' ] . '/' . $device_template ;
}
2012-06-04 14:58:40 +00:00
//if $file is not provided then look for a default file that exists
if ( strlen ( $file ) == 0 ) {
2013-06-09 05:05:17 +00:00
if ( file_exists ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . "/resources/templates/provision/" . $device_template . "/{v_mac}" )) {
2012-06-04 14:58:40 +00:00
$file = "{v_mac}" ;
}
2013-06-09 05:05:17 +00:00
elseif ( file_exists ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . "/resources/templates/provision/" . $device_template . "/{v_mac}.xml" )) {
2012-06-04 14:58:40 +00:00
$file = "{v_mac}.xml" ;
}
2013-06-09 05:05:17 +00:00
elseif ( file_exists ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . "/resources/templates/provision/" . $device_template . "/{v_mac}.cfg" )) {
2012-06-04 14:58:40 +00:00
$file = "{v_mac}.cfg" ;
}
else {
echo "file not found" ;
exit ;
}
}
else {
//make sure the file exists
2013-06-09 05:05:17 +00:00
if ( ! file_exists ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . "/resources/templates/provision/" . $device_template . "/" . $file )) {
2012-06-04 14:58:40 +00:00
echo "file not found" ;
exit ;
}
}
//log file for testing
//$tmp_file = "/tmp/provisioning_log.txt";
//$fh = fopen($tmp_file, 'w') or die("can't open file");
//$tmp_string = $mac."\n";
//fwrite($fh, $tmp_string);
//fclose($fh);
//set variables for testing
//$line1_displayname= "1001";
//$line1_shortname= "1001";
//$line1_user_id= "1001";
//$line1_user_password= "1234.";
//$line1_server_address= "10.2.0.2";
//$line2_server_address= "";
//$line2_displayname= "";
//$line2_shortname= "";
//$line2_user_uuid= "";
//$line2_user_password= "";
//$line2_server_address= "";
//$server1_address= "10.2.0.2";
//$server2_address= "";
//$server3_address= "";
//$proxy1_address= "10.2.0.2";
//$proxy2_address= "";
//$proxy3_address= "";
//get the contents of the template
2013-06-09 05:05:17 +00:00
$file_contents = file_get_contents ( $_SERVER [ "DOCUMENT_ROOT" ] . PROJECT_PATH . "/resources/templates/provision/" . $device_template . "/" . $file );
2012-06-04 14:58:40 +00:00
//replace the variables in the template in the future loop through all the line numbers to do a replace for each possible line number
//get the time zone
$time_zone_name = $_SESSION [ 'domain' ][ 'time_zone' ][ 'name' ];
if ( strlen ( $time_zone_name ) > 0 ) {
$time_zone_offset_raw = get_time_zone_offset ( $time_zone_name ) / 3600 ;
$time_zone_offset_hours = floor ( $time_zone_offset_raw );
$time_zone_offset_minutes = ( $time_zone_offset_raw - $time_zone_offset_hours ) * 60 ;
$time_zone_offset_minutes = number_pad ( $time_zone_offset_minutes , 2 );
if ( $time_zone_offset_raw > 0 ) {
$time_zone_offset_hours = number_pad ( $time_zone_offset_hours , 2 );
$time_zone_offset_hours = "+" . $time_zone_offset_hours ;
}
else {
$time_zone_offset_hours = str_replace ( "-" , "" , $time_zone_offset_hours );
$time_zone_offset_hours = "-" . number_pad ( $time_zone_offset_hours , 2 );
}
$time_zone_offset = $time_zone_offset_hours . ":" . $time_zone_offset_minutes ;
$file_contents = str_replace ( "{v_time_zone_offset}" , $time_zone_offset , $file_contents );
}
2012-07-05 18:56:26 +00:00
//create a mac address with back slashes for backwards compatability
$mac_dash = substr ( $mac , 0 , 2 ) . '-' . substr ( $mac , 2 , 2 ) . '-' . substr ( $mac , 4 , 2 ) . '-' . substr ( $mac , 6 , 2 ) . '-' . substr ( $mac , 8 , 2 ) . '-' . substr ( $mac , 10 , 2 );
2013-06-09 21:39:18 +00:00
//get the provisioning information for this MAC address.
2013-04-28 07:24:41 +00:00
$sql = "SELECT e.extension, e.password, e.effective_caller_id_name, d.device_extension_uuid, d.extension_uuid, d.device_line " ;
$sql .= "FROM v_device_extensions as d, v_extensions as e " ;
$sql .= "WHERE e.extension_uuid = d.extension_uuid " ;
$sql .= "AND d.device_uuid = '" . $device_uuid . "' " ;
$sql .= "AND d.domain_uuid = '" . $_SESSION [ 'domain_uuid' ] . "' " ;
$sql .= "and e.enabled = 'true' " ;
2012-06-04 14:58:40 +00:00
$prep_statement = $db -> prepare ( check_sql ( $sql ));
$prep_statement -> execute ();
$result = $prep_statement -> fetchAll ( PDO :: FETCH_NAMED );
2013-04-28 07:24:41 +00:00
$result_count = count ( $result );
foreach ( $result as $row ) {
$line_number = $row [ 'device_line' ];
$file_contents = str_replace ( "{v_line" . $line_number . "_server_address}" , $_SESSION [ 'domain_name' ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_displayname}" , $row [ "effective_caller_id_name" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_shortname}" , $row [ "extension" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_user_id}" , $row [ "extension" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_user_password}" , $row [ "password" ], $file_contents );
2013-06-09 21:39:18 +00:00
}
unset ( $prep_statement );
2013-04-28 07:24:41 +00:00
2013-06-09 21:39:18 +00:00
//get the provisioning information from device lines table
$sql = "SELECT * FROM v_device_lines " ;
$sql .= "WHERE device_uuid = '" . $device_uuid . "' " ;
$sql .= "AND domain_uuid = '" . $_SESSION [ 'domain_uuid' ] . "' " ;
$prep_statement = $db -> prepare ( check_sql ( $sql ));
$prep_statement -> execute ();
$result = $prep_statement -> fetchAll ( PDO :: FETCH_NAMED );
$result_count = count ( $result );
foreach ( $result as $row ) {
$line_number = $row [ 'line_number' ];
$file_contents = str_replace ( "{v_line" . $line_number . "_server_address}" , $row [ "server_address" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_outbound_proxy}" , $row [ "outbound_proxy" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_displayname}" , $row [ "display_name" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_user_id}" , $row [ "user_id" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_auth_id}" , $row [ "auth_id" ], $file_contents );
$file_contents = str_replace ( "{v_line" . $line_number . "_user_password}" , $row [ "password" ], $file_contents );
2012-06-04 14:58:40 +00:00
}
unset ( $prep_statement );
2012-07-05 18:22:02 +00:00
//set the mac address in the correct format
2013-04-09 22:27:02 +00:00
switch ( $device_vendor ) {
2012-07-05 18:22:02 +00:00
case "aastra" :
$mac = strtoupper ( $mac );
break ;
case "snom" :
$mac = strtoupper ( $mac );
$mac = str_replace ( "-" , "" , $mac );
default :
$mac = strtolower ( $mac );
$mac = substr ( $mac , 0 , 2 ) . '-' . substr ( $mac , 2 , 2 ) . '-' . substr ( $mac , 4 , 2 ) . '-' . substr ( $mac , 6 , 2 ) . '-' . substr ( $mac , 8 , 2 ) . '-' . substr ( $mac , 10 , 2 );
}
2012-06-04 14:58:40 +00:00
//replace the variables in the template in the future loop through all the line numbers to do a replace for each possible line number
$file_contents = str_replace ( "{v_mac}" , $mac , $file_contents );
2013-04-09 22:27:02 +00:00
$file_contents = str_replace ( "{v_label}" , $device_label , $file_contents );
$file_contents = str_replace ( "{v_firmware_version}" , $device_firmware_version , $file_contents );
$file_contents = str_replace ( "{domain_time_zone}" , $device_time_zone , $file_contents );
2012-06-04 14:58:40 +00:00
$file_contents = str_replace ( "{domain_name}" , $_SESSION [ 'domain_name' ], $file_contents );
$file_contents = str_replace ( "{v_project_path}" , PROJECT_PATH , $file_contents );
$file_contents = str_replace ( "{v_server1_address}" , $server1_address , $file_contents );
$file_contents = str_replace ( "{v_proxy1_address}" , $proxy1_address , $file_contents );
$file_contents = str_replace ( "{v_password}" , $password , $file_contents );
//cleanup any remaining variables
for ( $i = 1 ; $i <= 100 ; $i ++ ) {
$file_contents = str_replace ( "{v_line" . $i . "_server_address}" , "" , $file_contents );
$file_contents = str_replace ( "{v_line" . $i . "_displayname}" , "" , $file_contents );
$file_contents = str_replace ( "{v_line" . $i . "_shortname}" , "" , $file_contents );
$file_contents = str_replace ( "{v_line" . $i . "_user_id}" , "" , $file_contents );
$file_contents = str_replace ( "{v_line" . $i . "_user_password}" , "" , $file_contents );
}
2012-08-11 22:52:50 +00:00
//replace the dynamic provision variables that are defined in 'default settings' and 'domain settings'
//example: category=provision, subcategory=sip_transport, name=var, value=tls - used in the template as {v_sip_transport}
foreach ( $_SESSION [ 'provision' ] as $key => $value ) {
$file_contents = str_replace ( '{v_' . $key . '}' , $value [ 'var' ], $file_contents );
2012-06-04 14:58:40 +00:00
}
//deliver the customized config over HTTP/HTTPS
//need to make sure content-type is correct
$cfg_ext = ".cfg" ;
2013-04-09 22:27:02 +00:00
if ( $device_vendor === "aastra" && strrpos ( $file , $cfg_ext , 0 ) === strlen ( $file ) - strlen ( $cfg_ext )) {
2012-06-04 14:58:40 +00:00
header ( "content-type: text/plain" );
} else {
header ( "content-type: text/xml" );
}
2012-11-21 07:17:24 +00:00
header ( "Content-Length: " . strlen ( $file_contents ));
2012-06-04 14:58:40 +00:00
echo $file_contents ;
2013-04-29 14:45:25 +00:00
//define the function which checks to see if the mac address exists in devices
2013-04-09 22:27:02 +00:00
function mac_exists_in_devices ( $db , $mac ) {
$sql = "SELECT count(*) as count FROM v_devices " ;
2013-04-28 07:24:41 +00:00
$sql .= "WHERE domain_uuid=:domain_uuid " ;
$sql .= "AND device_mac_address=:mac " ;
2012-10-03 14:10:37 +00:00
$prep_statement = $db -> prepare ( check_sql ( $sql ));
if ( $prep_statement ) {
2013-04-29 14:45:25 +00:00
$prep_statement -> bindParam ( ':domain_uuid' , $_SESSION [ 'domain_uuid' ]);
2012-10-03 14:10:37 +00:00
$prep_statement -> bindParam ( ':mac' , $mac );
$prep_statement -> execute ();
$row = $prep_statement -> fetch ();
$count = $row [ 'count' ];
if ( $row [ 'count' ] > 0 ) {
return true ;
}
else {
return false ;
}
2012-06-04 14:58:40 +00:00
}
else {
return false ;
}
}
?>