diff options
Diffstat (limited to 'branding/motd-cli/main.go')
-rw-r--r-- | branding/motd-cli/main.go | 123 |
1 files changed, 8 insertions, 115 deletions
diff --git a/branding/motd-cli/main.go b/branding/motd-cli/main.go index 0ac1316..cea5910 100644 --- a/branding/motd-cli/main.go +++ b/branding/motd-cli/main.go @@ -1,110 +1,19 @@ package main import ( - "encoding/json" "flag" "fmt" "io" "io/ioutil" - "log" "net/http" "os" - "time" -) + "path/filepath" -/* TODO move structs to pkg/config/motd module, import from there */ + "0xacab.org/leap/bitmask-vpn/pkg/motd" +) -const defaultFile = "motd-example.json" const OK = "✓" const WRONG = "☓" -const TimeString = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone - -type Messages struct { - Messages []Message `json:"motd"` -} - -func (m *Messages) Length() int { - return len(m.Messages) -} - -type Message struct { - Begin string `json:"begin"` - End string `json:"end"` - Type string `json:"type"` - Platform string `json:"platform"` - Urgency string `json:"urgency"` - Text []LocalizedText `json:"text"` -} - -func (m *Message) IsValid() bool { - valid := (m.IsValidBegin() && m.IsValidEnd() && - m.IsValidType() && m.IsValidPlatform() && m.IsValidUrgency() && - m.HasLocalizedText()) - return valid -} - -func (m *Message) IsValidBegin() bool { - _, err := time.Parse(TimeString, m.Begin) - if err != nil { - log.Println(err) - return false - } - return true -} - -func (m *Message) IsValidEnd() bool { - endTime, err := time.Parse(TimeString, m.End) - if err != nil { - log.Println(err) - return false - } - beginTime, err := time.Parse(TimeString, m.Begin) - if err != nil { - log.Println(err) - return false - } - if !beginTime.Before(endTime) { - log.Println("begin ts should be before end") - return false - } - return true -} - -func (m *Message) IsValidType() bool { - switch m.Type { - case "once", "daily": - return true - default: - return false - } -} - -func (m *Message) IsValidPlatform() bool { - switch m.Platform { - case "windows", "linux", "osx", "all": - return true - default: - return false - } -} - -func (m *Message) IsValidUrgency() bool { - switch m.Urgency { - case "normal", "critical": - return true - default: - return false - } -} - -func (m *Message) HasLocalizedText() bool { - return len(m.Text) > 0 -} - -type LocalizedText struct { - Lang string `json:"lang"` - Str string `json:"str"` -} func main() { file := flag.String("file", "", "file to validate") @@ -114,16 +23,19 @@ func main() { f := *file u := *url + var m motd.Messages + var err error + if u != "" { fmt.Println("url:", u) f = downloadToTempFile(u) } else { if f == "" { - f = defaultFile + f = filepath.Join("../../pkg/motd/", motd.ExampleFile) } fmt.Println("file:", f) } - m, err := parseFile(f) + m, err = motd.ParseFile(f) if err != nil { panic(err) } @@ -159,25 +71,6 @@ func downloadToTempFile(url string) string { return out.Name() } -func parseFile(f string) (Messages, error) { - jsonFile, err := os.Open(f) - if err != nil { - panic(err) - } - defer jsonFile.Close() - byteVal, err := ioutil.ReadAll(jsonFile) - if err != nil { - panic(err) - } - return parseJsonStr(byteVal) -} - -func parseJsonStr(b []byte) (Messages, error) { - var m Messages - json.Unmarshal(b, &m) - return m, nil -} - func mark(val bool) string { if val { return OK |