package main

import (
	"bytes"
	"fmt"
	"log"
	"os"
	"time"

	"github.com/jlaffaye/ftp"
)

/*
	联通友华通信路由器PT952G获取root密码
	时间：：2025年02月03日 星期五 22时41分09秒
*/

func main() {

	ftp_server_addr := "192.168.1.1"

	if !test_port(ftp_server_addr, 21, 2*time.Second) {
		fmt.Printf("目标 %s:%d 无法访问\n", ftp_server_addr, 21)
		return
	}

	// 这里可以继续连接 FTP
	fmt.Println("目标 IP 可达，继续连接 FTP...")

	// 使用禁用 UTF-8 的选项连接到 FTP 服务器
	conn, err := ftp.Dial(ftp_server_addr+":21", ftp.DialWithDisabledUTF8(true))
	if err != nil {
		log.Fatalf("无法连接到 FTP 服务器: %v", err)
	}
	defer conn.Quit()

	// 登录 FTP 服务器
	err = conn.Login("e8ftp", "e8ftp")
	if err != nil {
		log.Fatalf("登录失败: %v", err)
	}

	// 切换到目标目录
	err = conn.ChangeDir("/var/config/")
	if err != nil {
		log.Fatalf("切换目录失败: %v", err)
	}

	// 下载文件
	resp, err := conn.Retr("lastgood.xml")
	if err != nil {
		log.Fatalf("无法下载文件: %v", err)
	}
	defer resp.Close()

	// 将文件内容读入内存
	buf := new(bytes.Buffer)
	_, err = buf.ReadFrom(resp)
	if err != nil {
		log.Fatalf("读取文件失败: %v", err)
	}

	// 保存到本地文件
	localFileName := "lastgood.xml"
	err = os.WriteFile(localFileName, buf.Bytes(), 0644)
	if err != nil {
		log.Fatalf("保存本地文件失败: %v", err)
	}

	fmt.Printf("文件下载完成并保存为 %s\n", localFileName)

	_search()
}
