package com.ruoyi.cmd; import com.ruoyi.utils.process.CmdUtils; import com.sun.jna.Platform; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.annotation.Order; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: 外部程序启动 * @ClassName: startup * @Author: 刘苏义 * @Date: 2023年09月22日9:56:57 **/ @Slf4j(topic = "cmd") @Component public class startup{ // //minio // String minioName = "minio.exe"; // @Value("${minio.accessKey}") // String accessKey; // @Value("${minio.secretKey}") // String secretKey; // @Value("${minio.path}") // String path; // @Value("${minio.enabled}") // Boolean minioEnabled; // // //mediamtx // String mediamtxName = "mediamtx.exe"; // @Value("${mediamtx.enabled}") // Boolean mediamtxEnabled; // //redis // String redisName = "redis-server.exe"; /** * 程序初始化启动redis * 刘苏义 * 2023/9/22 10:38:41 */ // @Override // public void initialize(ConfigurableApplicationContext applicationContext) { // if (Platform.isWindows()) { // String workingDir = System.getProperty("user.dir") + File.separator + "server" + File.separator + "redis"; // String exePath = workingDir +File.separator+ redisName; // List cmd = new ArrayList<>(); // cmd.add(exePath); // if (CmdUtils.isProcessRunning(redisName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(redisName); // } // // 启动后台进程 // CmdUtils.commandStart(workingDir, redisName, cmd, null); // // 启动cmd窗口 // //String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; // //CmdUtils.commandStart(command); // } // } // @PostConstruct // @Order(1) // public void init() { // if (minioEnabled) { // log.info("初始化启动minio"); // if (Platform.isWindows()) { // String workingDir = System.getProperty("user.dir") + File.separator + "server" + File.separator + "minio"; // String exePath = workingDir + File.separator + minioName; // Map env = new HashMap<>(); // env.put("MINIO_ROOT_USER", accessKey); // env.put("MINIO_ROOT_PASSWORD", secretKey); // List cmd = new ArrayList<>(); // cmd.add(exePath); // cmd.add("server"); // cmd.add(path); // cmd.add("--console-address=0.0.0.0:9000"); // cmd.add("--address=0.0.0.0:9001"); // if (CmdUtils.isProcessRunning(minioName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(minioName); // } // // 启动后台进程 // CmdUtils.commandStart(workingDir, minioName, cmd, env); // // 启动cmd窗口 // //String[] command = {"cmd", "/c", "start", exePath}; // //CmdUtils.commandStart(command); // } // } // if (mediamtxEnabled) { // log.info("初始化启动mediaMTX"); // if (Platform.isWindows()) { // String workingDir = System.getProperty("user.dir") + File.separator + "server" + File.separator + "mediamtx"; // String exePath = workingDir + File.separator + mediamtxName; // String ymlPath = workingDir + File.separator + "mediamtx.yml"; // List cmd = new ArrayList<>(); // cmd.add(exePath); // // cmd.add(ymlPath); // if (CmdUtils.isProcessRunning(mediamtxName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(mediamtxName); // } // // 启动后台进程 // CmdUtils.commandStart(workingDir, mediamtxName, cmd, null); // // 启动cmd窗口 // //String[] command = {"cmd","/c","start",exePath,ymlPath}; // //CmdUtils.commandStart(command); // } // } // } // // @PreDestroy // public void destroy() { // if (minioEnabled) { // log.info("销毁minio"); // if (CmdUtils.isProcessRunning(minioName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(minioName); // } // } // if (mediamtxEnabled) { // log.info("销毁mediaMtx"); // if (CmdUtils.isProcessRunning(mediamtxName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(mediamtxName); // } // } // if (true) { // log.info("销毁redis"); // if (CmdUtils.isProcessRunning(redisName)) { // // 进程已经在运行,结束该进程 // CmdUtils.stopProcess(redisName); // } // } // } }