fix lock
This commit is contained in:
2
admin.go
2
admin.go
@@ -80,7 +80,7 @@ func (a *AdminConfig) Run() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
c := cron.New(cron.WithLocation(time.UTC))
|
c := cron.New(cron.WithLocation(time.UTC))
|
||||||
if _, err := c.AddFunc("0 * * * *", func() { cfg.Run() }); err != nil {
|
if _, err := c.AddFunc("0 * * * *", func() { cfg.Run(true) }); err != nil {
|
||||||
log.WithFields(log.Fields{"call": "cron.AddFunc", "error": err}).Errorf("")
|
log.WithFields(log.Fields{"call": "cron.AddFunc", "error": err}).Errorf("")
|
||||||
}
|
}
|
||||||
c.Start()
|
c.Start()
|
||||||
|
|||||||
13
api.go
13
api.go
@@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func ApiRun(c *gin.Context) {
|
func ApiRun(c *gin.Context) {
|
||||||
cfg.Run()
|
cfg.Run(true)
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"message": "done",
|
"message": "done",
|
||||||
})
|
})
|
||||||
@@ -118,7 +118,7 @@ func ApiRunApp(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ApiSave(c *gin.Context) {
|
func ApiSave(c *gin.Context) {
|
||||||
if err := cfg.Save(); err != nil {
|
if err := cfg.Save(true); err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
"error": err,
|
"error": err,
|
||||||
@@ -131,7 +131,7 @@ func ApiSave(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ApiConfig(c *gin.Context) {
|
func ApiConfig(c *gin.Context) {
|
||||||
if b, err := cfg.Pretty(); err != nil {
|
if b, err := cfg.Pretty(true); err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
"error": err,
|
"error": err,
|
||||||
@@ -151,7 +151,7 @@ func ApiConfigApp(c *gin.Context) {
|
|||||||
for _, app := range cfg.Apps {
|
for _, app := range cfg.Apps {
|
||||||
if app.Name == name {
|
if app.Name == name {
|
||||||
found = true
|
found = true
|
||||||
if b, err := app.Pretty(); err != nil {
|
if b, err := app.Pretty(false); err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
"error": err,
|
"error": err,
|
||||||
@@ -220,7 +220,7 @@ func ApiAppAdd(c *gin.Context) {
|
|||||||
cfg.Apps = append(cfg.Apps, app)
|
cfg.Apps = append(cfg.Apps, app)
|
||||||
|
|
||||||
CfgUnlock()
|
CfgUnlock()
|
||||||
err := cfg.Save()
|
err := cfg.Save(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
@@ -262,8 +262,7 @@ func ApiAppDel(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
CfgUnlock()
|
err := cfg.Save(false)
|
||||||
err := cfg.Save()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
cfg.Admin.Run()
|
cfg.Admin.Run()
|
||||||
} else {
|
} else {
|
||||||
cfg.Run()
|
cfg.Run(true)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
28
config.go
28
config.go
@@ -203,12 +203,14 @@ func LoadConfigByte(conf []byte) (*Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pretty config
|
// Pretty config
|
||||||
func (c *Config) Pretty() ([]byte, error) {
|
func (c *Config) Pretty(lock bool) ([]byte, error) {
|
||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
CfgLock()
|
if lock {
|
||||||
defer CfgUnlock()
|
CfgLock()
|
||||||
|
defer CfgUnlock()
|
||||||
|
}
|
||||||
|
|
||||||
b, err := json.Marshal(cfg)
|
b, err := json.Marshal(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -220,12 +222,14 @@ func (c *Config) Pretty() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pretty App Config
|
// Pretty App Config
|
||||||
func (a *AppConfig) Pretty() ([]byte, error) {
|
func (a *AppConfig) Pretty(lock bool) ([]byte, error) {
|
||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
CfgLock()
|
if lock {
|
||||||
defer CfgUnlock()
|
CfgLock()
|
||||||
|
defer CfgUnlock()
|
||||||
|
}
|
||||||
|
|
||||||
b, err := json.Marshal(a)
|
b, err := json.Marshal(a)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -237,11 +241,11 @@ func (a *AppConfig) Pretty() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Save config
|
// Save config
|
||||||
func (c *Config) Save() error {
|
func (c *Config) Save(lock bool) error {
|
||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
r, err := cfg.Pretty()
|
r, err := cfg.Pretty(lock)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithFields(log.Fields{"error": err, "call": "cfg.Pretty"}).Errorf("")
|
log.WithFields(log.Fields{"error": err, "call": "cfg.Pretty"}).Errorf("")
|
||||||
return err
|
return err
|
||||||
@@ -263,7 +267,7 @@ func (c *Config) Save() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run config
|
// Run config
|
||||||
func (c *Config) Run() {
|
func (c *Config) Run(lock bool) {
|
||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
@@ -271,8 +275,10 @@ func (c *Config) Run() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
CfgLock()
|
if lock {
|
||||||
defer CfgUnlock()
|
CfgLock()
|
||||||
|
defer CfgUnlock()
|
||||||
|
}
|
||||||
|
|
||||||
cfgRun = true
|
cfgRun = true
|
||||||
defer func() { cfgRun = false }()
|
defer func() { cfgRun = false }()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Code generated by version.sh (@generated) DO NOT EDIT.
|
// Code generated by version.sh (@generated) DO NOT EDIT.
|
||||||
package main
|
package main
|
||||||
var githash = "6a0c800"
|
var githash = "a1ed103"
|
||||||
var branch = "master"
|
var branch = "master"
|
||||||
var buildstamp = "2025-12-28_15:20:20"
|
var buildstamp = "2025-12-28_15:30:19"
|
||||||
var commits = "120"
|
var commits = "121"
|
||||||
var version = "6a0c800-b120 - 2025-12-28_15:20:20"
|
var version = "a1ed103-b121 - 2025-12-28_15:30:19"
|
||||||
|
|||||||
Reference in New Issue
Block a user