mirror of
https://github.com/status-im/fathom.git
synced 2025-03-01 03:20:27 +00:00
generate default value for secret so that fathom can run using only default values
This commit is contained in:
parent
2ceaaeb9f5
commit
02bcfbf503
@ -1,6 +1,6 @@
|
|||||||
FATHOM_DATABASE_DRIVER=mysql
|
FATHOM_DATABASE_DRIVER="sqlite3"
|
||||||
FATHOM_DATABASE_NAME="fathom_db"
|
FATHOM_DATABASE_NAME="./fathom.db"
|
||||||
FATHOM_DATABASE_USER="root"
|
FATHOM_DATABASE_USER=""
|
||||||
FATHOM_DATABASE_PASSWORD="root"
|
FATHOM_DATABASE_PASSWORD=""
|
||||||
FATHOM_DATABASE_HOST=""
|
FATHOM_DATABASE_HOST=""
|
||||||
FATHOM_SECRET="abcdefghijklmnopqrstuvwxyz1234567890"
|
FATHOM_SECRET="abcdefghijklmnopqrstuvwxyz1234567890"
|
||||||
|
39
fathom.go
39
fathom.go
@ -1,22 +1,23 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
"github.com/usefathom/fathom/pkg/commands"
|
"github.com/usefathom/fathom/pkg/commands"
|
||||||
"github.com/usefathom/fathom/pkg/counter"
|
"github.com/usefathom/fathom/pkg/counter"
|
||||||
"github.com/usefathom/fathom/pkg/datastore"
|
"github.com/usefathom/fathom/pkg/datastore"
|
||||||
"gopkg.in/alecthomas/kingpin.v2"
|
|
||||||
|
|
||||||
"github.com/kelseyhightower/envconfig"
|
"github.com/kelseyhightower/envconfig"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
kingpin "gopkg.in/alecthomas/kingpin.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Database *datastore.Config
|
Database *datastore.Config
|
||||||
|
|
||||||
Secret string `required:"true"`
|
Secret string
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -31,13 +32,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// load .env file
|
cfg := parseConfig()
|
||||||
var cfg Config
|
|
||||||
godotenv.Load()
|
|
||||||
err := envconfig.Process("Fathom", &cfg)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Error parsing Fathom config from environment: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup database connection
|
// setup database connection
|
||||||
db := datastore.Init(cfg.Database)
|
db := datastore.Init(cfg.Database)
|
||||||
@ -61,3 +56,29 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseConfig() *Config {
|
||||||
|
var cfg Config
|
||||||
|
godotenv.Load()
|
||||||
|
err := envconfig.Process("Fathom", &cfg)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error parsing Fathom config from environment: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// if secret key is empty, use a randomly generated one to ease first-time installation
|
||||||
|
if cfg.Secret == "" {
|
||||||
|
cfg.Secret = randomString(40)
|
||||||
|
os.Setenv("FATHOM_SECRET", cfg.Secret)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
func randomString(len int) string {
|
||||||
|
bytes := make([]byte, len)
|
||||||
|
for i := 0; i < len; i++ {
|
||||||
|
bytes[i] = byte(65 + rand.Intn(25)) //A=65 and Z = 65+25
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(bytes)
|
||||||
|
}
|
||||||
|
@ -7,7 +7,7 @@ type Config struct {
|
|||||||
Host string `default:""`
|
Host string `default:""`
|
||||||
User string `default:""`
|
User string `default:""`
|
||||||
Password string `default:""`
|
Password string `default:""`
|
||||||
Name string `default:"fathom"`
|
Name string `default:"fathom.db"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) DSN() string {
|
func (c *Config) DSN() string {
|
||||||
@ -19,6 +19,7 @@ func (c *Config) DSN() string {
|
|||||||
case "mysql":
|
case "mysql":
|
||||||
dsn = fmt.Sprintf("%s:%s@%s/%s?parseTime=true&loc=Local", c.User, c.Password, c.Host, c.Name)
|
dsn = fmt.Sprintf("%s:%s@%s/%s?parseTime=true&loc=Local", c.User, c.Password, c.Host, c.Name)
|
||||||
case "sqlite3", "sqlite":
|
case "sqlite3", "sqlite":
|
||||||
|
|
||||||
dsn = c.Name + "?_loc=auto" // TODO: Make this configurable
|
dsn = c.Name + "?_loc=auto" // TODO: Make this configurable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user