Files
1Panel/agent/global/global.go

101 lines
2.2 KiB
Go

package global
import (
"context"
"sync"
badger_db "github.com/1Panel-dev/1Panel/agent/init/cache/db"
"github.com/go-playground/validator/v10"
"github.com/nicksnyder/go-i18n/v2/i18n"
"github.com/robfig/cron/v3"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
"gorm.io/gorm"
)
var (
DB *gorm.DB
MonitorDB *gorm.DB
GPUMonitorDB *gorm.DB
TaskDB *gorm.DB
CoreDB *gorm.DB
AlertDB *gorm.DB
LOG *logrus.Logger
CONF ServerConfig
VALID *validator.Validate
CACHE *badger_db.Cache
Viper *viper.Viper
Dir SystemDir
Cron *cron.Cron
MonitorCronID cron.EntryID
IsMaster bool
I18n *i18n.Localizer
AlertBaseJobID cron.EntryID
AlertResourceJobID cron.EntryID
TaskCtxMap = make(map[string]context.CancelFunc)
taskCtxMu sync.RWMutex
)
func RegisterTaskCancel(taskID string, cancel context.CancelFunc) {
taskCtxMu.Lock()
defer taskCtxMu.Unlock()
TaskCtxMap[taskID] = cancel
}
func LoadTaskCancel(taskID string) (context.CancelFunc, bool) {
taskCtxMu.RLock()
defer taskCtxMu.RUnlock()
cancel, ok := TaskCtxMap[taskID]
return cancel, ok
}
func RemoveTaskCancel(taskID string) {
taskCtxMu.Lock()
defer taskCtxMu.Unlock()
delete(TaskCtxMap, taskID)
}
func RepoURL() string {
if CONF.Base.IsEnterprise {
return "https://resource.fit2cloud.com/1panel/package/enterprise"
}
if CONF.Base.IsFxplay {
return "https://resource.fit2cloud.com/1panel/package/fusionxplay"
}
if CONF.Base.Edition != "intl" {
return "https://resource.fit2cloud.com/1panel/package/v2"
}
return "https://resource.1panel.pro/v2"
}
func ResourceURL() string {
if CONF.Base.IsEnterprise {
return "https://resource.fit2cloud.com/1panel/resource/v2"
}
if CONF.Base.IsFxplay {
return "https://resource.fit2cloud.com/1panel/resource/v2"
}
if CONF.Base.Edition != "intl" {
return "https://resource.fit2cloud.com/1panel/resource/v2"
}
return "https://resource.1panel.pro/v2/resource"
}
func AppRepoURL() string {
if CONF.Base.IsEnterprise {
return "https://apps-assets.fit2cloud.com"
}
if CONF.Base.IsFxplay {
return "https://apps-assets.fit2cloud.com"
}
if CONF.Base.Edition != "intl" {
return "https://apps-assets.fit2cloud.com"
}
return "https://apps.1panel.pro"
}