Migrated to cobra for command handling and viper for config handling
This commit is contained in:
48
server.go
48
server.go
@@ -4,11 +4,9 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"git.nevets.tech/Steven/ezconf"
|
||||
"github.com/go-git/go-billy/v5/memfs"
|
||||
"github.com/go-git/go-git/v5/storage/memory"
|
||||
)
|
||||
@@ -34,10 +32,12 @@ func getACMEManager() (*ACMEManager, error) {
|
||||
}
|
||||
|
||||
func initServer() {
|
||||
err := loadDomainConfigs()
|
||||
err := LoadDomainConfigs()
|
||||
if err != nil {
|
||||
log.Fatalf("Error loading domain configs: %v", err)
|
||||
}
|
||||
|
||||
serverTick()
|
||||
}
|
||||
|
||||
func serverTick() {
|
||||
@@ -53,18 +53,14 @@ func serverTick() {
|
||||
|
||||
now := time.Now().UTC()
|
||||
|
||||
mu.RLock()
|
||||
localDomainConfigs := make(map[string]*ezconf.Configuration, len(domainConfigs))
|
||||
for k, v := range domainConfigs {
|
||||
localDomainConfigs[k] = v
|
||||
}
|
||||
mu.RUnlock()
|
||||
localDomainConfigs := domainStore.Snapshot()
|
||||
|
||||
for domainStr, domainConfig := range localDomainConfigs {
|
||||
if !domainConfig.GetAsBoolean("Domain.enabled") {
|
||||
if !domainConfig.GetBool("Domain.enabled") {
|
||||
continue
|
||||
}
|
||||
renewPeriod := domainConfig.GetAsInt("Certificates.renew_period")
|
||||
lastIssued := time.Unix(domainConfig.GetAsInt64("Internal.last_issued"), 0).UTC()
|
||||
renewPeriod := domainConfig.GetInt("Certificates.renew_period")
|
||||
lastIssued := time.Unix(domainConfig.GetInt64("Internal.last_issued"), 0).UTC()
|
||||
renewalDue := lastIssued.AddDate(0, 0, renewPeriod)
|
||||
if now.After(renewalDue) {
|
||||
_, err = mgr.RenewForDomain(domainStr)
|
||||
@@ -77,23 +73,19 @@ func serverTick() {
|
||||
}
|
||||
}
|
||||
|
||||
err = domainConfig.SetValueErr("Internal.last_issued", strconv.FormatInt(time.Now().UTC().Unix(), 10))
|
||||
if err != nil {
|
||||
fmt.Printf("Error updating last_issued config for domain %s: %v\n", domainStr, err)
|
||||
continue
|
||||
}
|
||||
err = domainConfig.Save()
|
||||
domainConfig.Set("Internal.last_issued", time.Now().UTC().Unix())
|
||||
err = domainConfig.WriteConfig()
|
||||
if err != nil {
|
||||
fmt.Printf("Error saving domain config %s: %v\n", domainStr, err)
|
||||
continue
|
||||
}
|
||||
|
||||
err = EncryptFileXChaCha(domainConfig.GetAsString("Certificates.crypto_key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".crt"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".crt.crpt"), nil)
|
||||
err = EncryptFileXChaCha(domainConfig.GetString("Certificates.crypto_key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".crt"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".crt.crpt"), nil)
|
||||
if err != nil {
|
||||
fmt.Printf("Error encrypting domain cert for domain %s: %v\n", domainStr, err)
|
||||
continue
|
||||
}
|
||||
err = EncryptFileXChaCha(domainConfig.GetAsString("Certificates.crypto_key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".key.crpt"), nil)
|
||||
err = EncryptFileXChaCha(domainConfig.GetString("Certificates.crypto_key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".key"), filepath.Join(mgr.certsRoot, domainStr, domainStr+".key.crpt"), nil)
|
||||
if err != nil {
|
||||
fmt.Printf("Error encrypting domain key for domain %s: %v\n", domainStr, err)
|
||||
continue
|
||||
@@ -110,18 +102,14 @@ func serverTick() {
|
||||
}
|
||||
|
||||
var repoUrl string
|
||||
if !domainConfig.GetAsBoolean("Internal.repo_exists") {
|
||||
if !domainConfig.GetBool("Internal.repo_exists") {
|
||||
repoUrl = createGiteaRepo(domainStr, giteaClient)
|
||||
if repoUrl == "" {
|
||||
fmt.Printf("Error creating Gitea repo for domain %s\n", domainStr)
|
||||
continue
|
||||
}
|
||||
err = domainConfig.SetValueErr("Internal.repo_exists", "true")
|
||||
if err != nil {
|
||||
fmt.Printf("Error updating repo_exists config for domain %s: %v\n", domainStr, err)
|
||||
continue
|
||||
}
|
||||
err = domainConfig.Save()
|
||||
domainConfig.Set("Internal.repo_exists", true)
|
||||
err = domainConfig.WriteConfig()
|
||||
if err != nil {
|
||||
fmt.Printf("Error saving domain config %s: %v\n", domainStr, err)
|
||||
continue
|
||||
@@ -133,7 +121,7 @@ func serverTick() {
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
repoUrl = config.GetAsString("Git.server") + "/" + config.GetAsString("Git.org_name") + "/" + domainStr + domainConfig.GetAsString("Repo.repo_suffix") + ".git"
|
||||
repoUrl = config.GetString("Git.server") + "/" + config.GetString("Git.org_name") + "/" + domainStr + domainConfig.GetString("Repo.repo_suffix") + ".git"
|
||||
err = cloneRepo(repoUrl, gitWorkspace)
|
||||
if err != nil {
|
||||
fmt.Printf("Error cloning repo for domain %s: %v\n", domainStr, err)
|
||||
@@ -149,12 +137,12 @@ func serverTick() {
|
||||
fmt.Printf("Successfully pushed certificates for domain %s\n", domainStr)
|
||||
}
|
||||
}
|
||||
saveDomainConfigs()
|
||||
SaveDomainConfigs()
|
||||
}
|
||||
|
||||
func reloadServer() {
|
||||
fmt.Println("Reloading configs...")
|
||||
err := loadDomainConfigs()
|
||||
err := LoadDomainConfigs()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error loading domain configs: %v\n", err)
|
||||
|
||||
Reference in New Issue
Block a user