2 Commits

Author SHA1 Message Date
d3f3687201 使用新的解压targz压缩的方法 2025-10-30 19:34:28 +08:00
63f5bef038 补充仓库缺少的基础配置文件 2025-10-30 18:49:13 +08:00
4 changed files with 111 additions and 6 deletions

1
.gitignore vendored
View File

@@ -16,7 +16,6 @@ manifest/output/
temp/ temp/
temp.yaml temp.yaml
bin bin
**/config/config.yaml
v1.0.0/ v1.0.0/
config/local.yaml config/local.yaml
main.exe~ main.exe~

View File

@@ -1,9 +1,12 @@
package system package system
import ( import (
"archive/tar"
"compress/gzip"
"context" "context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io"
"log" "log"
"net/http" "net/http"
"os" "os"
@@ -62,15 +65,15 @@ func (s *sSystem) Update(ctx context.Context, gzFile string) (err error) {
gzFile = path.Join("download", platform+".gz") gzFile = path.Join("download", platform+".gz")
} }
//结束后删除压缩包 //结束后删除压缩包
defer gfile.RemoveFile(gzFile) //defer gfile.RemoveFile(gzFile)
ext := gfile.Ext(gzFile) ext := gfile.Ext(gzFile)
if ext == ".zip" { if ext == ".zip" {
g.Log().Debugf(ctx, "zip解压%v到%v", gzFile, gfile.Dir(runFile)) g.Log().Debugf(ctx, "zip解压%v到%v", gzFile, gfile.Dir(runFile))
err = gcompress.UnZipFile(gzFile, gfile.Dir(runFile)) err = gcompress.UnZipFile(gzFile, gfile.Dir(runFile))
} else { } else {
g.Log().Debugf(ctx, "gzip解压%v到%v", gzFile, runFile) g.Log().Debugf(ctx, "gzip解压%v到%v", gzFile, gfile.Dir(runFile))
err = gcompress.UnGzipFile(gzFile, runFile) err = s.UnTarGz(gzFile, gfile.Dir(runFile))
} }
if err != nil { if err != nil {
return return
@@ -87,6 +90,64 @@ func (s *sSystem) Update(ctx context.Context, gzFile string) (err error) {
return return
} }
// UnTarGz 解压tar.gz文件到指定目录
func (s *sSystem) UnTarGz(tarGzFileName, targetDir string) (err error) {
// 打开tar.gz文件
file, err := os.Open(tarGzFileName)
if err != nil {
return err
}
defer file.Close()
// 创建gzip reader
gzr, err := gzip.NewReader(file)
if err != nil {
return err
}
defer gzr.Close()
// 创建tar reader
tr := tar.NewReader(gzr)
// 遍历tar中的每个文件
for {
hdr, err := tr.Next()
if err == io.EOF {
// 到达文件末尾,退出循环
break
}
if err != nil {
return err
}
// 构建解压后的文件路径
targetPath := targetDir + string(os.PathSeparator) + hdr.Name
// 如果是目录,创建目录
if hdr.Typeflag == tar.TypeDir {
err := os.MkdirAll(targetPath, 0755)
if err != nil {
return err
}
continue
}
// 如果是文件,创建文件并写入内容
outFile, err := os.Create(targetPath)
if err != nil {
return err
}
defer outFile.Close()
_, err = io.Copy(outFile, tr)
if err != nil {
return err
}
}
return
}
// RestartSelf 实现 Windows 平台下的程序自重启 // RestartSelf 实现 Windows 平台下的程序自重启
func (s *sSystem) RestartSelf() error { func (s *sSystem) RestartSelf() error {
ctx := gctx.New() ctx := gctx.New()

View File

@@ -10,7 +10,6 @@ import (
"github.com/gogf/gf/v2/os/gcmd" "github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/gfile" "github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/os/gtime"
//步骤1加载驱动 //步骤1加载驱动
_ "github.com/gogf/gf/contrib/nosql/redis/v2" _ "github.com/gogf/gf/contrib/nosql/redis/v2"
@@ -24,7 +23,7 @@ var (
func main() { func main() {
g.Log().Infof(ctx, "启动文件最后修改时间:%v", gtime.New(gfile.MTime(gcmd.GetArg(0).String())).String()) g.Log().Infof(ctx, "启动文件最后修改时间:%v", gtime.New(gfile.MTime(gcmd.GetArg(0).String())).String())
g.Dump("v1.0.0.2") //g.Dump("v1.0.0.2")
if ok := gfile.Exists("runtime"); !ok { if ok := gfile.Exists("runtime"); !ok {
gfile.Mkdir("runtime") gfile.Mkdir("runtime")

View File

@@ -0,0 +1,46 @@
module:
server: true
client: true
# https://goframe.org/docs/web/server-config-file-template
server:
address: "51888"
# openapiPath: "/api.json"
# swaggerPath: "/swagger"
dumpRouterMap: false
graceful: true
# https://goframe.org/docs/core/glog-config
logger:
level : "all"
stdout: true
# https://goframe.org/docs/core/gdb-config-file
database:
default:
link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
redis:
default:
address: "ay.cname.com:6379"
db: 15
pass: "12345678"
cache:
address: "ay.cname.com:6379"
db: 15
pass: "12345678"
p2p:
list:
# - host: "192.168.50.173"
# port: 51888
# ssl: false
# ws: ws
- host: "ay.cname.com"
port: 51888
ssl: false
ws: ws