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