From ae4d863f7ae4bf8a39a2653c7ea67a6b8e603b63 Mon Sep 17 00:00:00 2001
From: wisp-x <1591788658@qq.com>
Date: Tue, 6 Aug 2019 17:39:17 +0800
Subject: [PATCH 01/18] =?UTF-8?q?:sparkles:=20=E5=A2=9E=E5=8A=A0=E5=B9=B3?=
=?UTF-8?q?=E6=BB=91=E5=8D=87=E7=BA=A7=E6=8E=A7=E5=88=B6=E5=99=A8(?=
=?UTF-8?q?=E5=BE=85=E5=AE=8C=E5=96=84)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
application/index/controller/admin/Update.php | 122 ++++++++++++++++++
1 file changed, 122 insertions(+)
create mode 100644 application/index/controller/admin/Update.php
diff --git a/application/index/controller/admin/Update.php b/application/index/controller/admin/Update.php
new file mode 100644
index 00000000..b8033e43
--- /dev/null
+++ b/application/index/controller/admin/Update.php
@@ -0,0 +1,122 @@
+
+ * Date: 2019-08-06
+ * Time: 15:51
+ * Link: https://github.com/wisp-x
+ */
+
+namespace app\index\controller\admin;
+
+use think\Controller;
+use think\facade\Env;
+
+class Update extends Controller
+{
+ public function index()
+ {
+ // https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-1.5.4.zip
+ try {
+ $runtimePath = Env::get('runtime_path');
+ $url = 'https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-1.5.4.zip';
+ $name = 'lsky-pro-1.5.4.zip';
+ // $ip = $this->getRandIp();
+ $context = stream_context_create(
+ ['http' => [
+ 'header' => "User-Agent: {$this->getRandUserAgent()}",
+ 'timeout' => 600
+ ]]
+ );
+
+ $this->out('安装包下载中(请勿关闭本窗口)...');
+ $file = file_get_contents($url, false, $context);
+ $this->out('安装包下载完成!', '保存安装包...');
+ file_put_contents($runtimePath . $name, $file);
+ $this->out('保存完成!', '解压中...');
+ // TODO 解压
+ // TODO 执行更新sql
+ // TODO 覆盖文件
+ } catch (\Exception $e) {
+ $this->out("更新失败, 请尝试手动更新!
错误信息: {$e->getMessage()}");
+ }
+
+ ob_end_flush();
+ }
+
+ private function out(...$args)
+ {
+ if (ob_get_level() == 0) ob_start();
+
+ foreach ($args as $i => $arg) {
+ echo $arg . '
';
+ echo str_pad('', 4096) . "\n";
+
+ ob_flush();
+ flush();
+ sleep(1);
+ }
+ }
+
+ /**
+ * 获取随机 UserAgent
+ *
+ * @return mixed
+ */
+ private function getRandUserAgent()
+ {
+ $array = [
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
+ "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
+ "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
+ "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
+ "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
+ "Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ",
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3",
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5",
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14",
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
+ "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
+ "Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5",
+ "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
+ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
+ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+ ];
+
+ return $array[array_rand($array)];
+ }
+
+ /**
+ * 随机IP
+ *
+ * @return string
+ */
+ private function getRandIp()
+ {
+ $array = ["218", "218", "66", "66", "218", "218", "60", "60", "202", "204", "66", "66", "66", "59", "61", "60", "222", "221", "66", "59", "60", "60", "66", "218", "218", "62", "63", "64", "66", "66", "122", "211"];
+ $rand = mt_rand(0, count($array));
+ $ip1id = $array[$rand];
+ $ip2id = round(rand(600000, 2550000) / 10000);
+ $ip3id = round(rand(600000, 2550000) / 10000);
+ $ip4id = round(rand(600000, 2550000) / 10000);
+ return $ip1id . "." . $ip2id . "." . $ip3id . "." . $ip4id;
+ }
+}
\ No newline at end of file
From 0fa80e5d22553343f328c89e079e1273d231e39e Mon Sep 17 00:00:00 2001
From: Wisp X <1591788658@qq.com>
Date: Tue, 6 Aug 2019 22:25:56 +0800
Subject: [PATCH 02/18] =?UTF-8?q?:lipstick:=20=E6=94=B9=E8=BF=9B=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=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
---
application/index/controller/admin/Update.php | 77 ++++++++++++++++---
1 file changed, 65 insertions(+), 12 deletions(-)
diff --git a/application/index/controller/admin/Update.php b/application/index/controller/admin/Update.php
index b8033e43..df7dbb5d 100644
--- a/application/index/controller/admin/Update.php
+++ b/application/index/controller/admin/Update.php
@@ -10,17 +10,32 @@
namespace app\index\controller\admin;
use think\Controller;
+use think\Db;
use think\facade\Env;
-class Update extends Controller
+class Update extends Base
{
public function index()
{
// https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-1.5.4.zip
+ echo <<
+ body {background-color: black;}
+ span {color: white;}
+
+
+EOT;
+ Db::startTrans();
try {
+ $this->out('检测更新中...');
+ $version = $this->checkUpdate();
+ if (! $version) {
+ throw new \Exception('版本信息获取失败!');
+ }
+ $this->out("检测到新版本 v{$version}");
$runtimePath = Env::get('runtime_path');
- $url = 'https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-1.5.4.zip';
- $name = 'lsky-pro-1.5.4.zip';
+ $url = "https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-{$version}.zip";
+ $name = "lsky-pro-{$version}.zip";
// $ip = $this->getRandIp();
$context = stream_context_create(
['http' => [
@@ -28,28 +43,66 @@ class Update extends Controller
'timeout' => 600
]]
);
-
- $this->out('安装包下载中(请勿关闭本窗口)...');
- $file = file_get_contents($url, false, $context);
- $this->out('安装包下载完成!', '保存安装包...');
- file_put_contents($runtimePath . $name, $file);
- $this->out('保存完成!', '解压中...');
+ $this->out('安装包下载中, 请耐心等待...');
+ if (!$file = @file_get_contents($url, false, $context)) {
+ throw new \Exception('安装包下载失败, 请稍后再试!');
+ }
+ $this->out('安装包下载完成!', '正在保存安装包...');
+ if (!@file_put_contents($runtimePath . $name, $file)) {
+ throw new \Exception('安装包保存失败! 请检查 runtime 目录权限!');
+ }
+ $this->out('保存完成!', '正在执行解压...');
// TODO 解压
// TODO 执行更新sql
// TODO 覆盖文件
+
+ Db::commit();
+ $this->out("更新成功!");
} catch (\Exception $e) {
- $this->out("更新失败, 请尝试手动更新!
错误信息: {$e->getMessage()}");
+ Db::rollback();
+ $this->out("{$e->getMessage()}");
}
ob_end_flush();
}
+ /**
+ * 检测最新版
+ *
+ * @return bool|string
+ * @throws \Exception
+ */
+ private function checkUpdate()
+ {
+ $client = new \GuzzleHttp\Client();
+ $response = $client->get('https://api.github.com/repos/wisp-x/lsky-pro/releases/latest');
+ if (200 === $response->getStatusCode()) {
+ $result = json_decode($response->getBody()->getContents());
+ $version = ltrim(strtolower($result->name), 'v');
+ if ($this->config['system_version'] > $version) {
+ throw new \Exception('不可降级!');
+ }
+ if ($this->config['system_version'] == $version) {
+ throw new \Exception('当前已经是最新版!');
+ }
+
+ return $version;
+ }
+
+ return false;
+ }
+
+ /**
+ * Out Print
+ *
+ * @param mixed ...$args
+ */
private function out(...$args)
{
if (ob_get_level() == 0) ob_start();
foreach ($args as $i => $arg) {
- echo $arg . '
';
+ echo "root@lsky-pro:~$ {$arg}";
echo str_pad('', 4096) . "\n";
ob_flush();
@@ -119,4 +172,4 @@ class Update extends Controller
$ip4id = round(rand(600000, 2550000) / 10000);
return $ip1id . "." . $ip2id . "." . $ip3id . "." . $ip4id;
}
-}
\ No newline at end of file
+}
From a1bd9be030300770b5f54a09caa3d3bb05db79bf Mon Sep 17 00:00:00 2001
From: Wisp X <1591788658@qq.com>
Date: Tue, 6 Aug 2019 23:59:26 +0800
Subject: [PATCH 03/18] =?UTF-8?q?:bento:=20=E6=94=B9=E8=BF=9B=E5=AE=89?=
=?UTF-8?q?=E8=A3=85=E6=96=B9=E6=B3=95,=20=E5=B9=B3=E6=BB=91=E5=8D=87?=
=?UTF-8?q?=E7=BA=A7=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0.(=E5=BE=85=E5=AE=8C=E5=96=84)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
application/index/controller/Install.php | 11 +-
application/index/controller/admin/Update.php | 152 ++++++++++++++++--
config/table.php | 16 ++
3 files changed, 159 insertions(+), 20 deletions(-)
create mode 100644 config/table.php
diff --git a/application/index/controller/Install.php b/application/index/controller/Install.php
index 937d0db3..be872327 100644
--- a/application/index/controller/Install.php
+++ b/application/index/controller/Install.php
@@ -218,16 +218,7 @@ EOT;
$mysqli->query("SET NAMES utf8");
// 新建表字段
- $tableFields = [
- 'lsky_images' => [
- 'folder_id' => "ALTER TABLE `lsky_images` ADD `folder_id` INT NOT NULL DEFAULT '0' COMMENT '文件夹ID' AFTER `user_id`;",
- 'suspicious' => "ALTER TABLE `lsky_images` ADD `suspicious` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '可疑图片' AFTER `ip`;",
- ],
- 'lsky_users' => [
- 'default_folder' => "ALTER TABLE `lsky_users` ADD `default_folder` VARCHAR(32) DEFAULT NULL COMMENT '默认上传文件夹' AFTER `quota`;",
- 'group_id' => "ALTER TABLE `lsky_users` ADD `group_id` int(11) NOT NULL DEFAULT 0 COMMENT '角色组ID' AFTER `id`;"
- ],
- ];
+ $tableFields = Config::pull('table');
foreach ($tableFields as $table => $fields) {
foreach ($fields as $field => $sql) {
diff --git a/application/index/controller/admin/Update.php b/application/index/controller/admin/Update.php
index df7dbb5d..185f0a5f 100644
--- a/application/index/controller/admin/Update.php
+++ b/application/index/controller/admin/Update.php
@@ -9,8 +9,8 @@
namespace app\index\controller\admin;
-use think\Controller;
use think\Db;
+use think\facade\Config;
use think\facade\Env;
class Update extends Base
@@ -20,21 +20,22 @@ class Update extends Base
// https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-1.5.4.zip
echo <<
- body {background-color: black;}
+ body {background-color: black;color: white;}
span {color: white;}
EOT;
- Db::startTrans();
+
try {
$this->out('检测更新中...');
$version = $this->checkUpdate();
- if (! $version) {
+ if (!$version) {
throw new \Exception('版本信息获取失败!');
}
- $this->out("检测到新版本 v{$version}");
+ $this->out("检测到新版本 [v{$version}]");
$runtimePath = Env::get('runtime_path');
$url = "https://dev.tencent.com/u/wispx/p/lsky-pro-releases/git/raw/master/releases/lsky-pro-{$version}.zip";
+ $dirname = "lsky-pro-{$version}";
$name = "lsky-pro-{$version}.zip";
// $ip = $this->getRandIp();
$context = stream_context_create(
@@ -43,6 +44,7 @@ EOT;
'timeout' => 600
]]
);
+ $this->out('开始更新操作, 请勿关闭本窗口...');
$this->out('安装包下载中, 请耐心等待...');
if (!$file = @file_get_contents($url, false, $context)) {
throw new \Exception('安装包下载失败, 请稍后再试!');
@@ -52,20 +54,150 @@ EOT;
throw new \Exception('安装包保存失败! 请检查 runtime 目录权限!');
}
$this->out('保存完成!', '正在执行解压...');
- // TODO 解压
- // TODO 执行更新sql
- // TODO 覆盖文件
+ if (! $this->extractZip($runtimePath . $name)) {
+ throw new \Exception('安装包解压失败!');
+ }
+ // 读取sql文件
+ $this->out('解压完成!', '正在更新数据...');
+ // 更新表结构
+ //$tableFields = require "{$runtimePath}{$dirname}/config/table.php";
+ $sqlFile = file_get_contents("{$runtimePath}{$dirname}/update.sql");
+
+ $config = Config::pull('db');
+ $mysqli = new \mysqli(
+ $config['hostname'],
+ $config['username'],
+ $config['password'],
+ $config['database'],
+ $config['hostport']
+ );
+ if ($mysqli->connect_errno) {
+ $mysqli->close();
+ throw new \Exception("数据库连接失败! {$mysqli->connect_error}");
+ }
+
+ $mysqli->autocommit(false);
+ $mysqli->select_db($config['database']);
+ $mysqli->query("SET NAMES utf8");
+
+ /*foreach ($tableFields as $table => $fields) {
+ foreach ($fields as $field => $sql) {
+ $fetchFields = $mysqli->query("DESCRIBE `{$table}`;");
+ // 判断字段是否已存在
+ $flag = true;
+ foreach ($fetchFields as $fetchField) {
+ if ($field == $fetchField['Field']) {
+ $flag = false;
+ }
+ }
+ if ($flag) {
+ if (!$mysqli->query($sql)) {
+ throw new \Exception($mysqli->error);
+ }
+ }
+ }
+ }*/
+
+ foreach (explode(';', $sqlFile) as $value) {
+ if ($value && !ctype_space($value)) {
+ if (!$mysqli->query($value . ';')) {
+ throw new \Exception("数据更新失败! 错误信息:{$mysqli->error}, sql语句:{$value}");
+ }
+ }
+ }
+ $this->out('数据库更新完毕!', '正在复制文件...');
+ $this->out('清理临时数据...');
+ // TODO 复制文件
+ // TODO 清理临时数据
+
+ $mysqli->commit();
+ $mysqli->autocommit(true);
+ $mysqli->close();
- Db::commit();
$this->out("更新成功!");
} catch (\Exception $e) {
- Db::rollback();
$this->out("{$e->getMessage()}");
}
ob_end_flush();
}
+ /**
+ * 解压文件到指定目录
+ *
+ * @param $filename zip压缩包路径加文件名
+ * @param bool $destDir 解压文件的目的路径
+ * @param bool $createZipNameDir 是否以压缩文件的名字创建目标文件夹
+ * @param bool $overwrite 是否覆盖
+ * @return bool
+ */
+ public function extractZip($filename, $destDir = false, $createZipNameDir = false, $overwrite = true)
+ {
+ if ($zip = zip_open($filename)) {
+ if ($zip) {
+ $splitter = ($createZipNameDir === true) ? "." : "/";
+ if ($destDir === false) {
+ $destDir = substr($filename, 0, strrpos($filename, $splitter)) . "/";
+ }
+
+ // 如果不存在 创建目标解压目录
+ $this->mkdirs($destDir);
+
+ // 对每个文件进行解压
+ while ($zip_entry = zip_read($zip)) {
+ // 文件不在根目录
+ $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
+ if ($pos_last_slash !== false) {
+ // 创建目录 在末尾带 /
+ $this->mkdirs($destDir . substr(zip_entry_name($zip_entry), 0, $pos_last_slash + 1));
+ }
+
+ // 打开包
+ if (zip_entry_open($zip, $zip_entry, "r")) {
+ // 文件名保存在磁盘上
+ $file_name = $destDir . zip_entry_name($zip_entry);
+ // 检查文件是否需要重写
+ if ($overwrite === true || $overwrite === false && !is_file($file_name)) {
+ // 读取压缩文件的内容
+ $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
+ @file_put_contents($file_name, $fstream);
+ // 设置权限
+ chmod($file_name, 0755);
+ }
+ zip_entry_close($zip_entry);
+ }
+ }
+ zip_close($zip);
+ }
+ } else {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * 创建目录
+ *
+ * @param $path
+ */
+ public function mkdirs($path)
+ {
+ if (!is_dir($path)) {
+ $directoryPath = "";
+ $directories = explode("/", $path);
+ array_pop($directories);
+
+ foreach ($directories as $directory) {
+ $directoryPath .= $directory . "/";
+ if (!is_dir($directoryPath)) {
+ mkdir($directoryPath);
+ chmod($directoryPath, 0777);
+ }
+ }
+ }
+ }
+
/**
* 检测最新版
*
diff --git a/config/table.php b/config/table.php
new file mode 100644
index 00000000..cc850980
--- /dev/null
+++ b/config/table.php
@@ -0,0 +1,16 @@
+ [
+ 'folder_id' => "ALTER TABLE `lsky_images` ADD `folder_id` INT NOT NULL DEFAULT '0' COMMENT '文件夹ID' AFTER `user_id`;",
+ 'suspicious' => "ALTER TABLE `lsky_images` ADD `suspicious` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '可疑图片' AFTER `ip`;",
+ ],
+ 'lsky_users' => [
+ 'default_folder' => "ALTER TABLE `lsky_users` ADD `default_folder` VARCHAR(32) DEFAULT NULL COMMENT '默认上传文件夹' AFTER `quota`;",
+ 'group_id' => "ALTER TABLE `lsky_users` ADD `group_id` int(11) NOT NULL DEFAULT 0 COMMENT '角色组ID' AFTER `id`;"
+ ],
+];
From bf37cd732bd576e50eec813053397df08baf4535 Mon Sep 17 00:00:00 2001
From: wisp-x <1591788658@qq.com>
Date: Wed, 7 Aug 2019 17:45:26 +0800
Subject: [PATCH 04/18] :bug: Fixing a bug.
---
install.sql | 2 +-
public/2019/05/08/5cd2e24bf3a68.jpg | Bin 0 -> 457619 bytes
public/2019/05/08/5cd2e24bf3fc2.jpg | Bin 0 -> 294728 bytes
public/2019/05/08/5cd2e24c04746.jpg | Bin 0 -> 392020 bytes
public/2019/05/08/5cd2e24c05595.jpg | Bin 0 -> 912069 bytes
public/2019/05/08/5cd2e24c17428.jpg | Bin 0 -> 1340862 bytes
public/2019/05/08/5cd2e24c67731.jpg | Bin 0 -> 402572 bytes
public/2019/05/08/5cd2e24c802a8.jpg | Bin 0 -> 699597 bytes
public/2019/05/08/5cd2e24ca1ae5.jpg | Bin 0 -> 466841 bytes
public/2019/05/08/5cd2e24cbe5b7.jpg | Bin 0 -> 447199 bytes
10 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 public/2019/05/08/5cd2e24bf3a68.jpg
create mode 100644 public/2019/05/08/5cd2e24bf3fc2.jpg
create mode 100644 public/2019/05/08/5cd2e24c04746.jpg
create mode 100644 public/2019/05/08/5cd2e24c05595.jpg
create mode 100644 public/2019/05/08/5cd2e24c17428.jpg
create mode 100644 public/2019/05/08/5cd2e24c67731.jpg
create mode 100644 public/2019/05/08/5cd2e24c802a8.jpg
create mode 100644 public/2019/05/08/5cd2e24ca1ae5.jpg
create mode 100644 public/2019/05/08/5cd2e24cbe5b7.jpg
diff --git a/install.sql b/install.sql
index 6cf46766..eab0d43c 100644
--- a/install.sql
+++ b/install.sql
@@ -158,6 +158,6 @@ INSERT INTO `lsky_config` (`id`, `key`, `type`, `input_type`, `name`, `title`, `
(NULL, 'audit', 'text', 'text', 'audit_key', 'Key', NULL, '', ''),
(NULL, 'audit', 'select', 'text', 'audit_index', '内容评级', '1=所有人,2=少年,3=成人', '3', '{\"1\": \"所有人\", \"2\": \"少年\", \"3\": \"成人\"}'),
-(NULL, '', 'text', 'text', 'system_version', '系统版本', NULL, '1.5.3', '');
+(NULL, '', 'text', 'text', 'system_version', '系统版本', NULL, '1.5.4', '');
INSERT INTO `lsky_group` (`id`, `strategy`, `name`, `default`, `update_time`, `create_time`) VALUES (NULL, 'local', '默认组', '1', '0', '0');
diff --git a/public/2019/05/08/5cd2e24bf3a68.jpg b/public/2019/05/08/5cd2e24bf3a68.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9e14ccb05ee7eb7fa3407966db1daf1de24ea46c
GIT binary patch
literal 457619
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