MCPcopy Create free account
hub / github.com/DEROFDN/Engram / toggleXSWD

Function toggleXSWD

functions.go:3428–3527  ·  view source on GitHub ↗

Start a permissioned web socket server to allow decentralized application communication

(endpoint string)

Source from the content-addressed store, hash-verified

3426
3427// Start a permissioned web socket server to allow decentralized application communication
3428func toggleXSWD(endpoint string) {
3429 if engram.Disk == nil {
3430 return
3431 }
3432
3433 if cyberdeck.WS.server != nil {
3434 cyberdeck.WS.server.Stop()
3435 cyberdeck.WS.server = nil
3436 cyberdeck.WS.status.Text = "Blocked"
3437 cyberdeck.WS.status.Color = colors.Gray
3438 cyberdeck.WS.status.Refresh()
3439 cyberdeck.WS.toggle.Text = "Turn On"
3440 cyberdeck.WS.toggle.Refresh()
3441 status.Cyberdeck.FillColor = colors.Gray
3442 status.Cyberdeck.StrokeColor = colors.Gray
3443 status.Cyberdeck.Refresh()
3444 cyberdeck.WS.advanced = false
3445 cyberdeck.WS.global.enabled = false
3446 cyberdeck.WS.global.connect = false
3447 cyberdeck.WS.apps = []xswd.ApplicationData{}
3448 if cyberdeck.WS.list != nil {
3449 cyberdeck.WS.list.Refresh()
3450 }
3451 logger.Printf("[Engram] XSWD server closed\n")
3452 } else {
3453 _, portNum, err := net.SplitHostPort(endpoint)
3454 if err != nil {
3455 logger.Errorf("[Engram] Invalid XSWD server endpoint: %s\n", err)
3456 return
3457 }
3458
3459 portInt, err := strconv.Atoi(portNum)
3460 if err != nil {
3461 logger.Errorf("[Engram] Invalid XSWD server port: %s\n", err)
3462 return
3463 }
3464
3465 logger.Printf("[Engram] Starting XSWD server %s\n", endpoint)
3466
3467 noStoreMethods := engramNoStoreMethods()
3468
3469 cyberdeck.WS.server = xswd.NewXSWDServerWithPort(portInt, engram.Disk, false, noStoreMethods, func(ad *xswd.ApplicationData) bool {
3470 return XSWDPrompt(ad)
3471 }, func(ad *xswd.ApplicationData, r *jrpc2.Request) xswd.Permission {
3472 return AskPermissionForRequest(ad, r)
3473 })
3474
3475 cyberdeck.WS.toggle.Disable()
3476 cyberdeck.WS.toggle.Text = "Initializing"
3477 cyberdeck.WS.toggle.Refresh()
3478 time.Sleep(time.Second)
3479 if !cyberdeck.WS.server.IsRunning() {
3480 cyberdeck.WS.server = nil
3481 logger.Errorf("[Engram] Error starting XSWD server\n")
3482 cyberdeck.WS.toggle.Text = "Error starting web sockets"
3483 cyberdeck.WS.toggle.Refresh()
3484 go func() {
3485 time.Sleep(time.Second * 2)

Callers 1

layoutCyberdeckFunction · 0.85

Calls 4

engramNoStoreMethodsFunction · 0.85
XSWDPromptFunction · 0.85
AskPermissionForRequestFunction · 0.85
RefreshMethod · 0.80

Tested by

no test coverage detected