2014-01-04 00:11:42 +01: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>
|
|
|
|
|
Copyright (C) 2010
|
|
|
|
|
All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
Contributor(s):
|
|
|
|
|
Mark J Crane <markjcrane@fusionpbx.com>
|
|
|
|
|
*/
|
|
|
|
|
include "root.php";
|
|
|
|
|
|
|
|
|
|
//define the device class
|
|
|
|
|
class device {
|
|
|
|
|
public $db;
|
|
|
|
|
public $domain_uuid;
|
2014-02-23 00:20:55 +01:00
|
|
|
public $template_dir;
|
2014-01-04 00:11:42 +01:00
|
|
|
|
|
|
|
|
public function __construct() {
|
|
|
|
|
//require_once "resources/classes/database.php";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __destruct() {
|
|
|
|
|
foreach ($this as $key => $value) {
|
|
|
|
|
unset($this->$key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function get_domain_uuid() {
|
|
|
|
|
return $this->domain_uuid;
|
|
|
|
|
}
|
|
|
|
|
|
2014-01-14 02:50:19 +01:00
|
|
|
public static function get_vendor($mac){
|
2014-01-04 00:11:42 +01:00
|
|
|
//use the mac address to find the vendor
|
|
|
|
|
$mac = preg_replace('#[^a-fA-F0-9./]#', '', $mac);
|
|
|
|
|
$mac = strtolower($mac);
|
|
|
|
|
switch (substr($mac, 0, 6)) {
|
|
|
|
|
case "00085d":
|
|
|
|
|
$device_vendor = "aastra";
|
|
|
|
|
break;
|
|
|
|
|
case "001873":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
|
|
|
|
case "a44c11":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
|
|
|
|
case "0021A0":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
|
|
|
|
case "30e4db":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
|
|
|
|
case "002155":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
|
|
|
|
case "68efbd":
|
|
|
|
|
$device_vendor = "cisco";
|
|
|
|
|
break;
|
2016-01-09 19:37:40 +01:00
|
|
|
case "000b82":
|
|
|
|
|
$device_vendor = "grandstream";
|
|
|
|
|
break;
|
|
|
|
|
case "00177d":
|
|
|
|
|
$device_vendor = "konftel";
|
|
|
|
|
break;
|
2014-01-04 00:11:42 +01:00
|
|
|
case "00045a":
|
|
|
|
|
$device_vendor = "linksys";
|
|
|
|
|
break;
|
|
|
|
|
case "000625":
|
|
|
|
|
$device_vendor = "linksys";
|
|
|
|
|
break;
|
2016-01-09 19:37:40 +01:00
|
|
|
case "000e08":
|
|
|
|
|
$device_vendor = "linksys";
|
|
|
|
|
break;
|
2016-01-09 19:50:49 +01:00
|
|
|
case "08000f":
|
2016-01-09 19:37:40 +01:00
|
|
|
$device_vendor = "mitel";
|
|
|
|
|
break;
|
|
|
|
|
case "0080f0":
|
|
|
|
|
$device_vendor = "panasonic";
|
|
|
|
|
break;
|
|
|
|
|
case "0004f2":
|
|
|
|
|
$device_vendor = "polycom";
|
|
|
|
|
break;
|
|
|
|
|
case "00907a":
|
|
|
|
|
$device_vendor = "polycom";
|
2014-01-04 00:11:42 +01:00
|
|
|
break;
|
2016-07-22 15:29:57 +02:00
|
|
|
case "64167f":
|
|
|
|
|
$device_vendor = "polycom";
|
|
|
|
|
break;
|
2014-01-04 00:11:42 +01:00
|
|
|
case "000413":
|
|
|
|
|
$device_vendor = "snom";
|
|
|
|
|
break;
|
2016-01-09 19:37:40 +01:00
|
|
|
case "001565":
|
|
|
|
|
$device_vendor = "yealink";
|
2014-01-04 00:11:42 +01:00
|
|
|
break;
|
2018-01-25 20:56:42 +01:00
|
|
|
case "805ec0":
|
|
|
|
|
$device_vendor = "yealink";
|
|
|
|
|
break;
|
2016-05-06 09:49:43 +02:00
|
|
|
case "00268B":
|
|
|
|
|
$device_vendor = "escene";
|
|
|
|
|
break;
|
2018-02-17 09:45:37 +01:00
|
|
|
case "001fc1":
|
|
|
|
|
$device_vendor = "htek";
|
|
|
|
|
break;
|
|
|
|
|
case "0C383E":
|
|
|
|
|
$device_vendor = "fanvil";
|
|
|
|
|
break;
|
2018-05-16 03:53:43 +02:00
|
|
|
case "7c2f80":
|
|
|
|
|
$device_vendor = "gigaset";
|
|
|
|
|
break;
|
|
|
|
|
case "14b370":
|
|
|
|
|
$device_vendor = "gigaset";
|
|
|
|
|
break;
|
|
|
|
|
case "002104":
|
|
|
|
|
$device_vendor = "gigaset";
|
|
|
|
|
break;
|
|
|
|
|
case "bcc342":
|
|
|
|
|
$device_vendor = "panasonic";
|
|
|
|
|
break;
|
|
|
|
|
case "080023":
|
|
|
|
|
$device_vendor = "panasonic";
|
|
|
|
|
break;
|
|
|
|
|
case "0080f0":
|
|
|
|
|
$device_vendor = "panasonic";
|
|
|
|
|
break;
|
2014-01-04 00:11:42 +01:00
|
|
|
default:
|
|
|
|
|
$device_vendor = "";
|
|
|
|
|
}
|
|
|
|
|
return $device_vendor;
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-20 19:45:20 +02:00
|
|
|
public static function get_vendor_by_agent($agent){
|
|
|
|
|
if ($agent) {
|
|
|
|
|
$agent = strtolower($agent);
|
|
|
|
|
//get the vendor
|
|
|
|
|
if (preg_replace('/^.*?(aastra).*$/i', '$1', $agent) == "aastra") {
|
|
|
|
|
return "aastra";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(cisco).*$/i', '$1', $agent) == "cisco") {
|
|
|
|
|
return "cisco";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(cisco\/spa).*$/i', '$1', $agent) == "cisco/spa") {
|
|
|
|
|
return "cisco-spa";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(grandstream).*$/i', '$1', $agent) == "grandstream") {
|
|
|
|
|
return "grandstream";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(linksys).*$/i', '$1', $agent) == "linksys") {
|
|
|
|
|
return "linksys";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(polycom).*$/i', '$1', $agent) == "polycom") {
|
|
|
|
|
return "polycom";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(yealink).*$/i', '$1', $agent) == "yealink") {
|
|
|
|
|
return "yealink";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(vp530p).*$/i', '$1', $agent) == "vp530p") {
|
|
|
|
|
return "yealink";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(snom).*$/i', '$1', $agent) == "snom") {
|
|
|
|
|
return "snom";
|
|
|
|
|
}
|
|
|
|
|
if (preg_match('/^.*?addpac.*$/i', $agent)) {
|
|
|
|
|
return "addpac";
|
|
|
|
|
}
|
|
|
|
|
/*Escene use User-Agent string like `ES320VN2 v4.0 ... or `ES206 v1.0 ...` */
|
|
|
|
|
if (preg_match('/^es\d\d\d.*$/i', $agent)) {
|
|
|
|
|
return "escene";
|
|
|
|
|
}
|
2017-01-31 08:35:24 +01:00
|
|
|
if (preg_match('/^.*?panasonic.*$/i', $agent)) {
|
|
|
|
|
return "panasonic";
|
|
|
|
|
}
|
2018-05-16 03:53:43 +02:00
|
|
|
if (preg_replace('/^.*?(N510).*$/i', '$1', $agent) == "n510") {
|
|
|
|
|
return "gigaset";
|
|
|
|
|
}
|
2018-02-17 09:45:37 +01:00
|
|
|
if (preg_match('/^.*?htek.*$/i', $agent)) {
|
|
|
|
|
return "htek";
|
|
|
|
|
}
|
|
|
|
|
if (preg_replace('/^.*?(fanvil).*$/i', '$1', $agent) == "fanvil") {
|
|
|
|
|
return "fanvil";
|
|
|
|
|
}
|
2017-02-01 01:25:16 +01:00
|
|
|
// unknown vendor
|
|
|
|
|
return "";
|
|
|
|
|
}
|
2016-06-20 19:45:20 +02:00
|
|
|
}
|
|
|
|
|
|
2014-02-23 00:20:55 +01:00
|
|
|
public function get_template_dir() {
|
|
|
|
|
//set the default template directory
|
2014-09-29 09:29:44 +02:00
|
|
|
if (PHP_OS == "Linux") {
|
2014-02-23 00:20:55 +01:00
|
|
|
//set the default template dir
|
|
|
|
|
if (strlen($this->template_dir) == 0) {
|
2014-06-03 19:45:24 +02:00
|
|
|
if (file_exists('/etc/fusionpbx/resources/templates/provision')) {
|
|
|
|
|
$this->template_dir = '/etc/fusionpbx/resources/templates/provision';
|
2014-02-23 00:20:55 +01:00
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-09-22 05:34:16 +02:00
|
|
|
}
|
|
|
|
|
elseif (PHP_OS == "FreeBSD") {
|
2014-02-23 00:20:55 +01:00
|
|
|
//if the FreeBSD port is installed use the following paths by default.
|
2014-06-03 19:45:24 +02:00
|
|
|
if (file_exists('/usr/local/etc/fusionpbx/resources/templates/provision')) {
|
2014-02-23 00:20:55 +01:00
|
|
|
if (strlen($this->template_dir) == 0) {
|
2014-06-03 19:45:24 +02:00
|
|
|
$this->template_dir = '/usr/local/etc/fusionpbx/resources/templates/provision';
|
2014-02-23 00:20:55 +01:00
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (strlen($this->template_dir) == 0) {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-09-22 05:34:16 +02:00
|
|
|
}
|
|
|
|
|
elseif (PHP_OS == "NetBSD") {
|
2014-02-23 00:20:55 +01:00
|
|
|
//set the default template_dir
|
|
|
|
|
if (strlen($this->template_dir) == 0) {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
2019-09-22 05:34:16 +02:00
|
|
|
}
|
|
|
|
|
elseif (PHP_OS == "OpenBSD") {
|
2014-02-23 00:20:55 +01:00
|
|
|
//set the default template_dir
|
|
|
|
|
if (strlen($this->template_dir) == 0) {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
2019-09-22 05:34:16 +02:00
|
|
|
}
|
|
|
|
|
else {
|
2014-02-23 00:20:55 +01:00
|
|
|
//set the default template_dir
|
|
|
|
|
if (strlen($this->template_dir) == 0) {
|
|
|
|
|
$this->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/provision';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//check to see if the domain name sub directory exists
|
|
|
|
|
if (is_dir($this->template_dir."/".$_SESSION["domain_name"])) {
|
|
|
|
|
$this->template_dir = $this->template_dir."/".$_SESSION["domain_name"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//return the template directory
|
|
|
|
|
return $this->template_dir;
|
|
|
|
|
}
|
2019-09-22 05:34:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* delete drives
|
|
|
|
|
*/
|
|
|
|
|
public function delete($devices) {
|
|
|
|
|
if (permission_exists('device_delete')) {
|
|
|
|
|
|
|
|
|
|
//add multi-lingual support
|
|
|
|
|
$language = new text;
|
|
|
|
|
$text = $language->get();
|
|
|
|
|
|
|
|
|
|
//validate the token
|
|
|
|
|
$token = new token;
|
|
|
|
|
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
|
|
|
|
message::add($text['message-invalid_token'],'negative');
|
|
|
|
|
header('Location: devices.php');
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//delete multiple devices
|
|
|
|
|
if (is_array($devices)) {
|
|
|
|
|
//get the action
|
|
|
|
|
foreach($devices as $row) {
|
|
|
|
|
if ($row['action'] == 'delete') {
|
|
|
|
|
$action = 'delete';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//delete the checked rows
|
|
|
|
|
if ($action == 'delete') {
|
|
|
|
|
$database = new database;
|
|
|
|
|
foreach($devices as $x => $row) {
|
|
|
|
|
if ($row['action'] == 'delete' or $row['checked'] == 'true') {
|
|
|
|
|
$array['devices'][$x]['device_uuid'] = $row['device_uuid'];
|
|
|
|
|
$array['devices'][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (is_array($array) && @sizeof($array) != 0) {
|
|
|
|
|
$database->app_name = 'devices';
|
|
|
|
|
$database->app_uuid = '4efa1a1a-32e7-bf83-534b-6c8299958a8e';
|
|
|
|
|
$database->delete($array);
|
|
|
|
|
unset($array);
|
|
|
|
|
}
|
|
|
|
|
unset($devices);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} //end the delete function
|
2014-01-04 00:11:42 +01:00
|
|
|
}
|
|
|
|
|
|
2017-02-01 01:25:16 +01:00
|
|
|
?>
|