├── src ├── main │ ├── resources │ │ └── application.properties │ └── java │ │ └── com │ │ └── jance │ │ └── api │ │ ├── ApiApplication.java │ │ ├── controller │ │ ├── GetJdCkController.java │ │ └── QlController.java │ │ └── utils │ │ └── QlUtils.java └── test │ └── java │ └── com │ └── jance │ └── api │ └── ApiApplicationTests.java ├── Dockerfile ├── Dockerfile-arm64 ├── .gitignore ├── README.md └── pom.xml /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | ### web 2 | server.port=8333 -------------------------------------------------------------------------------- /src/test/java/com/jance/api/ApiApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.jance.api; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ApiApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # 生成镜像,需服务器有openjdk:8镜像。docker pull openjdk:8 2 | FROM openjdk:8 3 | # 将jar包重命名 4 | COPY *.jar /app.jar 5 | # 设定时区 6 | ENV TZ=Asia/Shanghai 7 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 8 | # 指定服务端口 9 | CMD ["--server.port=9833"] 10 | # 指定对外开放端口 11 | EXPOSE 9833 12 | # 服务启动命令(暂时未输出日志,需使用 docker logs -f 容器名 查看) 13 | ENTRYPOINT ["java", "-jar", "/app.jar"] -------------------------------------------------------------------------------- /src/main/java/com/jance/api/ApiApplication.java: -------------------------------------------------------------------------------- 1 | package com.jance.api; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class ApiApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(ApiApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Dockerfile-arm64: -------------------------------------------------------------------------------- 1 | # 生成镜像,需服务器有openjdk:8镜像。docker pull openjdk:8 2 | FROM adoptopenjdk:8-jdk-hotspot 3 | 4 | # 将jar包重命名 5 | COPY *.jar /app.jar 6 | 7 | # 设定时区 8 | ENV TZ=Asia/Shanghai 9 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 10 | 11 | # 指定服务端口 12 | CMD ["--server.port=9833"] 13 | 14 | # 暴露端口 15 | EXPOSE 9833 16 | 17 | # 入口点:启动命令 18 | ENTRYPOINT ["java","-jar","/app.jar"] 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .mvn 3 | !**/src/main/** 4 | !**/src/test/** 5 | 6 | ### STS ### 7 | .apt_generated 8 | .classpath 9 | .factorypath 10 | .project 11 | .settings 12 | .springBeans 13 | .sts4-cache 14 | 15 | ### IntelliJ IDEA ### 16 | .idea 17 | *.iws 18 | *.iml 19 | *.ipr 20 | 21 | ### NetBeans ### 22 | /nbproject/private/ 23 | /nbbuild/ 24 | /dist/ 25 | /nbdist/ 26 | /.nb-gradle/ 27 | build/ 28 | 29 | ### VS Code ### 30 | .vscode/ 31 | -------------------------------------------------------------------------------- /src/main/java/com/jance/api/controller/GetJdCkController.java: -------------------------------------------------------------------------------- 1 | package com.jance.api.controller; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.web.bind.annotation.RequestBody; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * 剪切京东ck(值来自于手机alook浏览器提取) 13 | */ 14 | @RestController 15 | @RequestMapping("v1/getJdCk/") 16 | public class GetJdCkController { 17 | private static final Logger log = LoggerFactory.getLogger(GetJdCkController.class); 18 | 19 | 20 | @RequestMapping("getCk") 21 | public String getCk(@RequestBody Map in) { 22 | log.info("进入剪切京东ck接口"); 23 | String cks = in.get("ck"); 24 | String pt_key = ""; 25 | String pt_pin = ""; 26 | String[] temp = cks.split(";"); 27 | for (String s : temp) { 28 | s = s.trim(); 29 | if (s.startsWith("pt_key=")) { 30 | pt_key = s; 31 | } 32 | } 33 | for (String s : temp) { 34 | s = s.trim(); 35 | if (s.startsWith("pt_pin=")) { 36 | pt_pin = s; 37 | } 38 | } 39 | String newCk = pt_key + "; " + pt_pin + ";"; 40 | log.info("剪切京东ck完成," + newCk); 41 | return newCk.trim(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 一、简介 2 | 3 | 苹果手机端轻松实现更新青龙面板上的jdck。 4 | 需要Alook浏览器(也可以是其他的浏览器,只要能获取cookie就行), 5 | 6 | 7 | ## 1、DockerHub直接使用 8 | 9 | - docker运行(x86架构):`docker run -d -it -p 9833:9833 --name update-jd-ck jancehui/update-jd-ck:1.1` 10 | - docker运行(arm架构):`docker run -d -it -p 9833:9833 --name update-jd-ck jancehui/update-jd-ck:arm64-v8-1.1` 11 | - 跟踪查看日志:`docker logs -f update-jd-ck` 12 | 13 | 14 | ## 2、苹果手机 + alook浏览器 + 快捷指令 快速食用教程 15 | 16 | - 1.下载 `alook浏览器` 6块大洋,或者在网上找共享账号下载 17 | - 2.导入快捷指令 `https://www.icloud.com/shortcuts/77486ad4edeb4382bd0a21d82cab065c` 18 | - 3.修改快捷指令①,第一个url地址`http://api.jancehui.top/xxxxx/getCk`可换成自己的`http://你的IP:9833/xxxxx/getCk` (原域名到期了) 19 | - 4.修改快捷指令②,第二个url地址`http://api.jancehui.top/xxxxx/updateJdCk`同样可换成自己的`http://你的IP:9833/xxxxx/updateJdCk` (原域名到期了) 20 | - 5.修改快捷指令③,第二个url展开,`qlAddr`换成你的青龙地址`http://你的青龙IP:5700`;`clientId`使用青龙面板中添加的应用id;`clientSecret`使用青龙面板中添加的应用密钥 21 | - 6.alook浏览器获取全部ck后,直接执行此快捷指令即可。 22 | 23 | Alook浏览器获取ck教程:https://blog.csdn.net/weixin_44011530/article/details/130943930 24 | 25 | ## 3、如何发现ck失效? 26 | 27 | - 1.faker库有`ck检测`脚本,如果ck失效后会自动将环境变量禁用,并发送通知(接口已支持更新ck后,自动启用) 28 | - 2.~~晚上11点左右~~ 早上打开jd看一下,不需要重新登录就是没有失效(现在差不多就是3天一掉) 29 | 30 | # 二、项目介绍 31 | 32 | ## 1、接口信息 33 | 34 | 端口:9833 35 | 36 | 提供接口: 37 | 38 | ### 获取ck `/v1/getJdCk/getCk`: 39 | 40 | - 根据alook浏览器中提取的所有cookies,获取需要的jdck(pt_key=xxx; pt_pin=xxx;) 41 | - 接口调用方式`post` 42 | - 接口调用url实例:`http://xxx.xxx.xxx.xxx:9833/v1/getJdCk/getCk` (具体地址及端口以部署的docker服务为准) 43 | - 请求参数如下: 44 | ``` json 45 | { 46 | "ck": "提取的所有cookies" 47 | } 48 | ``` 49 | 50 | ### 更新青龙环境变量 `/v1/ql/updateJdCk` 51 | 52 | - 根据前面接口提取的jdck(pt_key=xxx; pt_pin=xxx;)更新环境变量(也可自己手工提取) 53 | - 接口调用方式`post` 54 | - 接口调用url实例:`http://xxx.xxx.xxx.xxx:9833/v1/ql/updateJdCk` (具体地址及端口以部署的docker服务为准) 55 | - 请求参数如下: 56 | ``` json 57 | { 58 | "qlAddr": "青龙应用地址,实例 http://127.0.0.1:5700", 59 | "clientId": "青龙应用id,实例 213hdsald-n", 60 | "clientSecret": "青龙应用密钥,实例 213hdeqweqsald-n", 61 | "ck": "京东ck(pt_key=xxx; pt_pin=xxx;)" 62 | } 63 | ``` 64 | ~~注:ck环境变量需备注为`pt_pin=xxx`,代码自动识别所有环境变量中是否有此备注的ck,有则更新、无则新增~~ 已调整为通过环境变量值中是否包含`pt_pin=xxx`判断更新还是新增 65 | 66 | ## 2、项目打包发布 docker 启动 67 | 68 | - 运行 `mvn clean install` 将项目打包成jar包(可直接从Releases下载) 69 | - 将 `jar包` 及 `Dockerfile` 文件上传至服务器 70 | - 执行docker构建镜像命令 `docker build -t update-jd-ck .` 71 | - docker执行:`docker run -d -it -p 9833:9833 --name update-jd-ck update-jd-ck` 72 | - 跟踪查看日志:`docker logs -f update-jd-ck` 73 | 74 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.3.1.RELEASE 9 | 10 | 11 | com.jance 12 | api 13 | 0.0.1-SNAPSHOT 14 | api 15 | Demo project for Spring Boot 16 | 17 | 8 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-web 23 | 24 | 25 | 26 | org.springframework.boot 27 | spring-boot-starter-test 28 | test 29 | 30 | 31 | 32 | cn.hutool 33 | hutool-all 34 | 5.6.6 35 | 36 | 37 | 38 | com.alibaba 39 | fastjson 40 | 1.2.83 41 | 42 | 43 | 44 | 45 | 46 | 47 | org.apache.maven.plugins 48 | maven-compiler-plugin 49 | 3.8.1 50 | 51 | 1.8 52 | 1.8 53 | UTF-8 54 | 55 | 56 | 57 | org.springframework.boot 58 | spring-boot-maven-plugin 59 | 2.3.1.RELEASE 60 | 61 | com.jance.api.ApiApplication 62 | 63 | 64 | 65 | repackage 66 | 67 | repackage 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /src/main/java/com/jance/api/controller/QlController.java: -------------------------------------------------------------------------------- 1 | package com.jance.api.controller; 2 | 3 | import com.alibaba.fastjson.JSONArray; 4 | import com.alibaba.fastjson.JSONObject; 5 | import com.jance.api.utils.QlUtils; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.web.bind.annotation.RequestBody; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.RestController; 11 | 12 | import java.util.Map; 13 | 14 | @RestController 15 | @RequestMapping("v1/ql/") 16 | public class QlController { 17 | private static final Logger log = LoggerFactory.getLogger(QlController.class); 18 | 19 | /** 20 | * 更新京东ck 21 | * @param in 京东ck信息 22 | * { 23 | * clientId-青龙应用id(支持自定义,不传则默认) 24 | * clientSecret-青龙应用密钥(支持自定义,不传则默认) 25 | * qlAddr-青龙应用地址(支持自定义,不传则默认) 26 | * ck-京东ck 27 | * }) 28 | * @return 更新结果 29 | */ 30 | @RequestMapping("updateJdCk") 31 | public String updateJdCk(@RequestBody Map in) { 32 | log.info("进入更新京东ck接口"); 33 | // 1.登录青龙 34 | String clientId = in.get("clientId"); 35 | String clientSecret = in.get("clientSecret"); 36 | String qlAddr = in.get("qlAddr"); 37 | String auth = QlUtils.login(clientId, clientSecret, qlAddr); 38 | 39 | // 2.解析传来的ck 40 | String cks = in.get("ck"); 41 | String pt_key = ""; 42 | String pt_pin = ""; 43 | String[] temp = cks.split(";"); 44 | for (String s : temp) { 45 | s = s.trim(); 46 | if (s.startsWith("pt_key=")) { 47 | pt_key = s; 48 | } 49 | } 50 | for (String s : temp) { 51 | s = s.trim(); 52 | if (s.startsWith("pt_pin=")) { 53 | pt_pin = s; 54 | } 55 | } 56 | String newCk = pt_key + "; " + pt_pin + ";"; 57 | 58 | // 3.获取环境变量 59 | JSONArray envList = QlUtils.getEnvs(auth, qlAddr); 60 | 61 | // 4.遍历出所有jdck 62 | JSONArray jdCKList = new JSONArray(); 63 | for (int i = 0; i < envList.size(); i++) { 64 | JSONObject object = envList.getJSONObject(i); 65 | if (object.getString("name").equals("JD_COOKIE")) { 66 | jdCKList.add(object); 67 | } 68 | } 69 | 70 | // 5.新增/更新环境变量(已有pt_pin更新,没有pt_pin新增) 71 | for (int i = 0; i < jdCKList.size(); i++) { 72 | JSONObject object = jdCKList.getJSONObject(i); 73 | String value = object.getString("value"); 74 | if (value.contains(pt_pin)) { 75 | // 已有pt_pin更新 76 | JSONObject envInfo = new JSONObject(); 77 | envInfo.put("id", object.getString("id")); 78 | envInfo.put("name", object.getString("name")); 79 | envInfo.put("value", newCk); 80 | envInfo.put("remarks", object.getString("remarks")); 81 | QlUtils.updateEnv(auth, qlAddr, envInfo); 82 | log.info("更新ck成功"); 83 | 84 | // ck更新成功后,若status状态为1,表示被禁用,需启用此变量 85 | if ("1".equals(object.getString("status"))) { 86 | log.info("该ck被禁用,调用环境变量启用接口"); 87 | QlUtils.enableEnv(auth, qlAddr, envInfo); 88 | } 89 | return "更新ck成功"; 90 | } 91 | } 92 | // 没有pt_pin新增 93 | JSONObject envInfo = new JSONObject(); 94 | envInfo.put("name", "JD_COOKIE"); 95 | envInfo.put("value", newCk); 96 | envInfo.put("remarks", pt_pin); 97 | QlUtils.insertEnv(auth, qlAddr, envInfo); 98 | log.info("新增ck成功"); 99 | return "新增ck成功"; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/com/jance/api/utils/QlUtils.java: -------------------------------------------------------------------------------- 1 | package com.jance.api.utils; 2 | 3 | import cn.hutool.core.util.StrUtil; 4 | import cn.hutool.http.HttpRequest; 5 | import cn.hutool.http.HttpUtil; 6 | import com.alibaba.fastjson.JSON; 7 | import com.alibaba.fastjson.JSONArray; 8 | import com.alibaba.fastjson.JSONObject; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | import java.util.ArrayList; 13 | import java.util.HashMap; 14 | import java.util.List; 15 | 16 | /** 17 | * 青龙工具类 18 | */ 19 | public class QlUtils { 20 | private static final Logger log = LoggerFactory.getLogger(QlUtils.class); 21 | 22 | public static String QL_ADDR = "http://ql.jancehui.top"; 23 | public static String CLIENT_ID = "Y4f70zeZBMg_"; 24 | public static String CLIENT_SECRET = "Bj53k_i1Zc4YIm8XqE_7D1kh"; 25 | 26 | /** 27 | * 登录青龙面板 28 | * @param clientId 青龙面板应用id(未传则使用默认值) 29 | * @param clientSecret 青龙面板应用密钥(未传则使用默认值) 30 | * @param qlAddr 青龙面板地址(未传则使用默认值) 31 | * @return 登录成功后的token 32 | */ 33 | public static String login(String clientId, String clientSecret, String qlAddr) { 34 | log.info("进入登录青龙面板接口"); 35 | if (StrUtil.isNotEmpty(clientId)) { 36 | log.info("使用自定义青龙面板应用id:" + clientId); 37 | } else { 38 | log.info("使用默认青龙面板应用id:" + CLIENT_ID); 39 | } 40 | if (StrUtil.isNotEmpty(clientSecret)) { 41 | log.info("使用自定义青龙面板应用密钥:" + clientSecret); 42 | } else { 43 | log.info("使用默认青龙面板应用密钥:" + CLIENT_SECRET); 44 | } 45 | if (StrUtil.isNotEmpty(qlAddr)) { 46 | log.info("使用自定义青龙面板地址:" + qlAddr); 47 | } else { 48 | log.info("使用默认青龙面板地址:" + QL_ADDR); 49 | } 50 | // 登录url 51 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 52 | String loginUrl = qlAddrUrl + "/open/auth/token"; 53 | // 请求参数 54 | HashMap paramMap = new HashMap<>(); 55 | paramMap.put("client_id", StrUtil.isNotEmpty(clientId) ? clientId : CLIENT_ID); 56 | paramMap.put("client_secret", StrUtil.isNotEmpty(clientSecret) ? clientSecret : CLIENT_SECRET); 57 | // 发请求 58 | String result = HttpUtil.get(loginUrl, paramMap); 59 | // 解析结果,获取auth 60 | JSONObject resultObj = JSON.parseObject(result); 61 | JSONObject resultData = resultObj.getJSONObject("data"); 62 | String auth = resultData.getString("token_type") 63 | + " " + resultData.getString("token"); 64 | log.info("青龙面板登录成功,auth:" + auth); 65 | return auth; 66 | } 67 | 68 | /** 69 | * 获取环境变量 70 | * @param auth 登录成功后返回的auth 71 | * @param qlAddr 青龙面板地址(未传则使用默认值) 72 | * @return 所有环境变量(id、name、value、remarks、status、createdAt、updatedAt、position、timestamp) 73 | */ 74 | public static JSONArray getEnvs(String auth, String qlAddr) { 75 | log.info("进入青龙面板获取环境变量接口"); 76 | if (StrUtil.isNotEmpty(qlAddr)) { 77 | log.info("使用自定义青龙面板地址:" + qlAddr); 78 | } else { 79 | log.info("使用默认青龙面板地址:" + QL_ADDR); 80 | } 81 | // 获取环境变量url 82 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 83 | String getEnvsUrl = qlAddrUrl + "/open/envs?searchValue="; 84 | // 发请求 85 | String result = HttpRequest.get(getEnvsUrl) 86 | .header("Authorization", auth) 87 | .execute().body(); 88 | // 解析结果,获取环境变量列表 89 | System.out.println(result); 90 | JSONObject resultObj = JSON.parseObject(result); 91 | JSONArray envList = resultObj.getJSONArray("data"); 92 | log.info("青龙面板获取环境变量成功"); 93 | return envList; 94 | } 95 | 96 | /** 97 | * 新增环境变量 98 | * @param auth 登录成功后返回的auth 99 | * @param qlAddr 青龙面板地址(未传则使用默认值) 100 | * @param envInfo 环境变量信息(name、value、remarks) 101 | * @return 新增后的环境变量信息 102 | */ 103 | public static JSONArray insertEnv(String auth, String qlAddr, JSONObject envInfo) { 104 | log.info("进入青龙面板新增环境变量接口"); 105 | if (StrUtil.isNotEmpty(qlAddr)) { 106 | log.info("使用自定义青龙面板地址:" + qlAddr); 107 | } else { 108 | log.info("使用默认青龙面板地址:" + QL_ADDR); 109 | } 110 | // 新增环境变量url 111 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 112 | String insertEnvsUrl = qlAddrUrl + "/open/envs"; 113 | // 请求参数 114 | JSONArray envInfos = new JSONArray(); 115 | envInfos.add(envInfo); 116 | // 发请求 117 | String result = HttpRequest.post(insertEnvsUrl) 118 | .header("Authorization", auth) 119 | .header("content-type", "application/json") 120 | .body(JSON.toJSONString(envInfos)) 121 | .execute().body(); 122 | // 解析结果 123 | JSONObject resultObj = JSON.parseObject(result); 124 | JSONArray envList = resultObj.getJSONArray("data"); 125 | log.info("青龙面板新增环境变量成功"); 126 | return envList; 127 | } 128 | 129 | /** 130 | * 更新环境变量 131 | * @param auth 登录成功后返回的auth 132 | * @param qlAddr 青龙面板地址(未传则使用默认值) 133 | * @param envInfo 环境变量信息(id、name、value、remarks) 134 | * @return 更新后的环境变量信息 135 | */ 136 | public static JSONObject updateEnv(String auth, String qlAddr, JSONObject envInfo) { 137 | log.info("进入青龙面板更新环境变量接口"); 138 | if (StrUtil.isNotEmpty(qlAddr)) { 139 | log.info("使用自定义青龙面板地址:" + qlAddr); 140 | } else { 141 | log.info("使用默认青龙面板地址:" + QL_ADDR); 142 | } 143 | // 更新环境变量url 144 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 145 | String updateEnvsUrl = qlAddrUrl + "/open/envs"; 146 | // 请求参数 147 | JSONObject param = new JSONObject(); 148 | param.put("id", envInfo.get("id")); 149 | param.put("name", envInfo.get("name")); 150 | param.put("value", envInfo.get("value")); 151 | param.put("remarks", envInfo.get("remarks")); 152 | // 发请求 153 | String result = HttpRequest.put(updateEnvsUrl) 154 | .header("Authorization", auth) 155 | .header("content-type", "application/json") 156 | .body(JSON.toJSONString(param)) 157 | .execute().body(); 158 | // 解析结果 159 | JSONObject resultObj = JSON.parseObject(result); 160 | JSONObject envObj = resultObj.getJSONObject("data"); 161 | log.info("青龙面板更新环境变量成功"); 162 | return envObj; 163 | } 164 | 165 | /** 166 | * 删除环境变量 167 | * @param auth 登录成功后返回的auth 168 | * @param qlAddr 青龙面板地址(未传则使用默认值) 169 | * @param envInfo 环境变量信息(id) 170 | */ 171 | public static void deleteEnv(String auth, String qlAddr, JSONObject envInfo) { 172 | log.info("进入青龙面板删除环境变量接口"); 173 | if (StrUtil.isNotEmpty(qlAddr)) { 174 | log.info("使用自定义青龙面板地址:" + qlAddr); 175 | } else { 176 | log.info("使用默认青龙面板地址:" + QL_ADDR); 177 | } 178 | // 更新环境变量url 179 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 180 | String deleteEnvsUrl = qlAddrUrl + "/open/envs"; 181 | // 请求参数 182 | List paramList = new ArrayList<>(); 183 | paramList.add(envInfo.getString("id")); 184 | // 发请求 185 | String result = HttpRequest.delete(deleteEnvsUrl) 186 | .header("Authorization", auth) 187 | .header("content-type", "application/json") 188 | .body(JSON.toJSONString(paramList)) 189 | .execute().body(); 190 | // 解析结果 191 | log.info("青龙面板删除环境变量成功"); 192 | } 193 | 194 | /** 195 | * 启用环境变量 196 | * @param auth 登录成功后返回的auth 197 | * @param qlAddr 青龙面板地址(未传则使用默认值) 198 | * @param envInfo 环境变量信息(id) 199 | */ 200 | public static void enableEnv(String auth, String qlAddr, JSONObject envInfo) { 201 | log.info("进入青龙面板启用环境变量接口"); 202 | if (StrUtil.isNotEmpty(qlAddr)) { 203 | log.info("使用自定义青龙面板地址:" + qlAddr); 204 | } else { 205 | log.info("使用默认青龙面板地址:" + QL_ADDR); 206 | } 207 | // 更新环境变量url 208 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 209 | String enableEnvsUrl = qlAddrUrl + "/open/envs/enable"; 210 | // 请求参数 211 | List paramList = new ArrayList<>(); 212 | paramList.add(envInfo.getString("id")); 213 | // 发请求 214 | String result = HttpRequest.put(enableEnvsUrl) 215 | .header("Authorization", auth) 216 | .header("content-type", "application/json") 217 | .body(JSON.toJSONString(paramList)) 218 | .execute().body(); 219 | // 解析结果 220 | log.info("青龙面板启用环境变量成功"); 221 | } 222 | 223 | /** 224 | * 禁用环境变量 225 | * @param auth 登录成功后返回的auth 226 | * @param qlAddr 青龙面板地址(未传则使用默认值) 227 | * @param envInfo 环境变量信息(id) 228 | */ 229 | public static void disableEnv(String auth, String qlAddr, JSONObject envInfo) { 230 | log.info("进入青龙面板禁用环境变量接口"); 231 | if (StrUtil.isNotEmpty(qlAddr)) { 232 | log.info("使用自定义青龙面板地址:" + qlAddr); 233 | } else { 234 | log.info("使用默认青龙面板地址:" + QL_ADDR); 235 | } 236 | // 更新环境变量url 237 | String qlAddrUrl = StrUtil.isNotEmpty(qlAddr) ? qlAddr : QL_ADDR; 238 | String disableEnvsUrl = qlAddrUrl + "/open/envs/disable"; 239 | // 请求参数 240 | List paramList = new ArrayList<>(); 241 | paramList.add(envInfo.getString("id")); 242 | // 发请求 243 | String result = HttpRequest.put(disableEnvsUrl) 244 | .header("Authorization", auth) 245 | .header("content-type", "application/json") 246 | .body(JSON.toJSONString(paramList)) 247 | .execute().body(); 248 | // 解析结果 249 | log.info("青龙面板禁用环境变量成功"); 250 | } 251 | } 252 | --------------------------------------------------------------------------------