~widelands-dev/widelands-metaserver/ircbridge

« back to all changes in this revision

Viewing changes to wlms/main.go

  • Committer: Holger Rapp
  • Date: 2013-12-29 20:23:58 UTC
  • Revision ID: sirver@gmx.de-20131229202358-rjlx0ika6agii8hu
Do not take passwords on the cmdline.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
package main
2
2
 
3
3
import (
 
4
        "encoding/json"
4
5
        "flag"
 
6
        "io/ioutil"
 
7
        "log"
5
8
)
6
9
 
 
10
type JsonCfg struct {
 
11
        Database, User, Password, Table string
 
12
}
 
13
 
 
14
func (l *JsonCfg) ConfigFrom(path string) error {
 
15
        b, err := ioutil.ReadFile(path)
 
16
        if err != nil {
 
17
                return err
 
18
        }
 
19
        return json.Unmarshal(b, &l)
 
20
}
 
21
 
7
22
func main() {
8
 
        var dbuser, dbpasswd, database string
9
 
        flag.StringVar(&database, "database", "inmemory", "Sql Database connection to use.")
10
 
        flag.StringVar(&dbuser, "dbuser", "", "User for mysql database.")
11
 
        flag.StringVar(&dbpasswd, "dbpasswd", "", "Password for user for mysql database.")
 
23
        var config string
 
24
        flag.StringVar(&config, "config", "", "Database configuration file to read.")
12
25
        flag.Parse()
13
26
 
14
27
        var db UserDb
15
 
        if database == "inmemory" {
 
28
        if config != "" {
 
29
                var cfg JsonCfg
 
30
                if err := cfg.ConfigFrom(config); err != nil {
 
31
                        log.Fatalf("Could not parse config file: %v", err)
 
32
                }
 
33
                db = NewMySqlDatabase(cfg.Database, cfg.User, cfg.Password, cfg.Table)
 
34
        } else {
16
35
                db = NewInMemoryDb()
17
 
        } else {
18
 
                db = NewMySqlDatabase(database, dbuser, dbpasswd)
19
36
        }
20
37
        defer db.Close()
21
38