From 2ea9fcba137b21051dcba9068ef97b8cd725a707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=97=8F=E6=9F=8F?= Date: Fri, 12 Apr 2024 15:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=B2=E5=86=B2~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 13 ++++++ pom.xml | 1 + .../help/JetbrainsHelpApplication.java | 16 +++++++ .../help/context/AgentContextHolder.java | 30 +++++++++---- .../context/CertificateContextHolder.java | 9 ++-- .../help/context/PluginsContextHolder.java | 25 +++++++---- .../help/context/ProductsContextHolder.java | 2 +- .../jetbrains/help/route/IndexController.java | 22 ++++++++++ .../com/jetbrains/help/util/FileTools.java | 41 ++++++++++++------ src/main/resources/banner.txt | 10 +++++ .../{ => external}/certificate/root.key | 0 .../resources/{ => external/data}/plugin.json | 0 .../{ => external/data}/product.json | 0 .../static/agent/ja-netfilter/config/dns.conf | 3 -- .../agent/ja-netfilter/config/power.conf | 1 - .../static/agent/ja-netfilter/config/url.conf | 4 -- .../agent/ja-netfilter/ja-netfilter.jar | Bin 48639 -> 0 bytes .../static/agent/ja-netfilter/plugins/dns.jar | Bin 4859 -> 0 bytes .../agent/ja-netfilter/plugins/hideme.jar | Bin 7209 -> 0 bytes .../agent/ja-netfilter/plugins/power.jar | Bin 9222 -> 0 bytes .../static/agent/ja-netfilter/plugins/url.jar | Bin 4529 -> 0 bytes src/main/resources/templates/index.html | 2 +- 22 files changed, 133 insertions(+), 46 deletions(-) create mode 100644 Dockerfile create mode 100644 src/main/resources/banner.txt rename src/main/resources/{ => external}/certificate/root.key (100%) rename src/main/resources/{ => external/data}/plugin.json (100%) rename src/main/resources/{ => external/data}/product.json (100%) delete mode 100644 src/main/resources/static/agent/ja-netfilter/config/dns.conf delete mode 100644 src/main/resources/static/agent/ja-netfilter/config/power.conf delete mode 100644 src/main/resources/static/agent/ja-netfilter/config/url.conf delete mode 100644 src/main/resources/static/agent/ja-netfilter/ja-netfilter.jar delete mode 100644 src/main/resources/static/agent/ja-netfilter/plugins/dns.jar delete mode 100644 src/main/resources/static/agent/ja-netfilter/plugins/hideme.jar delete mode 100644 src/main/resources/static/agent/ja-netfilter/plugins/power.jar delete mode 100644 src/main/resources/static/agent/ja-netfilter/plugins/url.jar diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3c1f0c8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM java:21 + +ADD target/Jetbrains-Help.jar /Jetbrains-Help.jar + +RUN bash -c 'touch /Jetbrains-Help.jar' + +ENV TZ=Asia/Shanghai +RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone + + +EXPOSE 10768 + +ENTRYPOINT ["java", "-jar","/Jetbrains-Help.jar"] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8aa7a53..4a7687b 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ + ${artifactId} org.springframework.boot diff --git a/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java b/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java index 20310c3..8235b84 100644 --- a/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java +++ b/src/main/java/com/jetbrains/help/JetbrainsHelpApplication.java @@ -1,8 +1,13 @@ package com.jetbrains.help; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.net.Ipv4Util; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.jetbrains.help.context.*; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -11,9 +16,11 @@ import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; +import java.net.InetAddress; import java.util.Collection; import java.util.List; +@Slf4j @EnableScheduling @Import(SpringUtil.class) @SpringBootApplication @@ -23,12 +30,21 @@ public class JetbrainsHelpApplication { SpringApplication.run(JetbrainsHelpApplication.class, args); } + @SneakyThrows @EventListener(ApplicationReadyEvent.class) public void ready() { ProductsContextHolder.init(); PluginsContextHolder.init(); CertificateContextHolder.init(); AgentContextHolder.init(); + + InetAddress localHost = InetAddress.getLocalHost(); + String address = CharSequenceUtil.format("http://{}:{}", localHost.getHostAddress(), SpringUtil.getProperty("server.port")); + String runSuccessWarn = "\n====================================================================================\n" + + "= Jetbrains-Help Run Success~ =\n" + + "= address:" + address + " =\n" + + "====================================================================================\n"; + log.info(runSuccessWarn); } @Scheduled(cron = "0 0 12 * * ?") diff --git a/src/main/java/com/jetbrains/help/context/AgentContextHolder.java b/src/main/java/com/jetbrains/help/context/AgentContextHolder.java index dea6515..166f303 100644 --- a/src/main/java/com/jetbrains/help/context/AgentContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/AgentContextHolder.java @@ -24,25 +24,33 @@ import java.util.concurrent.CompletableFuture; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class AgentContextHolder { - private static final String JA_NETFILTER_FILE_PATH = "static/agent/ja-netfilter"; -// private static final String JA_NETFILTER_FILE_PATH = "static/agent/ja"; + private static final String JA_NETFILTER_FILE_PATH = "external/agent/ja-netfilter"; private static final String POWER_CONF_FILE_NAME = JA_NETFILTER_FILE_PATH + "/config/power.conf"; private static File jaNetfilterFile; + private static File jaNetfilterZipFile; + public static void init() { log.info("Agent context init loading..."); - jaNetfilterFile = FileTools.getFileOrCreat(JA_NETFILTER_FILE_PATH); - if (!powerConfHasInit()) { - log.info("Agent config init loading..."); - loadPowerConf(); - zipJaNetfilter(); - log.info("Agent config init success !"); + jaNetfilterZipFile = FileTools.getFileOrCreat(JA_NETFILTER_FILE_PATH + ".zip"); + if (!FileTools.fileExists(JA_NETFILTER_FILE_PATH)) { + unzipJaNetfilter(); + if (!powerConfHasInit()) { + log.info("Agent config init loading..."); + loadPowerConf(); + zipJaNetfilter(); + log.info("Agent config init success !"); + } } log.info("Agent context init success !"); } + public static File jaNetfilterZipFile() { + return AgentContextHolder.jaNetfilterZipFile; + } + private static boolean powerConfHasInit() { File powerConfFile = FileTools.getFileOrCreat(POWER_CONF_FILE_NAME); String powerConfStr; @@ -90,7 +98,11 @@ public class AgentContextHolder { } } + private static void unzipJaNetfilter() { + jaNetfilterFile = ZipUtil.unzip(jaNetfilterZipFile); + } + private static void zipJaNetfilter() { - ZipUtil.zip(jaNetfilterFile); + jaNetfilterZipFile = ZipUtil.zip(jaNetfilterFile); } } diff --git a/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java b/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java index bb0c1c7..e0acbfa 100644 --- a/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/CertificateContextHolder.java @@ -31,10 +31,10 @@ import java.security.cert.CertificateException; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class CertificateContextHolder { - private static final String ROOT_KEY_FILE_NAME = "certificate/root.key"; - private static final String PRIVATE_KEY_FILE_NAME = "certificate/private.key"; - private static final String PUBLIC_KEY_FILE_NAME = "certificate/public.key"; - private static final String CET_FILE_NAME = "certificate/ca.crt"; + private static final String ROOT_KEY_FILE_NAME = "external/certificate/root.key"; + private static final String PRIVATE_KEY_FILE_NAME = "external/certificate/private.key"; + private static final String PUBLIC_KEY_FILE_NAME = "external/certificate/public.key"; + private static final String CET_FILE_NAME = "external/certificate/ca.crt"; private static File rootKeyFile; @@ -52,6 +52,7 @@ public class CertificateContextHolder { || !FileTools.fileExists(CET_FILE_NAME)) { log.info("certificate context generate loading..."); generateCertificate(); + log.info("certificate context generate success!"); } else { privateKeyFile = FileTools.getFileOrCreat(PRIVATE_KEY_FILE_NAME); publicKeyFile = FileTools.getFileOrCreat(PUBLIC_KEY_FILE_NAME); diff --git a/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java b/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java index ee4e9da..4b25698 100644 --- a/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/PluginsContextHolder.java @@ -13,6 +13,7 @@ import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.List; @@ -28,7 +29,7 @@ public class PluginsContextHolder { private static final String PLUGIN_INFO_URL = PLUGIN_BASIC_URL + "/api/plugins/"; - private static final String PLUGIN_JSON_FILE_NAME = "plugin.json"; + private static final String PLUGIN_JSON_FILE_NAME = "external/data/plugin.json"; private static List pluginCacheList; @@ -84,11 +85,14 @@ public class PluginsContextHolder { public static PluginList pluginList() { return HttpUtil.createGet(PLUGIN_LIST_URL) .thenFunction(response -> { - InputStream is = response.bodyStream(); - if (!response.isOk()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_LIST_URL, response)); + try (InputStream is = response.bodyStream()) { + if (!response.isOk()) { + throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_LIST_URL, response)); + } + return IoUtil.readObj(is, PluginList.class); + } catch (IOException e) { + throw new IllegalArgumentException(CharSequenceUtil.format("{} The request io read failed", PLUGIN_LIST_URL), e); } - return IoUtil.readObj(is, PluginList.class); }); } @@ -119,11 +123,14 @@ public class PluginsContextHolder { public static PluginInfo pluginInfo(Long pluginId) { return HttpUtil.createGet(PLUGIN_INFO_URL + pluginId) .thenFunction(response -> { - InputStream is = response.bodyStream(); - if (!response.isOk()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_INFO_URL, response)); + try (InputStream is = response.bodyStream()) { + if (!response.isOk()) { + throw new IllegalArgumentException(CharSequenceUtil.format("{} The request failed = {}", PLUGIN_INFO_URL, response)); + } + return IoUtil.readObj(is, PluginInfo.class); + } catch (IOException e) { + throw new IllegalArgumentException(CharSequenceUtil.format("{} The request io read failed", PLUGIN_LIST_URL), e); } - return IoUtil.readObj(is, PluginInfo.class); }); } diff --git a/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java b/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java index b7a8d55..a43066d 100644 --- a/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java +++ b/src/main/java/com/jetbrains/help/context/ProductsContextHolder.java @@ -18,7 +18,7 @@ import java.util.List; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class ProductsContextHolder { - private static final String PRODUCT_JSON_FILE_NAME = "product.json"; + private static final String PRODUCT_JSON_FILE_NAME = "external/data/product.json"; private static List productCacheList; diff --git a/src/main/java/com/jetbrains/help/route/IndexController.java b/src/main/java/com/jetbrains/help/route/IndexController.java index 5e3a0e8..984b6f2 100644 --- a/src/main/java/com/jetbrains/help/route/IndexController.java +++ b/src/main/java/com/jetbrains/help/route/IndexController.java @@ -1,20 +1,32 @@ package com.jetbrains.help.route; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.StrUtil; import com.jetbrains.help.JetbrainsHelpApplication; +import com.jetbrains.help.context.AgentContextHolder; import com.jetbrains.help.context.PluginsContextHolder; import com.jetbrains.help.context.ProductsContextHolder; import com.jetbrains.help.properties.JetbrainsHelpProperties; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import java.io.File; import java.util.List; +import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION; +import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM; + @Controller @RequiredArgsConstructor public class IndexController { @@ -48,4 +60,14 @@ public class IndexController { model.addAttribute("defaults", jetbrainsHelpProperties); return "index::product-list"; } + + @GetMapping("ja-netfilter") + @ResponseBody + public ResponseEntity downloadJaNetfilter() { + File jaNetfilterZipFile = AgentContextHolder.jaNetfilterZipFile(); + return ResponseEntity.ok() + .header(CONTENT_DISPOSITION, "attachment;filename=" + jaNetfilterZipFile.getName()) + .contentType(APPLICATION_OCTET_STREAM) + .body(new InputStreamResource(FileUtil.getInputStream(jaNetfilterZipFile))); + } } diff --git a/src/main/java/com/jetbrains/help/util/FileTools.java b/src/main/java/com/jetbrains/help/util/FileTools.java index 0518368..5b78a16 100644 --- a/src/main/java/com/jetbrains/help/util/FileTools.java +++ b/src/main/java/com/jetbrains/help/util/FileTools.java @@ -2,6 +2,9 @@ package com.jetbrains.help.util; import cn.hutool.core.io.FileUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import org.springframework.boot.system.ApplicationHome; import org.springframework.core.io.ClassPathResource; import java.io.File; @@ -9,25 +12,35 @@ import java.io.IOException; public interface FileTools { - static boolean fileExists(String pathOrFile) { - return FileUtil.file(new ClassPathResource(pathOrFile).getPath()).exists(); + ApplicationHome application = new ApplicationHome(); + + + static boolean fileExists(String path) { + return getFile(path).exists(); } - static File getFileOrCreat(String pathOrFile) { - File file = FileUtil.file(new ClassPathResource(pathOrFile).getPath()); - if (!file.exists()) { - try { - File parentFile = file.getParentFile(); - if (!parentFile.exists() && !parentFile.mkdir()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File directory create Failed", pathOrFile)); + static File getFile(String path) { + File homeDir = application.getDir(); + File source = application.getSource(); + ClassPathResource classPathResource = new ClassPathResource(path); + return ObjectUtil.isNull(source) ? FileUtil.file(classPathResource.getPath()) : FileUtil.file(homeDir, path); + } + + static File getFileOrCreat(String path) { + File file = getFile(path); + if (ObjectUtil.isNotNull(application.getSource())) { + ClassPathResource classPathResource = new ClassPathResource(path); + File classPathFile = FileUtil.file(classPathResource.getPath()); + if (classPathResource.exists() && !file.exists()) { + try { + FileUtil.writeFromStream(classPathResource.getInputStream(), classPathFile); + } catch (Exception e) { + throw new IllegalArgumentException(CharSequenceUtil.format("{} File read failed", classPathFile.getPath()), e); } - if (!file.createNewFile()) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File create failed", pathOrFile)); - } - } catch (IOException e) { - throw new IllegalArgumentException(CharSequenceUtil.format("{} File create failed", pathOrFile), e); + FileUtil.copy(classPathFile, file, true); } } return file; + } } diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..c019b0b --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,10 @@ + + ██╗███████╗████████╗██████╗ ██████╗ █████╗ ██╗███╗ ██╗███████╗ ██╗ ██╗███████╗██╗ ██████╗ + ██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗██║████╗ ██║██╔════╝ ██║ ██║██╔════╝██║ ██╔══██╗ + ██║█████╗ ██║ ██████╔╝██████╔╝███████║██║██╔██╗ ██║███████╗█████╗███████║█████╗ ██║ ██████╔╝ +██ ██║██╔══╝ ██║ ██╔══██╗██╔══██╗██╔══██║██║██║╚██╗██║╚════██║╚════╝██╔══██║██╔══╝ ██║ ██╔═══╝ +╚█████╔╝███████╗ ██║ ██████╔╝██║ ██║██║ ██║██║██║ ╚████║███████║ ██║ ██║███████╗███████╗██║ + ╚════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ + +${AnsiColor.BRIGHT_YELLOW} Spring Boot Version: ${spring-boot.version} + diff --git a/src/main/resources/certificate/root.key b/src/main/resources/external/certificate/root.key similarity index 100% rename from src/main/resources/certificate/root.key rename to src/main/resources/external/certificate/root.key diff --git a/src/main/resources/plugin.json b/src/main/resources/external/data/plugin.json similarity index 100% rename from src/main/resources/plugin.json rename to src/main/resources/external/data/plugin.json diff --git a/src/main/resources/product.json b/src/main/resources/external/data/product.json similarity index 100% rename from src/main/resources/product.json rename to src/main/resources/external/data/product.json diff --git a/src/main/resources/static/agent/ja-netfilter/config/dns.conf b/src/main/resources/static/agent/ja-netfilter/config/dns.conf deleted file mode 100644 index 54de89f..0000000 --- a/src/main/resources/static/agent/ja-netfilter/config/dns.conf +++ /dev/null @@ -1,3 +0,0 @@ -[DNS] -; put dns filter rules here - diff --git a/src/main/resources/static/agent/ja-netfilter/config/power.conf b/src/main/resources/static/agent/ja-netfilter/config/power.conf deleted file mode 100644 index a245d18..0000000 --- a/src/main/resources/static/agent/ja-netfilter/config/power.conf +++ /dev/null @@ -1 +0,0 @@ -[Result] \ No newline at end of file diff --git a/src/main/resources/static/agent/ja-netfilter/config/url.conf b/src/main/resources/static/agent/ja-netfilter/config/url.conf deleted file mode 100644 index 898bdb2..0000000 --- a/src/main/resources/static/agent/ja-netfilter/config/url.conf +++ /dev/null @@ -1,4 +0,0 @@ -[URL] -; put url filter rules here -PREFIX,https://account.jetbrains.com/lservice/rpc/validateKey.action - diff --git a/src/main/resources/static/agent/ja-netfilter/ja-netfilter.jar b/src/main/resources/static/agent/ja-netfilter/ja-netfilter.jar deleted file mode 100644 index b72565a350f502d0e07b0879272cf19d01664268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48639 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 E54%#Ny8r+H diff --git a/src/main/resources/static/agent/ja-netfilter/plugins/dns.jar b/src/main/resources/static/agent/ja-netfilter/plugins/dns.jar deleted file mode 100644 index 113c6990747325b43e4f0a6affcc4bbc3e0d49e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4859 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 b7X9B00Od#V0s#T*$4~EvawO}~&wu|1KF}#u diff --git a/src/main/resources/static/agent/ja-netfilter/plugins/url.jar b/src/main/resources/static/agent/ja-netfilter/plugins/url.jar deleted file mode 100644 index 495804edbaf722bd507e828982879b3dce7ca728..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4529 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 diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index d579cbe..91b3374 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -11,7 +11,7 @@

- 🇨🇳 Download ja-netfilter.zip , and configure + 🇨🇳 Download ja-netfilter.zip , and configure your JetBrains's vmoptions!
🇨🇳 Also you can Refill license information to customizer your license!
🇨🇳 Please note that this page is only developed and used by