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)) }