feat(ota): add 1-click update UI & API with changelog display
This commit is contained in:
1 parent
2376e7eebb
commit
5d60e66518
3 files changed
+230
-1
No files matched your search
@@ -2231,6 +2231,64 @@ try {
|
||||
echo json_encode($res);
|
||||
break;
|
||||
|
||||
case 'check_update':
|
||||
$appDir = dirname(__DIR__);
|
||||
$localVerJson = file_exists("{$appDir}/version.json")
|
||||
? json_decode((string)file_get_contents("{$appDir}/version.json"), true)
|
||||
: ['version' => '1.2.0', 'changelog' => []];
|
||||
|
||||
$currentVer = $localVerJson['version'] ?? '1.2.0';
|
||||
$remoteVer = $currentVer;
|
||||
$remoteChangelog = [];
|
||||
$remoteDate = '';
|
||||
|
||||
exec("git --git-dir={$appDir}/.git fetch origin main --quiet 2>/dev/null", $output, $code);
|
||||
$remoteJsonRaw = shell_exec("git --git-dir={$appDir}/.git show origin/main:version.json 2>/dev/null");
|
||||
if ($remoteJsonRaw) {
|
||||
$remoteData = json_decode($remoteJsonRaw, true);
|
||||
if (is_array($remoteData) && !empty($remoteData['version'])) {
|
||||
$remoteVer = (string)$remoteData['version'];
|
||||
$remoteChangelog = $remoteData['changelog'] ?? [];
|
||||
$remoteDate = $remoteData['release_date'] ?? '';
|
||||
}
|
||||
}
|
||||
|
||||
$hasUpdate = version_compare($remoteVer, $currentVer, '>');
|
||||
$localHash = trim((string)shell_exec("git --git-dir={$appDir}/.git rev-parse HEAD 2>/dev/null"));
|
||||
$remoteHash = trim((string)shell_exec("git --git-dir={$appDir}/.git rev-parse origin/main 2>/dev/null"));
|
||||
if (!$hasUpdate && $localHash !== '' && $remoteHash !== '' && $localHash !== $remoteHash) {
|
||||
$hasUpdate = true;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'current_version' => $currentVer,
|
||||
'latest_version' => $remoteVer,
|
||||
'has_update' => $hasUpdate,
|
||||
'changelog' => $hasUpdate ? $remoteChangelog : ($localVerJson['changelog'] ?? []),
|
||||
'release_date' => $remoteDate ?: ($localVerJson['release_date'] ?? ''),
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'run_update':
|
||||
$output = [];
|
||||
$code = 0;
|
||||
exec("sudo /var/www/nexus-pbx/scripts/update.sh 2>&1", $output, $code);
|
||||
$outputStr = implode("\n", $output);
|
||||
|
||||
$appDir = dirname(__DIR__);
|
||||
$newVerJson = file_exists("{$appDir}/version.json")
|
||||
? json_decode((string)file_get_contents("{$appDir}/version.json"), true)
|
||||
: ['version' => '1.3.0'];
|
||||
|
||||
echo json_encode([
|
||||
'success' => ($code === 0),
|
||||
'new_version' => $newVerJson['version'] ?? '1.3.0',
|
||||
'output' => $outputStr,
|
||||
'message' => ($code === 0) ? "Mise à jour réussie !" : "Erreur lors de la mise à jour",
|
||||
]);
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(400);
|
||||
echo json_encode([
|
||||
|
||||
Reference in new issue
Block a user