summaryrefslogtreecommitdiffstats
path: root/bridge/config/config.go
blob: 131ff95e53bd9926fc5b04097495bd52c2e2c9fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package config

import (
	"gopkg.in/gcfg.v1"
	"io/ioutil"
	"log"
)

type Message struct {
	Text     string
	Channel  string
	Username string
	Origin   string
}

type Config struct {
	IRC struct {
		UseTLS           bool
		UseSASL          bool
		SkipTLSVerify    bool
		Server           string
		Nick             string
		Password         string
		Channel          string
		NickServNick     string
		NickServPassword string
		RemoteNickFormat string
		IgnoreNicks      string
	}
	Mattermost struct {
		URL                    string
		ShowJoinPart           bool
		IconURL                string
		SkipTLSVerify          bool
		BindAddress            string
		Channel                string
		PrefixMessagesWithNick bool
		NicksPerRow            int
		NickFormatter          string
		Server                 string
		Team                   string
		Login                  string
		Password               string
		RemoteNickFormat       string
		IgnoreNicks            string
		NoTLS                  bool
	}
	Xmpp struct {
		Jid              string
		Password         string
		Server           string
		Muc              string
		Nick             string
		RemoteNickFormat string
	}
	Channel map[string]*struct {
		IRC        string
		Mattermost string
		Xmpp       string
	}
	General struct {
		GiphyAPIKey string
		Xmpp        bool
		Irc         bool
		Mattermost  bool
		Plus        bool
	}
}

func NewConfig(cfgfile string) *Config {
	var cfg Config
	content, err := ioutil.ReadFile(cfgfile)
	if err != nil {
		log.Fatal(err)
	}
	err = gcfg.ReadStringInto(&cfg, string(content))
	if err != nil {
		log.Fatal("Failed to parse "+cfgfile+":", err)
	}
	return &cfg
}