From 10af1164040b25d9a8e891e50e747918622bc2f7 Mon Sep 17 00:00:00 2001 From: JackTheRooster Date: Sun, 2 Mar 2025 21:41:05 -0600 Subject: [PATCH] added slug dependency device name slugified to dns name when set --- jsonrpc.go | 6 + ui/src/components/sidebar/settings.tsx | 809 +++++++++++++------------ 2 files changed, 416 insertions(+), 399 deletions(-) diff --git a/jsonrpc.go b/jsonrpc.go index 3dcd8d8..0c4b709 100644 --- a/jsonrpc.go +++ b/jsonrpc.go @@ -313,6 +313,11 @@ func rpcSetDeviceName(deviceName string) error { return nil } +func rpcGetDNSName() (string, error) { + LoadConfig() + return config.DNSName, nil +} + func rpcGetDevModeState() (DevModeState, error) { devModeEnabled := false if _, err := os.Stat(devModeFile); err != nil { @@ -777,6 +782,7 @@ var rpcHandlers = map[string]RPCHandler{ "tryUpdate": {Func: rpcTryUpdate}, "getDeviceName": {Func: rpcGetDeviceName}, "setDeviceName": {Func: rpcSetDeviceName, Params: []string{"deviceName"}}, + "getDNSName": {Func: rpcGetDNSName}, "getDevModeState": {Func: rpcGetDevModeState}, "setDevModeState": {Func: rpcSetDevModeState, Params: []string{"enabled"}}, "getSSHKeyState": {Func: rpcGetSSHKeyState}, diff --git a/ui/src/components/sidebar/settings.tsx b/ui/src/components/sidebar/settings.tsx index a7f7b79..a9f060c 100644 --- a/ui/src/components/sidebar/settings.tsx +++ b/ui/src/components/sidebar/settings.tsx @@ -362,6 +362,8 @@ export default function SettingsSidebar() { document.title = deviceName; }); + + send("getDevModeState", {}, resp => { if ("error" in resp) return; const result = resp.result as { enabled: boolean }; @@ -459,76 +461,76 @@ export default function SettingsSidebar() { >
- App: {currentVersions.appVersion} -
- System: {currentVersions.systemVersion} - - ) : ( - "Loading current versions..." - ) - } + title="Check for Updates" + description={ + currentVersions ? ( + <> + App: {currentVersions.appVersion} +
+ System: {currentVersions.systemVersion} + + ) : ( + "Loading current versions..." + ) + } />
-
+
{ - setHideCursor(e.target.checked); - }} + checked={hideCursor} + onChange={e => { + setHideCursor(e.target.checked); + }} /> { - handleJigglerChange(e.target.checked); - }} + checked={jiggler} + onChange={e => { + handleJigglerChange(e.target.checked); + }} />
- +
- +
+
+ )}
{isOnDevice && ( - <> -
-
- + <> +
+
+ - -
- -
-
-

- Cloud Security -

-
-
    -
  • • End-to-end encryption using WebRTC (DTLS and SRTP)
  • -
  • • Zero Trust security model
  • -
  • • OIDC (OpenID Connect) authentication
  • -
  • • All streams encrypted in transit
  • -
+ +
+ +
+
+

+ Cloud Security +

+
+
    +
  • • End-to-end encryption using WebRTC (DTLS and SRTP)
  • +
  • • Zero Trust security model
  • +
  • • OIDC (OpenID Connect) authentication
  • +
  • • All streams encrypted in transit
  • +
+
+ +
+ All cloud components are open-source and available on{" "} + + GitHub + + . +
+
-
- All cloud components are open-source and available on{" "} - - GitHub - - . +
+
-
+
+ + {!isAdopted ? (
-
-
-
- - - {!isAdopted ? ( -
- -
- ) : ( -
-
-

- Your device is adopted to JetKVM Cloud -

-
-
-
-
- )} -
- - )} -
- {isOnDevice ? ( - <> -
- - -
- - {localDevice?.authMode === "password" ? ( -
+
+
)}
-
-
- + + )} +
+ {isOnDevice ? ( + <> +
+ + +
+ + {localDevice?.authMode === "password" ? ( +
+
+
+ ) : null}
{ - handleAutoUpdateChange(e.target.checked); - }} + checked={autoUpdate} + onChange={e => { + handleAutoUpdateChange(e.target.checked); + }} /> { - handleDevChannelChange(e.target.checked); - }} + checked={devChannel} + onChange={e => { + handleDevChannelChange(e.target.checked); + }} />
-
+
{ - setCurrentTheme(e.target.value); - handleThemeChange(e.target.value); - }} + size="SM" + label="" + value={currentTheme} + options={[ + {value: "system", label: "System"}, + {value: "light", label: "Light"}, + {value: "dark", label: "Dark"}, + ]} + onChange={e => { + setCurrentTheme(e.target.value); + handleThemeChange(e.target.value); + }} /> handleDeviceNameChange(e.target.value)} + required + label="" + placeholder="Enter Device Name" + defaultValue={settings.deviceName} + onChange={e => handleDeviceNameChange(e.target.value)} /> -
+
+
+
{ - settings.backlightSettings.max_brightness = parseInt(e.target.value) - handleBacklightSettingsChange(settings.backlightSettings); - }} + size="SM" + label="" + value={settings.backlightSettings.max_brightness.toString()} + options={[ + {value: "0", label: "Off"}, + {value: "10", label: "Low"}, + {value: "35", label: "Medium"}, + {value: "64", label: "High"}, + ]} + onChange={e => { + settings.backlightSettings.max_brightness = parseInt(e.target.value) + handleBacklightSettingsChange(settings.backlightSettings); + }} /> {settings.backlightSettings.max_brightness != 0 && ( - <> - - { - settings.backlightSettings.dim_after = parseInt(e.target.value) - handleBacklightSettingsChange(settings.backlightSettings); - }} - /> - - - { - settings.backlightSettings.off_after = parseInt(e.target.value) - handleBacklightSettingsChange(settings.backlightSettings); - }} - /> - - + <> + + { + settings.backlightSettings.dim_after = parseInt(e.target.value) + handleBacklightSettingsChange(settings.backlightSettings); + }} + /> + + + { + settings.backlightSettings.off_after = parseInt(e.target.value) + handleBacklightSettingsChange(settings.backlightSettings); + }} + /> + + )}

The display will wake up when the connection state changes, or when touched.

-
+
handleDevModeChange(e.target.checked)} + checked={settings.developerMode} + onChange={e => handleDevModeChange(e.target.checked)} /> {settings.developerMode && ( -
- handleSSHKeyChange(e.target.value)} - placeholder="Enter your SSH public key" - /> -

- The default SSH user is root. -

-
-
-
)} { - settings.setDebugMode(e.target.checked); - }} + defaultChecked={settings.debugMode} + onChange={e => { + settings.setDebugMode(e.target.checked); + }} /> {settings.debugMode && ( - <> - -
{ - // Revalidate the current route to refresh the local device status and dependent UI components - revalidator.revalidate(); - setIsLocalAuthDialogOpen(x); + open={isLocalAuthDialogOpen} + setOpen={x => { + // Revalidate the current route to refresh the local device status and dependent UI components + revalidator.revalidate(); + setIsLocalAuthDialogOpen(x); }} />