Christopher Ramey
3 years ago
8 changed files with 190 additions and 51 deletions
-
19alarm/alarm.go
-
66alarm/alarm_email.go
-
10alrmrc
-
4check/check.go
-
46config/config.go
-
12config/group.go
-
8config/host.go
-
76config/parser.go
@ -0,0 +1,19 @@ |
|||||
|
package alarm |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
) |
||||
|
|
||||
|
type Alarm interface { |
||||
|
Parse(string) (bool, error) |
||||
|
Alarm() error |
||||
|
} |
||||
|
|
||||
|
func NewAlarm(name string, typename string) (Alarm, error) { |
||||
|
switch typename { |
||||
|
case "email": |
||||
|
return NewAlarmEmail(name), nil |
||||
|
default: |
||||
|
return nil, fmt.Errorf("unknown alarm name \"%s\"", name) |
||||
|
} |
||||
|
} |
@ -0,0 +1,66 @@ |
|||||
|
package alarm |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"strings" |
||||
|
) |
||||
|
|
||||
|
const ( |
||||
|
TK_NONE = iota |
||||
|
TK_TO |
||||
|
TK_SMTP |
||||
|
TK_FROM |
||||
|
) |
||||
|
|
||||
|
|
||||
|
type AlarmEmail struct { |
||||
|
Type string |
||||
|
Name string |
||||
|
From string |
||||
|
SMTP string |
||||
|
To []string |
||||
|
state int |
||||
|
} |
||||
|
|
||||
|
func NewAlarmEmail(name string) *AlarmEmail { |
||||
|
return &AlarmEmail{ |
||||
|
Type: "email", Name: name, |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func (a *AlarmEmail) Alarm() error { |
||||
|
fmt.Printf("email alarm") |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
func (a *AlarmEmail) Parse(tk string) (bool, error) { |
||||
|
switch a.state { |
||||
|
case TK_NONE: |
||||
|
switch strings.ToLower(tk){ |
||||
|
case "to": |
||||
|
a.state = TK_TO |
||||
|
case "from": |
||||
|
a.state = TK_FROM |
||||
|
case "smtp": |
||||
|
a.state = TK_SMTP |
||||
|
default: |
||||
|
return false, nil |
||||
|
} |
||||
|
|
||||
|
case TK_FROM: |
||||
|
a.From = tk |
||||
|
a.state = TK_NONE |
||||
|
|
||||
|
case TK_SMTP: |
||||
|
a.SMTP = tk |
||||
|
a.state = TK_NONE |
||||
|
|
||||
|
case TK_TO: |
||||
|
a.To = append(a.To, tk) |
||||
|
a.state = TK_NONE |
||||
|
|
||||
|
default: |
||||
|
return false, fmt.Errorf("invalid state in alarm_email") |
||||
|
} |
||||
|
return true, nil |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue