MCPcopy Create free account
hub / github.com/basecamp/omarchy / parseStatus

Function parseStatus

shell/plugins/panels/tailscale/Model.js:223–271  ·  view source on GitHub ↗
(raw)

Source from the content-addressed store, hash-verified

221}
222
223function parseStatus(raw) {
224 var text = String(raw || "").trim()
225 if (text === "") return { ok: true, unavailable: true, message: "Disconnected" }
226
227 try {
228 var data = JSON.parse(text)
229 var backendState = String(data.BackendState || "Unknown")
230 var self = data.Self || {}
231 var selfIps = filterIPv4(self.TailscaleIPs || data.TailscaleIPs || [])
232 var peers = []
233 var exitNodes = []
234 var rawPeers = data.Peer || {}
235
236 for (var id in rawPeers) {
237 var peer = rawPeers[id] || {}
238 var normalized = peerFromStatus(id, peer)
239 if (normalized.Mullvad) continue
240 if (normalized.Online) {
241 peers.push(normalized)
242 if (normalized.ExitNodeOption) exitNodes.push(normalized)
243 }
244 }
245
246 peers.sort(function(a, b) {
247 return String(a.HostName).localeCompare(String(b.HostName))
248 })
249 exitNodes.sort(function(a, b) {
250 return String(a.HostName).localeCompare(String(b.HostName))
251 })
252
253 return {
254 ok: true,
255 unavailable: false,
256 backendState: backendState,
257 running: backendState === "Running",
258 needsLogin: backendState === "NeedsLogin",
259 authUrl: String(data.AuthURL || ""),
260 selfName: displayHostName(self.HostName, self.DNSName),
261 selfDnsName: cleanDnsName(self.DNSName),
262 selfIp: selfIps.length > 0 ? selfIps[0] : "",
263 selfUserId: String(self.UserID || ""),
264 fileSharing: hasFileSharing(self),
265 peers: peers,
266 exitNodes: exitNodes
267 }
268 } catch (e) {
269 return { ok: false, unavailable: true, message: "Status error", error: "Failed to parse tailscale status" }
270 }
271}
272
273function parseAccounts(raw) {
274 var text = String(raw || "").trim()

Callers

nothing calls this directly

Calls 5

filterIPv4Function · 0.85
peerFromStatusFunction · 0.85
displayHostNameFunction · 0.85
cleanDnsNameFunction · 0.85
hasFileSharingFunction · 0.85

Tested by

no test coverage detected