From 6004394784e383160810565e34cadfde916e56ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Thu, 21 Nov 2024 15:09:52 +0100 Subject: [PATCH] CMXX - Upgrade software update --- api/v1/get/equipments.php | 9 +++ api/v1/get/products_software.php | 26 +++--- api/v1/post/products_software.php | 8 ++ api/v2/get/equipments.php | 9 +++ api/v2/get/products_software.php | 6 +- api/v2/post/products_software.php | 8 ++ assets/functions.php | 85 ++++++++++---------- assets/scripts.js | 96 +++++++++++------------ equipment.php | 19 +++-- equipment_manage.php | 2 +- equipments.php | 2 +- settings/translations/translations_DE.php | 1 + settings/translations/translations_ES.php | 1 + settings/translations/translations_NL.php | 1 + settings/translations/translations_PT.php | 1 + settings/translations/translations_US.php | 1 + 16 files changed, 159 insertions(+), 116 deletions(-) diff --git a/api/v1/get/equipments.php b/api/v1/get/equipments.php index 50733f5..ad959dd 100644 --- a/api/v1/get/equipments.php +++ b/api/v1/get/equipments.php @@ -8,6 +8,15 @@ defined($security_key) or exit; //Connect to DB $pdo = dbConnect($dbname); +//------------------------------------------ +//UPDATE SW_STATUS +//------------------------------------------ +$sql = 'UPDATE equipment e JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 1 WHERE ps.latest = 1 AND lower(e.sw_version) = lower(ps.version) AND e.sw_version_latest = 0'; +$stmt = $pdo->prepare($sql); +$stmt->execute(); +//------------------------------------------ +//------------------------------------------ + //Get user_rights from users.php $partner = json_decode($partnerhierarchy); diff --git a/api/v1/get/products_software.php b/api/v1/get/products_software.php index eda6ee5..0ff424b 100644 --- a/api/v1/get/products_software.php +++ b/api/v1/get/products_software.php @@ -182,18 +182,18 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ } } - //GET PRODUCTCODE BASED ON SN WHEN NO RECORDS FOUND - if (count($messages) === 0){ - $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber =?'; - $stmt = $pdo->prepare($sql); - //Excute Query - $stmt->execute([$criterias['sn']]); - //Get results - $productcodes = $stmt->fetchAll(PDO::FETCH_ASSOC); - //assign serialnumber to productcode - $criterias['productcode'] = $productcodes[0]['productcode']; - $sw_upgrade_version = $productcodes[0]['sw_version_upgrade']; - } + //GET PRODUCTCODE BASED ON SN WHEN NO RECORDS FOUND + if (isset($criterias['sn']) && !isset($criterias['productcode'])){ + $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber = ?'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$criterias['sn']]); + //Get results + $productcodes = $stmt->fetchAll(PDO::FETCH_ASSOC); + //assign serialnumber to productcode + $criterias['productcode'] = $productcodes[0]['productcode']; + $sw_upgrade_version = $productcodes[0]['sw_version_upgrade']; +} if ($latest_check == 0){ //GET LATEST BASED ON PRODUCTCODE @@ -214,7 +214,7 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ //Get results $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); - + foreach ($messages as $message){ //CHECK IF FIRMWARE FILE IS AVAILABLE diff --git a/api/v1/post/products_software.php b/api/v1/post/products_software.php index 415a5a3..456e357 100644 --- a/api/v1/post/products_software.php +++ b/api/v1/post/products_software.php @@ -89,6 +89,14 @@ if (isset($post_content['productrowid']) && $post_content['productrowid'] != '') //QUERY AND VERIFY ALLOWED if ($command == 'update' && isAllowed('products_software',$profile,$permission,'U') === 1){ + + //REMOVE LATEST FLAG FROM OTHER WHEN SEND + if ($criterias['latest'] == 1){ + $sql = 'UPDATE products_software SET latest = 0 WHERE productrowid = ?'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$post_content['productrowid']]); + } + $sql = 'UPDATE products_software SET '.$clause.' WHERE rowID = ? '.$whereclause.''; $execute_input[] = $id; $stmt = $pdo->prepare($sql); diff --git a/api/v2/get/equipments.php b/api/v2/get/equipments.php index aee748e..ca0e474 100644 --- a/api/v2/get/equipments.php +++ b/api/v2/get/equipments.php @@ -8,6 +8,15 @@ defined($security_key) or exit; //Connect to DB $pdo = dbConnect($dbname); +//------------------------------------------ +//UPDATE SW_STATUS +//------------------------------------------ +$sql = 'UPDATE equipment e JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 1 WHERE ps.latest = 1 AND lower(e.sw_version) = lower(ps.version) AND e.sw_version_latest = 0'; +$stmt = $pdo->prepare($sql); +$stmt->execute(); +//------------------------------------------ +//------------------------------------------ + //Get user_rights from users.php $partner = json_decode($partnerhierarchy); diff --git a/api/v2/get/products_software.php b/api/v2/get/products_software.php index fe4147b..a642e38 100644 --- a/api/v2/get/products_software.php +++ b/api/v2/get/products_software.php @@ -180,10 +180,10 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ $sw_upgrade_version = $message['sw_version_upgrade']; } } - + //GET PRODUCTCODE BASED ON SN WHEN NO RECORDS FOUND - if (count($messages) === 0){ - $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber =?'; + if (isset($criterias['sn']) && !isset($criterias['productcode'])){ + $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber = ?'; $stmt = $pdo->prepare($sql); //Excute Query $stmt->execute([$criterias['sn']]); diff --git a/api/v2/post/products_software.php b/api/v2/post/products_software.php index 349a33b..d0ae31b 100644 --- a/api/v2/post/products_software.php +++ b/api/v2/post/products_software.php @@ -88,6 +88,14 @@ if (isset($post_content['productrowid']) && $post_content['productrowid'] != '') //QUERY AND VERIFY ALLOWED if ($command == 'update' && isAllowed('products_software',$profile,$permission,'U') === 1){ + + //REMOVE LATEST FLAG FROM OTHER WHEN SEND + if ($criterias['latest'] == 1){ + $sql = 'UPDATE products_software SET latest = 0 WHERE productrowid = ?'; + $stmt = $pdo->prepare($sql); + $stmt->execute([$post_content['productrowid']]); + } + $sql = 'UPDATE products_software SET '.$clause.' WHERE rowID = ? '.$whereclause.''; $execute_input[] = $id; $stmt = $pdo->prepare($sql); diff --git a/assets/functions.php b/assets/functions.php index f5de586..4d6d724 100644 --- a/assets/functions.php +++ b/assets/functions.php @@ -787,7 +787,7 @@ function getPartnerName($str){ //------------------------------------------ // overview Indicators //------------------------------------------ -function overviewIndicators($warranty, $service, $sw_version, $hw_version){ +function overviewIndicators($warranty, $service, $sw_version, $sw_version_latest){ include dirname(__FILE__,2).'/settings/settings.php'; include dirname(__FILE__,2).'/settings/systemfirmware.php'; $indicator =''; @@ -805,20 +805,18 @@ function overviewIndicators($warranty, $service, $sw_version, $hw_version){ } //Firmware - if (isset($sw_version) && isset($hw_version)){ - $sw_version = substr($sw_version, 0, strpos($sw_version, ".")); - $firmware = ${'Firmwarename' . $hw_version} ?? ''; - //Firmware upgrade required - if (!empty($firmware) && ($sw_version != $firmware)){ - $indicator .= 'F'; - } else { - $indicator .= 'F'; - } - } else { - $indicator .= 'F'; - - } - + if (isset($sw_version_latest)){ + if($sw_version_latest == 1){ + $indicator .= 'F'; + } else { + if ($sw_version == ''){ + $indicator .= 'F'; + } else { + $indicator .= 'F'; + } + } + } + return $indicator; } @@ -891,39 +889,36 @@ function serviceStatus($input){ // Check available firmware //------------------------------------------ -function availableFirmware($sw_version, $hw_version){ +function availableFirmware($sw_version,$sw_version_latest){ + //INCLUDE TRANSLATION FILE + if(isset($_SESSION['country_code'])){ + $api_file_language = dirname(__FILE__,2).'/settings/translations/translations_'.strtoupper($_SESSION['country_code']).'.php'; + if (file_exists($api_file_language)){ + include $api_file_language; //Include the code + } + else { + include dirname(__FILE__,2).'/settings/translations/translations_US.php'; + } + } + else { + include dirname(__FILE__,2).'/settings/translations/translations_US.php'; + } + + //SET DEFAULTS + if ((isset($sw_version) && $sw_version == '')){ $message ='Unknown'; - - if (isset($sw_version) && isset($hw_version)){ - include dirname(__FILE__,2).'/settings/systemfirmware.php'; - include dirname(__FILE__,2).'/settings/settings.php'; - - //INCLUDE TRANSLATION FILE - if(isset($_SESSION['country_code'])){ - $api_file_language = dirname(__FILE__,2).'/settings/translations/translations_'.strtoupper($_SESSION['country_code']).'.php'; - if (file_exists($api_file_language)){ - include $api_file_language; //Include the code - } - else { - include dirname(__FILE__,2).'/settings/translations/translations_US.php'; - } - } - else { - include dirname(__FILE__,2).'/settings/translations/translations_US.php'; - } - - $sw_version = substr($sw_version, 0, strpos($sw_version, ".")); - $firmware = ${'Firmwarename' . $hw_version} ?? ''; - - if (!empty($firmware) && ($sw_version != $firmware)){ - $message = ''.$firmware_update_text.''; - - } else { + } + else { + //CHECK IF LATEST + if($sw_version_latest == 1){ $message = ''.$firmware_recent_text.''; - } - } - return $message; + } else { + $message = ''.$firmware_update_text.''; + } + } + + return $message; } //------------------------------------------ diff --git a/assets/scripts.js b/assets/scripts.js index 7989943..3dc1758 100644 --- a/assets/scripts.js +++ b/assets/scripts.js @@ -80,61 +80,61 @@ async function appendToTerminal(newStuff) { async function getDeviceData(){ - var item = serialResultsDiv.innerHTML; - x = Array.from(new Set(item.split(";"))).toString(); + var item = serialResultsDiv.innerHTML; + x = Array.from(new Set(item.split(";"))).toString(); - //Check if Serialnumber is retrieved from device - if (x.indexOf("SN=") > 0){ - var a = x.indexOf("SN="); + //Check if Serialnumber is retrieved from device + if (x.indexOf("SN=") > 0){ + var a = x.indexOf("SN="); + var b = a + 3; + var c = b + 8; + serial = x.substring(b,c); + progressBar("65", "Retrieving device data", "#04AA6D"); + console.log(serial); + + if (x.indexOf("FW=") > 0){ + var a = x.indexOf("FW="); var b = a + 3; var c = b + 8; - serial = x.substring(b,c); - progressBar("65", "Retrieving device data", "#04AA6D"); - //Check if serialnumber is allowed - if (serial != '23BB' || serial != '23AA'){ - progressBar("70", "Retrieving device data", "#04AA6D"); - console.log(serial); - - //Check if HW is retrieved from device - if (x.indexOf("HW=") > 0){ - var a = x.indexOf("HW="); - var b = a + 3; - var c = b + 8; - var d = x.substring(b,c); - var e = d.slice(-1); - - if (e.toLowerCase() !== e.toUpperCase()){ - var f = d.slice(d.length - 3) - hw = 'R'+f; - sw = 'R'+f; - } - else { - var f = d.slice(d.length - 2) - hw = 'R'+f; - sw = 'R'+f; - } - - getServiceID().then(firmwareUpdate); - progressBar("80", "checking for available firmware", "#04AA6D"); - setTimeout(checkAvailableFirmware, 5000); - console.log(hw); - } - else { - progressBar("80", "Reading of device not successful, please try again", "#ff6666"); - console.log('Reading of device not successful'); - } - } - else { - progressBar("100", "Upgrade not allowed", "#ff6666"); - console.log('Upgrade not allowed'); - } + fw = x.substring(b,c); + fw = fw.replace(/^0+/, ''); } -} + //Check if HW is retrieved from device + if (x.indexOf("HW=") > 0 && x.indexOf("FW=") >0){ + var a = x.indexOf("HW="); + var b = a + 3; + var c = b + 8; + var d = x.substring(b,c); + var e = d.slice(-1); + if (e.toLowerCase() !== e.toUpperCase()){ + var f = d.slice(d.length - 3) + hw = 'R'+f; + sw = 'R'+f; + } + else { + var f = d.slice(d.length - 2) + hw = 'R'+f; + sw = 'R'+f; + } + + $fw_name = 'Firmware_'+fw+'_'+sw; + console.log($fw_name); + getServiceID().then(firmwareUpdate); + progressBar("80", "checking for available firmware", "#04AA6D"); + setTimeout(checkAvailableFirmware, 5000); + console.log(hw); + } + else { + progressBar("80", "Reading of device not successful, please try again", "#ff6666"); + console.log('Reading of device not successful'); + } + } +} function firmwareUpdate(data){ var serialnumber = serial; - var action = '/v0/application/firmwareUpdate?sn='+serialnumber+'&hw_version='+hw+'&sw_version='+sw; + var action = '/v2/products_software/sn='+serialnumber+'&version='+$fw_name; var url = link+action; var bearer = 'Bearer ' + data; @@ -150,7 +150,7 @@ function firmwareUpdate(data){ }) .then(response => response.json()) .then(firmware=> { - firmwarelocation = './firmware/'+firmware.HEX_FW+'.HEX'; + firmwarelocation = './firmware/'+firmware['software']; return firmwarelocation; }) diff --git a/equipment.php b/equipment.php index 88422e4..30935a8 100644 --- a/equipment.php +++ b/equipment.php @@ -64,7 +64,7 @@ if (!empty($products_software)){$products_software = decode_payload($products_so $status_text = 'status'.$responses->status.'_text'; $warrantydate = warrantyStatus($responses->warranty_date); $service_date_due = serviceStatus($responses->service_date); -$firmware_status = availableFirmware($responses->sw_version, $responses->hw_version); +$firmware_status = availableFirmware($responses->sw_version, $products_software); //Calculate Healthindex based on last test $total_score = assetHealthIndex($_SESSION['profile'],$_SESSION['permission'],$equipment_data,0); @@ -233,10 +233,19 @@ $view .= '
'.$equipment_label5.' '.$responses->hw_version.' - - + '; +//SHOW SOFTWARE NAME WHEN AVAILABLE +$software_name = ''; +if (isset($products_software) && $products_software !=''){ + foreach ($products_software as $products_soft){ + if ($products_soft->version == $responses->sw_version){ + $software_name = ' - '.$products_soft->software; + } + } +} +$view .= ' '.$equipment_label6.' - '.$responses->sw_version.' + '.$responses->sw_version.$software_name.' '; //SHOW ONLY SW_UPGRADE WHEN SET if (isset($products_software) && $products_software !=''){ @@ -244,7 +253,7 @@ if (isset($products_software) && $products_software !=''){ if ($products_soft->rowID == $responses->sw_version_upgrade){ $view .= ' '.($equipment_sw_version_upgrade ?? 'sw_version_upgrade').' - '.$products_soft->version.' + '.$products_soft->version.' - '.$products_soft->software.' '; } } diff --git a/equipment_manage.php b/equipment_manage.php index bed7dc3..05e1fa2 100644 --- a/equipment_manage.php +++ b/equipment_manage.php @@ -173,7 +173,7 @@ if (isset($products_software) && $products_software !=''){ '; foreach ($products_software as $products_soft ){ - $product_software_list .= ' + $product_software_list .= ' '; } $product_software_list .= ''; diff --git a/equipments.php b/equipments.php index e4ae432..7e430e5 100644 --- a/equipments.php +++ b/equipments.php @@ -225,7 +225,7 @@ if (isset($partner_data->section)){$section = getPartnerName($partner_data->sect $picture = glob("./assets/images/products/".$response->productcode.".{jpg,jpeg,png,gif}", GLOB_BRACE); -$indicators = overviewIndicators($response->warranty_date,$response->service_date,$response->sw_version,$response->hw_version); +$indicators = overviewIndicators($response->warranty_date,$response->service_date,$response->sw_version, $response->sw_version_latest); $view .= ' '.$indicators.' diff --git a/settings/translations/translations_DE.php b/settings/translations/translations_DE.php index 3030336..9f2b170 100644 --- a/settings/translations/translations_DE.php +++ b/settings/translations/translations_DE.php @@ -207,6 +207,7 @@ $message_no_assets = 'Es gibt keine Vermögenswerte'; //Manage assets $manage_asset_h2 = 'Vermögenswert verwalten'; +$equipment_sw_version_upgrade = 'Softwareversion, auf die aktualisiert werden soll (kein Eintrag ist die neueste Version)'; //ServiceReports $servicereports_h2 = 'Serviceberichte'; diff --git a/settings/translations/translations_ES.php b/settings/translations/translations_ES.php index 6da8fc7..be75d29 100644 --- a/settings/translations/translations_ES.php +++ b/settings/translations/translations_ES.php @@ -207,6 +207,7 @@ $message_no_assets = 'No hay activos'; //Manage assets $manage_asset_h2 = 'Gestionar activo'; +$equipment_sw_version_upgrade = 'Versión de software para actualizar (ninguna entrada es la versión más reciente)'; //ServiceReports $servicereports_h2 = 'Informes de servicio'; diff --git a/settings/translations/translations_NL.php b/settings/translations/translations_NL.php index f15b143..f35b18a 100644 --- a/settings/translations/translations_NL.php +++ b/settings/translations/translations_NL.php @@ -207,6 +207,7 @@ $message_eq_3 = 'Activa verwijderd!'; $message_no_assets = 'Er is geen activa'; //Manage assets $manage_asset_h2 = 'Update activa'; +$equipment_sw_version_upgrade = 'Software-versie om naar te upgraden (geen vermelding is de nieuwste versie)'; //ServiceReports $servicereports_h2 = 'Service rapporten'; diff --git a/settings/translations/translations_PT.php b/settings/translations/translations_PT.php index 00200da..d74bab0 100644 --- a/settings/translations/translations_PT.php +++ b/settings/translations/translations_PT.php @@ -206,6 +206,7 @@ $message_eq_3 = 'Equipamento excluído com sucesso!'; $message_no_assets = 'Não há ativos'; //Manage assets $manage_asset_h2 = 'Gerenciar ativo'; +$equipment_sw_version_upgrade = 'Versão de software para atualizar (nenhuma entrada é a versão mais recente)'; //ServiceReports $servicereports_h2 = 'Relatórios de serviço'; diff --git a/settings/translations/translations_US.php b/settings/translations/translations_US.php index aba7622..fe0c766 100644 --- a/settings/translations/translations_US.php +++ b/settings/translations/translations_US.php @@ -206,6 +206,7 @@ $message_no_assets = 'There are no assets'; //Manage assets $manage_asset_h2 = 'Manage asset'; +$equipment_sw_version_upgrade = 'Software version to upgrade to (no entry is latest version)'; //ServiceReports $servicereports_h2 = 'Service reports';