From 7735a70f312fe5532c549956b8b5cdda72f317b3 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Fri, 29 Sep 2023 20:18:35 -0500 Subject: [PATCH 1/9] Remove old drone.yml --- .drone.yml | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index d57fd37..0000000 --- a/.drone.yml +++ /dev/null @@ -1,28 +0,0 @@ -kind: pipeline -type: docker -name: default - -steps: - - name: validate - image: golang - commands: - - go build - - go test - - name: deploy - image: golang - environment: - SSH_PRIVATE_KEY: - from_secret: ssh_private_key - commands: - - go build - - apt-get update; apt-get install -y rsync - - mkdir ~/.ssh - - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa; chmod 600 ~/.ssh/id_rsa - - ssh-keyscan -t rsa factorio.blackolivepineapple.pizza >> ~/.ssh/known_hosts - - ssh service@factorio.blackolivepineapple.pizza sudo service factorio-site stop || true - - rsync --rsync-path="sudo rsync" --archive --verbose --compress . service@factorio.blackolivepineapple.pizza:/opt/factorio-site/ - - ssh service@factorio.blackolivepineapple.pizza sudo mv /opt/factorio-site/factorio-site.service /etc/systemd/system/ - - ssh service@factorio.blackolivepineapple.pizza sudo systemctl daemon-reload - - ssh service@factorio.blackolivepineapple.pizza sudo service factorio-site start - when: - branch: master From f94e307bc84b24f4df9fe326ff459a7b96ec8d6f Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Fri, 29 Sep 2023 20:18:41 -0500 Subject: [PATCH 2/9] Add Makefile --- Makefile | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e8803b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +minecraft-site: + go build -tags netgo -ldflags '-extldflags "-static"' From c97321beae362e5dda66ebb39f71f9294c9c3bdd Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Fri, 29 Sep 2023 21:13:35 -0500 Subject: [PATCH 3/9] Add Makefile dependencies --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e8803b5..68066f2 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,2 @@ -minecraft-site: +minecraft-site: minecraft-site.go index.html go.mod go.sum go build -tags netgo -ldflags '-extldflags "-static"' From 2c078285b8c452ad544e01f5cdebd5e00a606595 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Fri, 29 Sep 2023 21:13:53 -0500 Subject: [PATCH 4/9] Embed template for single-binary deploys --- templates/index.html => index.html | 0 minecraft-site.go | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) rename templates/index.html => index.html (100%) diff --git a/templates/index.html b/index.html similarity index 100% rename from templates/index.html rename to index.html diff --git a/minecraft-site.go b/minecraft-site.go index 4794928..a653bee 100644 --- a/minecraft-site.go +++ b/minecraft-site.go @@ -2,6 +2,7 @@ package main import ( "crypto/tls" + _ "embed" "encoding/json" "fmt" "html/template" @@ -35,6 +36,9 @@ type pageData struct { Servers []server } +//go:embed index.html +var indexhtml string + func main() { // Parse config file @@ -63,7 +67,7 @@ func main() { // Set up templates fmt.Print("Parsing templates...\n") - t, err := template.ParseFiles("templates/index.html") + t, err := template.New("").Parse(indexhtml) if err != nil { log.Fatalf("Error parsing HTML template: %v\n", err) } From 46d18a018ef6358a30f9bb1c87f8cabf9581e518 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Thu, 12 Oct 2023 22:02:59 -0500 Subject: [PATCH 5/9] Add 404 handler for not-index --- minecraft-site.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/minecraft-site.go b/minecraft-site.go index a653bee..b422606 100644 --- a/minecraft-site.go +++ b/minecraft-site.go @@ -73,6 +73,9 @@ func main() { } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path != "/" { + http.NotFound(w, r) + } // Update servers with current data for i, s := range config.Servers { From 8b0242419d79b78b2ab5e9eadefa189f41358200 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Thu, 12 Oct 2023 22:04:18 -0500 Subject: [PATCH 6/9] Add 404 for nonexistent pages --- minecraft-site.go | 1 + 1 file changed, 1 insertion(+) diff --git a/minecraft-site.go b/minecraft-site.go index b422606..0d03fd8 100644 --- a/minecraft-site.go +++ b/minecraft-site.go @@ -75,6 +75,7 @@ func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { http.NotFound(w, r) + return } // Update servers with current data From 4761cfbd1cb0caa2374fb7d125c04de9c3c8433b Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Thu, 12 Oct 2023 22:04:26 -0500 Subject: [PATCH 7/9] Add basic JSON API --- minecraft-site.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/minecraft-site.go b/minecraft-site.go index 0d03fd8..2b4bd64 100644 --- a/minecraft-site.go +++ b/minecraft-site.go @@ -93,6 +93,23 @@ func main() { } }) + http.HandleFunc("/data.json", func(w http.ResponseWriter, r *http.Request) { + // Update servers with current data + for i, s := range config.Servers { + // TODO: Query instead (opportunistically?) to get mod lists, etc + config.Servers[i].Status, err = minequery.Ping17(s.Host, s.Port) + if err != nil { + log.Printf("Error querying server: %v", err) + } + } + msg, err := json.Marshal(config.Servers) + if err != nil { + http.Error(w, err.Error(), 500) + } + w.Header().Set("Content-Type", "application/json") + w.Write(msg) + }) + // Serve backup directory if serveBackups { // TODO: add HTML http.Handle("/backups/", http.StripPrefix("/backups/", http.FileServer(http.Dir(config.BackupDir)))) From 3458476ca49f3fdf7e3b3689a7fb7ccb30162f01 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Thu, 12 Oct 2023 22:11:57 -0500 Subject: [PATCH 8/9] Add deploy command to Makefile --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 68066f2..7b57339 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,7 @@ minecraft-site: minecraft-site.go index.html go.mod go.sum go build -tags netgo -ldflags '-extldflags "-static"' + +.PHONY: deploy +deploy: minecraft-site + rsync --rsync-path="sudo -u minecraft rsync" minecraft-site zirconium:/home/minecraft/minecraft-site + ssh zirconium sudo systemctl restart minecraft-site.service From 24c4134dbaec95f8cf9a06ca012bbb7ca3488ea0 Mon Sep 17 00:00:00 2001 From: Chandler Swift Date: Thu, 12 Oct 2023 22:40:37 -0500 Subject: [PATCH 9/9] Add API link to footer --- index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 385a4e0..e04fff8 100644 --- a/index.html +++ b/index.html @@ -55,6 +55,9 @@ {{end}} {{end}} -

This page maintained by chandlerswift's minecraft server list.

+

+ This page maintained by chandlerswift's minecraft server list. + API at /data.json. +