/*
package com.ruoyi.common.utils.file;
import com.jcraft.jsch.*;
import java.io.*;

*/
/**
 * @author Mr_gzy
 *//*

public class SshCertUploader {

    public static void uploadWuploadWithSshCert(    ) throws JSchException, SftpException, IOException {
        uploadWithSshCert("/root/WLCB-1.pem", null, "root", "8.130.100.72", 22, "C:\\FedoraMediaWriter.log", "/root/FedoraMediaWriter.log");
    }
    */
/**
     * 使用SSH证书上传文件
     * @param pemFilePath PEM密钥文件路径
     * @param pemPassphrase 密钥密码(没有则为null)
     * @param username 远程用户名
     * @param host 远程主机地址(内网IP)
     * @param port SSH端口(通常22)
     * @param localFilePath 本地文件路径
     * @param remoteFilePath 远程文件路径
     *//*

    public static void uploadWithSshCert(String pemFilePath, String pemPassphrase,
                                         String username, String host, int port,
                                         String localFilePath, String remoteFilePath)
            throws JSchException, IOException, SftpException {

        JSch jsch = new JSch();
        Session session = null;
        ChannelSftp channel = null;

        try {
            // 1. 添加私钥文件
            if (pemPassphrase != null) {
                jsch.addIdentity(pemFilePath, pemPassphrase);
            } else {
                jsch.addIdentity(pemFilePath);
            }

            // 2. 创建会话
            session = jsch.getSession(username, host, port);

            // 3. 配置会话(生产环境应验证主机密钥)
            session.setConfig("StrictHostKeyChecking", "no");
            session.setConfig("PreferredAuthentications", "publickey");

            // 4. 连接会话
            session.connect();

            // 5. 创建SFTP通道
            channel = (ChannelSftp) session.openChannel("sftp");
            channel.connect();

            // 6. 创建父目录(如果需要)
            createRemoteDir(channel, remoteFilePath);

            // 7. 上传文件
            try (InputStream inputStream = new FileInputStream(localFilePath)) {
                channel.put(inputStream, remoteFilePath);
            }

            System.out.println("文件上传成功: " + remoteFilePath);

        } finally {
            // 8. 关闭连接
            if (channel != null) channel.disconnect();
            if (session != null) session.disconnect();
        }
    }

    */
/**
     * 创建远程目录(包括父目录)
     *//*

    private static void createRemoteDir(ChannelSftp channel, String remotePath) throws SftpException {
        String dirPath = remotePath.substring(0, remotePath.lastIndexOf('/'));
        String[] dirs = dirPath.split("/");

        StringBuilder currentPath = new StringBuilder();
        for (String dir : dirs) {
            if (dir.isEmpty()) continue;

            currentPath.append("/").append(dir);
            try {
                channel.mkdir(currentPath.toString());
            } catch (SftpException e) {
                if (e.id != ChannelSftp.SSH_FX_FAILURE) {
                    throw e;
                }
                // 目录已存在则忽略
            }
        }
    }

    public static void main(String[] args) {
        try {
            // 示例: 使用内网SSH证书上传文件
            uploadWithSshCert(
                    // PEM密钥路径
                    "D:\\智点\\WLCB-1.pem",
                    // 密钥密码(没有则为null)
                    null,
                    // 远程用户名
                    "root",
                    // 内网服务器IP
                    "8.130.100.72",
                    // SSH端口
                    22,
                    // 本地文件路径
                    "C:\\FedoraMediaWriter.log",
                    // 远程文件路径
                    "/root/FedoraMediaWriter.log"
            );
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
*/
