diff --git a/.guide/common/firefox-ca/imgs/1-1.png b/.guide/common/firefox-ca/imgs/1-1.png index 4e62e3c2..6b0cbf93 100644 Binary files a/.guide/common/firefox-ca/imgs/1-1.png and b/.guide/common/firefox-ca/imgs/1-1.png differ diff --git a/.guide/common/firefox-ca/imgs/1-2.png b/.guide/common/firefox-ca/imgs/1-2.png deleted file mode 100644 index c16efd1f..00000000 Binary files a/.guide/common/firefox-ca/imgs/1-2.png and /dev/null differ diff --git a/.guide/common/firefox-ca/read.md b/.guide/common/firefox-ca/read.md index c2962710..e8930008 100644 --- a/.guide/common/firefox-ca/read.md +++ b/.guide/common/firefox-ca/read.md @@ -1,16 +1,14 @@ ## 下载证书 -1. 右击软件托盘,点下载证书 -![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/1-1.png) -2. 之后会跳转到下载页面,点击ProxyeeRoot ca.crt进行下载 -![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/1-2.png) +1. 右击软件托盘,点证书目录会跳转到对应目录 +![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/1-1.png) ## 安装证书 1. 打开火狐浏览器并进入设置页面 ![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/2-1.png) 2. 进入火狐浏览器证书管理页面 在设置页面内找到隐私与安全->证书->查看证书,在打开的证书管理页面选中证书机构 ![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/2-2.png) -3. 导入刚刚下载的证书 -点击导入,选中刚刚下载的证书 +3. 导入刚刚的证书 +点击导入,选中刚刚的证书 ![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/2-3-1.png) 把信任框都勾上点击确定 ![](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/common/firefox-ca/imgs/2-3-2.png) diff --git a/.guide/mac/imgs/1-1.png b/.guide/mac/imgs/1-1.png index 0469ca98..751d9ba3 100644 Binary files a/.guide/mac/imgs/1-1.png and b/.guide/mac/imgs/1-1.png differ diff --git a/.guide/mac/imgs/1-2.png b/.guide/mac/imgs/1-2.png new file mode 100644 index 00000000..77a7166f Binary files /dev/null and b/.guide/mac/imgs/1-2.png differ diff --git a/.guide/mac/imgs/4-1.png b/.guide/mac/imgs/4-1.png deleted file mode 100644 index cc5fca71..00000000 Binary files a/.guide/mac/imgs/4-1.png and /dev/null differ diff --git a/.guide/mac/imgs/4-3.png b/.guide/mac/imgs/4-3.png deleted file mode 100644 index 038c6560..00000000 Binary files a/.guide/mac/imgs/4-3.png and /dev/null differ diff --git a/.guide/mac/imgs/4-4.png b/.guide/mac/imgs/4-4.png deleted file mode 100644 index cdcdc6b0..00000000 Binary files a/.guide/mac/imgs/4-4.png and /dev/null differ diff --git a/.guide/mac/read.md b/.guide/mac/read.md index 561b60e7..50aee825 100644 --- a/.guide/mac/read.md +++ b/.guide/mac/read.md @@ -1,8 +1,12 @@ ## 下载 进入[下载页面](https://github.com/monkeyWie/proxyee-down/releases),选择对应proxyee-down-x.xx-mac.zip文件进行下载。 ## 解压并运行 -将下载好的proxyee-down-x.xx-mac.zip解压至电脑任意目录。双击start运行软件,运行成功后会有提示和托盘出现。 -![1-1](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/windows/imgs/1-1.png) +将下载好的proxyee-down-x.xx-mac.zip解压至电脑任意目录。双击start运行软件,由于安装证书和切换代理需要root权限,所以在运行软件会提示输入用户密码,输入完按回车确认即可。 +![1-1](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/windows/imgs/1-1.png) +运行成功后会有提示和托盘出现。 +![1-2](https://github.com/monkeyWie/proxyee-down/raw/master/.guide/windows/imgs/1-2.png) +## safari浏览器 +safari浏览器不支持百度云破解插件,建议使用chrome浏览器。 ## 火狐浏览器 由于火狐浏览器的特殊性,需要自行安装根证书,查看[安装步骤](https://github.com/monkeyWie/proxyee-down/blob/master/.guide/common/firefox-ca/read.md)。 ## 完成 diff --git a/.pack/proxyee-down-pack.jar b/.pack/proxyee-down-pack.jar index e5dd7e37..bb058661 100644 Binary files a/.pack/proxyee-down-pack.jar and b/.pack/proxyee-down-pack.jar differ diff --git a/common/src/main/java/lee/study/down/util/FileUtil.java b/common/src/main/java/lee/study/down/util/FileUtil.java index aee7aac4..9085e139 100644 --- a/common/src/main/java/lee/study/down/util/FileUtil.java +++ b/common/src/main/java/lee/study/down/util/FileUtil.java @@ -1,15 +1,21 @@ package lee.study.down.util; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.lang.reflect.Method; import java.nio.MappedByteBuffer; import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; import java.util.Stack; import java.util.UUID; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; public class FileUtil { @@ -239,4 +245,32 @@ public static boolean canWrite(String path) { } return true; } + + public static void unzip(String zipPath, String toPath, String... unzipFile) throws IOException { + try ( + ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(zipPath)) + ) { + toPath = toPath == null ? new File(zipPath).getParent() : toPath; + ZipEntry entry; + while ((entry = zipInputStream.getNextEntry()) != null) { + final String entryName = entry.getName(); + if (entry.isDirectory() || (unzipFile != null && unzipFile.length > 0 + && Arrays.stream(unzipFile) + .noneMatch((file) -> entryName.equalsIgnoreCase(file)))) { + zipInputStream.closeEntry(); + continue; + } + File file = createFileSmart(toPath + File.separator + entryName); + try ( + FileOutputStream outputStream = new FileOutputStream(file) + ) { + byte[] bts = new byte[8192]; + int len; + while ((len = zipInputStream.read(bts)) != -1) { + outputStream.write(bts, 0, len); + } + } + } + } + } } diff --git a/core/src/main/java/lee/study/down/dispatch/HttpDownCallback.java b/core/src/main/java/lee/study/down/dispatch/HttpDownCallback.java index 8f7b6cd0..c6123e47 100644 --- a/core/src/main/java/lee/study/down/dispatch/HttpDownCallback.java +++ b/core/src/main/java/lee/study/down/dispatch/HttpDownCallback.java @@ -3,30 +3,42 @@ import lee.study.down.model.ChunkInfo; import lee.study.down.model.HttpDownInfo; -public interface HttpDownCallback { +public class HttpDownCallback { - void onStart(HttpDownInfo httpDownInfo) throws Exception; + public void onStart(HttpDownInfo httpDownInfo) throws Exception { + } - void onChunkConnecting(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception; + public void onChunkConnecting(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { + } - void onChunkConnected(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception; + public void onChunkConnected(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { + } - void onProgress(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception; + public void onProgress(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { + } - void onPause(HttpDownInfo httpDownInfo) throws Exception; + public void onPause(HttpDownInfo httpDownInfo) throws Exception { + } - void onContinue(HttpDownInfo httpDownInfo) throws Exception; + public void onContinue(HttpDownInfo httpDownInfo) throws Exception { + } - void onError(HttpDownInfo httpDownInfo, Throwable cause) throws Exception; + public void onError(HttpDownInfo httpDownInfo, Throwable cause) throws Exception { + } - void onChunkError(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo, Throwable cause) - throws Exception; + public void onChunkError(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo, Throwable cause) + throws Exception { + } - void onChunkDone(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception; + public void onChunkDone(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { + } - void onMerge(HttpDownInfo httpDownInfo) throws Exception; + public void onMerge(HttpDownInfo httpDownInfo) throws Exception { + } - void onDone(HttpDownInfo httpDownInfo) throws Exception; + public void onDone(HttpDownInfo httpDownInfo) throws Exception { + } - void onDelete(HttpDownInfo httpDownInfo) throws Exception; + public void onDelete(HttpDownInfo httpDownInfo) throws Exception { + } } diff --git a/start b/start index 2a78d1ec..272c4c15 100644 --- a/start +++ b/start @@ -1,4 +1,4 @@ #!/bin/sh cd `dirname $0` -ehco "正在启动proxyee-down,运行需要管理员权限,请输入用户密码(若无输入提示请忽略)" +echo "正在启动proxyee-down,运行需要管理员权限,请输入用户密码按回车键确认(若无输入提示请忽略)" sudo ./jre1.8.0_162/Contents/Home/bin/java -jar ./proxyee-down.jar \ No newline at end of file diff --git a/ui/src/main/java/lee/study/down/dispatch/HttpDownHandleCallback.java b/ui/src/main/java/lee/study/down/dispatch/HttpDownHandleCallback.java index f162cfb0..f474a33f 100644 --- a/ui/src/main/java/lee/study/down/dispatch/HttpDownHandleCallback.java +++ b/ui/src/main/java/lee/study/down/dispatch/HttpDownHandleCallback.java @@ -11,7 +11,7 @@ import lee.study.down.mvc.ws.WsDataType; import lee.study.down.util.FileUtil; -public class HttpDownHandleCallback implements HttpDownCallback { +public class HttpDownHandleCallback extends HttpDownCallback { private void sendTask(String id) { ContentManager.WS.sendMsg(ContentManager.DOWN.buildWsForm(id)); @@ -23,18 +23,6 @@ public void onStart(HttpDownInfo httpDownInfo) throws Exception { sendTask(httpDownInfo.getTaskInfo().getId()); } - @Override - public void onChunkConnecting(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { - } - - @Override - public void onChunkConnected(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { - } - - @Override - public void onProgress(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) throws Exception { - - } @Override public void onPause(HttpDownInfo httpDownInfo) throws Exception { @@ -52,10 +40,6 @@ public void onError(HttpDownInfo httpDownInfo, Throwable cause) { sendTask(httpDownInfo.getTaskInfo().getId()); } - @Override - public void onChunkError(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo, Throwable cause) { - } - @Override public void onChunkDone(HttpDownInfo httpDownInfo, ChunkInfo chunkInfo) { ContentManager.DOWN.saveTask(httpDownInfo.getTaskInfo().getId()); diff --git a/ui/src/main/java/lee/study/down/model/UpdateInfo.java b/ui/src/main/java/lee/study/down/model/UpdateInfo.java index c60d8e04..adbe956c 100644 --- a/ui/src/main/java/lee/study/down/model/UpdateInfo.java +++ b/ui/src/main/java/lee/study/down/model/UpdateInfo.java @@ -1,11 +1,16 @@ package lee.study.down.model; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@AllArgsConstructor +@NoArgsConstructor public class UpdateInfo { private String url; private float version; + private String versionStr; private String desc; } diff --git a/ui/src/main/java/lee/study/down/mvc/controller/HttpDownController.java b/ui/src/main/java/lee/study/down/mvc/controller/HttpDownController.java index a9aca16f..358176d2 100644 --- a/ui/src/main/java/lee/study/down/mvc/controller/HttpDownController.java +++ b/ui/src/main/java/lee/study/down/mvc/controller/HttpDownController.java @@ -14,11 +14,11 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; import lee.study.down.boot.AbstractHttpDownBootstrap; -import lee.study.down.boot.TimeoutCheckTask; import lee.study.down.constant.HttpDownConstant; import lee.study.down.constant.HttpDownStatus; import lee.study.down.content.ContentManager; import lee.study.down.content.DownContent; +import lee.study.down.dispatch.HttpDownCallback; import lee.study.down.exception.BootstrapException; import lee.study.down.gui.HttpDownApplication; import lee.study.down.io.BdyZip; @@ -387,9 +387,8 @@ public ResultInfo getVersion() { return resultInfo; } - private static AbstractHttpDownBootstrap bootstrap; + public static volatile AbstractHttpDownBootstrap updateBootstrap; private static volatile UpdateInfo updateInfo; - // private static final UpdateService updateService = new TestUpdateService(); private static final UpdateService updateService = new GithubUpdateService(); @RequestMapping("/checkUpdate") @@ -411,12 +410,36 @@ public ResultInfo doUpdate() throws Exception { resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("没有可用版本进行更新"); return resultInfo; } - if (bootstrap != null) { - bootstrap.close(); - bootstrap = null; + if (updateBootstrap != null) { + updateBootstrap.close(); + updateBootstrap = null; } try { - bootstrap = updateService.update(updateInfo); + updateBootstrap = updateService.update(updateInfo, new HttpDownCallback() { + @Override + public void onDone(HttpDownInfo httpDownInfo) throws Exception { + String zipPath = httpDownInfo.getTaskInfo().buildTaskFilePath(); + String unzipDir = "proxyee-down-" + updateInfo.getVersionStr(); + String unzipPath = unzipDir + "/main/proxyee-down-core.jar"; + //下载完解压 + FileUtil.unzip(zipPath, null, unzipPath); + //复制出来 + Files.copy( + Paths.get(httpDownInfo.getTaskInfo().getFilePath() + File.separator + unzipPath), + Paths.get(httpDownInfo.getTaskInfo().getFilePath() + File.separator + + "proxyee-down-core.jar.bak")); + //删除临时的文件 + FileUtil + .deleteIfExists(zipPath); + FileUtil + .deleteIfExists(httpDownInfo.getTaskInfo().getFilePath() + File.separator + unzipDir); + //通知客户端 + ContentManager.WS + .sendMsg(new WsForm(WsDataType.UPDATE_PROGRESS, httpDownInfo.getTaskInfo())); + //清空更新下载信息 + updateBootstrap = null; + } + }); } catch (TimeoutException e) { resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("检测更新超时,请重试"); return resultInfo; @@ -424,15 +447,6 @@ public ResultInfo doUpdate() throws Exception { return resultInfo; } - @RequestMapping("/getUpdateProgress") - public ResultInfo getUpdateProgress() throws Exception { - ResultInfo resultInfo = new ResultInfo(); - if (bootstrap != null) { - resultInfo.setData(bootstrap.getHttpDownInfo().getTaskInfo()); - } - return resultInfo; - } - @RequestMapping("/restart") public ResultInfo restart() throws Exception { ResultInfo resultInfo = new ResultInfo(); diff --git a/ui/src/main/java/lee/study/down/mvc/ws/WsDataType.java b/ui/src/main/java/lee/study/down/mvc/ws/WsDataType.java index 4820143c..ba41c3c2 100644 --- a/ui/src/main/java/lee/study/down/mvc/ws/WsDataType.java +++ b/ui/src/main/java/lee/study/down/mvc/ws/WsDataType.java @@ -14,4 +14,8 @@ public class WsDataType { * 创建解压任务 */ public final static int UNZIP_NEW = 3; + /** + * 升级进度条 + */ + public final static int UPDATE_PROGRESS = 4; } diff --git a/ui/src/main/java/lee/study/down/task/HttpDownProgressEventTask.java b/ui/src/main/java/lee/study/down/task/HttpDownProgressEventTask.java index 78cb7a7b..c7abd25e 100644 --- a/ui/src/main/java/lee/study/down/task/HttpDownProgressEventTask.java +++ b/ui/src/main/java/lee/study/down/task/HttpDownProgressEventTask.java @@ -5,6 +5,9 @@ import lee.study.down.content.ContentManager; import lee.study.down.model.ChunkInfo; import lee.study.down.model.TaskInfo; +import lee.study.down.mvc.controller.HttpDownController; +import lee.study.down.mvc.form.WsForm; +import lee.study.down.mvc.ws.WsDataType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +42,12 @@ public void run() { } } ContentManager.WS.sendMsg(ContentManager.DOWN.buildDowningWsForm()); + if (HttpDownController.updateBootstrap != null + && HttpDownController.updateBootstrap.getHttpDownInfo().getTaskInfo().getStatus() + != HttpDownStatus.DONE) { + ContentManager.WS.sendMsg(new WsForm(WsDataType.UPDATE_PROGRESS, + HttpDownController.updateBootstrap.getHttpDownInfo().getTaskInfo())); + } TimeUnit.MILLISECONDS.sleep(1000); } catch (Exception e) { LOGGER.error("eventTask:", e); diff --git a/ui/src/main/java/lee/study/down/update/GithubUpdateService.java b/ui/src/main/java/lee/study/down/update/GithubUpdateService.java index cce1bf26..b0f4ea61 100644 --- a/ui/src/main/java/lee/study/down/update/GithubUpdateService.java +++ b/ui/src/main/java/lee/study/down/update/GithubUpdateService.java @@ -4,10 +4,12 @@ import lee.study.down.boot.AbstractHttpDownBootstrap; import lee.study.down.boot.HttpDownBootstrapFactory; import lee.study.down.constant.HttpDownConstant; +import lee.study.down.dispatch.HttpDownCallback; import lee.study.down.model.HttpDownInfo; import lee.study.down.model.HttpRequestInfo; import lee.study.down.model.TaskInfo; import lee.study.down.model.UpdateInfo; +import lee.study.down.util.FileUtil; import lee.study.down.util.HttpDownUtil; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -16,9 +18,6 @@ public class GithubUpdateService implements UpdateService { - private static final String UPDATE_CORE_FILE_NAME = "proxyee-down-core.jar"; - private static final String HOST = "github.com"; - @Override public UpdateInfo check(float currVersion) throws Exception { UpdateInfo updateInfo = new UpdateInfo(); @@ -32,10 +31,11 @@ public UpdateInfo check(float currVersion) throws Exception { float maxVersion = Float.parseFloat(versions.get(0).text()); if (maxVersion > currVersion) { updateInfo.setVersion(maxVersion); + updateInfo.setVersionStr(versions.get(0).text()); Element releaseDiv = versions.get(0).parent().parent(); for (Element element : releaseDiv.select(".d-block.py-2")) { - if (UPDATE_CORE_FILE_NAME.equalsIgnoreCase(element.select("strong").text())) { - updateInfo.setUrl("https://" + HOST + element.select("a").attr("href")); + if (element.select("strong").text().indexOf("-jar.zip") != -1) { + updateInfo.setUrl("https://github.com" + element.select("a").attr("href")); break; } } @@ -49,18 +49,20 @@ public UpdateInfo check(float currVersion) throws Exception { } @Override - public AbstractHttpDownBootstrap update(UpdateInfo updateInfo) + public AbstractHttpDownBootstrap update(UpdateInfo updateInfo, HttpDownCallback callback) throws Exception { HttpRequestInfo requestInfo = HttpDownUtil.buildGetRequest(updateInfo.getUrl()); TaskInfo taskInfo = HttpDownUtil .getTaskInfo(requestInfo, null, null, HttpDownConstant.clientSslContext, HttpDownConstant.clientLoopGroup) - .setConnections(32) - .setFileName(UPDATE_CORE_FILE_NAME + ".bak") - .setFilePath(HttpDownConstant.HOME_PATH); + .setConnections(64) + .setFileName("proxyee-down-jar.zip") + .setFilePath( + HttpDownConstant.HOME_PATH.substring(0, HttpDownConstant.HOME_PATH.length() - 1)); HttpDownInfo httpDownInfo = new HttpDownInfo(taskInfo, requestInfo, null); AbstractHttpDownBootstrap bootstrap = HttpDownBootstrapFactory.create(httpDownInfo, 5, - HttpDownConstant.clientSslContext, HttpDownConstant.clientLoopGroup, null); + HttpDownConstant.clientSslContext, HttpDownConstant.clientLoopGroup, callback); + FileUtil.deleteIfExists(bootstrap.getHttpDownInfo().getTaskInfo().buildTaskFilePath()); bootstrap.startDown(); return bootstrap; } @@ -68,6 +70,6 @@ public AbstractHttpDownBootstrap update(UpdateInfo updateInfo) public static void main(String[] args) throws Exception { GithubUpdateService githubUpdateService = new GithubUpdateService(); UpdateInfo updateInfo = githubUpdateService.check(1.0F); - githubUpdateService.update(updateInfo); + githubUpdateService.update(updateInfo, null); } } diff --git a/ui/src/main/java/lee/study/down/update/TestUpdateService.java b/ui/src/main/java/lee/study/down/update/TestUpdateService.java deleted file mode 100644 index de416cf5..00000000 --- a/ui/src/main/java/lee/study/down/update/TestUpdateService.java +++ /dev/null @@ -1,78 +0,0 @@ -package lee.study.down.update; - -import io.netty.handler.codec.http.HttpMethod; -import lee.study.down.boot.AbstractHttpDownBootstrap; -import lee.study.down.boot.HttpDownBootstrapFactory; -import lee.study.down.constant.HttpDownConstant; -import lee.study.down.model.HttpDownInfo; -import lee.study.down.model.HttpHeadsInfo; -import lee.study.down.model.HttpRequestInfo; -import lee.study.down.model.HttpRequestInfo.HttpVer; -import lee.study.down.model.TaskInfo; -import lee.study.down.model.UpdateInfo; -import lee.study.down.util.HttpDownUtil; -import lee.study.proxyee.util.ProtoUtil.RequestProto; - -public class TestUpdateService implements UpdateService { - - private static final String HOST = "192.168.2.24"; - - @Override - public UpdateInfo check(float currVersion) throws Exception { - UpdateInfo updateInfo = new UpdateInfo(); - updateInfo.setVersion(2.1F); - updateInfo.setUrl( - "http://" + HOST + "/proxyee-down-core.jar"); - updateInfo.setDesc("测试更新"); - return updateInfo; - } - - @Override - public AbstractHttpDownBootstrap update(UpdateInfo updateInfo) - throws Exception { - HttpRequestInfo requestInfo = new HttpRequestInfo(HttpVer.HTTP_1_1, HttpMethod.GET.toString(), - updateInfo.getUrl(), buildHead(), null); - requestInfo.setRequestProto(new RequestProto(HOST, 80, false)); - TaskInfo taskInfo = HttpDownUtil - .getTaskInfo(requestInfo, null, null, HttpDownConstant.clientSslContext, - HttpDownConstant.clientLoopGroup) - .setConnections(64) - .setFileName("proxyee-down-core.jar.bak") - .setFilePath(HttpDownConstant.HOME_PATH); - HttpDownInfo httpDownInfo = new HttpDownInfo(taskInfo, requestInfo, null); - AbstractHttpDownBootstrap bootstrap = HttpDownBootstrapFactory.create(httpDownInfo, 5, - HttpDownConstant.clientSslContext, HttpDownConstant.clientLoopGroup, null); - bootstrap.startDown(); - return bootstrap; - } - - private static HttpHeadsInfo buildHead() { - return new HttpHeadsInfo() { - { - add("Host", HOST); - add("Cache-Control", "max-age=0"); - add("Upgrade-Insecure-Requests", "1"); - add("User-Agent", - "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"); - add("Accept", - "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); - add("Accept-Encoding", "gzip, deflate, br"); - add("Accept-Language", "zh-CN,zh;q=0.9"); - } - }; - } - - public static void main(String[] args) throws Exception { - TestUpdateService githubUpdateService = new TestUpdateService(); - UpdateInfo updateInfo = githubUpdateService.check(1.0F); - HttpRequestInfo requestInfo = new HttpRequestInfo(HttpVer.HTTP_1_1, HttpMethod.GET.toString(), - updateInfo.getUrl(), buildHead(), null); - requestInfo.setRequestProto(new RequestProto("github.com", 443, true)); - System.out - .println(HttpDownUtil.getResponse(requestInfo, null, HttpDownConstant.clientSslContext, - HttpDownConstant.clientLoopGroup).toString()); - System.out - .println(HttpDownUtil.getResponse(requestInfo, null, HttpDownConstant.clientSslContext, - HttpDownConstant.clientLoopGroup).toString()); - } -} diff --git a/ui/src/main/java/lee/study/down/update/UpdateService.java b/ui/src/main/java/lee/study/down/update/UpdateService.java index a0e2e312..9e35e52a 100644 --- a/ui/src/main/java/lee/study/down/update/UpdateService.java +++ b/ui/src/main/java/lee/study/down/update/UpdateService.java @@ -1,11 +1,12 @@ package lee.study.down.update; import lee.study.down.boot.AbstractHttpDownBootstrap; +import lee.study.down.dispatch.HttpDownCallback; import lee.study.down.model.UpdateInfo; public interface UpdateService { UpdateInfo check(float currVersion) throws Exception; - AbstractHttpDownBootstrap update(UpdateInfo updateInfo) throws Exception; + AbstractHttpDownBootstrap update(UpdateInfo updateInfo,HttpDownCallback callback) throws Exception; } diff --git a/ui/view/src/App.vue b/ui/view/src/App.vue index f1849466..a3bd4eba 100644 --- a/ui/view/src/App.vue +++ b/ui/view/src/App.vue @@ -153,6 +153,9 @@ ...mapMutations('unzips', [ 'setUnzipTask', ]), + ...mapMutations('update', [ + 'setUpdateTask', + ]), }, created() { this.openTabHandle('/tasks'); @@ -174,6 +177,9 @@ args: {filePath: data.filePath, toPath: data.toPath} }); break; + case 4: //更新进度 + this.setUpdateTask(data); + break; } } } diff --git a/ui/view/src/components/AboutPage.vue b/ui/view/src/components/AboutPage.vue index abee4dc0..c96b2923 100644 --- a/ui/view/src/components/AboutPage.vue +++ b/ui/view/src/components/AboutPage.vue @@ -121,6 +121,7 @@ diff --git a/ui/view/src/store/index.js b/ui/view/src/store/index.js index 15936b13..e3a27ec9 100644 --- a/ui/view/src/store/index.js +++ b/ui/view/src/store/index.js @@ -3,6 +3,7 @@ import Vuex from 'vuex' import tasks from './modules/tasks' import tabs from './modules/tabs' import unzips from './modules/unzips' +import update from './modules/update.js' Vue.use(Vuex) @@ -11,5 +12,6 @@ export default new Vuex.Store({ tasks, tabs, unzips, + update, } }) diff --git a/ui/view/src/store/modules/update.js b/ui/view/src/store/modules/update.js new file mode 100644 index 00000000..63638972 --- /dev/null +++ b/ui/view/src/store/modules/update.js @@ -0,0 +1,12 @@ +export default { + namespaced: true, + state: { + updateTask: null, + }, + mutations: { + setUpdateTask(state, updateTask) { + state.updateTask = updateTask; + } + }, +} +