| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package main
- import (
- "context"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "os"
- "rtu_linux_services/servicelib"
- "strings"
- "time"
- "hnyfkj.com.cn/rtu/linux/utils/ftpclient"
- )
- func getFtpUpgradeInfo(ctx context.Context, u *servicelib.UpgradeURL, timeout time.Duration) (upgradeInfo, error) {
- localFile, err := ftpclient.DownloadFileFromFtp(ctx, u.Host, u.User, u.Pass, u.Path, timeout)
- if err != nil {
- return upgradeInfo{}, err
- }
- defer os.Remove(localFile)
- data, err := os.ReadFile(localFile)
- if err != nil {
- return upgradeInfo{}, err
- }
- var info upgradeInfo
- if err := json.Unmarshal(data, &info); err != nil {
- return upgradeInfo{}, err
- }
- info.Version = strings.TrimSpace(info.Version)
- info.SHA256 = strings.TrimSpace(info.SHA256)
- if info.Version == "" {
- return upgradeInfo{}, fmt.Errorf("升级版本号不能为空")
- }
- if info.SHA256 == "" {
- return upgradeInfo{}, fmt.Errorf("升级校验值不能为空")
- }
- if len(info.SHA256) != 64 {
- return upgradeInfo{}, fmt.Errorf("升级校验值长度错误")
- }
- if _, err := hex.DecodeString(info.SHA256); err != nil {
- return upgradeInfo{}, fmt.Errorf("升级校验值格式错误")
- }
- return info, nil
- }
- func downloadFtpUpgradePackage(ctx context.Context, u *servicelib.UpgradeURL, localFile string, timeout time.Duration) error {
- file, err := ftpclient.DownloadFileFromFtp(ctx, u.Host, u.User, u.Pass, u.Path, timeout)
- if err != nil {
- return err
- }
- defer os.Remove(file)
- return os.Rename(file, localFile)
- }
|