client-interface-cleanup (#6)

Refactoring and code cleanup. Improved client command interface.
This commit is contained in:
2025-09-17 08:00:12 +00:00
parent 75c7c2d3d9
commit 3d93c0206c
14 changed files with 349 additions and 63 deletions

View File

@@ -13,6 +13,8 @@ import (
"net/url"
"os"
"vppn/m"
"git.crumpington.com/lib/go/flock"
)
type peerMain struct {
@@ -20,12 +22,7 @@ type peerMain struct {
ifReader *IFReader
connReader *ConnReader
hubPoller *HubPoller
}
type mainArgs struct {
NetName string
HubAddress string
APIKey string
lockFile *os.File
}
func newPeerMain(args mainArgs) *peerMain {
@@ -33,6 +30,14 @@ func newPeerMain(args mainArgs) *peerMain {
log.Printf("[Main] "+s, args...)
}
lockFile, err := flock.TryLock(lockFilePath(args.NetName))
if err != nil {
log.Fatalf("Failed to open lock file: %v", err)
}
if lockFile == nil {
log.Fatalf("Failed to obtain file lock.")
}
config, err := loadPeerConfig(args.NetName)
if err != nil {
logf("Failed to load configuration: %v", err)
@@ -100,11 +105,15 @@ func newPeerMain(args mainArgs) *peerMain {
log.Fatalf("Failed to create hub poller: %v", err)
}
// Start status server.
go runStatusServer(g, statusSocketPath(args.NetName))
return &peerMain{
Globals: g,
ifReader: NewIFReader(g),
connReader: NewConnReader(g, conn),
hubPoller: hubPoller,
lockFile: lockFile,
}
}