diff --git a/client_asset_details.php b/client_asset_details.php index c5b95753..40252074 100644 --- a/client_asset_details.php +++ b/client_asset_details.php @@ -95,31 +95,41 @@ if (isset($_GET['asset_id'])) { $document_count = mysqli_num_rows($sql_related_documents); // Network Interfaces - $sql_related_interfaces = mysqli_query($mysqli, " + $sql_related_interfaces = mysqli_query($mysqli, " SELECT ai.interface_id, ai.interface_name, ai.interface_mac, ai.interface_ip, ai.interface_ipv6, - ai.interface_port, - ai.interface_primary, - ai.interface_notes, - ai.interface_connected_asset_interface, + ai.interface_port, + ai.interface_primary, + ai.interface_notes, n.network_name, n.network_id, - connected_assets.asset_name AS connected_asset_name, + connected_interfaces.interface_id AS connected_interface_id, connected_interfaces.interface_name AS connected_interface_name, - connected_interfaces.interface_port AS connected_interface_port - FROM asset_interfaces ai - LEFT JOIN assets a ON a.asset_id = ai.interface_asset_id - LEFT JOIN networks n ON n.network_id = ai.interface_network_id - LEFT JOIN asset_interfaces connected_interfaces ON connected_interfaces.interface_id = ai.interface_connected_asset_interface - LEFT JOIN assets connected_assets ON connected_assets.asset_id = connected_interfaces.interface_asset_id - WHERE ai.interface_asset_id = $asset_id - AND ai.interface_archived_at IS NULL + connected_interfaces.interface_port AS connected_interface_port, + connected_assets.asset_name AS connected_asset_name + FROM asset_interfaces AS ai + LEFT JOIN networks AS n + ON n.network_id = ai.interface_network_id + LEFT JOIN asset_interface_links AS ail + ON (ail.interface_a_id = ai.interface_id OR ail.interface_b_id = ai.interface_id) + LEFT JOIN asset_interfaces AS connected_interfaces + ON ( + (ail.interface_a_id = ai.interface_id AND ail.interface_b_id = connected_interfaces.interface_id) + OR + (ail.interface_b_id = ai.interface_id AND ail.interface_a_id = connected_interfaces.interface_id) + ) + LEFT JOIN assets AS connected_assets + ON connected_assets.asset_id = connected_interfaces.interface_asset_id + WHERE + ai.interface_asset_id = $asset_id + AND ai.interface_archived_at IS NULL ORDER BY ai.interface_name ASC "); + $interface_count = mysqli_num_rows($sql_related_interfaces); // Related Files @@ -340,60 +350,57 @@ if (isset($_GET['asset_id'])) {

Network Interfaces

- +
"> - - - - - - - - - + + + + + + + + + - + $network_name $network_id"; - } else { - $network_name_display = "-"; - } - $interface_notes = nullable_htmlentities($row['interface_notes']); - $connected_asset_interface = intval($row['interface_connected_asset_interface']); - $connected_asset_name = nullable_htmlentities($row['connected_asset_name']); - $connected_asset_port = nullable_htmlentities($row['connected_interface_port']); + // Prepare display text + $interface_mac_display = $interface_mac ?: '-'; + $interface_ip_display = $interface_ip ?: '-'; + $interface_port_display = $interface_port ?: '-'; + $network_name_display = $network_name + ? "$network_name $network_id" + : '-'; + + // Connected interface details + $connected_asset_name = nullable_htmlentities($row['connected_asset_name']); + $connected_interface_port = nullable_htmlentities($row['connected_interface_port']); + + // Show either "-" or "AssetName - Port" + if ($connected_asset_name) { + $connected_to_display = "$connected_asset_name - $connected_interface_port"; + } else { + $connected_to_display = "-"; + } ?> - + - - + +
NameMACIPPortNetworkConnected ToAction
NameMACIPPortNetworkConnected ToAction
@@ -406,7 +413,7 @@ if (isset($_GET['asset_id'])) { $connected_asset_name - $connected_asset_port"; ?>
-
diff --git a/database_updates.php b/database_updates.php index 90022fc8..0cabb96d 100644 --- a/database_updates.php +++ b/database_updates.php @@ -2417,17 +2417,55 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.7.7'"); } - if (CURRENT_DATABASE_VERSION == '1.7.7') { - // Domain history - mysqli_query($mysqli, "CREATE TABLE `domain_history` (`domain_history_id` INT(11) NOT NULL AUTO_INCREMENT , `domain_history_column` VARCHAR(200) NOT NULL , `domain_history_old_value` TEXT NOT NULL , `domain_history_new_value` TEXT NOT NULL , `domain_history_domain_id` INT(11) NOT NULL , `domain_history_modified_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`domain_history_id`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;"); + if (CURRENT_DATABASE_VERSION == '1.7.7') { + // Domain history + mysqli_query($mysqli, "CREATE TABLE `domain_history` (`domain_history_id` INT(11) NOT NULL AUTO_INCREMENT , `domain_history_column` VARCHAR(200) NOT NULL , `domain_history_old_value` TEXT NOT NULL , `domain_history_new_value` TEXT NOT NULL , `domain_history_domain_id` INT(11) NOT NULL , `domain_history_modified_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`domain_history_id`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;"); - mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.7.8'"); - } + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.7.8'"); + } - // if (CURRENT_DATABASE_VERSION == '1.7.8') { - // // Insert queries here required to update to DB version 1.7.9 + if (CURRENT_DATABASE_VERSION == '1.7.8') { + + // Use a seperate table for Interface connections / links. This will make it easier to manage. + $createInterfaceLinksTable = " + CREATE TABLE IF NOT EXISTS `asset_interface_links` ( + `interface_link_id` INT AUTO_INCREMENT PRIMARY KEY, + `interface_a_id` INT NOT NULL, + `interface_b_id` INT NOT NULL, + `interface_link_type` VARCHAR(100) NULL, + `interface_link_status` VARCHAR(50) NULL, + `interface_link_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `interface_link_updated_at` DATETIME NULL ON UPDATE CURRENT_TIMESTAMP, + + CONSTRAINT `fk_interface_a` + FOREIGN KEY (`interface_a_id`) + REFERENCES `asset_interfaces` (`interface_id`) + ON DELETE CASCADE + ON UPDATE CASCADE, + + CONSTRAINT `fk_interface_b` + FOREIGN KEY (`interface_b_id`) + REFERENCES `asset_interfaces` (`interface_id`) + ON DELETE CASCADE + ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + "; + mysqli_query($mysqli, $createInterfaceLinksTable) or die(mysqli_error($mysqli)); + + // Drop the old column from asset_interfaces if it exists + $dropConnectedColumn = " + ALTER TABLE `asset_interfaces` + DROP COLUMN IF EXISTS `interface_connected_asset_interface` + "; + mysqli_query($mysqli, $dropConnectedColumn) or die(mysqli_error($mysqli)); + + mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.7.9'"); + } + + // if (CURRENT_DATABASE_VERSION == '1.7.9') { + // // Insert queries here required to update to DB version 1.8.0 // // Then, update the database to the next sequential version - // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.7.9'"); + // mysqli_query($mysqli, "UPDATE `settings` SET `config_current_database_version` = '1.8.0'"); // } } else { diff --git a/database_version.php b/database_version.php index 7da0754e..3627c05e 100644 --- a/database_version.php +++ b/database_version.php @@ -5,4 +5,4 @@ * It is used in conjunction with database_updates.php */ -DEFINE("LATEST_DATABASE_VERSION", "1.7.8"); +DEFINE("LATEST_DATABASE_VERSION", "1.7.9"); diff --git a/db.sql b/db.sql index b489d512..48aaa273 100644 --- a/db.sql +++ b/db.sql @@ -134,6 +134,29 @@ CREATE TABLE `asset_history` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `asset_interface_links` +-- + +DROP TABLE IF EXISTS `asset_interface_links`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `asset_interface_links` ( + `interface_link_id` int(11) NOT NULL AUTO_INCREMENT, + `interface_a_id` int(11) NOT NULL, + `interface_b_id` int(11) NOT NULL, + `interface_link_type` varchar(100) DEFAULT NULL, + `interface_link_status` varchar(50) DEFAULT NULL, + `interface_link_created_at` datetime NOT NULL DEFAULT current_timestamp(), + `interface_link_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(), + PRIMARY KEY (`interface_link_id`), + KEY `fk_interface_a` (`interface_a_id`), + KEY `fk_interface_b` (`interface_b_id`), + CONSTRAINT `fk_interface_a` FOREIGN KEY (`interface_a_id`) REFERENCES `asset_interfaces` (`interface_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_interface_b` FOREIGN KEY (`interface_b_id`) REFERENCES `asset_interfaces` (`interface_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `asset_interfaces` -- @@ -155,7 +178,6 @@ CREATE TABLE `asset_interfaces` ( `interface_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(), `interface_archived_at` datetime DEFAULT NULL, `interface_network_id` int(11) DEFAULT NULL, - `interface_connected_asset_interface` int(11) NOT NULL DEFAULT 0, `interface_asset_id` int(11) NOT NULL, PRIMARY KEY (`interface_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; @@ -353,7 +375,8 @@ DROP TABLE IF EXISTS `client_stripe`; CREATE TABLE `client_stripe` ( `client_id` int(11) NOT NULL, `stripe_id` varchar(255) NOT NULL, - `stripe_pm` varchar(255) DEFAULT NULL + `stripe_pm` varchar(255) DEFAULT NULL, + PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -651,6 +674,24 @@ CREATE TABLE `documents` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `domain_history` +-- + +DROP TABLE IF EXISTS `domain_history`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `domain_history` ( + `domain_history_id` int(11) NOT NULL AUTO_INCREMENT, + `domain_history_column` varchar(200) NOT NULL, + `domain_history_old_value` text NOT NULL, + `domain_history_new_value` text NOT NULL, + `domain_history_domain_id` int(11) NOT NULL, + `domain_history_modified_at` datetime NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`domain_history_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `domains` -- @@ -682,24 +723,6 @@ CREATE TABLE `domains` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Table structure for table `domain_history` --- - -DROP TABLE IF EXISTS `domain_history`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `domain_history` ( - `domain_history_id` int(11) NOT NULL AUTO_INCREMENT, - `domain_history_column` varchar(200) NOT NULL, - `domain_history_old_value` text NOT NULL, - `domain_history_new_value` text NOT NULL, - `domain_history_domain_id` int(11) NOT NULL, - `domain_history_modified_at` datetime NOT NULL DEFAULT current_timestamp(), -PRIMARY KEY (`domain_history_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Table structure for table `email_queue` -- @@ -1606,12 +1629,12 @@ DROP TABLE IF EXISTS `services`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `services` ( `service_id` int(11) NOT NULL AUTO_INCREMENT, - `service_name` varchar(200) NOT NULL, - `service_description` varchar(200) NOT NULL, - `service_category` varchar(20) NOT NULL, - `service_importance` varchar(10) NOT NULL, + `service_name` varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `service_description` varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `service_category` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, + `service_importance` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, `service_backup` varchar(200) DEFAULT NULL, - `service_notes` text NOT NULL, + `service_notes` text CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL, `service_created_at` datetime NOT NULL DEFAULT current_timestamp(), `service_updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp(), `service_accessed_at` datetime DEFAULT NULL, @@ -2320,4 +2343,4 @@ CREATE TABLE `vendors` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-01-14 23:47:59 +-- Dump completed on 2025-01-18 13:03:55 diff --git a/modals/client_asset_interface_add_modal.php b/modals/client_asset_interface_add_modal.php index 059037b5..b4c5ee1d 100644 --- a/modals/client_asset_interface_add_modal.php +++ b/modals/client_asset_interface_add_modal.php @@ -14,6 +14,7 @@ +
@@ -123,7 +140,9 @@ diff --git a/modals/client_asset_interface_edit_modal.php b/modals/client_asset_interface_edit_modal.php index 6776968b..df6bba76 100644 --- a/modals/client_asset_interface_edit_modal.php +++ b/modals/client_asset_interface_edit_modal.php @@ -1,74 +1,150 @@ + +