140 lines
3.1 KiB
Go
140 lines
3.1 KiB
Go
package Tools
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"scabiosa/Logging"
|
|
)
|
|
|
|
type SQLConfig struct {
|
|
EnableSQL bool `json:"enableSQL"`
|
|
SqlType string `json:"sqlType"`
|
|
SqlAddress string `json:"sql-address"`
|
|
SqlPort uint16 `json:"sql-port"`
|
|
Database string `json:"database"`
|
|
DbUser string `json:"db-user"`
|
|
DbPassword string `json:"db-password"`
|
|
}
|
|
|
|
type AzureConfig struct {
|
|
FileshareName string `json:"fileshareName"`
|
|
StorageAccountName string `json:"storageAccountName"`
|
|
StorageAccountKey string `json:"storageAccountKey"`
|
|
}
|
|
|
|
type Config struct {
|
|
FolderToBackup []struct {
|
|
BackupName string `json:"backupName"`
|
|
FolderPath string `json:"folderPath"`
|
|
RemoteStorageType string `json:"remoteStorageType"`
|
|
RemoteTargetPath string `json:"remoteTargetPath"`
|
|
CreateLocalBackup bool `json:"createLocalBackup"`
|
|
LocalTargetPath string `json:"LocalTargetPath"`
|
|
} `json:"foldersToBackup"`
|
|
}
|
|
|
|
func readConfig() []byte {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "readConfig")
|
|
|
|
file, err := os.ReadFile("config/config.json")
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
return file
|
|
}
|
|
|
|
func readSQLConfig() []byte {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "readSQLConfig")
|
|
|
|
file, err := os.ReadFile("config/sql-config.json")
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
return file
|
|
}
|
|
|
|
func CheckIfConfigExists() {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "CheckIfConfigExists")
|
|
|
|
if _, err := os.Stat("config/config.json"); os.IsNotExist(err) {
|
|
_, fileErr := os.OpenFile("config/config.json", os.O_CREATE, 0775)
|
|
if fileErr != nil {
|
|
logger.Fatal(fileErr)
|
|
}
|
|
fmt.Printf("No configs detected. Please use 'scabiosa generate-config'\n")
|
|
os.Exit(0)
|
|
}
|
|
}
|
|
|
|
func GenerateBaseConfig() {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "GenerateBaseConfig")
|
|
var baseConfig Config
|
|
|
|
conf, err := json.MarshalIndent(baseConfig, "", "\t")
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
for _, s := range baseConfig.FolderToBackup {
|
|
s.BackupName = ""
|
|
}
|
|
err = os.WriteFile("config/config.json", conf, 0775)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
}
|
|
|
|
func GenerateAzureConfig(azure AzureConfig) {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "GenerateAzureConfig")
|
|
|
|
conf, err := json.MarshalIndent(azure, "", "\t")
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
err = os.WriteFile("config/azure.json", conf, 0775)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func GenerateSQLConfig(sqlConfig SQLConfig) {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "GenerateSQLConfig")
|
|
|
|
conf, err := json.MarshalIndent(sqlConfig, "", "\t")
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
err = os.WriteFile("config/sql-config.json", conf, 0775)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
}
|
|
|
|
func GetSQLConfig() SQLConfig {
|
|
logger := Logging.DetailedLogger("ConfigHandler", "GetSQLConfig")
|
|
var sqlConfig SQLConfig
|
|
|
|
err := json.Unmarshal(readSQLConfig(), &sqlConfig)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
return sqlConfig
|
|
}
|
|
|
|
func GetConfig() Config {
|
|
|
|
logger := Logging.DetailedLogger("ConfigHandler", "GetConfig")
|
|
var config Config
|
|
|
|
err := json.Unmarshal(readConfig(), &config)
|
|
if err != nil {
|
|
logger.Fatal(err)
|
|
}
|
|
|
|
return config
|
|
}
|