diff --git a/agent-go/tmp/test.go b/agent-go/tmp/test.go index 1ad4251..605d2d8 100644 --- a/agent-go/tmp/test.go +++ b/agent-go/tmp/test.go @@ -1,10 +1,12 @@ 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) { @@ -69,24 +71,42 @@ func BasicDownloadFileHTTP(downloadUrl string, proxyUrl string, proxyUser string return true, resultLog } -// quick sort function +func splitTest() { + + bucketName := "123" + suffix := "" + if strings.Contains(bucketName, "/") { + splitN := strings.SplitN(bucketName, "/", 2) + bucketName = splitN[0] + if !strings.HasSuffix(splitN[1], "/") { + splitN[1] = splitN[1] + "/" + } + suffix = splitN[1] + + } + + fmt.Println(bucketName) + fmt.Println(suffix) +} 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) - } - } + //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) + // } + //} } diff --git a/agent-operator/CmiiMinioOperator.go b/agent-operator/CmiiMinioOperator.go index 3757999..903b1c7 100644 --- a/agent-operator/CmiiMinioOperator.go +++ b/agent-operator/CmiiMinioOperator.go @@ -2,7 +2,6 @@ package main import ( "github.com/minio/minio-go" - "os" "strings" ) @@ -20,6 +19,16 @@ type CmiiMinioOperator struct { OctopusBucketName string } +var DefaultCmiiMinioOperator = newInstance() + +func newInstance() *CmiiMinioOperator { + op := &CmiiMinioOperator{} + + op.buildCmiiMinioOperator() + + return op +} + const ( DefaultLocalEndpoint = "10.250.0.100:9000" DefaultPublicEndpoint = "42.192.52.227:9000" @@ -29,7 +38,7 @@ const ( DefaultOctopusBucketName = "octopus" ) -func (op CmiiMinioOperator) buildCmiiMinioOperator() { +func (op *CmiiMinioOperator) buildCmiiMinioOperator() { var err error if op.LocalClient == nil { @@ -50,7 +59,7 @@ func (op CmiiMinioOperator) buildCmiiMinioOperator() { if op.DemoClient == nil { // 初始化Minio客户端对象。 - op.DemoClient, err = minio.New(DemoEndpoint, DefaultAccessKeyID, DefaultSecretAccessKey, false) + op.DemoClient, err = minio.New(DemoEndpoint, DefaultAccessKeyID, DefaultSecretAccessKey, true) if err != nil { log.ErrorF("[buildCmiiMinioOperator] - build for DemoClient error ! => %s", err.Error()) } @@ -59,43 +68,45 @@ func (op CmiiMinioOperator) buildCmiiMinioOperator() { log.DebugF("[buildCmiiMinioOperator] - build client success !") } -func (op CmiiMinioOperator) UploadToLocalOctopus(filePath, fileName string) bool { - op.buildCmiiMinioOperator() +func (op *CmiiMinioOperator) UploadToLocalOctopus(filePath, fileName string) bool { return op.uploadToOctopus(op.LocalClient, filePath, fileName) } -func (op CmiiMinioOperator) UploadToPublicOctopus(filePath, fileName string) bool { +func (op *CmiiMinioOperator) UploadToPublicOctopus(filePath, fileName string) bool { - op.buildCmiiMinioOperator() return op.uploadToOctopus(op.PublicClient, filePath, fileName) } -func (op CmiiMinioOperator) UploadToDemo(bucketName, filePath, fileName string) bool { +func (op *CmiiMinioOperator) UploadToDemo(bucketName, filePath, fileName string) bool { - op.buildCmiiMinioOperator() return op.uploadToOss(op.DemoClient, bucketName, filePath, fileName) } -func (op CmiiMinioOperator) uploadToOctopus(client *minio.Client, filePath, fileName string) bool { +func (op *CmiiMinioOperator) uploadToOctopus(client *minio.Client, filePath, fileName string) bool { return op.uploadToOss(client, DefaultOctopusBucketName, filePath, fileName) } -func (op CmiiMinioOperator) uploadToOss(client *minio.Client, bucketName, filePath, fileName string) bool { +func (op *CmiiMinioOperator) uploadToOss(client *minio.Client, bucketName, filePath, fileName string) bool { if !strings.HasSuffix(filePath, "/") { filePath += "/" } - // 打开要上传的文件 - file, err := os.Open(filePath + fileName) - if err != nil { - log.ErrorF("[uploadToOss] - file %s open error! %s", filePath+fileName, err.Error()) + realFileName := fileName + // 解析bucket上传的真实名称 + if strings.Contains(bucketName, "/") { + splitN := strings.SplitN(bucketName, "/", 2) + bucketName = splitN[0] + if !strings.HasSuffix(splitN[1], "/") { + splitN[1] = splitN[1] + "/" + } + realFileName = splitN[1] + fileName } - defer file.Close() // 使用PutObject上传文件 - n, err := client.PutObject(bucketName, fileName, file, -1, minio.PutObjectOptions{}) + // realFileName ==> tmp/123/123.txt + n, err := client.FPutObject(bucketName, realFileName, filePath+fileName, minio.PutObjectOptions{}) if err != nil { log.ErrorF("[uploadToOss] - upload %s error %s", filePath+fileName, err.Error()) return false diff --git a/agent-operator/CmiiMinioOperator_test.go b/agent-operator/CmiiMinioOperator_test.go index 71f04f4..edec949 100644 --- a/agent-operator/CmiiMinioOperator_test.go +++ b/agent-operator/CmiiMinioOperator_test.go @@ -3,8 +3,7 @@ package main import "testing" func TestCmiiMinioOperator_UploadToDemo(t *testing.T) { - operator := &CmiiMinioOperator{} - operator.UploadToDemo("cmlc-installation/tmp/", " C:\\Users\\wddsh\\Downloads", "kodibot-win-x64.zip") + DefaultCmiiMinioOperator.UploadToDemo("cmlc-installation", "/home/wdd/Downloads/", "go1.22.1.linux-amd64.tar.gz") }