11package config
22
33import (
4- "flag"
5- "strings "
6- "fmt "
7- "os "
8- "gopkg.in/ini.v1 "
9- "github.com/ouqiang/supervisor-event-listener/utils "
4+ "flag"
5+ "fmt "
6+ "github.com/ouqiang/supervisor-event-listener/utils "
7+ "gopkg.in/ini.v1 "
8+ "os "
9+ "strings "
1010)
1111
1212type Config struct {
13- NotifyType string
14- WebHook WebHook
15- MailServer MailServer
16- MailUser MailUser
17- Slack Slack
13+ NotifyType string
14+ WebHook WebHook
15+ MailServer MailServer
16+ MailUser MailUser
17+ Slack Slack
1818}
1919
2020type WebHook struct {
21- Url string
21+ Url string
2222}
2323
2424type Slack struct {
25- WebHookUrl string
26- Channel string
25+ WebHookUrl string
26+ Channel string
2727}
2828
2929// 邮件服务器
3030type MailServer struct {
31- User string
32- Password string
33- Host string
34- Port int
31+ User string
32+ Password string
33+ Host string
34+ Port int
3535}
3636
3737// 接收邮件的用户
3838type MailUser struct {
39- Email []string
39+ Email []string
4040}
4141
42- func ParseConfig () * Config {
43- var configFile string
44- flag .StringVar (& configFile , "c" , "/etc/supervisor-event-listener.ini" , "config file" )
45- flag .Parse ()
46- configFile = strings .TrimSpace (configFile )
47- if configFile == "" {
48- Exit ("请指定配置文件路径" )
49- }
50- file , err := ini .Load (configFile )
51- if err != nil {
52- Exit ("读取配置文件失败#" + err .Error ())
53- }
54- section := file .Section ("default" )
55- notifyType := section .Key ("notify_type" ).String ()
56- notifyType = strings .TrimSpace (notifyType )
57- if ! utils .InStringSlice ([]string {"mail" , "slack" , "webhook" }, notifyType ) {
58- Exit ("不支持的通知类型-" + notifyType )
59- }
60-
61- config := & Config {}
62- config .NotifyType = notifyType
63- switch notifyType {
64- case "mail" :
65- config .MailServer = parseMailServer (section )
66- config .MailUser = parseMailUser (section )
67- case "slack" :
68- config .Slack = parseSlack (section )
69- case "webhook" :
70- config .WebHook = parseWebHook (section )
71- }
72-
73- return config
42+ func ParseConfig () * Config {
43+ var configFile string
44+ flag .StringVar (& configFile , "c" , "/etc/supervisor-event-listener.ini" , "config file" )
45+ flag .Parse ()
46+ configFile = strings .TrimSpace (configFile )
47+ if configFile == "" {
48+ Exit ("请指定配置文件路径" )
49+ }
50+ file , err := ini .Load (configFile )
51+ if err != nil {
52+ Exit ("读取配置文件失败#" + err .Error ())
53+ }
54+ section := file .Section ("default" )
55+ notifyType := section .Key ("notify_type" ).String ()
56+ notifyType = strings .TrimSpace (notifyType )
57+ if ! utils .InStringSlice ([]string {"mail" , "slack" , "webhook" }, notifyType ) {
58+ Exit ("不支持的通知类型-" + notifyType )
59+ }
60+
61+ config := & Config {}
62+ config .NotifyType = notifyType
63+ switch notifyType {
64+ case "mail" :
65+ config .MailServer = parseMailServer (section )
66+ config .MailUser = parseMailUser (section )
67+ case "slack" :
68+ config .Slack = parseSlack (section )
69+ case "webhook" :
70+ config .WebHook = parseWebHook (section )
71+ }
72+
73+ return config
7474}
7575
7676func parseMailServer (section * ini.Section ) MailServer {
77- user := section .Key ("mail.server.user" ).String ()
78- user = strings .TrimSpace (user )
79- password := section .Key ("mail.server.password" ).String ()
80- password = strings .TrimSpace (password )
81- host := section .Key ("mail.server.host" ).String ()
82- host = strings .TrimSpace (host )
83- port , portErr := section .Key ("mail.server.port" ).Int ()
84- if user == "" || password == "" || host == "" || portErr != nil {
85- Exit ("邮件服务器配置错误" )
86- }
87-
88- mailServer := MailServer {}
89- mailServer .User = user
90- mailServer .Password = password
91- mailServer .Host = host
92- mailServer .Port = port
93-
94- return mailServer
77+ user := section .Key ("mail.server.user" ).String ()
78+ user = strings .TrimSpace (user )
79+ password := section .Key ("mail.server.password" ).String ()
80+ password = strings .TrimSpace (password )
81+ host := section .Key ("mail.server.host" ).String ()
82+ host = strings .TrimSpace (host )
83+ port , portErr := section .Key ("mail.server.port" ).Int ()
84+ if user == "" || password == "" || host == "" || portErr != nil {
85+ Exit ("邮件服务器配置错误" )
86+ }
87+
88+ mailServer := MailServer {}
89+ mailServer .User = user
90+ mailServer .Password = password
91+ mailServer .Host = host
92+ mailServer .Port = port
93+
94+ return mailServer
9595}
9696
97- func parseMailUser (section * ini.Section ) MailUser {
98- user := section .Key ("mail.user" ).String ()
99- user = strings .TrimSpace (user )
100- if user == "" {
101- Exit ("邮件收件人配置错误" )
102- }
103- mailUser := MailUser {}
104- mailUser .Email = strings .Split (user , "," )
97+ func parseMailUser (section * ini.Section ) MailUser {
98+ user := section .Key ("mail.user" ).String ()
99+ user = strings .TrimSpace (user )
100+ if user == "" {
101+ Exit ("邮件收件人配置错误" )
102+ }
103+ mailUser := MailUser {}
104+ mailUser .Email = strings .Split (user , "," )
105105
106- return mailUser
106+ return mailUser
107107}
108108
109-
110109func parseSlack (section * ini.Section ) Slack {
111- webHookUrl := section .Key ("slack.webhook_url" ).String ()
112- webHookUrl = strings .TrimSpace (webHookUrl )
113- channel := section .Key ("slack.channel" ).String ()
114- channel = strings .TrimSpace (channel )
115- if webHookUrl == "" || channel == "" {
116- Exit ("Slack配置错误" )
117- }
118-
119- slack := Slack {}
120- slack .WebHookUrl = webHookUrl
121- slack .Channel = channel
122-
123- return slack
110+ webHookUrl := section .Key ("slack.webhook_url" ).String ()
111+ webHookUrl = strings .TrimSpace (webHookUrl )
112+ channel := section .Key ("slack.channel" ).String ()
113+ channel = strings .TrimSpace (channel )
114+ if webHookUrl == "" || channel == "" {
115+ Exit ("Slack配置错误" )
116+ }
117+
118+ slack := Slack {}
119+ slack .WebHookUrl = webHookUrl
120+ slack .Channel = channel
121+
122+ return slack
124123}
125124
126125func parseWebHook (section * ini.Section ) WebHook {
127- url := section .Key ("webhook_url" ).String ()
128- url = strings .TrimSpace (url )
129- if url == "" {
130- Exit ("WebHookUrl配置错误" )
131- }
132- webHook := WebHook {}
133- webHook .Url = url
134-
135-
136- return webHook
126+ url := section .Key ("webhook_url" ).String ()
127+ url = strings .TrimSpace (url )
128+ if url == "" {
129+ Exit ("WebHookUrl配置错误" )
130+ }
131+ webHook := WebHook {}
132+ webHook .Url = url
133+
134+ return webHook
137135}
138136
139- func Exit (msg string ) {
140- fmt .Fprintln (os .Stderr , msg )
141- os .Exit (1 )
142- }
137+ func Exit (msg string ) {
138+ fmt .Fprintln (os .Stderr , msg )
139+ os .Exit (1 )
140+ }
0 commit comments