Copyright (C) 2008-2019 All Rights Reserved.
*/
//includes
require_once "root.php";
require_once "resources/require.php";
//check permissions
require_once "resources/check_auth.php";
if (permission_exists('device_add') || permission_exists('device_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//check for duplicates
if ($_GET["check"] == 'duplicate') {
//mac address
if ($_GET["mac"] != '' && $_GET["mac"] != "000000000000") {
$sql = "select ";
$sql .= "d2.domain_name ";
$sql .= "from ";
$sql .= "v_devices as d1, ";
$sql .= "v_domains as d2 ";
$sql .= "where ";
$sql .= "d1.domain_uuid = d2.domain_uuid and ";
$sql .= "d1.device_mac_address = :device_mac_address ";
if (is_uuid($_GET["device_uuid"])) {
$sql .= " and d1.device_uuid <> :device_uuid ";
}
$parameters['device_mac_address'] = $_GET["mac"];
$parameters['device_uuid'] = $_GET["device_uuid"];
$database = new database;
$domain_name = $database->select($sql, $parameters, 'column');
if ($domain_name != '') {
echo $text['message-duplicate'].(if_group("superadmin") && $_SESSION["domain_name"] != $domain_name ? ": ".$domain_name : null);
}
unset($sql, $parameters, $domain_name);
}
//username
if ($_GET['username'] != '') {
$sql = "select ";
$sql .= "d2.domain_name, ";
$sql .= "d1.device_mac_address ";
$sql .= "from ";
$sql .= "v_devices as d1, ";
$sql .= "v_domains as d2 ";
$sql .= "where ";
$sql .= "d1.domain_uuid = d2.domain_uuid and ";
$sql .= "d1.device_username = :device_username ";
if (is_uuid($_GET['domain_uuid'])) {
$sql .= "and d2.domain_uuid = :domain_uuid ";
}
if (is_uuid($_GET['device_uuid'])) {
$sql .= "and d1.device_uuid <> :device_uuid ";
}
$parameters['device_username'] = $_GET["username"];
$parameters['domain_uuid'] = $_GET["domain_uuid"];
$parameters['device_uuid'] = $_GET["device_uuid"];
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0 && $row['domain_name'] != '') {
echo $text['message-duplicate_username'].(if_group("superadmin") ? ": ".format_mac($row['device_mac_address']).($_SESSION["domain_name"] != $row["domain_name"] ? " (".$row["domain_name"].")" : null) : null);
}
unset($sql, $parameters, $row);
}
exit;
}
//include the device class
require_once "app/devices/resources/classes/device.php";
//action add or update
if (is_uuid($_REQUEST["id"])) {
$action = "update";
$device_uuid = $_REQUEST["id"];
}
else {
$action = "add";
}
//get total device count from the database, check limit, if defined
if ($action == 'add') {
if ($_SESSION['limit']['devices']['numeric'] != '') {
$sql = "select count(*) from v_devices where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$total_devices = $database->select($sql, $parameters, 'column');
if ($total_devices >= $_SESSION['limit']['devices']['numeric']) {
message::add($text['message-maximum_devices'].' '.$_SESSION['limit']['devices']['numeric'], 'negative');
header('Location: devices.php');
exit;
}
unset($sql, $parameters, $total_devices);
}
}
//get http post variables and set them to php variables
if (count($_POST) > 0) {
//device mac address
if (permission_exists('device_mac_address')) {
$device_mac_address = $_POST["device_mac_address"];
$device_mac_address = strtolower(preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address));
$_POST["device_mac_address"] = $device_mac_address;
}
else {
$sql = "select * from v_devices ";
$sql .= "where device_uuid = :device_uuid ";
$parameters['device_uuid'] = $device_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$device_mac_address = $row["device_mac_address"];
$_POST["device_mac_address"] = $device_mac_address;
}
unset($sql, $parameters, $row);
}
//get assigned user
$device_user_uuid = $_POST["device_user_uuid"];
//devices
$device_label = $_POST["device_label"];
$device_vendor = $_POST["device_vendor"];
$device_uuid_alternate = $_POST["device_uuid_alternate"];
$device_model = $_POST["device_model"];
$device_firmware_version = $_POST["device_firmware_version"];
$device_enabled = $_POST["device_enabled"];
$device_template = $_POST["device_template"];
$device_description = $_POST["device_description"];
//lines
$line_number = $_POST["line_number"];
$server_address = $_POST["server_address"];
$outbound_proxy_primary = $_POST["outbound_proxy_primary"];
$outbound_proxy_secondary = $_POST["outbound_proxy_secondary"];
$display_name = $_POST["display_name"];
$user_id = $_POST["user_id"];
$auth_id = $_POST["auth_id"];
$password = $_POST["password"];
//profile
$device_profile_uuid = $_POST["device_profile_uuid"];
//keys
$device_key_category = $_POST["device_key_category"];
$device_key_id = $_POST["device_key_id"];
$device_key_type = $_POST["device_key_type"];
$device_key_line = $_POST["device_key_line"];
$device_key_value = $_POST["device_key_value"];
$device_key_extension = $_POST["device_key_extension"];
$device_key_label = $_POST["device_key_label"];
$device_key_icon = $_POST["device_key_icon"];
//settings
//$device_setting_category = $_POST["device_setting_category"]);
$device_setting_subcategory = $_POST["device_setting_subcategory"];
//$device_setting_name = $_POST["device_setting_name"];
$device_setting_value = $_POST["device_setting_value"];
$device_setting_enabled = $_POST["device_setting_enabled"];
$device_setting_description = $_POST["device_setting_description"];
}
//use the mac address to get the vendor
if (strlen($device_vendor) == 0) {
$device_vendor = device::get_vendor($device_mac_address);
}
//add or update the database
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//check for all required data
$msg = '';
//if (strlen($device_mac_address) == 0) { $msg .= $text['message-required'].$text['label-extension']."
\n"; }
//if (strlen($device_label) == 0) { $msg .= "Please provide: Label
\n"; }
//if (strlen($device_vendor) == 0) { $msg .= "Please provide: Vendor
\n"; }
//if (strlen($device_model) == 0) { $msg .= "Please provide: Model
\n"; }
//if (strlen($device_firmware_version) == 0) { $msg .= "Please provide: Firmware Version
\n"; }
//if (strlen($device_enabled) == 0) { $msg .= "Please provide: Enabled
\n"; }
//if (strlen($device_template) == 0) { $msg .= "Please provide: Template
\n"; }
//if (strlen($device_username) == 0) { $msg .= "Please provide: Username
\n"; }
//if (strlen($device_password) == 0) { $msg .= "Please provide: Password
\n"; }
//if (strlen($device_description) == 0) { $msg .= "Please provide: Description
\n"; }
if (strlen($msg) > 0) {
require_once "resources/header.php";
require_once "resources/persist_form_var.php";
echo "
| \n";
echo $msg." "; echo " |