[agent] - bastion mode init

This commit is contained in:
zeaslity
2024-04-17 11:38:20 +08:00
parent fb1bda3077
commit f20d5e549c
4 changed files with 55 additions and 96 deletions

View File

@@ -1,15 +1,34 @@
package a_init
import (
"bufio"
"fmt"
"os"
"strings"
"wdd.io/agent-go/a_agent"
"wdd.io/agent-go/a_executor"
"wdd.io/agent-go/a_status"
)
/*
完全离线模式
交互模式 手动运行 接受输入并且执行指令 类似于cli
1. 环境信息检测打印输出
2. 接受用户输入 执行指令
3. 功能
3.1 安装docker
3.2 安装docker-compose
3.3 安装minio
3.4 安装rabbitmq
3.5 安装kubernetes
*/
// BastionModeInit 堡垒机模式 完全离线模式
func BastionModeInit() {
// Build For Operator
agentServerInfo := &a_agent.AgentServerInfo{
_ = &a_agent.AgentServerInfo{
ServerName: "BastionSingle",
ServerIPPbV4: "127.0.0.1",
ServerIPInV4: "127.0.0.1",
@@ -40,16 +59,36 @@ func BastionModeInit() {
}
// re-get agentInfo from status module
agentInfo := a_status.ReportAgentInfo()
refreshAgentInfoByStatusInfo(agentInfo, agentServerInfo)
buildAgentOsOperator(agentInfo, agentServerInfo)
//agentInfo := a_status.ReportAgentInfo()
//refreshAgentInfoByStatusInfo(agentInfo, agentServerInfo)
//buildAgentOsOperator(agentInfo, agentServerInfo)
// install docker
agentOsOperator := a_executor.AgentOsOperatorCache
//agentOsOperator := a_executor.AgentOsOperatorCache
// boot up minio & rabbitmq
agentOsOperator.InstallDockerFromLocalExec(nil)
agentOsOperator.InstallDockerComposeFromLocalExec()
//agentOsOperator.InstallDockerFromLocalExec(nil)
//agentOsOperator.InstallDockerComposeFromLocalExec()
// build for socks server
reader := bufio.NewReader(os.Stdin)
for {
fmt.Print("> ")
text, _ := reader.ReadString('\n')
text = strings.TrimSpace(text)
if text == "quit" {
break
} else if text == "help" {
fmt.Println("Available commands:")
fmt.Println("- help: show this help message")
fmt.Println("- quit: exit the program")
fmt.Println("- [command name]: execute a command")
} else {
// Execute the command
fmt.Println("Executing command:", text)
}
}
}

View File

@@ -21,7 +21,10 @@ func main() {
flag.Parse()
if mode == "bastion" {
// 堡垒机模式
// 初始化堡垒机模式
a_init.BastionModeInit()
flag.StringVar(&agentServerInfoConfFile, "agentServerInfoConfFile", "", "agent server info conf file")
return
}

View File

@@ -2,75 +2,9 @@ package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"strings"
)
func BasicDownloadFileHTTP(downloadUrl string, proxyUrl string, proxyUser string, proxyPass string, desFile string) (downloadOk bool, resultLog []string) {
// 解析下载URL
_, err := url.Parse(downloadUrl)
if err != nil {
resultLog = append(resultLog, "Error parsing download URL: "+err.Error())
return false, resultLog
}
// 创建文件
out, err := os.Create(desFile)
if err != nil {
resultLog = append(resultLog, "Error creating file: "+err.Error())
return false, resultLog
}
defer out.Close()
// 创建HTTP客户端
client := &http.Client{}
// 如果提供了代理URL
if proxyUrl != "" {
// 解析代理URL
proxyURL, err := url.Parse(proxyUrl)
if err != nil {
resultLog = append(resultLog, "Error parsing proxy URL: "+err.Error())
return false, resultLog
}
// 设置HTTP代理
transport := &http.Transport{
Proxy: func(req *http.Request) (*url.URL, error) {
req.SetBasicAuth(proxyUser, proxyPass)
return proxyURL, nil
},
}
client.Transport = transport
}
// 发送HTTP GET请求
resp, err := client.Get(downloadUrl)
if err != nil {
resultLog = append(resultLog, "Error making GET request: "+err.Error())
return false, resultLog
}
defer resp.Body.Close()
// 检查HTTP响应状态码
if resp.StatusCode != http.StatusOK {
resultLog = append(resultLog, "Server returned HTTP status "+resp.Status)
return false, resultLog
}
// 将HTTP响应内容写入文件
_, err = io.Copy(out, resp.Body)
if err != nil {
resultLog = append(resultLog, "Error writing to file: "+err.Error())
return false, resultLog
}
return true, resultLog
}
func splitTest() {
bucketName := "123"
@@ -93,20 +27,4 @@ func main() {
splitTest()
//socksProxyUrl := "socks5://192.168.35.71:22888"
//httpProxyUrl := "http://192.168.35.71:22808"
//downloadOk, resultLog := BasicDownloadFileHTTP(
// "https://happybirthday.107421.xyz/octopus-agent/octopus-agent_linux_amd64_2024-03-29-17-47-14",
// httpProxyUrl,
// "zeaslity",
// "password",
// "octopus-agent_linux_1232",
//)
//if downloadOk {
// println("File downloaded successfully")
//} else {
// for _, log := range resultLog {
// println(log)
// }
//}
}