agent/hybrid/instance/instanceInfo.go (86 lines of code) (raw):
package instance
import (
"errors"
"os"
"path/filepath"
"strings"
"github.com/aliyun/aliyun_assist_client/common/pathutil"
)
const (
instanceIdFile = "instance-id"
RWPermission os.FileMode = 0600
)
func SaveInstanceInfo(instanceId, fingerprint, regionId, pubKey, priKey, networkMode string) {
path, _ := pathutil.GetHybridPath()
os.WriteFile(filepath.Join(path, "instance-id"), []byte(instanceId), 0600)
os.WriteFile(filepath.Join(path, "region-id"), []byte(regionId), 0600)
os.WriteFile(filepath.Join(path, "pub-key"), []byte(pubKey), 0600)
os.WriteFile(filepath.Join(path, "pri-key"), []byte(priKey), 0600)
os.WriteFile(filepath.Join(path, "network-mode"), []byte(networkMode), 0600)
// Store fingerprint into hybrid/machine-id
os.WriteFile(filepath.Join(path, "machine-id"), []byte(fingerprint), 0600)
}
func SaveFingerprint(fingerprint string) error {
path, _ := pathutil.GetHybridPath()
return os.WriteFile(filepath.Join(path, "machine-id"), []byte(fingerprint), 0600)
}
func ReadInstanceId() string {
path, _ := pathutil.GetHybridPath()
instanceId, _ := os.ReadFile(filepath.Join(path, "instance-id"))
return strings.TrimSpace(string(instanceId))
}
func ReadFingerprint() string {
path, _ := pathutil.GetHybridPath()
fingerprint, _ := os.ReadFile(filepath.Join(path, "machine-id"))
return strings.TrimSpace(string(fingerprint))
}
// read from fingerprint file which is discard
func ReadDiscardFingerprintFile() string {
path, _ := pathutil.GetHybridPath()
discardFingerprintPath := filepath.Join(path, "fingerprint")
if _, err := os.Stat(discardFingerprintPath); os.IsNotExist(err) {
return ""
}
machineId, _ := os.ReadFile(discardFingerprintPath)
return strings.TrimSpace(string(machineId))
}
// delete from fingerprint file which is discard
func DeleteDiscardFingerprintFile() error {
path, err := pathutil.GetHybridPath()
if err != nil {
return err
}
return os.Remove(filepath.Join(path, "fingerprint"))
}
func ReadRegionId() string {
path, _ := pathutil.GetHybridPath()
regionId, _ := os.ReadFile(filepath.Join(path, "region-id"))
return strings.TrimSpace(string(regionId))
}
func ReadNetworkMode() string {
path, _ := pathutil.GetHybridPath()
networkMode, _ := os.ReadFile(filepath.Join(path, "network-mode"))
return strings.TrimSpace(string(networkMode))
}
func ReadPriKey() string {
path, _ := pathutil.GetHybridPath()
priKey, _ := os.ReadFile(filepath.Join(path, "pri-key"))
return strings.TrimSpace(string(priKey))
}
func ReadPubKey() string {
path, _ := pathutil.GetHybridPath()
pubKey, _ := os.ReadFile(filepath.Join(path, "pub-key"))
return strings.TrimSpace(string(pubKey))
}
func RemoveInstanceInfo() {
path, _ := pathutil.GetHybridPath()
os.Remove(filepath.Join(path, "instance-id"))
os.Remove(filepath.Join(path, "machine-id"))
os.Remove(filepath.Join(path, "region-id"))
os.Remove(filepath.Join(path, "pub-key"))
os.Remove(filepath.Join(path, "pri-key"))
os.Remove(filepath.Join(path, "network-mode"))
}
func IsHybrid() bool {
hybridDir, _ := pathutil.GetHybridPath()
path := filepath.Join(hybridDir, "instance-id")
_, err := os.Stat(path)
return !errors.Is(err, os.ErrNotExist)
}