summaryrefslogtreecommitdiff
path: root/pkg/motd/fetch.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/motd/fetch.go')
-rw-r--r--pkg/motd/fetch.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/pkg/motd/fetch.go b/pkg/motd/fetch.go
new file mode 100644
index 0000000..4f22388
--- /dev/null
+++ b/pkg/motd/fetch.go
@@ -0,0 +1,54 @@
+package motd
+
+import (
+ "io/ioutil"
+ "log"
+ "net/http"
+ "os"
+
+ "0xacab.org/leap/bitmask-vpn/pkg/config"
+)
+
+func FetchLatest() []Message {
+ empty := []Message{}
+ if os.Getenv("SKIP_MOTD") == "1" {
+ return empty
+ }
+ url := ""
+ switch config.Provider {
+ case "riseup.net":
+ url = "https://downloads.leap.se/motd/riseup/motd.json"
+ default:
+ return empty
+ }
+ log.Println("Fetching MOTD for", config.Provider)
+ b, err := fetchURL(url)
+ if err != nil {
+ log.Println("WARN Error fetching json from", url)
+ return empty
+ }
+ allMsg, err := getFromJSON(b)
+ if err != nil {
+ log.Println("WARN Error parsing json from", url)
+ return empty
+ }
+ valid := empty[:]
+ if allMsg.Length() != 0 {
+ log.Printf("There are %d pending messages\n", allMsg.Length())
+ }
+ for _, msg := range allMsg.Messages {
+ if msg.IsValid() {
+ valid = append(valid, msg)
+ }
+ }
+ return valid
+}
+
+func fetchURL(url string) ([]byte, error) {
+ resp, err := http.Get(url)
+ if err != nil {
+ panic(err)
+ }
+ defer resp.Body.Close()
+ return ioutil.ReadAll(resp.Body)
+}