From cfc898bda8be050f8246f8418e8bcc0eef325825 Mon Sep 17 00:00:00 2001
From: Wisp X
Date: Mon, 28 Feb 2022 09:14:15 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=94=B9=E8=BF=9B=E5=8D=87?=
=?UTF-8?q?=E7=BA=A7=E9=A1=B5=E9=9D=A2=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/Services/UpgradeService.php | 31 ++++++---
composer.lock | 63 ++++++++++---------
public/css/app.css | 3 +
resources/views/admin/setting/index.blade.php | 53 ++++++++++------
4 files changed, 90 insertions(+), 60 deletions(-)
diff --git a/app/Services/UpgradeService.php b/app/Services/UpgradeService.php
index 66168cff..db2dcb4e 100644
--- a/app/Services/UpgradeService.php
+++ b/app/Services/UpgradeService.php
@@ -39,6 +39,7 @@ class UpgradeService
'icon' => 'https://raw.githubusercontent.com/wisp-x/lsky-pro/master/public/static/app/images/icon.png',
'name' => 'V 2.0.1',
'size' => '33.5 MB',
+ 'md5' => '12',
'changelog' => (new \Parsedown())->parse('### Added
- 一键复制全部链接 ([#167](https://github.com/wisp-x/lsky-pro/issues/167))
@@ -53,7 +54,7 @@ FAQ:
'),
'pushed_at' => '2022-02-26 12:21',
- 'download_url' => 'https://github.com/wisp-x/lsky-pro/archive/v1.6.4.zip',
+ 'download_url' => 'https://software.download.prss.microsoft.com/sg/Win10_21H2_Chinese(Simplified)_x64.iso?t=cc16df27-a503-4843-928b-fa38631f2a70&e=1646095954&h=47dc652437cb5752e720648dd2f74faa0b5d1966c9f6cfb6b8557f32dddec97c',
],
];
}
@@ -69,17 +70,21 @@ FAQ:
return false;
}
+ file_put_contents($lock, '');
+
$package = base_path('upgrade.zip');
+ $version = $this->getVersions()->first();
+
// 如果有安装包则直接进行安装,否则下载安装包
if (! file_exists($package)) {
- $this->setProgress('开始下载安装包...');
+ $this->setProgress('正在下载安装包...');
if (! $this->check()) {
throw new \Exception('No need to upgrade.');
}
-
- $version = $this->getVersions()->first();
- $response = Http::timeout(1800)->get($version['download_url'])->onError(function () {
- $this->setProgress('安装包下载异常');
+ $response = Http::withOptions([
+ 'timeout' => 600,
+ ])->timeout(600)->get($version['download_url'])->onError(function () {
+ throw new \Exception('安装包下载异常');
});
if ($response->successful()) {
file_put_contents($package, $response->body());
@@ -88,29 +93,35 @@ FAQ:
}
$this->setProgress('正在解压安装包...');
- $name = md5_file($package);
+ $md5 = md5_file($package);
+
+ if ($md5 !== $version['md5']) {
+ throw new \Exception('md5 校验失败');
+ }
$zip = new ZipArchive;
if (! $zip->open($package)) {
throw new \Exception('Installation package decompression failed.');
}
- $zip->extractTo(base_path($name));
+ $zip->extractTo(base_path($md5));
$zip->close();
$this->setProgress('执行安装中...');
// TODO 读取已存在的软连接,移动到更新目录
// TODO 移动本地文件到更新目录
- Artisan::call('cache:clear');
+ // 清除配置缓存
+ Cache::forget('configs');
Artisan::call('package:discover');
} catch (\Throwable $e) {
Log::error('升级失败', ['message' => $e->getMessage(), $e->getTraceAsString()]);
- $this->setProgress('安装失败,请刷新页面重试', 'fail');
+ $this->setProgress($e->getMessage(), 'fail');
@unlink($lock);
return false;
}
$this->setProgress('安装成功,请刷新页面', 'success');
@unlink($lock);
+ @unlink($package);
return true;
}
diff --git a/composer.lock b/composer.lock
index bde35a1a..1a2df254 100644
--- a/composer.lock
+++ b/composer.lock
@@ -334,16 +334,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.209.31",
+ "version": "3.209.30",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "595a97c3ca53ba1f33f5bacbb6a8e48ccb45f068"
+ "reference": "54c1e491b8de74360bbe94d727706db384c8d9a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/595a97c3ca53ba1f33f5bacbb6a8e48ccb45f068",
- "reference": "595a97c3ca53ba1f33f5bacbb6a8e48ccb45f068",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/54c1e491b8de74360bbe94d727706db384c8d9a8",
+ "reference": "54c1e491b8de74360bbe94d727706db384c8d9a8",
"shasum": "",
"mirrors": [
{
@@ -425,9 +425,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.209.31"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.209.30"
},
- "time": "2022-02-24T22:02:07+00:00"
+ "time": "2022-02-23T19:14:31+00:00"
},
{
"name": "brick/math",
@@ -2765,16 +2765,16 @@
},
{
"name": "league/flysystem",
- "version": "3.0.9",
+ "version": "3.0.10",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "fb0801a60b7f9ea4188f01c25cb48aed26db7fb6"
+ "reference": "bbc5026adb5a423dfcdcecec74c7e15943ff6115"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/fb0801a60b7f9ea4188f01c25cb48aed26db7fb6",
- "reference": "fb0801a60b7f9ea4188f01c25cb48aed26db7fb6",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/bbc5026adb5a423dfcdcecec74c7e15943ff6115",
+ "reference": "bbc5026adb5a423dfcdcecec74c7e15943ff6115",
"shasum": "",
"mirrors": [
{
@@ -2788,6 +2788,7 @@
"php": "^8.0.2"
},
"conflict": {
+ "aws/aws-sdk-php": "3.209.31 || 3.210.0",
"guzzlehttp/guzzle": "<7.0",
"guzzlehttp/ringphp": "<1.1.1",
"symfony/http-client": "<5.2"
@@ -2840,7 +2841,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.0.9"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.0.10"
},
"funding": [
{
@@ -2856,20 +2857,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-22T07:37:40+00:00"
+ "time": "2022-02-26T11:09:13+00:00"
},
{
"name": "league/flysystem-aws-s3-v3",
- "version": "3.0.9",
+ "version": "3.0.10",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
- "reference": "457042c76eec01f150a3e54e96d37ddb48da7833"
+ "reference": "79c63dc761b6a389a38bd409c2bf8ced73c29261"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/457042c76eec01f150a3e54e96d37ddb48da7833",
- "reference": "457042c76eec01f150a3e54e96d37ddb48da7833",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/79c63dc761b6a389a38bd409c2bf8ced73c29261",
+ "reference": "79c63dc761b6a389a38bd409c2bf8ced73c29261",
"shasum": "",
"mirrors": [
{
@@ -2916,9 +2917,9 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
- "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.0.9"
+ "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.0.10"
},
- "time": "2022-02-22T07:32:04+00:00"
+ "time": "2022-02-26T10:59:05+00:00"
},
{
"name": "league/flysystem-ftp",
@@ -6322,12 +6323,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -7272,12 +7273,12 @@
},
"type": "library",
"autoload": {
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
"files": [
"Resources/functions.php"
],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
"exclude-from-classmap": [
"/Tests/"
]
@@ -10711,16 +10712,16 @@
},
{
"name": "spatie/flare-client-php",
- "version": "1.0.2",
+ "version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/spatie/flare-client-php.git",
- "reference": "5d48e00716e3bab813cafffe223bc85c5732a410"
+ "reference": "9b54db8774b6bd7ad7cfa4c035820ef63ea1a75c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5d48e00716e3bab813cafffe223bc85c5732a410",
- "reference": "5d48e00716e3bab813cafffe223bc85c5732a410",
+ "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/9b54db8774b6bd7ad7cfa4c035820ef63ea1a75c",
+ "reference": "9b54db8774b6bd7ad7cfa4c035820ef63ea1a75c",
"shasum": "",
"mirrors": [
{
@@ -10769,7 +10770,7 @@
],
"support": {
"issues": "https://github.com/spatie/flare-client-php/issues",
- "source": "https://github.com/spatie/flare-client-php/tree/1.0.2"
+ "source": "https://github.com/spatie/flare-client-php/tree/1.0.3"
},
"funding": [
{
@@ -10777,7 +10778,7 @@
"type": "github"
}
],
- "time": "2022-02-16T16:14:24+00:00"
+ "time": "2022-02-25T11:05:23+00:00"
},
{
"name": "spatie/ignition",
diff --git a/public/css/app.css b/public/css/app.css
index bb74b4d7..194ef58e 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -1229,6 +1229,9 @@ select {
.break-words {
overflow-wrap: break-word;
}
+.break-all {
+ word-break: break-all;
+}
.rounded-md {
border-radius: 0.375rem;
}
diff --git a/resources/views/admin/setting/index.blade.php b/resources/views/admin/setting/index.blade.php
index b99d70be..f79733dc 100644
--- a/resources/views/admin/setting/index.blade.php
+++ b/resources/views/admin/setting/index.blade.php
@@ -145,7 +145,7 @@
{{ \App\Utils::config(\App\Enums\ConfigKey::AppVersion) }}
已是最新版本
-
+
@@ -238,24 +238,27 @@
};
};
- $('#check-update').show();
- axios.get('{{ route('admin.settings.check.update') }}').then(response => {
- if (response.data.status && response.data.data.is_update) {
- $('#check-update').hide();
- let version = response.data.data.version;
- let html = $('#update-tpl').html()
- .replace(/__icon__/g, version.icon)
- .replace(/__name__/g, version.name)
- .replace(/__size__/g, version.size)
- .replace(/__pushed_at__/g, version.pushed_at)
- .replace(/__changelog__/g, version.changelog);
- $('#have-update').html(html).show();
- $('.markdown-body a').attr('target', '_blank');
- } else {
- $('#not-update').show();
- $('#check-update').hide();
- }
- });
+ let getVersion = function (callback) {
+ $('#check-update').show();
+ axios.get('{{ route('admin.settings.check.update') }}').then(response => {
+ if (response.data.status && response.data.data.is_update) {
+ $('#check-update').hide();
+ let version = response.data.data.version;
+ let html = $('#update-tpl').html()
+ .replace(/__icon__/g, version.icon)
+ .replace(/__name__/g, version.name)
+ .replace(/__size__/g, version.size)
+ .replace(/__pushed_at__/g, version.pushed_at)
+ .replace(/__changelog__/g, version.changelog);
+ $('#have-update').html(html).show();
+ $('.markdown-body a').attr('target', '_blank');
+ callback && callback(version);
+ } else {
+ $('#not-update').show();
+ $('#check-update').hide();
+ }
+ });
+ }
let getProgress = function () {
axios.get('{{ route('admin.settings.upgrade.progress') }}').then(response => {
@@ -279,6 +282,18 @@
}
upgrade().start();
});
+
+ @if(cache()->has('upgrade_progress'))
+ getVersion(() => {
+ $('#icon').addClass('animate-spin')
+ $('#install').attr('disabled', true).removeClass('bg-blue-500').addClass('cursor-not-allowed bg-gray-400').text('正在升级...')
+ $('#upgrade-message').text('请稍等...').removeClass('text-red-500').addClass('text-gray-500');
+
+ timer = setInterval(getProgress, 1500);
+ });
+ @else
+ getVersion();
+ @endif
@endpush