93 lines
2.5 KiB
Go
93 lines
2.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"github.com/spf13/viper"
|
|
"io/ioutil"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
Params *viper.Viper
|
|
)
|
|
|
|
func InitEnvs() {
|
|
if Params != nil {
|
|
return
|
|
}
|
|
Params = viper.New()
|
|
Params.AutomaticEnv()
|
|
|
|
var err error
|
|
defaultDir, err := os.Getwd()
|
|
if err != nil {
|
|
Log.Errorln(err)
|
|
defaultDir = "."
|
|
}
|
|
Params.Set("VERSION", Version)
|
|
Params.SetDefault("DISABLE_HTTP", false)
|
|
Params.SetDefault("STATPING_DIR", defaultDir)
|
|
Params.SetDefault("GO_ENV", "production")
|
|
Params.SetDefault("DEBUG", false)
|
|
Params.SetDefault("DB_CONN", "")
|
|
Params.SetDefault("DISABLE_LOGS", false)
|
|
Params.SetDefault("USE_ASSETS", false)
|
|
Params.SetDefault("BASE_PATH", "")
|
|
Params.SetDefault("ADMIN_USER", "admin")
|
|
Params.SetDefault("ADMIN_PASSWORD", "admin")
|
|
Params.SetDefault("ADMIN_EMAIL", "info@admin.com")
|
|
Params.SetDefault("MAX_OPEN_CONN", 25)
|
|
Params.SetDefault("MAX_IDLE_CONN", 25)
|
|
Params.SetDefault("MAX_LIFE_CONN", 5*time.Minute)
|
|
Params.SetDefault("SAMPLE_DATA", true)
|
|
Params.SetDefault("USE_CDN", false)
|
|
Params.SetDefault("ALLOW_REPORTS", false)
|
|
Params.SetDefault("POSTGRES_SSLMODE", "disable")
|
|
Params.SetDefault("NAME", "Statping Sample Data")
|
|
Params.SetDefault("DOMAIN", "http://localhost:8080")
|
|
Params.SetDefault("DESCRIPTION", "This status page has sample data included")
|
|
Params.SetDefault("REMOVE_AFTER", 2160*time.Hour)
|
|
Params.SetDefault("CLEANUP_INTERVAL", 1*time.Hour)
|
|
Params.SetDefault("LANGUAGE", "en")
|
|
Params.SetDefault("LETSENCRYPT_HOST", "")
|
|
Params.SetDefault("LETSENCRYPT_EMAIL", "")
|
|
Params.SetDefault("LETSENCRYPT_LOCAL", false)
|
|
Params.SetDefault("LETSENCRYPT_ENABLE", false)
|
|
Params.SetDefault("LOGS_MAX_COUNT", 5)
|
|
Params.SetDefault("LOGS_MAX_AGE", 28)
|
|
Params.SetDefault("LOGS_MAX_SIZE", 16)
|
|
Params.SetDefault("DISABLE_COLORS", false)
|
|
|
|
dbConn := Params.GetString("DB_CONN")
|
|
dbInt := Params.GetInt("DB_PORT")
|
|
if dbInt == 0 && dbConn != "sqlite" && dbConn != "sqlite3" {
|
|
if dbConn == "postgres" {
|
|
Params.SetDefault("DB_PORT", 5432)
|
|
}
|
|
if dbConn == "mysql" {
|
|
Params.SetDefault("DB_PORT", 3306)
|
|
}
|
|
}
|
|
|
|
Directory = Params.GetString("STATPING_DIR")
|
|
//Params.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))
|
|
Params.SetConfigName("config")
|
|
Params.SetConfigType("yml")
|
|
Params.AddConfigPath(Directory)
|
|
Params.ReadInConfig()
|
|
|
|
Params.AddConfigPath(Directory)
|
|
Params.SetConfigFile(".env")
|
|
Params.ReadInConfig()
|
|
|
|
// check if logs are disabled
|
|
if Params.GetBool("DISABLE_LOGS") {
|
|
Log.Out = ioutil.Discard
|
|
return
|
|
}
|
|
Log.Debugln("current working directory: ", Directory)
|
|
Log.AddHook(new(hook))
|
|
Log.SetNoLock()
|
|
checkVerboseMode()
|
|
}
|