Esempio n. 1
0
/**
 * Return a list of child objects of the specified type for the selected parent object.
 * @param $obt_id (int) Object ID.
 * @param $obt_id (int) Object Type ID.
 * @return string.
 */
function F_getGuestList($obj_id, $obt_id)
{
    global $l, $db;
    require_once '../config/tce_config.php';
    $obj_id = intval($obj_id);
    $obt_id = intval($obt_id);
    $cobj = array();
    $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . intval($obj_id) . ' AND obj_obt_id=' . intval($obt_id) . ' ORDER BY obj_name ASC';
    if ($r = F_db_query($sql, $db)) {
        while ($m = F_db_fetch_assoc($r)) {
            $cobj[] = $m;
        }
    } else {
        F_display_db_error();
    }
    return $cobj;
}
Esempio n. 2
0
/**
 * Returns a comma separated string of test IDs with test_results_to_users enabled
 * @param $test_id (int) Test ID.
 * @return string
 */
function F_getTestIDs($test_id, $user_id, $filter = 'test_results_to_users')
{
    global $l, $db;
    require_once '../config/tce_config.php';
    $str = '0';
    // string to return
    $test_id = intval($test_id);
    $user_id = intval($user_id);
    $sql = 'SELECT test_id FROM ' . K_TABLE_TESTS . ' WHERE test_id IN (SELECT DISTINCT testuser_test_id FROM ' . K_TABLE_TEST_USER . ' WHERE testuser_user_id=' . intval($user_id) . ' AND testuser_status>0) AND ' . $filter . '=1';
    if ($r = F_db_query($sql, $db)) {
        while ($m = F_db_fetch_assoc($r)) {
            $str .= ',' . $m['test_id'];
        }
    } else {
        F_display_db_error();
    }
    return $str;
}
Esempio n. 3
0
    header('Location: index.php');
    //redirect browser to public main page
    exit;
}
if (isset($_REQUEST['test_id']) and $_REQUEST['test_id'] > 0) {
    $test_id = intval($_REQUEST['test_id']);
} else {
    header('Location: index.php');
    //redirect browser to public main page
    exit;
}
// security check
$checkid = 0;
$sqlt = 'SELECT testuser_user_id FROM ' . K_TABLE_TEST_USER . ' WHERE testuser_test_id=' . $test_id . ' AND testuser_id=' . $testuser_id . '';
if ($rt = F_db_query($sqlt, $db)) {
    if ($mt = F_db_fetch_assoc($rt)) {
        $checkid = $mt['testuser_user_id'];
    }
} else {
    F_display_db_error();
}
if ($user_id != $checkid) {
    header('Location: index.php');
    //redirect browser to public main page
    exit;
}
// get user's test stats
$userdata = F_getUserData($user_id);
$teststat = F_getTestStat($test_id, 0, $user_id, 0, 0, $testuser_id);
$teststat['testinfo'] = F_getUserTestStat($test_id, $user_id, $testuser_id);
$test_id = $teststat['testinfo']['test_id'];
Esempio n. 4
0
    case 'update':
        // generate script
        if (!($new_child_quantity > 0 and $new_child_type > 0 and strlen($new_child_name) > 0)) {
            break;
        }
        foreach ($_REQUEST as $k => $v) {
            if (substr($k, 0, 3) == 'so_') {
                ${$k} = true;
                // get object ID
                $object_id = intval(substr($k, 3));
                for ($i = 1; $i <= $new_child_quantity; ++$i) {
                    $obj_name = F_escape_sql(sprintf($new_child_name, $i));
                    // check if this child already exist
                    $sqlus = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . $object_id . ' AND obj_name=\'' . $obj_name . '\' LIMIT 1';
                    if ($rus = F_db_query($sqlus, $db)) {
                        if (!F_db_fetch_assoc($rus)) {
                            // add new child
                            $sql = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
								obj_obt_id,
								obj_name
								) VALUES (
								' . $new_child_type . ',
								\'' . $obj_name . '\'
								)';
                            if (!($r = F_db_query($sql, $db))) {
                                F_display_db_error(false);
                            } else {
                                $cobj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                            }
                            // update parent-child map
                            $sql = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
     $sql .= ' FROM ' . K_TABLE_OBJECTS . '';
     $sql .= ' INNER JOIN ' . K_TABLE_OBJECT_TYPES . ' ON obt_id=obj_obt_id';
     $sql .= ' LEFT JOIN ' . K_TABLE_MANUFACTURES . ' ON obj_mnf_id=mnf_id';
     $sql .= ' LEFT JOIN ' . K_TABLE_USERS . ' owner ON obj_owner_id=owner.user_id';
     $sql .= ' LEFT JOIN ' . K_TABLE_USERS . ' tenant ON obj_tenant_id=tenant.user_id';
     $sql .= ' LEFT JOIN (' . K_TABLE_LOCATIONS . '';
     $sql .= ' INNER JOIN (' . K_TABLE_RACKS . '';
     $sql .= ' INNER JOIN (' . K_TABLE_SUITES . '';
     $sql .= ' INNER JOIN (' . K_TABLE_DATACENTERS . ') ON sts_dcn_id=dcn_id';
     $sql .= ') ON rck_sts_id=sts_id';
     $sql .= ') ON loc_rack_id=rck_id';
     $sql .= ') ON obj_id=loc_obj_id';
     // CSV headers
     $csv = "obt_name\tobj_name\tobj_description\tobj_label\tobj_tag\tmnf_name\tdcn_name\tsts_name\trck_name\tloc_row_top\tloc_row_bottom\towner_name\towner_email\towner_firstname\towner_lastname\ttenant_name\ttenant_email\ttenant_firstname\ttenant_lastname\n";
     if ($r = F_db_query($sql, $db)) {
         while ($m = F_db_fetch_assoc($r)) {
             $csv .= implode("\t", $m) . "\n";
         }
     } else {
         F_display_db_error();
     }
     // convert and save exporting file
     $outfile = date('YmdHis') . '_rackmap_objects_list_' . md5($sql) . '.csv';
     // save data file
     if (file_put_contents(K_PATH_CONFIG_SCRIPTS . $outfile, $csv) !== false) {
         F_print_error('MESSAGE', $l['m_file_saved'] . ': <a href="' . K_PATH_URL_CONFIG_SCRIPTS . $outfile . '" title="' . $l['w_download'] . '" onclick="pdfWindow=window.open(\'' . K_PATH_URL_CONFIG_SCRIPTS . $outfile . '\',\'expWindow\',\'dependent,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes\'); return false;">' . $outfile . '</a>');
     } else {
         F_print_error('ERROR', $l['m_file_save_error'] . ': ' . $outfile);
     }
     break;
 default:
Esempio n. 6
0
/**
 * Get a comma separated list of valid SSL certificates IDs for the selected test.
 * @param $test_id (int) ID of the selected test
 * @return string containing a comma separated list SSL certificates IDs.
 */
function F_getTestSSLCerts($test_id)
{
    require_once '../config/tce_config.php';
    global $db, $l;
    $test_id = intval($test_id);
    $ids = '0';
    // select SSL certificates in this test
    $sql = 'SELECT tstssl_ssl_id FROM ' . K_TABLE_TEST_SSLCERTS . ' WHERE tstssl_test_id=' . $test_id . ' ORDER BY tstssl_ssl_id';
    if ($r = F_db_query($sql, $db)) {
        while ($m = F_db_fetch_assoc($r)) {
            $ids .= ',' . $m['tstssl_ssl_id'];
        }
    } else {
        F_display_db_error();
    }
    return $ids;
}
Esempio n. 7
0
/**
 * Import the specifed server object.
 * @param $srv (array) array containing object data.
 * @return true in case of success, false otherwise
 */
function F_importServerObj($srv)
{
    global $l, $db;
    require_once '../config/tce_config.php';
    if (!isset($srv['serial']) or empty($srv['serial'])) {
        F_print_error('ERROR', 'missing serial');
        return false;
    }
    // get ID of the object with the same serial number
    $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ' WHERE obj_tag=\'' . F_escape_sql($srv['serial']) . '\' LIMIT 1';
    if ($r = F_db_query($sql, $db)) {
        if ($m = F_db_fetch_assoc($r)) {
            $obj_id = $m['obj_id'];
        } else {
            // this object do not exist.
            F_print_error('ERROR', $srv['serial']);
            return false;
        }
    } else {
        F_display_db_error(false);
        return false;
    }
    // attribute map
    $srvattrmap = array('hostname' => 66, 'os release' => 68, 'os type' => 67, 'kernel name' => 69, 'kernel release' => 70, 'kernel version' => 71, 'kernel architecture' => 72, 'product' => 17, 'uuid' => 26);
    // for each attribute
    foreach ($srvattrmap as $k => $v) {
        if (isset($srv[$k]) and strlen($srv[$k]) > 0) {
            $value = $srv[$k];
            if ($k == 'product' and isset($srv['manufacturer']) and !empty($srv['manufacturer'])) {
                $value = $srv['manufacturer'] . ' ' . $value;
            }
            // add or update attribute value
            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
				atv_obj_id,
				atv_atb_id,
				atv_value
				) VALUES (
				' . $obj_id . ',
				' . $v . ',
				\'' . F_escape_sql($value) . '\'
				)';
            if (!($ra = F_db_query($sqla, $db))) {
                F_display_db_error(false);
                return false;
            }
        }
    }
    // cpu attribute map
    $cpuattrmap = array('Socket Designation' => 92, 'Family' => 94, 'ID' => 93, 'Architecture' => 56, 'CPU op-mode(s)' => 83, 'Byte Order' => 84, 'Thread(s) per core' => 85, 'Core(s) per socket' => 55, 'Vendor ID' => 86, 'CPU family' => 87, 'Model' => 88, 'Stepping' => 89, 'CPU MHz' => 25, 'Virtualization' => 90, 'L1d cache' => 81, 'L1i cache' => 82, 'L1 cache' => 57, 'L2 cache' => 58, 'L3 cache' => 59);
    // cpu
    if (isset($srv['dmi']['Processor Information']) and !empty($srv['dmi']['Processor Information'])) {
        $cpucount = 0;
        foreach ($srv['dmi']['Processor Information'] as $cpu) {
            ++$cpucount;
            $cpuname = sprintf('CPU%02d', $cpucount);
            // check if CPU exist
            $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
				WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=58 AND obj_name=\'' . $cpuname . '\'
				ORDER BY obj_name';
            if ($r = F_db_query($sql, $db)) {
                if ($m = F_db_fetch_assoc($r)) {
                    // update existing object
                    $cpu_obj_id = $m['obj_id'];
                } else {
                    // create new object
                    $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
						obj_obt_id,
						obj_name,
						obj_description,
						obj_label,
						obj_tag,
						obj_mnf_id,
						obj_owner_id,
						obj_tenant_id
						) VALUES (
						58,
						\'' . $cpuname . '\',
						' . F_empty_to_null('') . ',
						' . F_empty_to_null('') . ',
						' . F_empty_to_null('') . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . '
						)';
                    if (!($ro = F_db_query($sqlo, $db))) {
                        F_display_db_error(false);
                        return false;
                    } else {
                        $cpu_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                    }
                    // set object map
                    $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
						omp_parent_obj_id,
						omp_child_obj_id
						) VALUES (
						' . $obj_id . ',
						' . $cpu_obj_id . '
						)';
                    if (!($rm = F_db_query($sqlm, $db))) {
                        F_display_db_error(false);
                        return false;
                    }
                }
                // for each attribute
                foreach ($cpuattrmap as $k => $v) {
                    $value = '';
                    if (isset($cpu[$k])) {
                        $value = $cpu[$k];
                    } elseif (isset($srv['cpu'][$k])) {
                        $value = $srv['cpu'][$k];
                    }
                    if (preg_match('/([0-9\\.]+)[\\s]?([KMGT][B]?)/', $value, $vmtch) > 0) {
                        $value = $vmtch[1];
                    }
                    if (strlen($value) > 0) {
                        // add or update attribute value
                        $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
							atv_obj_id,
							atv_atb_id,
							atv_value
							) VALUES (
							' . $cpu_obj_id . ',
							' . $v . ',
							\'' . F_escape_sql($value) . '\'
							)';
                        if (!($ra = F_db_query($sqla, $db))) {
                            F_display_db_error(false);
                            return false;
                        }
                    }
                }
            } else {
                F_display_db_error(false);
                return false;
            }
        }
    }
    // memory attribute map
    $memattrmap = array('Total Width' => 95, 'Data Width' => 96, 'Size' => 52, 'Form Factor' => 97, 'Locator' => 99, 'Type' => 98, 'Speed' => 61);
    // memory
    if (isset($srv['ram']) and !empty($srv['ram'])) {
        // get total ram in gigabytes
        $totalram = round(floatval($srv['ram']) / 1024 / 1024 / 1024);
        // check if RAM object exist
        $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
				WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=59
				ORDER BY obj_name';
        if ($r = F_db_query($sql, $db)) {
            if ($m = F_db_fetch_assoc($r)) {
                // update existing object
                $ram_obj_id = $m['obj_id'];
            } else {
                // create new object
                $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
						obj_obt_id,
						obj_name,
						obj_description,
						obj_label,
						obj_tag,
						obj_mnf_id,
						obj_owner_id,
						obj_tenant_id
						) VALUES (
						59,
						\'RAM\',
						' . F_empty_to_null('') . ',
						' . F_empty_to_null('') . ',
						' . F_empty_to_null('') . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . '
						)';
                if (!($ro = F_db_query($sqlo, $db))) {
                    F_display_db_error(false);
                    return false;
                } else {
                    $ram_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                }
                // set object map
                $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
						omp_parent_obj_id,
						omp_child_obj_id
						) VALUES (
						' . $obj_id . ',
						' . $ram_obj_id . '
						)';
                if (!($rm = F_db_query($sqlm, $db))) {
                    F_display_db_error(false);
                    return false;
                }
            }
            // add or update attribute value
            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
					atv_obj_id,
					atv_atb_id,
					atv_value
					) VALUES (
					' . $ram_obj_id . ',
					60,
					\'' . F_escape_sql($totalram) . '\'
					)';
            if (!($ra = F_db_query($sqla, $db))) {
                F_display_db_error(false);
                return false;
            }
        } else {
            F_display_db_error(false);
            return false;
        }
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if (isset($srv['dmi']['Memory Device']) and !empty($srv['dmi']['Memory Device'])) {
            $memcount = 0;
            foreach ($srv['dmi']['Memory Device'] as $mem) {
                ++$memcount;
                $memname = sprintf('SLOT%02d', $memcount);
                // check if object exist
                $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
					WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ram_obj_id . ' AND obj_obt_id=60 AND obj_name=\'' . $memname . '\'
					ORDER BY obj_name';
                if ($r = F_db_query($sql, $db)) {
                    if ($m = F_db_fetch_assoc($r)) {
                        // update existing memory slot object
                        $mem_obj_id = $m['obj_id'];
                    } else {
                        // create new object
                        $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
							obj_obt_id,
							obj_name,
							obj_description,
							obj_label,
							obj_tag,
							obj_mnf_id,
							obj_owner_id,
							obj_tenant_id
							) VALUES (
							60,
							\'' . $memname . '\',
							' . F_empty_to_null('') . ',
							' . F_empty_to_null('') . ',
							' . F_empty_to_null('') . ',
							' . F_zero_to_null(0) . ',
							' . F_zero_to_null(0) . ',
							' . F_zero_to_null(0) . '
							)';
                        if (!($ro = F_db_query($sqlo, $db))) {
                            F_display_db_error(false);
                            return false;
                        } else {
                            $mem_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                        }
                        // set object map
                        $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
							omp_parent_obj_id,
							omp_child_obj_id
							) VALUES (
							' . $ram_obj_id . ',
							' . $mem_obj_id . '
							)';
                        if (!($rm = F_db_query($sqlm, $db))) {
                            F_display_db_error(false);
                            return false;
                        }
                    }
                    // for each memory attribute
                    foreach ($memattrmap as $k => $v) {
                        $value = '';
                        if (isset($mem[$k])) {
                            $value = $mem[$k];
                            if ($k == 'Size' or $k == 'Speed') {
                                $value = intval($value);
                            }
                            // add or update attribute value
                            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
								atv_obj_id,
								atv_atb_id,
								atv_value
								) VALUES (
								' . $mem_obj_id . ',
								' . $v . ',
								\'' . F_escape_sql($value) . '\'
								)';
                            if (!($ra = F_db_query($sqla, $db))) {
                                F_display_db_error(false);
                                return false;
                            }
                        }
                    }
                } else {
                    F_display_db_error(false);
                    return false;
                }
            }
        }
    }
    // end srv['ram']
    // network attribute map
    $netattrmap = array('device' => 74, 'mac' => 9, 'ipv4' => 10, 'bcast' => 75, 'mask' => 76, 'ipv6' => 73, 'encap' => 77, 'scope' => 78, 'mtu' => 79, 'metric' => 80);
    // network
    if (isset($srv['network']) and !empty($srv['network'])) {
        $netcount = 0;
        foreach ($srv['network'] as $net) {
            if (preg_match('/^eth[0-9]+$/', $net['device']) > 0) {
                ++$netcount;
                $netname = sprintf('ETH%02d', $netcount);
                // check if device exist
                $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
					WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=37 AND obj_name=\'' . $netname . '\'
					ORDER BY obj_name';
                if ($r = F_db_query($sql, $db)) {
                    if ($m = F_db_fetch_assoc($r)) {
                        // update existing object
                        $net_obj_id = $m['obj_id'];
                    } else {
                        // create new object
                        $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
							obj_obt_id,
							obj_name,
							obj_description,
							obj_label,
							obj_tag,
							obj_mnf_id,
							obj_owner_id,
							obj_tenant_id
							) VALUES (
							37,
							\'' . $netname . '\',
							' . F_empty_to_null('') . ',
							' . F_empty_to_null('') . ',
							' . F_empty_to_null('') . ',
							' . F_zero_to_null(0) . ',
							' . F_zero_to_null(0) . ',
							' . F_zero_to_null(0) . '
							)';
                        if (!($ro = F_db_query($sqlo, $db))) {
                            F_display_db_error(false);
                            return false;
                        } else {
                            $net_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                        }
                        // set object map
                        $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
							omp_parent_obj_id,
							omp_child_obj_id
							) VALUES (
							' . $obj_id . ',
							' . $net_obj_id . '
							)';
                        if (!($rm = F_db_query($sqlm, $db))) {
                            F_display_db_error(false);
                            return false;
                        }
                    }
                    // for each attribute
                    foreach ($netattrmap as $k => $v) {
                        $value = '';
                        if (isset($net[$k])) {
                            $value = $net[$k];
                        } elseif (isset($srv['net'][$k])) {
                            $value = $srv['net'][$k];
                        }
                        if (strlen($value) > 0) {
                            // add or update attribute value
                            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
								atv_obj_id,
								atv_atb_id,
								atv_value
								) VALUES (
								' . $net_obj_id . ',
								' . $v . ',
								\'' . F_escape_sql($value) . '\'
								)';
                            if (!($ra = F_db_query($sqla, $db))) {
                                F_display_db_error(false);
                                return false;
                            }
                        }
                    }
                } else {
                    F_display_db_error(false);
                    return false;
                }
            }
        }
    }
    // disk controller (8) attribute map
    $ctrlattrmap = array('Bus Interface' => 100, 'Slot' => 101, 'Cache Serial Number' => 102, 'Hardware Revision' => 103, 'Firmware Version' => 104, 'Total Cache Size' => 105, 'Total Cache Memory Available' => 106);
    // disk array (65) attribute map
    $darrattrmap = array('Interface Type' => 122);
    // logical drive (66) attribute map
    $logdrvattrmap = array('Size' => 123, 'Fault Tolerance' => 107, 'Heads' => 108, 'Sectors Per Track' => 109, 'Cylinders' => 110, 'Strip Size' => 111, 'Full Stripe Size' => 112, 'Caching' => 113, 'Unique Identifier' => 114, 'Disk Name' => 115, 'Mount Points' => 116, 'Logical Drive Label' => 117, 'Drive Type' => 118);
    // physical drive (66) attribute map
    $phydrvattrmap = array('Port' => 119, 'Box' => 120, 'Bay' => 121, 'Drive Type' => 118, 'Interface Type' => 122, 'Size' => 123, 'Rotational Speed' => 124, 'Firmware Revision' => 104, 'Model' => 125, 'PHY Transfer Rate' => 126);
    $disknum = 0;
    $logdrvdisks = array();
    // list physical disks that belongs to logical drives
    // hp disk controller data
    if (isset($srv['hpdisks']) and !empty($srv['hpdisks'])) {
        $ctrlcount = 0;
        foreach ($srv['hpdisks'] as $ctrl) {
            ++$ctrlcount;
            $ctrlname = sprintf('DISKCTRL%02d', $ctrlcount);
            // check if device exist
            $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
				WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=8 AND obj_name=\'' . $ctrlname . '\'
				ORDER BY obj_name';
            if ($r = F_db_query($sql, $db)) {
                if ($m = F_db_fetch_assoc($r)) {
                    // update existing object
                    $ctrl_obj_id = $m['obj_id'];
                } else {
                    // create new object
                    $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
						obj_obt_id,
						obj_name,
						obj_description,
						obj_label,
						obj_tag,
						obj_mnf_id,
						obj_owner_id,
						obj_tenant_id
						) VALUES (
						8,
						\'' . $ctrlname . '\',
						' . F_empty_to_null($ctrl['item']) . ',
						' . F_empty_to_null('') . ',
						' . F_empty_to_null($ctrl['Serial Number']) . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . ',
						' . F_zero_to_null(0) . '
						)';
                    if (!($ro = F_db_query($sqlo, $db))) {
                        F_display_db_error(false);
                        return false;
                    } else {
                        $ctrl_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                    }
                    // set object map
                    $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
						omp_parent_obj_id,
						omp_child_obj_id
						) VALUES (
						' . $obj_id . ',
						' . $ctrl_obj_id . '
						)';
                    if (!($rm = F_db_query($sqlm, $db))) {
                        F_display_db_error(false);
                        return false;
                    }
                }
                // for each attribute
                foreach ($ctrlattrmap as $k => $v) {
                    $value = '';
                    if (isset($ctrl[$k]) and strlen($ctrl[$k]) > 0) {
                        $value = $ctrl[$k];
                        if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) {
                            $value = $vmtch[1];
                        }
                        // add or update attribute value
                        $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
							atv_obj_id,
							atv_atb_id,
							atv_value
							) VALUES (
							' . $ctrl_obj_id . ',
							' . $v . ',
							\'' . F_escape_sql($value) . '\'
							)';
                        if (!($ra = F_db_query($sqla, $db))) {
                            F_display_db_error(false);
                            return false;
                        }
                    }
                }
            } else {
                F_display_db_error(false);
                return false;
            }
            // - - - - - - - - - -
            // disk arrays
            foreach ($ctrl as $ck => $darr) {
                if (is_array($darr) and $darr['item'] == 'Array') {
                    $diskarrayname = sprintf('ARRAY%02d', $ck + 1);
                    // check if device exist
                    $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
						WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ctrl_obj_id . ' AND obj_obt_id=65 AND obj_name=\'' . $diskarrayname . '\'
						ORDER BY obj_name';
                    if ($r = F_db_query($sql, $db)) {
                        if ($m = F_db_fetch_assoc($r)) {
                            // update existing object
                            $darr_obj_id = $m['obj_id'];
                        } else {
                            // create new object
                            $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
								obj_obt_id,
								obj_name,
								obj_description,
								obj_label,
								obj_tag,
								obj_mnf_id,
								obj_owner_id,
								obj_tenant_id
								) VALUES (
								65,
								\'' . $diskarrayname . '\',
								' . F_empty_to_null($darr['item']) . ',
								' . F_empty_to_null('') . ',
								' . F_empty_to_null($darr['value']) . ',
								' . F_zero_to_null(0) . ',
								' . F_zero_to_null(0) . ',
								' . F_zero_to_null(0) . '
								)';
                            if (!($ro = F_db_query($sqlo, $db))) {
                                F_display_db_error(false);
                                return false;
                            } else {
                                $darr_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                            }
                            // set object map
                            $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
								omp_parent_obj_id,
								omp_child_obj_id
								) VALUES (
								' . $ctrl_obj_id . ',
								' . $darr_obj_id . '
								)';
                            if (!($rm = F_db_query($sqlm, $db))) {
                                F_display_db_error(false);
                                return false;
                            }
                        }
                        // for each attribute
                        foreach ($darrattrmap as $k => $v) {
                            $value = '';
                            if (isset($darr[$k]) and strlen($darr[$k]) > 0) {
                                $value = $darr[$k];
                                // add or update attribute value
                                $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
									atv_obj_id,
									atv_atb_id,
									atv_value
									) VALUES (
									' . $darr_obj_id . ',
									' . $v . ',
									\'' . F_escape_sql($value) . '\'
									)';
                                if (!($ra = F_db_query($sqla, $db))) {
                                    F_display_db_error(false);
                                    return false;
                                }
                            }
                        }
                    } else {
                        F_display_db_error(false);
                        return false;
                    }
                    // - - - - - - - - - -
                    // logical (66) and physical (61) disks
                    foreach ($darr as $dk => $dsk) {
                        if (is_array($dsk)) {
                            if ($dsk['item'] == 'Logical Drive') {
                                $ldiskname = sprintf('LOGICALDRIVE%02d', $dk + 1);
                                // check if device exist
                                $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
									WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $darr_obj_id . ' AND obj_obt_id=66 AND obj_name=\'' . $ldiskname . '\'
									ORDER BY obj_name';
                                if ($r = F_db_query($sql, $db)) {
                                    if ($m = F_db_fetch_assoc($r)) {
                                        // update existing object
                                        $ldsk_obj_id = $m['obj_id'];
                                    } else {
                                        // create new object
                                        $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
											obj_obt_id,
											obj_name,
											obj_description,
											obj_label,
											obj_tag,
											obj_mnf_id,
											obj_owner_id,
											obj_tenant_id
											) VALUES (
											66,
											\'' . $ldiskname . '\',
											' . F_empty_to_null($dsk['item']) . ',
											' . F_empty_to_null('') . ',
											' . F_empty_to_null($dsk['value']) . ',
											' . F_zero_to_null(0) . ',
											' . F_zero_to_null(0) . ',
											' . F_zero_to_null(0) . '
											)';
                                        if (!($ro = F_db_query($sqlo, $db))) {
                                            F_display_db_error(false);
                                            return false;
                                        } else {
                                            $ldsk_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                                        }
                                        // set object map
                                        $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
											omp_parent_obj_id,
											omp_child_obj_id
											) VALUES (
											' . $darr_obj_id . ',
											' . $ldsk_obj_id . '
											)';
                                        if (!($rm = F_db_query($sqlm, $db))) {
                                            F_display_db_error(false);
                                            return false;
                                        }
                                    }
                                    // for each attribute
                                    foreach ($logdrvattrmap as $k => $v) {
                                        $value = '';
                                        if (isset($dsk[$k]) and strlen($dsk[$k]) > 0) {
                                            $value = $dsk[$k];
                                            if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) {
                                                $value = $vmtch[1];
                                            }
                                            // add or update attribute value
                                            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
												atv_obj_id,
												atv_atb_id,
												atv_value
												) VALUES (
												' . $ldsk_obj_id . ',
												' . $v . ',
												\'' . F_escape_sql($value) . '\'
												)';
                                            if (!($ra = F_db_query($sqla, $db))) {
                                                F_display_db_error(false);
                                                return false;
                                            }
                                        }
                                    }
                                } else {
                                    F_display_db_error(false);
                                    return false;
                                }
                                $logdrvdisks[$ldsk_obj_id] = array();
                            } elseif ($dsk['item'] == 'physicaldrive') {
                                ++$disknum;
                                $diskname = sprintf('DISK%02d', $disknum);
                                $logdrvdisks[$ldsk_obj_id][] = $diskname;
                                // check if device exist
                                $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . '
									WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ctrl_obj_id . ' AND obj_obt_id=61 AND obj_name=\'' . $diskname . '\'
									ORDER BY obj_name';
                                if ($r = F_db_query($sql, $db)) {
                                    if ($m = F_db_fetch_assoc($r)) {
                                        // update existing object
                                        $pdsk_obj_id = $m['obj_id'];
                                    } else {
                                        // create new object
                                        $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' (
											obj_obt_id,
											obj_name,
											obj_description,
											obj_label,
											obj_tag,
											obj_mnf_id,
											obj_owner_id,
											obj_tenant_id
											) VALUES (
											61,
											\'' . $diskname . '\',
											' . F_empty_to_null($dsk['item']) . ',
											' . F_empty_to_null('') . ',
											' . F_empty_to_null($dsk['value']) . ',
											' . F_zero_to_null(0) . ',
											' . F_zero_to_null(0) . ',
											' . F_zero_to_null(0) . '
											)';
                                        if (!($ro = F_db_query($sqlo, $db))) {
                                            F_display_db_error(false);
                                            return false;
                                        } else {
                                            $pdsk_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id');
                                        }
                                        // set object map
                                        $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
											omp_parent_obj_id,
											omp_child_obj_id
											) VALUES (
											' . $ctrl_obj_id . ',
											' . $pdsk_obj_id . '
											)';
                                        if (!($rm = F_db_query($sqlm, $db))) {
                                            F_display_db_error(false);
                                            return false;
                                        }
                                    }
                                    // for each attribute
                                    foreach ($phydrvattrmap as $k => $v) {
                                        $value = '';
                                        if (isset($dsk[$k]) and strlen($dsk[$k]) > 0) {
                                            $value = $dsk[$k];
                                            if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) {
                                                $value = $vmtch[1];
                                            }
                                            // add or update attribute value
                                            $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' (
												atv_obj_id,
												atv_atb_id,
												atv_value
												) VALUES (
												' . $pdsk_obj_id . ',
												' . $v . ',
												\'' . F_escape_sql($value) . '\'
												)';
                                            if (!($ra = F_db_query($sqla, $db))) {
                                                F_display_db_error(false);
                                                return false;
                                            }
                                        }
                                    }
                                } else {
                                    F_display_db_error(false);
                                    return false;
                                }
                            }
                        }
                    }
                    // end of disks
                }
                // is array
            }
            // end of disk array
        }
        // end for each controller
        // add physical disks on the logical drives
        if (isset($logdrvdisks) and !empty($logdrvdisks)) {
            foreach ($logdrvdisks as $logdrvid => $disks) {
                $sql = 'UPDATE ' . K_TABLE_OBJECTS . ' SET
					obj_description=' . F_empty_to_null(implode(', ', $disks)) . '
					WHERE obj_id=' . $logdrvid . '';
                if (!($r = F_db_query($sql, $db))) {
                    F_display_db_error(false);
                }
            }
        }
    }
    return true;
}
Esempio n. 8
0
         $omp_parent_obj_ids[] = $ma['omp_parent_obj_id'];
     }
 } else {
     F_display_db_error();
 }
 // get connections
 $conn = array();
 $cab_a_obj_id = 0;
 $cab_b_obj_id = 0;
 $cab_a_cbt_id = 1;
 $cab_b_cbt_id = 1;
 $cab_a_color = '';
 $cab_b_color = '';
 $sqlc = 'SELECT * FROM ' . K_TABLE_CABLES . ' WHERE (cab_a_obj_id=' . $obj_id . ' OR cab_b_obj_id=' . $obj_id . ') ORDER BY cab_a_obj_id';
 if ($rc = F_db_query($sqlc, $db)) {
     while ($mc = F_db_fetch_assoc($rc)) {
         $conn[] = $mc;
     }
     if (isset($conn[0])) {
         if ($conn[0]['cab_b_obj_id'] == $obj_id) {
             $cab_a_obj_id = $conn[0]['cab_a_obj_id'];
         } else {
             $cab_a_obj_id = $conn[0]['cab_b_obj_id'];
         }
         $cab_a_cbt_id = $conn[0]['cab_cbt_id'];
         $cab_a_color = $conn[0]['cab_color'];
     }
     if (isset($conn[1])) {
         if ($conn[1]['cab_b_obj_id'] == $obj_id) {
             $cab_b_obj_id = $conn[1]['cab_a_obj_id'];
         } else {