├── package.bat ├── screenshot ├── log.png └── light.png ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ ├── maven-wrapper.properties │ └── MavenWrapperDownloader.java ├── src ├── main │ ├── resources │ │ ├── static │ │ │ ├── assets │ │ │ │ ├── img │ │ │ │ │ ├── android.png │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── favicon.png │ │ │ │ │ ├── faviconH.png │ │ │ │ │ └── qq-group.png │ │ │ │ └── css │ │ │ │ │ └── index.css │ │ │ └── plugins │ │ │ │ ├── layer │ │ │ │ ├── theme │ │ │ │ │ └── default │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ │ └── layer.css │ │ │ │ ├── mobile │ │ │ │ │ ├── layer.js │ │ │ │ │ └── need │ │ │ │ │ │ └── layer.css │ │ │ │ └── layer.js │ │ │ │ ├── bootstrap-fileinput │ │ │ │ ├── img │ │ │ │ │ ├── loading.gif │ │ │ │ │ └── loading-sm.gif │ │ │ │ ├── themes │ │ │ │ │ ├── explorer │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ ├── theme.js │ │ │ │ │ │ ├── theme.min.css │ │ │ │ │ │ └── theme.css │ │ │ │ │ ├── fa │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ └── theme.js │ │ │ │ │ ├── fas │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ └── theme.js │ │ │ │ │ ├── bs5 │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ └── theme.js │ │ │ │ │ ├── gly │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ └── theme.js │ │ │ │ │ ├── explorer-fa │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ ├── theme.min.css │ │ │ │ │ │ ├── theme.js │ │ │ │ │ │ └── theme.css │ │ │ │ │ └── explorer-fas │ │ │ │ │ │ ├── theme.min.js │ │ │ │ │ │ ├── theme.min.css │ │ │ │ │ │ ├── theme.js │ │ │ │ │ │ └── theme.css │ │ │ │ ├── css │ │ │ │ │ ├── fileinput-rtl.min.css │ │ │ │ │ └── fileinput.min.css │ │ │ │ └── js │ │ │ │ │ └── locales │ │ │ │ │ └── zh.js │ │ │ │ ├── bootstrap-icons │ │ │ │ └── fonts │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ └── bootstrap-icons.woff2 │ │ │ │ └── clipboard │ │ │ │ └── clipboard.min.js │ │ ├── META-INF │ │ │ └── native-image │ │ │ │ └── resource-config.json │ │ ├── application.properties │ │ └── templates │ │ │ └── index.html │ └── java │ │ └── com │ │ └── mueeee │ │ └── unpackerpanel │ │ ├── common │ │ ├── Constant.java │ │ ├── CorsConfig.java │ │ ├── MD5Util.java │ │ └── ApiResult.java │ │ ├── AppRunner.java │ │ ├── Application.java │ │ ├── MainController.java │ │ └── Unpacker.java └── test │ └── java │ └── com │ └── mueeee │ └── unpackerpanel │ └── ApplicationTests.java ├── native-image-agent.bat ├── .gitignore ├── README.md ├── pom.xml ├── mvnw.cmd ├── mvnw └── LICENSE /package.bat: -------------------------------------------------------------------------------- 1 | mvn clean package -DskipTests -------------------------------------------------------------------------------- /screenshot/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/screenshot/log.png -------------------------------------------------------------------------------- /screenshot/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/screenshot/light.png -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /src/main/resources/static/assets/img/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/assets/img/android.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/assets/img/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/assets/img/favicon.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/img/faviconH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/assets/img/faviconH.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/img/qq-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/assets/img/qq-group.png -------------------------------------------------------------------------------- /native-image-agent.bat: -------------------------------------------------------------------------------- 1 | java -DspringAot=true -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image -jar ./target/unpacker-panel-1.0.jar -------------------------------------------------------------------------------- /src/main/resources/static/plugins/layer/theme/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/layer/theme/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/plugins/layer/theme/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/layer/theme/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/plugins/layer/theme/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/layer/theme/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/plugins/layer/theme/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/layer/theme/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/plugins/layer/theme/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/layer/theme/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/plugins/bootstrap-fileinput/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/bootstrap-fileinput/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/plugins/bootstrap-fileinput/img/loading-sm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/bootstrap-fileinput/img/loading-sm.gif -------------------------------------------------------------------------------- /src/main/resources/static/plugins/bootstrap-icons/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/bootstrap-icons/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /src/main/resources/static/plugins/bootstrap-icons/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/westinyang/unpacker-panel/HEAD/src/main/resources/static/plugins/bootstrap-icons/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/native-image/resource-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "resources":{ 3 | "includes":[ 4 | { 5 | "pattern":"\\Qr_styles.ini\\E" 6 | }, 7 | { 8 | "pattern":"\\Qr_values.ini\\E" 9 | } 10 | ]}, 11 | "bundles":[ 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/test/java/com/mueeee/unpackerpanel/ApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.mueeee.unpackerpanel; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/mueeee/unpackerpanel/common/Constant.java: -------------------------------------------------------------------------------- 1 | package com.mueeee.unpackerpanel.common; 2 | 3 | /** 4 | * 常量 5 | */ 6 | public class Constant { 7 | public static final int OPERATE_SUCCESS = 0; 8 | public static final int OPERATE_ERROR = 1; 9 | 10 | public static final String OPERATE_SUCCESS_STR = "操作成功!"; 11 | public static final String OPERATE_ERROR_STR = "操作失败!"; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | 35 | uploads/ 36 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/css/index.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | min-height: 100%; 3 | } 4 | 5 | body { 6 | --bs-bg-opacity: 1; 7 | } 8 | .bg-dark:not(header) { 9 | --bs-bg-opacity: 1; 10 | } 11 | .bg-light, .bg-white { 12 | --bs-bg-opacity: 1; 13 | } 14 | .dropdown-menu.bg-white { 15 | --bs-bg-opacity: 1; 16 | } 17 | 18 | .transparent-0-9 { 19 | /*opacity: 0.9 !important;*/ 20 | } 21 | 22 | .container { 23 | /*max-width: 960px;*/ 24 | } 25 | 26 | .file-preview { 27 | border: none !important; 28 | padding: 0 !important; 29 | } 30 | 31 | .file-drop-zone { 32 | margin: 0 !important; 33 | } 34 | 35 | .kv-upload-progress { 36 | display: none !important; 37 | } 38 | 39 | .form-control { 40 | border: 1px solid rgba(0,0,0,.125) !important; 41 | } 42 | 43 | .file-drop-zone { 44 | border: 1px dashed rgba(0,0,0,.225) !important; 45 | } 46 | 47 | /* Layer */ 48 | 49 | .layui-layer .layui-layer-btn * { 50 | font-size: 14px !important; 51 | } -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Server 2 | server.port=8888 3 | 4 | # Spring 5 | spring.servlet.multipart.max-file-size=512MB 6 | spring.servlet.multipart.max-request-size=512MB 7 | spring.mvc.async.request-timeout=1200000 8 | spring.thymeleaf.cache=false 9 | 10 | # Log 11 | # 2021-12-22 13:22:27.078 INFO 20608 --- [ main] com.mueeee.unpackerpanel.AppRunner : Server is running on 127.0.0.1:6666 12 | # %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} 13 | logging.pattern.console=%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss}}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx} 14 | logging.level.root=info 15 | logging.level.org.springframework=off 16 | logging.level.org.apache=off 17 | logging.level.com.mueeee.unpackerpanel.Application=off 18 | logging.level.com.mueeee=info 19 | 20 | # Android device no 21 | app.device= -------------------------------------------------------------------------------- /src/main/java/com/mueeee/unpackerpanel/common/CorsConfig.java: -------------------------------------------------------------------------------- 1 | package com.mueeee.unpackerpanel.common; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.cors.CorsConfiguration; 6 | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; 7 | import org.springframework.web.filter.CorsFilter; 8 | 9 | /** 10 | * Cross-domain configuration 11 | */ 12 | @Configuration 13 | public class CorsConfig { 14 | 15 | /*private CorsConfiguration buildConfig() { 16 | CorsConfiguration corsConfiguration = new CorsConfiguration(); 17 | corsConfiguration.addAllowedOrigin("*"); 18 | corsConfiguration.addAllowedHeader("*"); 19 | corsConfiguration.addAllowedMethod("*"); 20 | return corsConfiguration; 21 | } 22 | 23 | @Bean 24 | public CorsFilter corsFilter() { 25 | UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 26 | source.registerCorsConfiguration("/**", this.buildConfig()); 27 | return new CorsFilter(source); 28 | }*/ 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/mueeee/unpackerpanel/AppRunner.java: -------------------------------------------------------------------------------- 1 | package com.mueeee.unpackerpanel; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.beans.factory.annotation.Value; 6 | import org.springframework.boot.ApplicationArguments; 7 | import org.springframework.boot.ApplicationRunner; 8 | import org.springframework.stereotype.Component; 9 | 10 | import javax.annotation.PostConstruct; 11 | 12 | /** 13 | * Execute after the application started 14 | */ 15 | @Component 16 | public class AppRunner implements ApplicationRunner { 17 | 18 | private static final Logger log = LoggerFactory.getLogger(AppRunner.class); 19 | 20 | @Value("${server.port}") 21 | private int serverPort; 22 | 23 | @Value("${app.device}") 24 | private String appDevice; 25 | 26 | public static String APP_DEVICE = null; 27 | 28 | @PostConstruct 29 | public void init() { 30 | APP_DEVICE = appDevice; 31 | } 32 | 33 | @Override 34 | public void run(ApplicationArguments args) throws Exception { 35 | // 打印日志 36 | log.info("Server is running on 127.0.0.1:" + serverPort); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/resources/static/plugins/bootstrap-fileinput/themes/explorer/theme.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * bootstrap-fileinput v5.2.7 3 | * http://plugins.krajee.com/file-input 4 | * 5 | * Krajee Explorer theme configuration for bootstrap-fileinput. Load this theme file after loading `fileinput.js`. 6 | * 7 | * Author: Kartik Visweswaran 8 | * Copyright: 2014 - 2021, Kartik Visweswaran, Krajee.com 9 | * 10 | * Licensed under the BSD-3-Clause 11 | * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md 12 | */!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof module&&"object"==typeof module.exports?require("jquery"):window.jQuery)}(function(e){"use strict";e.fn.fileinputThemes.explorer={layoutTemplates:{footer:'
'+(n.content||"")+"
"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"':"")+'{errors}',
89 | msgAjaxError: '{operation} 发生错误. 请重试!',
90 | msgAjaxProgressError: '{operation} 失败',
91 | msgDuplicateFile: '文件 "{name}",大小 "{size} KB" 已经被选中.忽略相同的文件.',
92 | msgResumableUploadRetriesExceeded: '文件 {file} 上传失败超过 {max} 次重试 ! 错误详情: {error}',
93 | msgPendingTime: '{time} 剩余',
94 | msgCalculatingTime: '计算剩余时间',
95 | ajaxOperations: {
96 | deleteThumb: '删除文件',
97 | uploadThumb: '上传文件',
98 | uploadBatch: '批量上传',
99 | uploadExtra: '表单数据上传'
100 | },
101 | dropZoneTitle: '拖拽文件到这里 …Online one-click shelling
51 |等待上传APK ...
73 |