From 1f933d1171db5b85db4327e04a707bd014314aaf Mon Sep 17 00:00:00 2001 From: prabhah Date: Mon, 20 Nov 2023 16:08:09 +0800 Subject: [PATCH 1/4] uber-jar the frameless sample and set mainClass --- .../xxl-job-executor-sample-frameless/pom.xml | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/pom.xml b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/pom.xml index 500cdb4861..076bf34471 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/pom.xml +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.xuxueli @@ -15,6 +15,43 @@ Example executor project for spring boot. https://www.xuxueli.com/ + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + true + + + + com.xxl.job.executor.sample.frameless.FramelessApplication + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + com.xxl.job.executor.sample.frameless.FramelessApplication + + + + + + From 7c01ad46fa2c3690cb9d90f9c0426cac017d5624 Mon Sep 17 00:00:00 2001 From: prabhah Date: Mon, 20 Nov 2023 16:51:12 +0800 Subject: [PATCH 2/4] frameless sample supports configs from environment --- .../config/FrameLessXxlJobConfig.java | 63 +++++++++++++++---- 1 file changed, 50 insertions(+), 13 deletions(-) diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java index 1d882dc58e..1c5130c7c1 100644 --- a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/src/main/java/com/xxl/job/executor/sample/frameless/config/FrameLessXxlJobConfig.java @@ -16,33 +16,71 @@ public class FrameLessXxlJobConfig { private static Logger logger = LoggerFactory.getLogger(FrameLessXxlJobConfig.class); - private static FrameLessXxlJobConfig instance = new FrameLessXxlJobConfig(); + public static FrameLessXxlJobConfig getInstance() { return instance; } - private XxlJobSimpleExecutor xxlJobExecutor = null; /** * init */ public void initXxlJobExecutor() { - // load executor prop Properties xxlJobProp = loadProperties("xxl-job-executor.properties"); // init executor xxlJobExecutor = new XxlJobSimpleExecutor(); - xxlJobExecutor.setAdminAddresses(xxlJobProp.getProperty("xxl.job.admin.addresses")); - xxlJobExecutor.setAccessToken(xxlJobProp.getProperty("xxl.job.accessToken")); - xxlJobExecutor.setAppname(xxlJobProp.getProperty("xxl.job.executor.appname")); - xxlJobExecutor.setAddress(xxlJobProp.getProperty("xxl.job.executor.address")); - xxlJobExecutor.setIp(xxlJobProp.getProperty("xxl.job.executor.ip")); - xxlJobExecutor.setPort(Integer.valueOf(xxlJobProp.getProperty("xxl.job.executor.port"))); - xxlJobExecutor.setLogPath(xxlJobProp.getProperty("xxl.job.executor.logpath")); - xxlJobExecutor.setLogRetentionDays(Integer.valueOf(xxlJobProp.getProperty("xxl.job.executor.logretentiondays"))); + + String envAppname = System.getenv("XXL_JOB_EXECUTOR_APPNAME"); + if (envAppname == null) { + envAppname = xxlJobProp.getProperty("xxl.job.executor.appname"); + } + xxlJobExecutor.setAppname(envAppname); + + String envPort = System.getenv("XXL_JOB_EXECUTOR_PORT"); + if (envPort == null) { + envPort = xxlJobProp.getProperty("xxl.job.executor.port"); + } + xxlJobExecutor.setPort(Integer.valueOf(envPort)); + + String envAdminAddresses = System.getenv("XXL_JOB_ADMIN_ADDRESSES"); + if (envAdminAddresses == null) { + envAdminAddresses = xxlJobProp.getProperty("xxl.job.admin.addresses"); + } + xxlJobExecutor.setAdminAddresses(envAdminAddresses); + + String accessToken = System.getenv("XXL_JOB_ACCESS_TOKEN"); + if (accessToken == null) { + accessToken = xxlJobProp.getProperty("xxl.job.accessToken"); + } + xxlJobExecutor.setAccessToken(accessToken); + + String envAddress = System.getenv("XXL_JOB_EXECUTOR_ADDRESS"); + if (envAddress == null) { + envAddress = xxlJobProp.getProperty("xxl.job.executor.address"); + } + xxlJobExecutor.setAddress(envAddress); + + String envIp = System.getenv("XXL_JOB_EXECUTOR_IP"); + if (envIp == null) { + envIp = xxlJobProp.getProperty("xxl.job.executor.ip"); + } + xxlJobExecutor.setIp(envIp); + + String envLogPath = System.getenv("XXL_JOB_EXECUTOR_LOGPATH"); + if (envLogPath == null) { + envLogPath = xxlJobProp.getProperty("xxl.job.executor.logpath"); + } + xxlJobExecutor.setLogPath(envLogPath); + + String envLogRetentionDays = System.getenv("XXL_JOB_EXECUTOR_LOGRETENTIONDAYS"); + if (envLogRetentionDays == null) { + envLogRetentionDays = xxlJobProp.getProperty("xxl.job.executor.logretentiondays"); + } + xxlJobExecutor.setLogRetentionDays(Integer.valueOf(envLogRetentionDays)); // registry job bean xxlJobExecutor.setXxlJobBeanList(Arrays.asList(new SampleXxlJob())); @@ -64,13 +102,12 @@ public void destroyXxlJobExecutor() { } } - public static Properties loadProperties(String propertyFileName) { InputStreamReader in = null; try { ClassLoader loder = Thread.currentThread().getContextClassLoader(); - in = new InputStreamReader(loder.getResourceAsStream(propertyFileName), "UTF-8");; + in = new InputStreamReader(loder.getResourceAsStream(propertyFileName), "UTF-8"); if (in != null) { Properties prop = new Properties(); prop.load(in); From c807c7094a87850c54bac7f8963bdfc7d6956053 Mon Sep 17 00:00:00 2001 From: prabhah Date: Mon, 20 Nov 2023 16:53:14 +0800 Subject: [PATCH 3/4] issues 3328: security vul for empty access token https://github.com/xuxueli/xxl-job/issues/3328 --- .../src/main/java/com/xxl/job/core/server/EmbedServer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java index 540e0ea274..910bc0629c 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/server/EmbedServer.java @@ -174,8 +174,10 @@ private Object process(HttpMethod httpMethod, String uri, String requestData, St if (uri == null || uri.trim().length() == 0) { return new ReturnT(ReturnT.FAIL_CODE, "invalid request, uri-mapping empty."); } - if (accessToken != null - && accessToken.trim().length() > 0 + if (accessToken == null) { + return new ReturnT(ReturnT.FAIL_CODE, "The access token is null."); + } + if (accessToken.trim().length() > 0 && !accessToken.equals(accessTokenReq)) { return new ReturnT(ReturnT.FAIL_CODE, "The access token is wrong."); } From 75e3a5ab5d9d75a87cced0ffa490f2d18a2845a4 Mon Sep 17 00:00:00 2001 From: prabhah Date: Mon, 20 Nov 2023 17:57:45 +0800 Subject: [PATCH 4/4] systemd service for multi xxl-job-executors --- .../systemd/readme.txt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 xxl-job-executor-samples/xxl-job-executor-sample-frameless/systemd/readme.txt diff --git a/xxl-job-executor-samples/xxl-job-executor-sample-frameless/systemd/readme.txt b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/systemd/readme.txt new file mode 100644 index 0000000000..7188cbe8f2 --- /dev/null +++ b/xxl-job-executor-samples/xxl-job-executor-sample-frameless/systemd/readme.txt @@ -0,0 +1,25 @@ +1. /etc/default/xxl-job-executor-mgmt-9999 + +XXL_JOB_EXECUTOR_APPNAME=mgmt +XXL_JOB_EXECUTOR_PORT=9999 + +2. /etc/systemd/system/xxl-job-executor@.service + +[Unit] +Description=xxl-job-executor service + +[Service] +ExecStart=/usr/bin/java -jar /opt/xxl-job-executor-2.4.1.jar +Restart=always +User=root +EnvironmentFile=/etc/default/xxl-job-executor-%i +Environment=XXL_JOB_ACCESS_TOKEN=default_token +Environment=XXL_JOB_ADMIN_ADDRESSES=http://127.0.0.1:8080/xxl-job-admin +Environment=JAVA_OPTS="-Xmx512m" + +[Install] +WantedBy=default.target + +3. systemctl enable xxl-job-executor@mgmt-9999.service + +4. systemctl start xxl-job-executor@mgmt-9999.service \ No newline at end of file