2018-06-30 00:57:05 +00:00
|
|
|
package core
|
|
|
|
|
|
|
|
import (
|
2018-07-07 05:02:47 +00:00
|
|
|
"errors"
|
2018-07-12 04:49:18 +00:00
|
|
|
"fmt"
|
2018-06-30 00:57:05 +00:00
|
|
|
"github.com/go-yaml/yaml"
|
|
|
|
"github.com/hunterlong/statup/types"
|
2018-07-12 04:49:18 +00:00
|
|
|
"github.com/hunterlong/statup/utils"
|
2018-06-30 00:57:05 +00:00
|
|
|
"io/ioutil"
|
2018-07-07 05:02:47 +00:00
|
|
|
"os"
|
2018-07-12 04:49:18 +00:00
|
|
|
"time"
|
2018-06-30 00:57:05 +00:00
|
|
|
)
|
|
|
|
|
2018-07-07 05:02:47 +00:00
|
|
|
func LoadConfig() (*types.Config, error) {
|
|
|
|
if os.Getenv("DB_CONN") != "" {
|
2018-07-20 05:26:41 +00:00
|
|
|
utils.Log(1, "DB_CONN environment variable was found, waiting for database...")
|
2018-07-07 05:02:47 +00:00
|
|
|
return LoadUsingEnv()
|
|
|
|
}
|
|
|
|
Configs = new(types.Config)
|
2018-06-30 00:57:05 +00:00
|
|
|
file, err := ioutil.ReadFile("config.yml")
|
|
|
|
if err != nil {
|
2018-07-07 05:02:47 +00:00
|
|
|
return nil, errors.New("config.yml file not found - starting in setup mode")
|
|
|
|
}
|
|
|
|
err = yaml.Unmarshal(file, &Configs)
|
|
|
|
CoreApp.DbConnection = Configs.Connection
|
|
|
|
return Configs, err
|
|
|
|
}
|
|
|
|
|
|
|
|
func LoadUsingEnv() (*types.Config, error) {
|
|
|
|
Configs = new(types.Config)
|
|
|
|
if os.Getenv("DB_CONN") == "" {
|
|
|
|
return nil, errors.New("Missing DB_CONN environment variable")
|
|
|
|
}
|
|
|
|
if os.Getenv("DB_HOST") == "" {
|
|
|
|
return nil, errors.New("Missing DB_HOST environment variable")
|
|
|
|
}
|
|
|
|
if os.Getenv("DB_USER") == "" {
|
|
|
|
return nil, errors.New("Missing DB_USER environment variable")
|
|
|
|
}
|
|
|
|
if os.Getenv("DB_PASS") == "" {
|
|
|
|
return nil, errors.New("Missing DB_PASS environment variable")
|
|
|
|
}
|
|
|
|
if os.Getenv("DB_DATABASE") == "" {
|
|
|
|
return nil, errors.New("Missing DB_DATABASE environment variable")
|
|
|
|
}
|
|
|
|
Configs.Connection = os.Getenv("DB_CONN")
|
|
|
|
Configs.Host = os.Getenv("DB_HOST")
|
|
|
|
Configs.Port = os.Getenv("DB_PORT")
|
|
|
|
Configs.User = os.Getenv("DB_USER")
|
|
|
|
Configs.Password = os.Getenv("DB_PASS")
|
|
|
|
Configs.Database = os.Getenv("DB_DATABASE")
|
|
|
|
CoreApp.DbConnection = os.Getenv("DB_CONN")
|
|
|
|
CoreApp.Name = os.Getenv("NAME")
|
|
|
|
CoreApp.Domain = os.Getenv("DOMAIN")
|
|
|
|
if os.Getenv("USE_CDN") == "true" {
|
|
|
|
CoreApp.UseCdn = true
|
|
|
|
}
|
|
|
|
|
2018-07-12 04:49:18 +00:00
|
|
|
dbConfig := &DbConfig{
|
|
|
|
DbConn: os.Getenv("DB_CONN"),
|
|
|
|
DbHost: os.Getenv("DB_HOST"),
|
|
|
|
DbUser: os.Getenv("DB_USER"),
|
|
|
|
DbPass: os.Getenv("DB_PASS"),
|
|
|
|
DbData: os.Getenv("DB_DATABASE"),
|
|
|
|
DbPort: 5432,
|
|
|
|
Project: "Statup - " + os.Getenv("NAME"),
|
|
|
|
Description: "New Statup Installation",
|
|
|
|
Domain: os.Getenv("DOMAIN"),
|
|
|
|
Username: "admin",
|
|
|
|
Password: "admin",
|
|
|
|
Email: "info@localhost.com",
|
|
|
|
}
|
|
|
|
|
2018-07-20 05:26:41 +00:00
|
|
|
err := DbConnection(dbConfig.DbConn, true)
|
2018-07-12 04:49:18 +00:00
|
|
|
if err != nil {
|
|
|
|
utils.Log(4, err)
|
|
|
|
return nil, err
|
2018-06-30 00:57:05 +00:00
|
|
|
}
|
2018-07-12 04:49:18 +00:00
|
|
|
|
|
|
|
exists, err := DbSession.Collection("core").Find().Exists()
|
|
|
|
if !exists {
|
|
|
|
|
|
|
|
utils.Log(1, fmt.Sprintf("Core database does not exist, creating now!"))
|
|
|
|
DropDatabase()
|
|
|
|
CreateDatabase()
|
|
|
|
|
2018-07-17 09:18:20 +00:00
|
|
|
CoreApp = &Core{Core: &types.Core{
|
2018-07-12 04:49:18 +00:00
|
|
|
Name: dbConfig.Project,
|
|
|
|
Description: dbConfig.Description,
|
|
|
|
Config: "config.yml",
|
|
|
|
ApiKey: utils.NewSHA1Hash(9),
|
|
|
|
ApiSecret: utils.NewSHA1Hash(16),
|
|
|
|
Domain: dbConfig.Domain,
|
|
|
|
MigrationId: time.Now().Unix(),
|
2018-07-17 09:18:20 +00:00
|
|
|
}}
|
2018-07-12 04:49:18 +00:00
|
|
|
|
|
|
|
CoreApp.DbConnection = dbConfig.DbConn
|
|
|
|
|
2018-07-17 09:18:20 +00:00
|
|
|
err := InsertCore(CoreApp)
|
2018-07-12 04:49:18 +00:00
|
|
|
if err != nil {
|
|
|
|
utils.Log(3, err)
|
|
|
|
}
|
|
|
|
|
2018-07-14 02:37:39 +00:00
|
|
|
admin := &types.User{
|
2018-07-12 04:49:18 +00:00
|
|
|
Username: "admin",
|
|
|
|
Password: "admin",
|
|
|
|
Email: "info@admin.com",
|
|
|
|
Admin: true,
|
|
|
|
}
|
2018-07-14 02:37:39 +00:00
|
|
|
CreateUser(admin)
|
2018-07-12 04:49:18 +00:00
|
|
|
|
|
|
|
LoadSampleData()
|
|
|
|
|
|
|
|
return Configs, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Configs, nil
|
2018-06-30 00:57:05 +00:00
|
|
|
}
|