Move DB username and password from ENV_VAR to config file
This commit is contained in:
parent
df4019ef0f
commit
222ad51d3d
@ -17,6 +17,8 @@ type Config struct {
|
||||
AtomFile string
|
||||
ConfigFile string
|
||||
DBName string
|
||||
DBPass string
|
||||
DBUser string
|
||||
Description string
|
||||
Domain string
|
||||
FirebaseKey string
|
||||
@ -43,6 +45,7 @@ func newConfig() *Config {
|
||||
ConfigFile: "/etc/cpolis/config.toml",
|
||||
CookieExpiryHours: 24 * 30,
|
||||
DBName: "cpolis",
|
||||
DBUser: "cpolis",
|
||||
FirebaseKey: "/etc/cpolis/serviceAccountKey.json",
|
||||
ImgDir: "/var/www/cpolis/images",
|
||||
LogFile: "/var/log/cpolis.log",
|
||||
@ -110,6 +113,8 @@ func (c *Config) handleCliArgs() error {
|
||||
flag.StringVar(&c.AtomFile, "feed", c.AtomFile, "atom feed file")
|
||||
flag.StringVar(&c.ConfigFile, "config", c.ConfigFile, "config file")
|
||||
flag.StringVar(&c.DBName, "db", c.DBName, "DB name")
|
||||
flag.StringVar(&c.DBPass, "db-pass", c.DBPass, "DB password")
|
||||
flag.StringVar(&c.DBUser, "db-user", c.DBUser, "DB username")
|
||||
flag.StringVar(&c.Description, "desc", c.Description, "channel description")
|
||||
flag.StringVar(&c.Domain, "domain", c.Domain, "domain name")
|
||||
flag.StringVar(&c.FirebaseKey, "firebase", c.FirebaseKey, "Firebase service account key file")
|
||||
@ -196,6 +201,14 @@ func (c *Config) setupConfig(cliConfig *Config) error {
|
||||
c.DBName = cliConfig.DBName
|
||||
}
|
||||
|
||||
if cliConfig.DBPass != defaultConfig.DBPass {
|
||||
c.DBPass = cliConfig.DBPass
|
||||
}
|
||||
|
||||
if cliConfig.DBUser != defaultConfig.DBUser {
|
||||
c.DBUser = cliConfig.DBUser
|
||||
}
|
||||
|
||||
if cliConfig.Description != defaultConfig.Description {
|
||||
c.Description = cliConfig.Description
|
||||
}
|
||||
|
@ -30,45 +30,32 @@ type (
|
||||
}
|
||||
)
|
||||
|
||||
func getUsername() (string, error) {
|
||||
user := os.Getenv("DB_USER")
|
||||
if user == "" {
|
||||
func getDBUsername(c *Config) error {
|
||||
if c.DBUser == "" {
|
||||
var err error
|
||||
|
||||
fmt.Printf("DB Benutzer: ")
|
||||
user, err = bufio.NewReader(os.Stdin).ReadString('\n')
|
||||
c.DBUser, err = bufio.NewReader(os.Stdin).ReadString('\n')
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("error reading username: %v", err)
|
||||
return fmt.Errorf("error reading username: %v", err)
|
||||
}
|
||||
}
|
||||
return strings.TrimSpace(user), nil
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getPassword() (string, error) {
|
||||
pass := os.Getenv("DB_PASS")
|
||||
if pass == "" {
|
||||
func getDBPassword(c *Config) error {
|
||||
if c.DBPass == "" {
|
||||
fmt.Printf("DB Passwort: ")
|
||||
bytePass, err := term.ReadPassword(int(syscall.Stdin))
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("error reading password: %v", err)
|
||||
return fmt.Errorf("error reading password: %v", err)
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
pass = strings.TrimSpace(string(bytePass))
|
||||
c.DBPass = strings.TrimSpace(string(bytePass))
|
||||
}
|
||||
return pass, nil
|
||||
}
|
||||
|
||||
func getCredentials() (string, string, error) {
|
||||
user, err := getUsername()
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("error getting username: %v", err)
|
||||
}
|
||||
|
||||
pass, err := getPassword()
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("error getting password: %v", err)
|
||||
}
|
||||
|
||||
return user, pass, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func wait(iteration int) {
|
||||
@ -77,26 +64,33 @@ func wait(iteration int) {
|
||||
time.Sleep(waitTime + jitter)
|
||||
}
|
||||
|
||||
func OpenDB(dbName string) (*DB, error) {
|
||||
func OpenDB(c *Config) (*DB, error) {
|
||||
var err error
|
||||
db := DB{DB: new(sql.DB)}
|
||||
db := new(DB)
|
||||
|
||||
if err := getDBUsername(c); err != nil {
|
||||
return nil, fmt.Errorf("error getting DB username: %v", err)
|
||||
}
|
||||
|
||||
if err := getDBPassword(c); err != nil {
|
||||
return nil, fmt.Errorf("error getting DB password: %v", err)
|
||||
}
|
||||
|
||||
cfg := mysql.NewConfig()
|
||||
cfg.DBName = dbName
|
||||
cfg.User, cfg.Passwd, err = getCredentials()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error reading user credentials for DB: %v", err)
|
||||
}
|
||||
cfg.DBName = c.DBName
|
||||
cfg.User = c.DBUser
|
||||
cfg.Passwd = c.DBPass
|
||||
|
||||
db.DB, err = sql.Open("mysql", cfg.FormatDSN())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error opening DB: %v", err)
|
||||
}
|
||||
|
||||
if err = db.Ping(); err != nil {
|
||||
return nil, fmt.Errorf("error pinging DB: %v", err)
|
||||
}
|
||||
|
||||
return &db, nil
|
||||
return db, nil
|
||||
}
|
||||
|
||||
func (db *DB) UpdateAttributes(a ...*Attribute) error {
|
||||
|
@ -24,7 +24,7 @@ func main() {
|
||||
defer logFile.Close()
|
||||
log.SetOutput(logFile)
|
||||
|
||||
db, err := b.OpenDB(config.DBName)
|
||||
db, err := b.OpenDB(config)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user