diff --git a/.gitignore b/.gitignore index e9e71f8..1646d84 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,7 @@ dist .vscode .idea forge -dev_*.sh \ No newline at end of file +dev_*.sh +*.tar +*.tgz +*.tar.gz \ No newline at end of file diff --git a/go.mod b/go.mod index d25be03..37c9d95 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,13 @@ module yizhisec.com/hsv2/forge go 1.25.2 require ( - gitea.loveuer.com/yizhisec/pkg3 v0.0.1 + github.com/fatih/color v1.18.0 + github.com/google/uuid v1.6.0 github.com/samber/lo v1.52.0 github.com/spf13/cobra v1.10.1 ) require ( - github.com/fatih/color v1.18.0 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect diff --git a/go.sum b/go.sum index 8a2e9ee..359b624 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -gitea.loveuer.com/yizhisec/pkg3 v0.0.1 h1:bcT58K6W7TQ5u7Lt7B5JxrVbU/riXwcrshd2lu+Q22c= -gitea.loveuer.com/yizhisec/pkg3 v0.0.1/go.mod h1:Ws/tNONjDC4BLdOXAe+wPD6xk3H7TIXvh2de8qKqQpc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= diff --git a/internal/cmd/installcmd/check.go b/internal/cmd/installcmd/check.go index 23977f2..caeeacd 100644 --- a/internal/cmd/installcmd/check.go +++ b/internal/cmd/installcmd/check.go @@ -31,7 +31,7 @@ func Check() *cobra.Command { _cmd.Flags().StringVar(&workdir, "workdir", "/root/hs-installation", "Working directory") _cmd.Flags().StringVar(&target, "target", "self", "Target") - _cmd.Flags().BoolVar(&ignoreDisk, "ignore-check-disk", false, "ignore disk requirement check result") + _cmd.Flags().BoolVar(&ignoreDisk, "ignore-kheck-disk", false, "ignore disk requirement check result") _cmd.Flags().BoolVar(&ignoreMemory, "ignore-check-memory", false, "ignore memory requirement check result") _cmd.Flags().BoolVar(&ignoreCPU, "ignore-check-cpu", false, "ignore cpu requirement check result") diff --git a/internal/cmd/make.go b/internal/cmd/make.go index d8807cf..4e25550 100644 --- a/internal/cmd/make.go +++ b/internal/cmd/make.go @@ -3,11 +3,11 @@ package cmd import ( "os" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/spf13/cobra" "yizhisec.com/hsv2/forge/internal/cmd/makecmd" "yizhisec.com/hsv2/forge/internal/controller/maker" "yizhisec.com/hsv2/forge/internal/opt" + "yizhisec.com/hsv2/forge/pkg/logger" ) func makeCmd() *cobra.Command { diff --git a/internal/cmd/makecmd/client.go b/internal/cmd/makecmd/client.go index 613709d..8d703bf 100644 --- a/internal/cmd/makecmd/client.go +++ b/internal/cmd/makecmd/client.go @@ -9,10 +9,10 @@ import ( "os/exec" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/spf13/cobra" "yizhisec.com/hsv2/forge/internal/controller/maker" "yizhisec.com/hsv2/forge/internal/opt" + "yizhisec.com/hsv2/forge/pkg/logger" tc "yizhisec.com/hsv2/forge/pkg/tool/client" ) diff --git a/internal/cmd/makecmd/minio.go b/internal/cmd/makecmd/minio.go index 25204de..fe109ad 100644 --- a/internal/cmd/makecmd/minio.go +++ b/internal/cmd/makecmd/minio.go @@ -2,6 +2,8 @@ package makecmd import ( "fmt" + "os" + "path/filepath" "github.com/spf13/cobra" "yizhisec.com/hsv2/forge/internal/controller/maker" @@ -24,5 +26,84 @@ func Minio() *cobra.Command { _cmd.Flags().IntVar(&storage, "storage-size", 100, "Storage size(GB)") + _cmd.AddCommand(minioBase()) + + return _cmd +} + +func minioBase() *cobra.Command { + var ( + push bool + ) + + _cmd := &cobra.Command{ + Use: "base", + Short: "Make Minio Image Rely(minio initer)", + RunE: func(cmd *cobra.Command, args []string) error { + const ( + DOCKERFILE = `FROM %s +COPY mc /usr/local/bin/mc +RUN sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories && \ + apk update && \ + apk add curl wget tzdata && chmod +x /usr/local/bin/mc && \ + mkdir -p /data && \ + wget https://artifactory.yizhisec.com/artifactory/filestore/hsv2/db/ipv4.ipdb -O /data/ipv4.ipdb +` + ) + var ( + err error + mk = maker.NewMaker(opt.Cfg.Make.Dir) + tmpDir = filepath.Join(os.TempDir(), "minio-base") + mcFile = filepath.Join(tmpDir, "mc") + dockerfile = filepath.Join(tmpDir, "Dockerfile") + ) + + if err = os.MkdirAll(tmpDir, 0755); err != nil { + return err + } + defer os.RemoveAll(tmpDir) + + if err = mk.RunCommand(cmd.Context(), + tmpDir, + fmt.Sprintf("docker run -d --name minio-base %s server /data", opt.IMAGE_MINIO), + ); err != nil { + return err + } + + defer mk.RunCommand(cmd.Context(), tmpDir, "docker rm -f minio-base") + + if err = mk.RunCommand(cmd.Context(), + tmpDir, + fmt.Sprintf("docker cp minio-base:/usr/bin/mc %s", mcFile), + ); err != nil { + return err + } + + if err = os.WriteFile(dockerfile, []byte(fmt.Sprintf(DOCKERFILE, opt.IMAGE_ALPINE)), 0644); err != nil { + return err + } + + if err = mk.RunCommand(cmd.Context(), + tmpDir, + fmt.Sprintf("docker build --network host -t %s -f %s %s", opt.IMAGE_MINIO_BASE, dockerfile, tmpDir), + ); err != nil { + return err + } + + if push { + if err = mk.RunCommand(cmd.Context(), + tmpDir, + fmt.Sprintf("docker push %s", opt.IMAGE_MINIO_BASE), + ); err != nil { + return err + } + } + + return nil + }, + } + + _cmd.Flags().BoolVar(&push, "push", false, "Push image to registry") + return _cmd } diff --git a/internal/cmd/root.go b/internal/cmd/root.go index bb4148f..dc2414f 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -3,7 +3,6 @@ package cmd import ( "context" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/spf13/cobra" "yizhisec.com/hsv2/forge/internal/opt" ) @@ -12,14 +11,6 @@ var rootCmd = &cobra.Command{ Use: "forge", Short: "Forge is a tool for building and installing hsv2", Long: `A tool for managing build and installation workflows for hsv2.`, - PersistentPreRunE: func(cmd *cobra.Command, args []string) error { - if opt.Cfg.Debug { - logger.SetLogLevel(logger.LogLevelDebug) - logger.Warn("running in debug mode") - } - - return nil - }, } func Execute(ctx context.Context) error { diff --git a/internal/controller/installer/installer.check.go b/internal/controller/installer/installer.check.go index b7fa36b..e9ae639 100644 --- a/internal/controller/installer/installer.check.go +++ b/internal/controller/installer/installer.check.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/syscheck" ) diff --git a/internal/controller/installer/installer.go b/internal/controller/installer/installer.go index 7616543..dfbef05 100644 --- a/internal/controller/installer/installer.go +++ b/internal/controller/installer/installer.go @@ -9,7 +9,7 @@ import ( "os/exec" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) type installer struct { diff --git a/internal/controller/installer/installer.k0s.go b/internal/controller/installer/installer.k0s.go index 81cafdd..b22ef3b 100644 --- a/internal/controller/installer/installer.k0s.go +++ b/internal/controller/installer/installer.k0s.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/samber/lo" + "yizhisec.com/hsv2/forge/pkg/logger" ) type K0sOpt func(*k0sOpt) diff --git a/internal/controller/installer/installer.prepare.go b/internal/controller/installer/installer.prepare.go index 5c0876a..f2bfde6 100644 --- a/internal/controller/installer/installer.prepare.go +++ b/internal/controller/installer/installer.prepare.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) func (i *installer) Prepare(ctx context.Context) error { diff --git a/internal/controller/maker/app.client.go b/internal/controller/maker/app.client.go index 616f0d4..82d8e45 100644 --- a/internal/controller/maker/app.client.go +++ b/internal/controller/maker/app.client.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.front.go b/internal/controller/maker/app.front.go index fdc2a40..070c393 100644 --- a/internal/controller/maker/app.front.go +++ b/internal/controller/maker/app.front.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.gateway.go b/internal/controller/maker/app.gateway.go index ffed996..ca3c934 100644 --- a/internal/controller/maker/app.gateway.go +++ b/internal/controller/maker/app.gateway.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.helper.go b/internal/controller/maker/app.helper.go index 6970076..0161cc5 100644 --- a/internal/controller/maker/app.helper.go +++ b/internal/controller/maker/app.helper.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.mie.go b/internal/controller/maker/app.mie.go index bfb5d12..6bbc0d7 100644 --- a/internal/controller/maker/app.mie.go +++ b/internal/controller/maker/app.mie.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.nginx.go b/internal/controller/maker/app.nginx.go index 6ac4e87..ddf41a0 100644 --- a/internal/controller/maker/app.nginx.go +++ b/internal/controller/maker/app.nginx.go @@ -7,8 +7,8 @@ import ( "path/filepath" "strings" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/internal/opt" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.oem.go b/internal/controller/maker/app.oem.go index 3c96cea..686f6fc 100644 --- a/internal/controller/maker/app.oem.go +++ b/internal/controller/maker/app.oem.go @@ -7,8 +7,8 @@ import ( "os/exec" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/archiver" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/app.user.go b/internal/controller/maker/app.user.go index 92c5e65..74b5ce0 100644 --- a/internal/controller/maker/app.user.go +++ b/internal/controller/maker/app.user.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/binary.go b/internal/controller/maker/binary.go index 236f064..53ce109 100644 --- a/internal/controller/maker/binary.go +++ b/internal/controller/maker/binary.go @@ -4,8 +4,8 @@ import ( "context" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/archiver" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/client.pkg.go b/internal/controller/maker/client.pkg.go index 7361af0..58b84b2 100644 --- a/internal/controller/maker/client.pkg.go +++ b/internal/controller/maker/client.pkg.go @@ -8,8 +8,8 @@ import ( "path/filepath" "strings" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/samber/lo" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/command.go b/internal/controller/maker/command.go index 8a2afa7..d1f7b36 100644 --- a/internal/controller/maker/command.go +++ b/internal/controller/maker/command.go @@ -5,6 +5,8 @@ import ( "context" "fmt" "os/exec" + + "yizhisec.com/hsv2/forge/pkg/logger" ) func (m *maker) RunCommand(ctx context.Context, dir string, _cmds ...string) error { @@ -12,6 +14,8 @@ func (m *maker) RunCommand(ctx context.Context, dir string, _cmds ...string) err return nil } + logger.Debug("maker.RunCommand: dir = %s, cmds = %v", dir, _cmds) + for _, cmdStr := range _cmds { cmd := exec.CommandContext(ctx, "sh", "-c", cmdStr) diff --git a/internal/controller/maker/configmap.go b/internal/controller/maker/configmap.go index b78a234..36711a8 100644 --- a/internal/controller/maker/configmap.go +++ b/internal/controller/maker/configmap.go @@ -7,10 +7,10 @@ import ( "path/filepath" "strings" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/samber/lo" "yizhisec.com/hsv2/forge/pkg/downloader" "yizhisec.com/hsv2/forge/pkg/extractor" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/tool/random" ) diff --git a/internal/controller/maker/elastic.go b/internal/controller/maker/elastic.go index 9c75a7b..03d7899 100644 --- a/internal/controller/maker/elastic.go +++ b/internal/controller/maker/elastic.go @@ -7,9 +7,9 @@ import ( "os/exec" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/internal/opt" "yizhisec.com/hsv2/forge/pkg/archiver" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/emqx.go b/internal/controller/maker/emqx.go index 702c347..6307cde 100644 --- a/internal/controller/maker/emqx.go +++ b/internal/controller/maker/emqx.go @@ -5,7 +5,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/flannel.go b/internal/controller/maker/flannel.go index 0f74eb7..23a1ac3 100644 --- a/internal/controller/maker/flannel.go +++ b/internal/controller/maker/flannel.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/hsnet.go b/internal/controller/maker/hsnet.go index a0e83cf..063d15a 100644 --- a/internal/controller/maker/hsnet.go +++ b/internal/controller/maker/hsnet.go @@ -5,8 +5,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/archiver" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/image.go b/internal/controller/maker/image.go index 4ad9426..a80b5c3 100644 --- a/internal/controller/maker/image.go +++ b/internal/controller/maker/image.go @@ -6,8 +6,8 @@ import ( "os/exec" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "github.com/samber/lo" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/image_test.go b/internal/controller/maker/image_test.go index 90c10c0..132b4e6 100644 --- a/internal/controller/maker/image_test.go +++ b/internal/controller/maker/image_test.go @@ -3,7 +3,7 @@ package maker import ( "testing" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) func TestImage(t *testing.T) { diff --git a/internal/controller/maker/lessdns.go b/internal/controller/maker/lessdns.go index f825ad6..56c2145 100644 --- a/internal/controller/maker/lessdns.go +++ b/internal/controller/maker/lessdns.go @@ -5,7 +5,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/longhorn.go b/internal/controller/maker/longhorn.go index b89b8c9..4ff2328 100644 --- a/internal/controller/maker/longhorn.go +++ b/internal/controller/maker/longhorn.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/downloader" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/minio.go b/internal/controller/maker/minio.go index bebe39c..bf88fc6 100644 --- a/internal/controller/maker/minio.go +++ b/internal/controller/maker/minio.go @@ -6,7 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/internal/opt" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) @@ -14,20 +15,20 @@ import ( // todo, remake minio-init image func (m *maker) Minio(ctx context.Context, storage string) error { var ( - err error - location = filepath.Join(m.workdir, "dependency", "minio") + err error + workdir = filepath.Join(m.workdir, "dependency", "minio") ) - logger.Info("☑️ maker.Minio: 开始构建 minio 依赖, workdir = %s", location) - - logger.Debug("☑️ maker.Minio: 构建工作目录, workdir = %s", location) - if err = os.MkdirAll(location, 0755); err != nil { - logger.Debug("❌ maker.Minio: 创建工作目录失败, workdir = %s, err = %v", location, err) + logger.Info("☑️ maker.Minio: 开始构建 minio 依赖, workdir = %s", workdir) + logger.Debug("☑️ maker.Minio: 构建工作目录, workdir = %s", workdir) + _ = os.RemoveAll(workdir) + if err = os.MkdirAll(workdir, 0755); err != nil { + logger.Debug("❌ maker.Minio: 创建工作目录失败, workdir = %s, err = %v", workdir, err) return err } - logger.Debug("✅ maker.Minio: 创建工作目录成功, workdir = %s", location) + logger.Debug("✅ maker.Minio: 创建工作目录成功, workdir = %s", workdir) - filename := filepath.Join(location, "minio.yaml") + filename := filepath.Join(workdir, "minio.yaml") logger.Debug("☑️ maker.Minio: 准备资源文件, filename = %s, storage = %s", filename, storage) bs := []byte(fmt.Sprintf(resource.YAMLMinIO, storage)) if err = os.WriteFile(filename, bs, 0644); err != nil { @@ -38,13 +39,13 @@ func (m *maker) Minio(ctx context.Context, storage string) error { logger.Debug("☑️ maker.Minio: 开始获取所需镜像...") var images = []*model.Image{ - {Name: "hub.yizhisec.com/hybridscope/v3/minio-init:latest", Fallback: "", Save: "dep.minio-init.tar"}, - {Name: "hub.yizhisec.com/external/minio:RELEASE.2025-03-12T18-04-18Z", Fallback: "", Save: "dep.minio.tar"}, + {Name: opt.IMAGE_MINIO_BASE, Fallback: "", Save: "minio-init.tar"}, + {Name: opt.IMAGE_MINIO, Fallback: "", Save: "minio.tar"}, } for _, image := range images { opts := []ImageOpt{ WithImageFallback(image.Fallback), - WithImageSave(filepath.Join(location, image.Save)), + WithImageSave(filepath.Join(workdir, image.Save)), WithImageForcePull(image.Force), } @@ -56,7 +57,7 @@ func (m *maker) Minio(ctx context.Context, storage string) error { } logger.Debug("✅ maker.Minio: 获取所需镜像成功!!!") - logger.Info("✅ maker.Minio: 构建 minio 依赖成功, workdir = %s", location) + logger.Info("✅ maker.Minio: 构建 minio 依赖成功, workdir = %s", workdir) return nil } diff --git a/internal/controller/maker/mysql.go b/internal/controller/maker/mysql.go index eeb1fac..292b920 100644 --- a/internal/controller/maker/mysql.go +++ b/internal/controller/maker/mysql.go @@ -7,9 +7,9 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/internal/opt" "yizhisec.com/hsv2/forge/pkg/downloader" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/proxy.go b/internal/controller/maker/proxy.go index f7933de..f7376b9 100644 --- a/internal/controller/maker/proxy.go +++ b/internal/controller/maker/proxy.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/downloader" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/redis.go b/internal/controller/maker/redis.go index da0ca20..88fbf32 100644 --- a/internal/controller/maker/redis.go +++ b/internal/controller/maker/redis.go @@ -6,9 +6,9 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/internal/opt" "yizhisec.com/hsv2/forge/pkg/downloader" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" ) diff --git a/internal/controller/maker/registry.go b/internal/controller/maker/registry.go index 4a03071..a263e32 100644 --- a/internal/controller/maker/registry.go +++ b/internal/controller/maker/registry.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/controller/maker/seafile.go b/internal/controller/maker/seafile.go index bbab75f..480dbe8 100644 --- a/internal/controller/maker/seafile.go +++ b/internal/controller/maker/seafile.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/internal/opt" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) @@ -123,7 +123,7 @@ kubectl rollout restart deployment backup-seafile-deployment -n seafile` ServerHostname: "cloud.hybridscope.com", Storage: "50Gi", } - workdir = filepath.Join(m.workdir, "dependency", "seafile") + workdir = filepath.Join(m.workdir, "dependency", "seafile") ) for _, fn := range opts { @@ -187,7 +187,7 @@ kubectl rollout restart deployment backup-seafile-deployment -n seafile` // 7. prepare images logger.Debug("☑️ make.Seafile: 准备 images") - imgDir := filepath.Join(m.workdir, "dependency", "image") + imgDir := filepath.Join(m.workdir, "dependency", "image") if err = os.MkdirAll(imgDir, 0755); err != nil { logger.Error("❌ make.Seafile: 准备 images 目录: %s 失败, err = %v", imgDir, err) return err diff --git a/internal/controller/maker/yosguard.go b/internal/controller/maker/yosguard.go index 2eb3ced..8ded605 100644 --- a/internal/controller/maker/yosguard.go +++ b/internal/controller/maker/yosguard.go @@ -6,8 +6,8 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/downloader" + "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) diff --git a/internal/opt/var.go b/internal/opt/var.go index f6327d8..a601cef 100644 --- a/internal/opt/var.go +++ b/internal/opt/var.go @@ -1,5 +1,8 @@ package opt const ( - IMAGE_NGINX = "docker-mirror.yizhisec.com/library/nginx:1.29.4-alpine3.23" + IMAGE_NGINX = "docker-mirror.yizhisec.com/library/nginx:1.29.4-alpine3.23" + IMAGE_MINIO = "hub.yizhisec.com/external/minio:RELEASE.2025-03-12T18-04-18Z" + IMAGE_ALPINE = "docker-mirror.yizhisec.com/library/alpine:3.23.2" + IMAGE_MINIO_BASE = "hub.yizhisec.com/hsv2/base/minio-init:latest" ) diff --git a/pkg/archiver/archiver.go b/pkg/archiver/archiver.go index 04441ab..4f763e1 100644 --- a/pkg/archiver/archiver.go +++ b/pkg/archiver/archiver.go @@ -12,7 +12,7 @@ import ( "path/filepath" "strings" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) // Options defines options for downloading and extracting archives diff --git a/pkg/archiver/archiver_test.go b/pkg/archiver/archiver_test.go index 665e62d..1ab0cee 100644 --- a/pkg/archiver/archiver_test.go +++ b/pkg/archiver/archiver_test.go @@ -4,7 +4,7 @@ import ( "context" "testing" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) func TestDownloadAndExtract(t *testing.T) { diff --git a/pkg/downloader/downloader.go b/pkg/downloader/downloader.go index 8e8c6d1..7fdf58d 100644 --- a/pkg/downloader/downloader.go +++ b/pkg/downloader/downloader.go @@ -9,7 +9,7 @@ import ( "os" "path/filepath" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) // Options defines options for downloading files diff --git a/pkg/extractor/extractor.go b/pkg/extractor/extractor.go index dc89bd3..9dab658 100644 --- a/pkg/extractor/extractor.go +++ b/pkg/extractor/extractor.go @@ -10,7 +10,7 @@ import ( "path/filepath" "strings" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) type Options struct { diff --git a/pkg/imager/pull.go b/pkg/imager/pull.go index 50ef2bc..c770a44 100644 --- a/pkg/imager/pull.go +++ b/pkg/imager/pull.go @@ -13,7 +13,7 @@ import ( "strings" "time" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) // PullOption is a functional option for configuring image pull diff --git a/pkg/imager/pull_test.go b/pkg/imager/pull_test.go index d5bd31d..0157395 100644 --- a/pkg/imager/pull_test.go +++ b/pkg/imager/pull_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "gitea.loveuer.com/yizhisec/pkg3/logger" + "yizhisec.com/hsv2/forge/pkg/logger" ) // TestPullImage_PublicImage tests pulling a public image from Docker Hub diff --git a/pkg/logger/ctx.go b/pkg/logger/ctx.go new file mode 100644 index 0000000..47b8d47 --- /dev/null +++ b/pkg/logger/ctx.go @@ -0,0 +1,53 @@ +package logger + +import ( + "context" + uuid2 "github.com/google/uuid" +) + +type _traceId struct{} + +var TraceId = _traceId{} + +func traceId(ctx context.Context) string { + if ctx == nil { + uuid, _ := uuid2.NewV7() + return uuid.String() + } + + if id, _ := ctx.Value(TraceId).(string); id != "" { + return id + } + + uuid, _ := uuid2.NewV7() + return uuid.String() +} + +func DebugCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Debug(msg, data...) +} +func InfoCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Info(msg, data...) +} + +func WarnCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Warn(msg, data...) +} + +func ErrorCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Error(msg, data...) +} + +func PanicCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Panic(msg, data...) +} + +func FatalCtx(ctx context.Context, msg string, data ...any) { + msg = traceId(ctx) + " | " + msg + DefaultLogger.Fatal(msg, data...) +} diff --git a/pkg/logger/ctx_test.go b/pkg/logger/ctx_test.go new file mode 100644 index 0000000..8948cac --- /dev/null +++ b/pkg/logger/ctx_test.go @@ -0,0 +1,17 @@ +package logger + +import ( + "context" + "testing" +) + +func TestCtxLog(t *testing.T) { + DebugCtx(nil, "hello %s", "world") + InfoCtx(nil, "hello %s", "world") + WarnCtx(context.Background(), "hello %s", "world") + ctx := context.Background() + ctx = context.WithValue(ctx, TraceId, "value") + SetLogLevel(LogLevelDebug) + DebugCtx(ctx, "hello %s", "world") + ErrorCtx(ctx, "hello %s", "world") +} diff --git a/pkg/logger/default.go b/pkg/logger/default.go new file mode 100644 index 0000000..ecd0911 --- /dev/null +++ b/pkg/logger/default.go @@ -0,0 +1,67 @@ +package logger + +import ( + "fmt" + "os" + "sync" +) + +var ( + nilLogger = func(prefix, timestamp, msg string, data ...any) {} + normalLogger = func(prefix, timestamp, msg string, data ...any) { + fmt.Printf(prefix+"| "+timestamp+" | "+msg+"\n", data...) + } + + panicLogger = func(prefix, timestamp, msg string, data ...any) { + panic(fmt.Sprintf(prefix+"| "+timestamp+" | "+msg+"\n", data...)) + } + + fatalLogger = func(prefix, timestamp, msg string, data ...any) { + fmt.Printf(prefix+"| "+timestamp+" | "+msg+"\n", data...) + os.Exit(1) + } + + DefaultLogger = &logger{ + Mutex: sync.Mutex{}, + timeFormat: "2006-01-02T15:04:05", + writer: os.Stdout, + level: LogLevelInfo, + debug: nilLogger, + info: normalLogger, + warn: normalLogger, + error: normalLogger, + panic: panicLogger, + fatal: fatalLogger, + } +) + +func SetTimeFormat(format string) { + DefaultLogger.SetTimeFormat(format) +} + +func SetLogLevel(level LogLevel) { + DefaultLogger.SetLogLevel(level) +} + +func Debug(msg string, data ...any) { + DefaultLogger.Debug(msg, data...) +} +func Info(msg string, data ...any) { + DefaultLogger.Info(msg, data...) +} + +func Warn(msg string, data ...any) { + DefaultLogger.Warn(msg, data...) +} + +func Error(msg string, data ...any) { + DefaultLogger.Error(msg, data...) +} + +func Panic(msg string, data ...any) { + DefaultLogger.Panic(msg, data...) +} + +func Fatal(msg string, data ...any) { + DefaultLogger.Fatal(msg, data...) +} diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go new file mode 100644 index 0000000..f8a2e83 --- /dev/null +++ b/pkg/logger/logger.go @@ -0,0 +1,115 @@ +package logger + +import ( + "github.com/fatih/color" + "io" + "sync" + "time" +) + +type LogLevel uint32 + +const ( + LogLevelDebug = iota + LogLevelInfo + LogLevelWarn + LogLevelError + LogLevelPanic + LogLevelFatal +) + +type logger struct { + sync.Mutex + timeFormat string + writer io.Writer + level LogLevel + debug func(prefix, timestamp, msg string, data ...any) + info func(prefix, timestamp, msg string, data ...any) + warn func(prefix, timestamp, msg string, data ...any) + error func(prefix, timestamp, msg string, data ...any) + panic func(prefix, timestamp, msg string, data ...any) + fatal func(prefix, timestamp, msg string, data ...any) +} + +var ( + red = color.New(color.FgRed) + hired = color.New(color.FgHiRed) + green = color.New(color.FgGreen) + yellow = color.New(color.FgYellow) + white = color.New(color.FgWhite) +) + +func (l *logger) SetTimeFormat(format string) { + l.Lock() + defer l.Unlock() + l.timeFormat = format +} + +func (l *logger) SetLogLevel(level LogLevel) { + l.Lock() + defer l.Unlock() + + if level > LogLevelDebug { + l.debug = nilLogger + } else { + l.debug = normalLogger + } + + if level > LogLevelInfo { + l.info = nilLogger + } else { + l.info = normalLogger + } + + if level > LogLevelWarn { + l.warn = nilLogger + } else { + l.warn = normalLogger + } + + if level > LogLevelError { + l.error = nilLogger + } else { + l.error = normalLogger + } + + if level > LogLevelPanic { + l.panic = nilLogger + } else { + l.panic = panicLogger + } + + if level > LogLevelFatal { + l.fatal = nilLogger + } else { + l.fatal = fatalLogger + } +} + +func (l *logger) Debug(msg string, data ...any) { + l.debug(white.Sprint("Debug "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Info(msg string, data ...any) { + l.info(green.Sprint("Info "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Warn(msg string, data ...any) { + l.warn(yellow.Sprint("Warn "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Error(msg string, data ...any) { + l.error(red.Sprint("Error "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Panic(msg string, data ...any) { + l.panic(hired.Sprint("Panic "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Fatal(msg string, data ...any) { + l.fatal(hired.Sprint("Fatal "), time.Now().Format(l.timeFormat), msg, data...) +} + +type WroteLogger interface { + Info(msg string, data ...any) +} diff --git a/pkg/logger/new.go b/pkg/logger/new.go new file mode 100644 index 0000000..e684914 --- /dev/null +++ b/pkg/logger/new.go @@ -0,0 +1,21 @@ +package logger + +import ( + "os" + "sync" +) + +func New() *logger { + return &logger{ + Mutex: sync.Mutex{}, + timeFormat: "2006-01-02T15:04:05", + writer: os.Stdout, + level: LogLevelInfo, + debug: nilLogger, + info: normalLogger, + warn: normalLogger, + error: normalLogger, + panic: panicLogger, + fatal: fatalLogger, + } +} diff --git a/pkg/resource/nginx/common.conf b/pkg/resource/nginx/common.conf index 2d5c1eb..40ac3b8 100644 --- a/pkg/resource/nginx/common.conf +++ b/pkg/resource/nginx/common.conf @@ -47,15 +47,6 @@ location /client/dl/ { } } -location /user/avatar/ { - auth_request /token_auth; - - proxy_set_header Cookie $http_cookie; - alias /static/avatar/; - expires 7d; - add_header Cache-Control public; -} - location /file/share/ { auth_request /token_auth; diff --git a/pkg/resource/nginx/web.conf b/pkg/resource/nginx/web.conf index c8ed11c..dd93917 100644 --- a/pkg/resource/nginx/web.conf +++ b/pkg/resource/nginx/web.conf @@ -94,11 +94,17 @@ server { proxy_pass http://app-helper-service.hsv2; } - # location /wm/ { - # alias /data/wm/; - # expires 30d; - # add_header Cache-Control public; - # } + location /user/avatar/ { + proxy_pass http://app-helper-service.hsv2/api/v2_2/_obj/; + } + + location /api/account/profile/avatar { + proxy_pass http://app-helper-service.hsv2/api/v2_2/user/profile/avatar/update; + } + + location /api/admin/business-center/network-app/tunnel { + proxy_pass http://app-helper-service.hsv2/api/v2_2/interceptor/mie/resource/icon$request_uri; + } location /api/v2_1/user { proxy_pass http://user-service:9013; @@ -134,28 +140,11 @@ server { proxy_read_timeout 300s; } - # location /backup { - # proxy_pass http://hs-backup-server; - # proxy_set_header Host $host; - # proxy_set_header X-Real-IP $remote_addr; - # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - # proxy_read_timeout 300s; - # } - location /api/local/user/import/template { auth_request /token_auth; alias /static/resource/local_user_import_template.xlsx; } - # location /wm/api { - # proxy_pass http://hs-watermark-server; - # proxy_http_version 1.1; - # proxy_set_header Host $host; - # proxy_set_header X-Real-IP $proxy_protocol_addr; - # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - # proxy_read_timeout 300s; - # } - location @my_401 { default_type text/html; return 401 '