Автоматическое создание сертификатов
Добавил возможность создания автоматических сертификатов.
This commit is contained in:
@@ -21,6 +21,7 @@ type Site_www struct {
|
||||
Status string `json:"status"`
|
||||
Root_file string `json:"root_file"`
|
||||
Root_file_routing bool `json:"root_file_routing"`
|
||||
AutoCreateSSL bool `json:"AutoCreateSSL"`
|
||||
}
|
||||
|
||||
type Soft_Settings struct {
|
||||
@@ -29,6 +30,7 @@ type Soft_Settings struct {
|
||||
Mysql_port int `json:"mysql_port"`
|
||||
Mysql_host string `json:"mysql_host"`
|
||||
Proxy_enabled bool `json:"proxy_enabled"`
|
||||
ACME_enabled bool `json:"ACME_enabled"`
|
||||
}
|
||||
|
||||
type Proxy_Service struct {
|
||||
@@ -38,6 +40,7 @@ type Proxy_Service struct {
|
||||
LocalPort string `json:"LocalPort"`
|
||||
ServiceHTTPSuse bool `json:"ServiceHTTPSuse"`
|
||||
AutoHTTPS bool `json:"AutoHTTPS"`
|
||||
AutoCreateSSL bool `json:"AutoCreateSSL"`
|
||||
}
|
||||
|
||||
func LoadConfig() {
|
||||
@@ -57,6 +60,79 @@ func LoadConfig() {
|
||||
tools.Logs_file(0, "JSON", "config.json успешно прочитан", "logs_config.log", true)
|
||||
}
|
||||
|
||||
// Миграция: добавляем новые поля если их нет
|
||||
migrateConfig(data)
|
||||
|
||||
println()
|
||||
|
||||
}
|
||||
|
||||
// migrateConfig проверяет и добавляет новые поля в конфиг
|
||||
func migrateConfig(originalData []byte) {
|
||||
needsSave := false
|
||||
|
||||
// Парсим оригинальный JSON как map для проверки наличия полей
|
||||
var rawConfig map[string]json.RawMessage
|
||||
if err := json.Unmarshal(originalData, &rawConfig); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Проверяем Site_www
|
||||
if rawSites, ok := rawConfig["Site_www"]; ok {
|
||||
var sites []map[string]interface{}
|
||||
if err := json.Unmarshal(rawSites, &sites); err == nil {
|
||||
for _, site := range sites {
|
||||
if _, exists := site["AutoCreateSSL"]; !exists {
|
||||
needsSave = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Проверяем Proxy_Service
|
||||
if rawProxies, ok := rawConfig["Proxy_Service"]; ok {
|
||||
var proxies []map[string]interface{}
|
||||
if err := json.Unmarshal(rawProxies, &proxies); err == nil {
|
||||
for _, proxy := range proxies {
|
||||
if _, exists := proxy["AutoCreateSSL"]; !exists {
|
||||
needsSave = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Проверяем Soft_Settings на наличие ACME_enabled
|
||||
if rawSettings, ok := rawConfig["Soft_Settings"]; ok {
|
||||
var settings map[string]interface{}
|
||||
if err := json.Unmarshal(rawSettings, &settings); err == nil {
|
||||
if _, exists := settings["ACME_enabled"]; !exists {
|
||||
needsSave = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Если нужно обновить - сохраняем конфиг с новыми полями
|
||||
if needsSave {
|
||||
tools.Logs_file(0, "JSON", "🔄 Миграция конфига: добавляем новые поля", "logs_config.log", true)
|
||||
saveConfig()
|
||||
}
|
||||
}
|
||||
|
||||
// saveConfig сохраняет текущий конфиг в файл
|
||||
func saveConfig() {
|
||||
formattedJSON, err := json.MarshalIndent(ConfigData, "", " ")
|
||||
if err != nil {
|
||||
tools.Logs_file(1, "JSON", "Ошибка форматирования конфига: "+err.Error(), "logs_config.log", true)
|
||||
return
|
||||
}
|
||||
|
||||
err = os.WriteFile(ConfigPath, formattedJSON, 0644)
|
||||
if err != nil {
|
||||
tools.Logs_file(1, "JSON", "Ошибка сохранения конфига: "+err.Error(), "logs_config.log", true)
|
||||
return
|
||||
}
|
||||
|
||||
tools.Logs_file(0, "JSON", "✅ Конфиг обновлён с новыми полями", "logs_config.log", true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user