refactor: rename LocalWebServerLoopbackOnly to LocalLoopbackOnly

- Updated the configuration struct and related RPC methods to use the new name `LocalLoopbackOnly` for clarity.
- Adjusted the web server binding logic and device response structure to reflect this change.
This commit is contained in:
Alex Goodkind 2025-05-24 16:02:22 +00:00
parent 4ab11a6af1
commit 54af0ab0fb
No known key found for this signature in database
3 changed files with 127 additions and 128 deletions

View File

@ -85,6 +85,7 @@ type Config struct {
HashedPassword string `json:"hashed_password"` HashedPassword string `json:"hashed_password"`
LocalAuthToken string `json:"local_auth_token"` LocalAuthToken string `json:"local_auth_token"`
LocalAuthMode string `json:"localAuthMode"` //TODO: fix it with migration LocalAuthMode string `json:"localAuthMode"` //TODO: fix it with migration
LocalLoopbackOnly bool `json:"local_loopback_only"`
WakeOnLanDevices []WakeOnLanDevice `json:"wake_on_lan_devices"` WakeOnLanDevices []WakeOnLanDevice `json:"wake_on_lan_devices"`
KeyboardMacros []KeyboardMacro `json:"keyboard_macros"` KeyboardMacros []KeyboardMacro `json:"keyboard_macros"`
KeyboardLayout string `json:"keyboard_layout"` KeyboardLayout string `json:"keyboard_layout"`
@ -95,7 +96,6 @@ type Config struct {
DisplayDimAfterSec int `json:"display_dim_after_sec"` DisplayDimAfterSec int `json:"display_dim_after_sec"`
DisplayOffAfterSec int `json:"display_off_after_sec"` DisplayOffAfterSec int `json:"display_off_after_sec"`
TLSMode string `json:"tls_mode"` // options: "self-signed", "user-defined", "" TLSMode string `json:"tls_mode"` // options: "self-signed", "user-defined", ""
LocalWebServerLoopbackOnly bool `json:"local_web_server_loopback_only"`
UsbConfig *usbgadget.Config `json:"usb_config"` UsbConfig *usbgadget.Config `json:"usb_config"`
UsbDevices *usbgadget.Devices `json:"usb_devices"` UsbDevices *usbgadget.Devices `json:"usb_devices"`
NetworkConfig *network.NetworkConfig `json:"network_config"` NetworkConfig *network.NetworkConfig `json:"network_config"`
@ -116,7 +116,6 @@ var defaultConfig = &Config{
DisplayDimAfterSec: 120, // 2 minutes DisplayDimAfterSec: 120, // 2 minutes
DisplayOffAfterSec: 1800, // 30 minutes DisplayOffAfterSec: 1800, // 30 minutes
TLSMode: "", TLSMode: "",
LocalWebServerLoopbackOnly: false, // Allow access from any network interface by default
UsbConfig: &usbgadget.Config{ UsbConfig: &usbgadget.Config{
VendorId: "0x1d6b", //The Linux Foundation VendorId: "0x1d6b", //The Linux Foundation
ProductId: "0x0104", //Multifunction Composite Gadget ProductId: "0x0104", //Multifunction Composite Gadget

View File

@ -1006,18 +1006,18 @@ func setKeyboardMacros(params KeyboardMacrosParams) (interface{}, error) {
return nil, nil return nil, nil
} }
func rpcGetLocalWebServerLoopbackOnly() (bool, error) { func rpcGetLocalLoopbackOnly() (bool, error) {
return config.LocalWebServerLoopbackOnly, nil return config.LocalLoopbackOnly, nil
} }
func rpcSetLocalWebServerLoopbackOnly(enabled bool) error { func rpcSetLocalLoopbackOnly(enabled bool) error {
// Check if the setting is actually changing // Check if the setting is actually changing
if config.LocalWebServerLoopbackOnly == enabled { if config.LocalLoopbackOnly == enabled {
return nil return nil
} }
// Update the setting // Update the setting
config.LocalWebServerLoopbackOnly = enabled config.LocalLoopbackOnly = enabled
if err := SaveConfig(); err != nil { if err := SaveConfig(); err != nil {
return fmt.Errorf("failed to save config: %w", err) return fmt.Errorf("failed to save config: %w", err)
} }
@ -1102,6 +1102,6 @@ var rpcHandlers = map[string]RPCHandler{
"setKeyboardLayout": {Func: rpcSetKeyboardLayout, Params: []string{"layout"}}, "setKeyboardLayout": {Func: rpcSetKeyboardLayout, Params: []string{"layout"}},
"getKeyboardMacros": {Func: getKeyboardMacros}, "getKeyboardMacros": {Func: getKeyboardMacros},
"setKeyboardMacros": {Func: setKeyboardMacros, Params: []string{"params"}}, "setKeyboardMacros": {Func: setKeyboardMacros, Params: []string{"params"}},
"getLocalWebServerLoopbackOnly": {Func: rpcGetLocalWebServerLoopbackOnly}, "getLocalLoopbackOnly": {Func: rpcGetLocalLoopbackOnly},
"setLocalWebServerLoopbackOnly": {Func: rpcSetLocalWebServerLoopbackOnly, Params: []string{"enabled"}}, "setLocalLoopbackOnly": {Func: rpcSetLocalLoopbackOnly, Params: []string{"enabled"}},
} }

8
web.go
View File

@ -54,7 +54,7 @@ type ChangePasswordRequest struct {
type LocalDevice struct { type LocalDevice struct {
AuthMode *string `json:"authMode"` AuthMode *string `json:"authMode"`
DeviceID string `json:"deviceId"` DeviceID string `json:"deviceId"`
LocalWebServerLoopbackOnly bool `json:"localWebServerLoopbackOnly"` LoopbackOnly bool `json:"loopbackOnly"`
} }
type DeviceStatus struct { type DeviceStatus struct {
@ -536,11 +536,11 @@ func RunWebServer() {
// Determine the binding address based on the config // Determine the binding address based on the config
bindAddress := ":80" // Default to all interfaces bindAddress := ":80" // Default to all interfaces
if config.LocalWebServerLoopbackOnly { if config.LocalLoopbackOnly {
bindAddress = "localhost:80" // Loopback only (both IPv4 and IPv6) bindAddress = "localhost:80" // Loopback only (both IPv4 and IPv6)
} }
logger.Info().Str("bindAddress", bindAddress).Bool("loopbackOnly", config.LocalWebServerLoopbackOnly).Msg("Starting web server") logger.Info().Str("bindAddress", bindAddress).Bool("loopbackOnly", config.LocalLoopbackOnly).Msg("Starting web server")
err := r.Run(bindAddress) err := r.Run(bindAddress)
if err != nil { if err != nil {
panic(err) panic(err)
@ -551,7 +551,7 @@ func handleDevice(c *gin.Context) {
response := LocalDevice{ response := LocalDevice{
AuthMode: &config.LocalAuthMode, AuthMode: &config.LocalAuthMode,
DeviceID: GetDeviceID(), DeviceID: GetDeviceID(),
LocalWebServerLoopbackOnly: config.LocalWebServerLoopbackOnly, LoopbackOnly: config.LocalLoopbackOnly,
} }
c.JSON(http.StatusOK, response) c.JSON(http.StatusOK, response)