mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 21:24:10 +00:00
46 lines
988 B
Go
46 lines
988 B
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/mhsanaei/3x-ui/v2/database/model"
|
|
)
|
|
|
|
type SharedAccountsSnapshot struct {
|
|
Version int64 `json:"version"`
|
|
Inbounds []*model.Inbound `json:"inbounds"`
|
|
}
|
|
|
|
func LoadSharedAccountsSnapshot(path string) (*SharedAccountsSnapshot, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
snapshot := &SharedAccountsSnapshot{}
|
|
if err := json.Unmarshal(data, snapshot); err != nil {
|
|
return nil, err
|
|
}
|
|
if snapshot.Inbounds == nil {
|
|
snapshot.Inbounds = []*model.Inbound{}
|
|
}
|
|
return snapshot, nil
|
|
}
|
|
|
|
func SaveSharedAccountsSnapshot(path string, snapshot *SharedAccountsSnapshot) error {
|
|
if snapshot == nil {
|
|
return errors.New("shared snapshot is nil")
|
|
}
|
|
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
|
|
return err
|
|
}
|
|
|
|
data, err := json.MarshalIndent(snapshot, "", " ")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return os.WriteFile(path, data, 0644)
|
|
}
|