package org.jeecg.modules.adweb.common.service;

import org.jeecg.modules.adweb.common.util.ShellSSH2Util;
import org.jeecg.modules.adweb.server.entity.AdwebServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.io.File;

/**
 * shell脚本调用
 *
 * @author jerry-
 */
@Service
public class ShellService {
    /** 日志 */
    private static Logger logger = LoggerFactory.getLogger(ShellService.class);

    /**
     * 创建共享站点 命令
     *
     * @param cmd 控制台返回监听器
     * @param host 建站连接测试环境配置 域名
     * @param port 端口
     * @param username
     * @param password
     * @param stdoutListener
     */
    public void createShareSiteByPwd(
            String cmd,
            String host,
            int port,
            String username,
            String password,
            ShellSSH2Util.StdoutListener stdoutListener) {
        exceShellByPwd(cmd, host, port, username, password, stdoutListener);
    }

    /**
     * 执行远程Shell脚本 (通过用户名和密码)
     *
     * @param cmd 命令
     * @param host 建站连接测试环境配置 域名
     * @param port 端口
     * @param username
     * @param password
     * @param stdoutListener
     * @param stdoutListener 控制台输出监听器
     */
    public void exceShellByPwd(
            String cmd,
            String host,
            int port,
            String username,
            String password,
            ShellSSH2Util.StdoutListener stdoutListener) {
        long currentTimeMillis = System.currentTimeMillis();
        ShellSSH2Util.execmdByPwd(host, port, username, password, cmd, stdoutListener);
        long currentTimeMillis1 = System.currentTimeMillis();
        logger.info("花费时间：{}", currentTimeMillis1 - currentTimeMillis);
    }

    /**
     * 执行远程Shell脚本
     *
     * @param cmd 命令
     * @param stdoutListener 控制台输出监听器
     */
    public void exceShell(
            String cmd, ShellSSH2Util.StdoutListener stdoutListener, AdwebServer serverInfo) {
        long currentTimeMillis = System.currentTimeMillis();
        File pemFile = new File(serverInfo.getServerPem());
        ShellSSH2Util.execmd(
                serverInfo.getServerIp(), serverInfo.getUserName(), pemFile, cmd, stdoutListener);
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("花费时间：" + (currentTimeMillis1 - currentTimeMillis));
    }
}
