Add go server

This commit is contained in:
Chandler Swift 2026-02-12 00:09:06 -06:00
parent 85c7c4fd9f
commit 6bddf284fe
Signed by: chandlerswift
GPG key ID: A851D929D52FB93F
4 changed files with 52 additions and 8 deletions

1
.gitignore vendored
View file

@ -24,3 +24,4 @@ dist-ssr
*.sw? *.sw?
.env .env
server/server

View file

@ -1,23 +1,26 @@
.PHONY: build deploy clean start default .PHONY: deploy clean start default frontend
default: start server/server: frontend
rm -rf server/dist
mv dist server/
CGO_ENABLED=0 go -C server build .
build: frontend:
npm run build npm run build
deploy: build deploy: server/server
scp -r dist kiosk: scp server/server kiosk:
clean: clean:
rm -rf dist rm -rf dist server/dist server/server
start: deploy start: deploy
# TODO: This doesn't kill weston nicely; I should handle that? Or background or something # TODO: This doesn't kill weston nicely; I should handle that? Or background or something
ssh kiosk "pgrep -f 'python3 -m http.server' || python3 -m http.server --directory /home/chandler/dist 127.0.0.1:8000 &" ssh kiosk "pgrep -f './server' || ./server"
#ssh kiosk "pkill -f 'weston --shell=kiosk-shell.so' || true" #ssh kiosk "pkill -f 'weston --shell=kiosk-shell.so' || true"
ssh kiosk weston --shell=kiosk-shell.so -- firefox --kiosk localhost:8000 --remote-debugging-port=9222 ssh kiosk weston --shell=kiosk-shell.so -- firefox --kiosk localhost:8000 --remote-debugging-port=9222
debug: deploy debug: deploy
ssh kiosk "pgrep -f 'python3 -m http.server' || python3 -m http.server --directory /home/chandler/dist 127.0.0.1:8000 &" ssh kiosk "pgrep -f './server' || ./server"
#ssh kiosk "pkill -f 'weston --shell=kiosk-shell.so' || true" #ssh kiosk "pkill -f 'weston --shell=kiosk-shell.so' || true"
ssh -L 6000:localhost:6000 kiosk weston --shell=kiosk-shell.so -- firefox --kiosk localhost:8000 --start-debugger-server 6000 ssh -L 6000:localhost:6000 kiosk weston --shell=kiosk-shell.so -- firefox --kiosk localhost:8000 --start-debugger-server 6000

3
server/go.mod Normal file
View file

@ -0,0 +1,3 @@
module git.chandlerswift.com/chandlerswift/digital-turntable/server
go 1.25.5

37
server/main.go Normal file
View file

@ -0,0 +1,37 @@
package main
import (
"embed"
"fmt"
"log"
"net/http"
"os"
)
//go:embed dist
var webUI embed.FS
func setReader(state string) error {
// echo 'on' > '/sys/bus/usb/devices/1-1/power/control' # or 'auto'
switch state {
case "auto", "on":
return os.WriteFile("/sys/bus/usb/devices/1-1/power/control", []byte(state), 0)
default:
return fmt.Errorf("unknown state %q", state)
}
}
func main() {
setReader("on")
http.Handle("/", http.FileServerFS(webUI))
http.HandleFunc("POST /api/reader/{state}", func(w http.ResponseWriter, r *http.Request) {
if err := setReader(r.PathValue("state")); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Write([]byte("ok"))
})
log.Fatal(http.ListenAndServe("127.0.0.1:8000", nil))
}