summaryrefslogtreecommitdiff
path: root/branding/motd-cli/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'branding/motd-cli/main.go')
-rw-r--r--branding/motd-cli/main.go123
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