Compare commits

...

4 Commits

Author SHA1 Message Date
Josh Arrington c5d6fb4d38
Merge 87f36167f3 into 951173ba19 2025-02-13 19:25:37 +01:00
Andrew 951173ba19
Restart mDNS every time the connection information changes (#155) 2025-02-13 18:10:47 +01:00
Josh Arrington 87f36167f3 Separate Podman devcontainer config with SELinux support 2025-02-07 05:55:44 +00:00
Josh Arrington 508ea65fae [chore] Ensure dev_deploy is run with bash 2025-02-07 05:55:10 +00:00
4 changed files with 40 additions and 4 deletions

View File

@ -1,5 +1,5 @@
{ {
"name": "JetKVM", "name": "JetKVM Default",
"image": "mcr.microsoft.com/devcontainers/go:1-1.23-bookworm", "image": "mcr.microsoft.com/devcontainers/go:1-1.23-bookworm",
"features": { "features": {
"ghcr.io/devcontainers/features/node:1": { "ghcr.io/devcontainers/features/node:1": {

View File

@ -0,0 +1,19 @@
{
"name": "JetKVM Podman",
"image": "mcr.microsoft.com/devcontainers/go:1-1.23-bookworm",
"features": {
"ghcr.io/devcontainers/features/node:1": {
// Should match what is defined in ui/package.json
"version": "21.1.0"
}
},
"runArgs": [
"--userns=keep-id",
"--security-opt=label=disable",
"--security-opt=label=nested"
],
"containerUser": "vscode",
"containerEnv": {
"HOME": "/home/vscode"
}
}

View File

@ -1,3 +1,5 @@
#!/bin/bash
# Exit immediately if a command exits with a non-zero status # Exit immediately if a command exits with a non-zero status
set -e set -e

View File

@ -13,6 +13,8 @@ import (
"github.com/vishvananda/netlink/nl" "github.com/vishvananda/netlink/nl"
) )
var mDNSConn *mdns.Conn
var networkState struct { var networkState struct {
Up bool Up bool
IPv4 string IPv4 string
@ -91,13 +93,26 @@ func checkNetworkState() {
} }
if newState != networkState { if newState != networkState {
networkState = newState
fmt.Println("network state changed") fmt.Println("network state changed")
//restart MDNS
startMDNS()
networkState = newState
requestDisplayUpdate() requestDisplayUpdate()
} }
} }
func startMDNS() error { func startMDNS() error {
//If server was previously running, stop it
if mDNSConn != nil {
fmt.Printf("Stopping mDNS server\n")
err := mDNSConn.Close()
if err != nil {
fmt.Printf("failed to stop mDNS server: %v\n", err)
}
}
//Start a new server
fmt.Printf("Starting mDNS server on jetkvm.local\n")
addr4, err := net.ResolveUDPAddr("udp4", mdns.DefaultAddressIPv4) addr4, err := net.ResolveUDPAddr("udp4", mdns.DefaultAddressIPv4)
if err != nil { if err != nil {
return err return err
@ -118,10 +133,11 @@ func startMDNS() error {
return err return err
} }
_, err = mdns.Server(ipv4.NewPacketConn(l4), ipv6.NewPacketConn(l6), &mdns.Config{ mDNSConn, err = mdns.Server(ipv4.NewPacketConn(l4), ipv6.NewPacketConn(l6), &mdns.Config{
LocalNames: []string{"jetkvm.local"}, //TODO: make it configurable LocalNames: []string{"jetkvm.local"}, //TODO: make it configurable
}) })
if err != nil { if err != nil {
mDNSConn = nil
return err return err
} }
//defer server.Close() //defer server.Close()
@ -157,7 +173,6 @@ func init() {
} }
} }
}() }()
fmt.Println("Starting mDNS server")
err := startMDNS() err := startMDNS()
if err != nil { if err != nil {
fmt.Println("failed to run mDNS: %v", err) fmt.Println("failed to run mDNS: %v", err)