From 0bc15b28da4c1395fab0fd0f7fc01b95ff28112a Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Wed, 22 Sep 2021 23:31:15 +0200 Subject: [PATCH] =?UTF-8?q?Base=20du=20syst=C3=A8me=20de=20mise=20=C3=A0?= =?UTF-8?q?=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vbcms-admin/includes/navbar.php | 4 +- vbcms-admin/updater.php | 66 ++++++++++++++-------- vbcms-content/translations/FR.php | 8 +++ vbcms-core/clientBackTasks.php | 92 +++++++++++-------------------- vbcms-core/functions.php | 17 +++--- 5 files changed, 93 insertions(+), 94 deletions(-) diff --git a/vbcms-admin/includes/navbar.php b/vbcms-admin/includes/navbar.php index 7d79e8f..9090493 100644 --- a/vbcms-admin/includes/navbar.php +++ b/vbcms-admin/includes/navbar.php @@ -39,8 +39,8 @@ $vbcmsVer = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='vbcmsVer <span class="brand-name">VBcms</span><small class="ml-1"><?=$vbcmsVer?></small> </div> - <a class="dropdown-item" target="_blank" href="https://vbcms.net/manager/myaccount"><?=translate("myProfil")?></a> - <a class="dropdown-item" target="_blank" href="https://vbcms.net/manager/myliscence"><?=translate("manageliscence")?></a> + <!--<a class="dropdown-item" target="_blank" href="https://vbcms.net/manager/myaccount"><?=translate("myProfil")?></a> + <a class="dropdown-item" target="_blank" href="https://vbcms.net/manager/myliscence"><?=translate("manageliscence")?></a>--> <a class="dropdown-item" href="?logout"><?=translate("disconnect")?></a> </div> </div> diff --git a/vbcms-admin/updater.php b/vbcms-admin/updater.php index deb39dd..9c2597f 100644 --- a/vbcms-admin/updater.php +++ b/vbcms-admin/updater.php @@ -24,8 +24,7 @@ if (!$hasNewUpdate) { <!-- Contenu --> <div class="dashboardTopCard" leftSidebar="240" rightSidebar="0"> - <h3><?=translate("updateVBcms")?></h3> - <div class="d-flex mt-5"> + <div class="d-flex"> <div class="vbcms-logo"> <img src="<?=VBcmsGetSetting("websiteUrl")?>vbcms-admin/images/vbcms-logo/raccoon-in-box-512x.png"> </div> @@ -36,8 +35,8 @@ if (!$hasNewUpdate) { <?php if ($hasNewUpdate) { - echo '<p>Test</p>'; - echo '<button type="button" onclick="$(\'#updateModal\').modal(\'toggle\');" class="btn btn-light">'.translate("downloadAndInstall").'</button>'; + //echo '<p>Test</p>'; + echo '<button type="button" onclick="$(\'#updateModal\').modal(\'toggle\');" class="btn btn-sm btn-light">'.translate("downloadAndInstall").'</button>'; } ?> @@ -79,24 +78,24 @@ if (!$hasNewUpdate) { <a class="text-dark" target="_blank" href="https://discord.gg/DpfF8Kz"><i class="fab fa-discord"></i> Notre discord</a> </div> </div> - - <div class="modal fade" id="updateModal" tabindex="-1"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <h5>Mettre à jour VBcms</h5> - </div> - <div class="modal-body"> - <p>Vous êtes sur le point de télécharger et d'installer une mise à jour. Tout se fera automatiquement, vous serez automatiquement redirigé après l'installation effectuée.</p> + + <div class="modal fade" id="updateModal"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header bg-brown text-white"> + <h5 id="extensionActivationModalTitle" class="modal-title"><?=translate('updateVBcms')?></h5> + </div> + <div class="modal-body"> + <p>Vous êtes sur le point de télécharger et d'installer une mise à jour. Tout se fera automatiquement, vous serez automatiquement redirigé une fois l'installation effectuée.</p> <p><strong>Note : Il se peut que d'autres mises à jours suivent celle-ci, référez-vous à notre documentation pour en savoir plus.</strong></p> </div> - <div class="modal-footer"> - <button type="button" class="btn btn-secondary" data-dismiss="modal">Peut-être plus-tard</button> - <button type="button" data-dismiss="modal" onclick="updateVBcms()" class="btn btn-success">Faire la mise à jour</button> - </div> - </div> - </div> - </div> + <div class="modal-footer"> + <button type="button" class="btn btn-outline-brown" data-dismiss="modal"><?=translate("later")?></button> + <button type="button" data-dismiss="modal" onclick="updateVBcms()" class="btn btn-brown"><?=translate("doTheUpdate")?></button> + </div> + </div> + </div> + </div> </div> <script type="text/javascript"> @@ -113,7 +112,19 @@ if (!$hasNewUpdate) { ?> }); async function updateVBcms(){ - $.get("<?=VBcmsGetSetting("websiteUrl")?>backTasks?updateVBcms", function(data) { + <?php + $updateKey = getRandomString(5); + $query=$bdd->query("SELECT * FROM `vbcms-settings` WHERE name = 'updateKey'")->fetch(PDO::FETCH_ASSOC); + if(empty($query)){ + $query=$bdd->prepare("INSERT INTO `vbcms-settings` (`name`, `value`) VALUES ('updateKey', ?)"); + $query->execute([$updateKey]); + }else{ + $query=$bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `name` = 'updateKey'"); + $query->execute([$updateKey]); + } + + ?> + $.get("<?=VBcmsGetSetting("websiteUrl")?>backTasks?updateVBcms=<?=$updateKey?>", function(data) { if (data=="") { SnackBar({ message: "backTasks ne retourne rien: "+data, @@ -121,22 +132,29 @@ if (!$hasNewUpdate) { timeout: false }); }else{ + console.log(data); details = JSON.parse(data); if (details.success == true) { window.location.replace(details.link); } else { - if (details.code == 0) { + if (details.code == "WRONG_CODE") { SnackBar({ - message: "Impossible de télécharger la mise à jour", + message: "Erreur, le code de mise à jour généré n'est pas valide.", status: "danger", timeout: false }); - } else if(details.code == 1) { + } else if(details.code == "CANT_OPEN_ARCHIVE") { SnackBar({ message: "Impossible d'ouvrir l'archive de la mise à jour", status: "danger", timeout: false }); + } else if(details.code == "CANT_DOWNLOAD_UPDATE") { + SnackBar({ + message: "Impossible de télécharger la mise à jour", + status: "danger", + timeout: false + }); } } } diff --git a/vbcms-content/translations/FR.php b/vbcms-content/translations/FR.php index 691c9ad..91501cc 100644 --- a/vbcms-content/translations/FR.php +++ b/vbcms-content/translations/FR.php @@ -55,6 +55,14 @@ $translation["visualize"] = "Visualiser"; $translation["commands"] = "Commandes"; $translation["rename"] = "Renommer"; $translation["error"] = "Erreur"; +$translation["later"] = "Plus-tard"; +$translation["doTheUpdate"] = "Faire la mise à jour"; +$translation["sample"] = "sample"; +$translation["sample"] = "sample"; +$translation["sample"] = "sample"; +$translation["sample"] = "sample"; +$translation["sample"] = "sample"; +$translation["sample"] = "sample"; $translation["sample"] = "sample"; $translation["sample"] = "sample"; $translation["sample"] = "sample"; diff --git a/vbcms-core/clientBackTasks.php b/vbcms-core/clientBackTasks.php index dd93470..29d9fc4 100644 --- a/vbcms-core/clientBackTasks.php +++ b/vbcms-core/clientBackTasks.php @@ -1,65 +1,35 @@ <?php -if (isset($_GET["netAccess"]) && !empty($_GET["netAccess"])) { - $decryption_iv = '1106737252181743'; - $ciphering = "AES-128-CTR"; - $iv_length = openssl_cipher_iv_length($ciphering); - $options = 0; - $decryption_key = VBcmsGetSetting('encryptionKey'); - $instructions= openssl_decrypt($_GET["netAccess"], $ciphering, $decryption_key, $options, $decryption_iv); +if (isset($_GET["updateVBcms"])&&!empty($_GET["updateVBcms"])) { + $updateKey=$bdd->query("SELECT * FROM `vbcms-settings` WHERE name = 'updateKey'")->fetch(PDO::FETCH_ASSOC); + if($_GET["updateVBcms"]==$updateKey){ + $newUpdateInfos = checkVBcmsUpdates(); - // On a réussi la connexion à distance, on va créer une session superadmin - - if (isJson($instructions)) { - $instructions = json_decode($instructions, true); - switch ($instructions["command"]) { - case 'getVersionInfo': - echo VBcmsGetSetting('vbcmsVersion'); - break; - - case 'autoUpdate': - $autoUpdate = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'autoUpdate'")->fetchColumn(); - if ($autoUpdate=="1") { - $updateState = json_decode(file_get_contents(VBcmsGetSetting("websiteUrl")."backTasks/?updateVBcms"), true); - if ($updateState["success"]==true) { - file_get_contents(VBcmsGetSetting("websiteUrl")."update.php?silentUpdate"); - $result["result"] = "success"; - echo json_encode($result); - } else { - $result["result"] = "error"; - $result["code"] = $updateState["code"]; - $result["message"] = $updateState["error"]; - echo json_encode($result); - } - - } else { - echo "Auto update is not enabled"; - } - break; - - case 'criticalUpdate': - $response=$bdd->prepare("UPDATE `vbcms-settings` SET value = ? WHERE name = 'updateCanal'"); - $response->execute(["release"]); - - $updateState = json_decode(file_get_contents(VBcmsGetSetting("websiteUrl")."backTasks/?updateVBcms"), true); - if ($updateState["success"]==true) { - file_get_contents(VBcmsGetSetting("websiteUrl")."update.php?silentUpdate"); - $result["result"] = "success"; - echo json_encode($result); - } else { - $result["result"] = "error"; - $result["code"] = $updateState["code"]; - $result["message"] = $updateState["error"]; - echo json_encode($result); - } - - break; - - default: - echo "unrecognized command"; - break; - } - } -} elseif (isset($_GET["updateVBcms"])) { + $updateFilename = $GLOBALS['vbcmsRootPath']."/vbcms-content/updates/".basename($newUpdateInfos['zip']); + if (!file_exists($GLOBALS['vbcmsRootPath']."/vbcms-content/updates")) mkdir($GLOBALS['vbcmsRootPath']."/vbcms-content/updates", 0755); + //echo $updateInfosData["downloadLink"]."?serverId=".VBcmsGetSetting("serverId")."&key=".$key; + file_put_contents($updateFilename, file_get_contents($newUpdateInfos["zip"])); + if (file_exists($updateFilename)) { + $zip = new ZipArchive; + if ($zip->open($updateFilename) === TRUE) { + $zip->extractTo($GLOBALS['vbcmsRootPath']); + $zip->close(); + + $response["success"] = true; + $response["link"] = VBcmsGetSetting("websiteUrl")."update.php"; + } else { + $response["success"] = false; + $response["code"] = "CANT_OPEN_ARCHIVE"; // Impossible d'ouvrir l'archive + } + } else { + $response["success"] = false; + $response["code"] = "CANT_DOWNLOAD_UPDATE"; // Impossible de télécharger la màj + } + }else{ + $response["success"] = false; + $response["code"] = "WRONG_CODE"; // Impossible d'ouvrir l'archive + } + echo json_encode($response); + /* $updateInfos = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".VBcmsGetSetting("serverId")."&key=".VBcmsGetSetting('encryptionKey')."&version=".VBcmsGetSetting('vbcmsVersion')."&canal=".VBcmsGetSetting('updateCanal')); if(isJson($updateInfos)){ $updateInfosData = json_decode($updateInfos, true); @@ -88,6 +58,6 @@ if (isset($_GET["netAccess"]) && !empty($_GET["netAccess"])) { } else { $response["success"] = false; $response["code"] = 0; // Impossible de lire la réponse -> !JSON - } + }*/ } \ No newline at end of file diff --git a/vbcms-core/functions.php b/vbcms-core/functions.php index 5c1b614..2ccbc67 100644 --- a/vbcms-core/functions.php +++ b/vbcms-core/functions.php @@ -196,13 +196,16 @@ function checkVBcmsUpdates(){ $updateInfos['name'] = "Commit ".substr($updateInfosData[0]['sha'], 0, 7); $updateInfos['description'] = $updateInfosData[0]['commit']['message']; $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s"); + $updateInfos['zip'] = "https://api.github.com/repos/SofianeLasri/VBcms-2.0/zipball"; + $updateInfos['type'] = "dev"; }else{ - if($updateInfosData[0]['prerelease']){ - $remoteUpdateDate = new DateTime($updateInfosData[0]['published_at']); - $updateInfos['name'] = $updateInfosData[0]['name']; - $updateInfos['description'] = $updateInfosData[0]['body']; - $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s"); - } + $remoteUpdateDate = new DateTime($updateInfosData[0]['published_at']); + $updateInfos['name'] = $updateInfosData[0]['name']; + $updateInfos['description'] = $updateInfosData[0]['body']; + $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s"); + $updateInfos['zip'] = $updateInfosData[0]['zipball_url']; + if($updateInfosData[0]['prerelease']) $updateInfos['type'] = "nightly"; + else $updateInfos['type'] = "stable"; } @@ -212,7 +215,7 @@ function checkVBcmsUpdates(){ $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn(); if ($response!=1) { - $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `removable`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)"); + $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `dismissible`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)"); $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]); } return $updateInfos; -- GitLab