added other dsconnect settings
This commit is contained in:
+41
-7
@@ -26,9 +26,10 @@ type Handler struct {
|
||||
DetachDevice func(clientID, busID string) error
|
||||
SetAutoConnect func(vendorID, productID string, enabled bool) error
|
||||
IsAutoConnect func(vendorID, productID string) bool
|
||||
InstallService func() error
|
||||
UninstallService func() error
|
||||
GetStatus func() map[string]interface{}
|
||||
ForceDetachDevice func(clientID, busID string) error
|
||||
InstallService func() error
|
||||
UninstallService func() error
|
||||
GetStatus func() map[string]interface{}
|
||||
}
|
||||
|
||||
// NewHandler creates a new web handler
|
||||
@@ -57,6 +58,7 @@ func (h *Handler) setupRoutes() {
|
||||
h.mux.HandleFunc("/api/generate-token", h.handleGenerateToken)
|
||||
h.mux.HandleFunc("/api/apply-tokens", h.handleApplyTokens)
|
||||
h.mux.HandleFunc("/api/auto-connect", h.handleAutoConnect)
|
||||
h.mux.HandleFunc("/api/force-detach", h.handleForceDetach)
|
||||
h.mux.HandleFunc("/api/service/install", h.handleServiceInstall)
|
||||
h.mux.HandleFunc("/api/service/uninstall", h.handleServiceUninstall)
|
||||
}
|
||||
@@ -164,10 +166,11 @@ func (h *Handler) handleConfig(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if r.Method == "POST" {
|
||||
var updates struct {
|
||||
RelayAddr string `json:"relay_addr"`
|
||||
Mode string `json:"mode"`
|
||||
Name string `json:"name"`
|
||||
WebPort int `json:"web_port"`
|
||||
RelayAddr string `json:"relay_addr"`
|
||||
Mode string `json:"mode"`
|
||||
Name string `json:"name"`
|
||||
WebPort int `json:"web_port"`
|
||||
AllowForceDetach *bool `json:"allow_force_detach,omitempty"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&updates); err != nil {
|
||||
writeJSON(w, map[string]interface{}{"ok": false, "error": "invalid request"})
|
||||
@@ -186,6 +189,9 @@ func (h *Handler) handleConfig(w http.ResponseWriter, r *http.Request) {
|
||||
if updates.WebPort > 0 {
|
||||
h.cfg.WebPort = updates.WebPort
|
||||
}
|
||||
if updates.AllowForceDetach != nil {
|
||||
h.cfg.AllowForceDetach = *updates.AllowForceDetach
|
||||
}
|
||||
|
||||
if err := h.cfg.Save(h.cfgPath); err != nil {
|
||||
writeJSON(w, map[string]interface{}{"ok": false, "error": err.Error()})
|
||||
@@ -284,6 +290,34 @@ func (h *Handler) handleAutoConnect(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, map[string]interface{}{"ok": true})
|
||||
}
|
||||
|
||||
func (h *Handler) handleForceDetach(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != "POST" {
|
||||
http.Error(w, "Method not allowed", 405)
|
||||
return
|
||||
}
|
||||
|
||||
var req struct {
|
||||
ClientID string `json:"client_id"`
|
||||
BusID string `json:"bus_id"`
|
||||
}
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
writeJSON(w, map[string]interface{}{"ok": false, "error": "invalid request"})
|
||||
return
|
||||
}
|
||||
|
||||
if h.ForceDetachDevice == nil {
|
||||
writeJSON(w, map[string]interface{}{"ok": false, "error": "not in use mode"})
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.ForceDetachDevice(req.ClientID, req.BusID); err != nil {
|
||||
writeJSON(w, map[string]interface{}{"ok": false, "error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
writeJSON(w, map[string]interface{}{"ok": true})
|
||||
}
|
||||
|
||||
func (h *Handler) handleServiceInstall(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != "POST" {
|
||||
http.Error(w, "Method not allowed", 405)
|
||||
|
||||
Reference in New Issue
Block a user