91 lines
2 KiB
Go
91 lines
2 KiB
Go
/*
|
|
* @Author: LinkLeong link@icewhale.com
|
|
* @Date: 2022-05-13 18:15:46
|
|
* @LastEditors: LinkLeong
|
|
* @LastEditTime: 2022-09-05 11:58:02
|
|
* @FilePath: /CasaOS/pkg/config/init.go
|
|
* @Description:
|
|
* @Website: https://www.casaos.io
|
|
* Copyright (c) 2022 by icewhale, All Rights Reserved.
|
|
*/
|
|
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/IceWhaleTech/CasaOS-Common/utils/constants"
|
|
"github.com/IceWhaleTech/CasaOS/common"
|
|
"github.com/IceWhaleTech/CasaOS/model"
|
|
"github.com/go-ini/ini"
|
|
)
|
|
|
|
var (
|
|
SysInfo = &model.SysInfoModel{}
|
|
AppInfo = &model.APPModel{
|
|
DBPath: constants.DefaultDataPath,
|
|
LogPath: constants.DefaultLogPath,
|
|
LogSaveName: common.SERVICENAME,
|
|
LogFileExt: "log",
|
|
ShellPath: "/usr/share/casaos/shell",
|
|
UserDataPath: filepath.Join(constants.DefaultDataPath, "conf"),
|
|
}
|
|
CommonInfo = &model.CommonModel{
|
|
RuntimePath: constants.DefaultRuntimePath,
|
|
}
|
|
ServerInfo = &model.ServerModel{}
|
|
SystemConfigInfo = &model.SystemConfig{}
|
|
FileSettingInfo = &model.FileSetting{}
|
|
|
|
Cfg *ini.File
|
|
ConfigFilePath string
|
|
)
|
|
|
|
// 初始化设置,获取系统的部分信息。
|
|
func InitSetup(config string, sample string) {
|
|
ConfigFilePath = CasaOSConfigFilePath
|
|
if len(config) > 0 {
|
|
ConfigFilePath = config
|
|
}
|
|
|
|
// create default config file if not exist
|
|
if _, err := os.Stat(ConfigFilePath); os.IsNotExist(err) {
|
|
fmt.Println("config file not exist, create it")
|
|
// create config file
|
|
file, err := os.Create(ConfigFilePath)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer file.Close()
|
|
|
|
// write default config
|
|
_, err = file.WriteString(sample)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
var err error
|
|
|
|
// 读取文件
|
|
Cfg, err = ini.Load(ConfigFilePath)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
mapTo("app", AppInfo)
|
|
mapTo("server", ServerInfo)
|
|
mapTo("system", SystemConfigInfo)
|
|
mapTo("file", FileSettingInfo)
|
|
mapTo("common", CommonInfo)
|
|
}
|
|
|
|
// 映射
|
|
func mapTo(section string, v interface{}) {
|
|
err := Cfg.Section(section).MapTo(v)
|
|
if err != nil {
|
|
log.Fatalf("Cfg.MapTo %s err: %v", section, err)
|
|
}
|
|
}
|