pinokiod 7.1.70 → 7.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/kernel/bin/caddy.js
CHANGED
|
@@ -79,12 +79,23 @@ class Caddy {
|
|
|
79
79
|
console.log("Caddy Installed?", installed)
|
|
80
80
|
if (installed) {
|
|
81
81
|
let resolved
|
|
82
|
+
let startup_output = []
|
|
83
|
+
this.kernel.caddy_startup_output = startup_output
|
|
82
84
|
await new Promise((resolve, reject) => {
|
|
83
85
|
this.kernel.exec({
|
|
84
86
|
message: `caddy run --watch`,
|
|
85
87
|
path: this.kernel.homedir,
|
|
86
88
|
}, (e) => {
|
|
87
89
|
process.stdout.write(e.raw)
|
|
90
|
+
const cleaned = e && e.cleaned ? e.cleaned : ""
|
|
91
|
+
const lines = cleaned.split(/\r?\n/).map((line) => line.trim()).filter(Boolean)
|
|
92
|
+
for (let line of lines) {
|
|
93
|
+
startup_output.push(line)
|
|
94
|
+
if (startup_output.length > 20) {
|
|
95
|
+
startup_output.shift()
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
this.kernel.caddy_startup_output = startup_output.slice()
|
|
88
99
|
if (!resolved) {
|
|
89
100
|
if (/endpoint started/i.test(e.cleaned)) {
|
|
90
101
|
resolved = true
|
|
@@ -93,6 +104,28 @@ class Caddy {
|
|
|
93
104
|
}
|
|
94
105
|
})
|
|
95
106
|
})
|
|
107
|
+
let admin_running = false
|
|
108
|
+
const admin_wait_started = Date.now()
|
|
109
|
+
while ((Date.now() - admin_wait_started) < 5000) {
|
|
110
|
+
admin_running = await this.running()
|
|
111
|
+
if (admin_running) {
|
|
112
|
+
break
|
|
113
|
+
}
|
|
114
|
+
await new Promise((resolve) => {
|
|
115
|
+
setTimeout(resolve, 250)
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
if (!admin_running) {
|
|
119
|
+
console.log("caddy admin unavailable after startup")
|
|
120
|
+
if (startup_output.length > 0) {
|
|
121
|
+
console.log("recent caddy startup output:")
|
|
122
|
+
for (let line of startup_output) {
|
|
123
|
+
console.log(line)
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return
|
|
127
|
+
}
|
|
128
|
+
this.kernel.caddy_startup_output = startup_output.slice()
|
|
96
129
|
console.log("kernel.refresh bin.caddy.start")
|
|
97
130
|
this.kernel.peer.announce()
|
|
98
131
|
console.log("announced to peers")
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -80,7 +80,6 @@ const { createTaskPackageService } = require("./lib/task_packages")
|
|
|
80
80
|
const { createTaskWorkspaceLinkService } = require("./lib/task_workspace_links")
|
|
81
81
|
const { createContentValidationService } = require("./lib/content_validation")
|
|
82
82
|
const { buildSecureRouterDebugSnapshot, createSecureRouterDebugStore } = require("./lib/secure_router_debug")
|
|
83
|
-
const { ensureSecureRouterReady } = require("./lib/secure_router_ready")
|
|
84
83
|
const AppRegistryService = require("./lib/app_registry")
|
|
85
84
|
const AppLogService = require("./lib/app_logs")
|
|
86
85
|
const AppSearchService = require("./lib/app_search")
|
|
@@ -5520,9 +5519,6 @@ class Server {
|
|
|
5520
5519
|
|
|
5521
5520
|
return { success: true }
|
|
5522
5521
|
}
|
|
5523
|
-
async ensureSecureRouterReady(timeout = 120000, interval = 500) {
|
|
5524
|
-
return ensureSecureRouterReady(this, timeout, interval)
|
|
5525
|
-
}
|
|
5526
5522
|
async start(options) {
|
|
5527
5523
|
this.debug = false
|
|
5528
5524
|
if (options) {
|
|
@@ -5792,12 +5788,6 @@ class Server {
|
|
|
5792
5788
|
phase: "initializing_environment"
|
|
5793
5789
|
})
|
|
5794
5790
|
await Environment.init({}, this.kernel)
|
|
5795
|
-
if (this.kernel && this.kernel.peer && this.kernel.peer.https_active) {
|
|
5796
|
-
setStartupStatus({
|
|
5797
|
-
phase: "waiting_for_secure_router"
|
|
5798
|
-
})
|
|
5799
|
-
await this.ensureSecureRouterReady()
|
|
5800
|
-
}
|
|
5801
5791
|
setStartupStatus({
|
|
5802
5792
|
sys_ready: this.getStartupStatus().sys_ready,
|
|
5803
5793
|
managed_ready: true,
|
|
@@ -72,6 +72,9 @@ async function buildSecureRouterDebugSnapshot(server, store) {
|
|
|
72
72
|
const startupStatus = server && typeof server.getStartupStatus === "function"
|
|
73
73
|
? server.getStartupStatus()
|
|
74
74
|
: null
|
|
75
|
+
const caddyStartupOutput = kernel && Array.isArray(kernel.caddy_startup_output)
|
|
76
|
+
? clone(kernel.caddy_startup_output)
|
|
77
|
+
: []
|
|
75
78
|
const state = store && store.state ? clone(store.state) : {}
|
|
76
79
|
const events = store && Array.isArray(store.events) ? clone(store.events) : []
|
|
77
80
|
return {
|
|
@@ -87,6 +90,7 @@ async function buildSecureRouterDebugSnapshot(server, store) {
|
|
|
87
90
|
start_attempted: !!state.caddy_start_attempted,
|
|
88
91
|
start_finished: !!state.caddy_start_finished,
|
|
89
92
|
start_error: state.caddy_start_error || null,
|
|
93
|
+
startup_output: caddyStartupOutput,
|
|
90
94
|
},
|
|
91
95
|
peer: {
|
|
92
96
|
host: peer && peer.host ? peer.host : null,
|
|
@@ -76,6 +76,10 @@
|
|
|
76
76
|
if (serverDebug) {
|
|
77
77
|
lines.push(`Flags: ${JSON.stringify(serverDebug.flags || null)}`)
|
|
78
78
|
lines.push(`Caddy: ${JSON.stringify(serverDebug.caddy || null)}`)
|
|
79
|
+
if (serverDebug.caddy && Array.isArray(serverDebug.caddy.startup_output) && serverDebug.caddy.startup_output.length > 0) {
|
|
80
|
+
lines.push("Caddy startup output:")
|
|
81
|
+
lines.push(...serverDebug.caddy.startup_output)
|
|
82
|
+
}
|
|
79
83
|
lines.push(`Peer: ${JSON.stringify(serverDebug.peer || null)}`)
|
|
80
84
|
lines.push(`Router: ${JSON.stringify(serverDebug.router || null)}`)
|
|
81
85
|
lines.push(`Wait: ${JSON.stringify(serverDebug.wait || null)}`)
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
const { createSecureRouterDebugStore, recordSecureRouterDebug } = require("./secure_router_debug")
|
|
2
|
-
|
|
3
|
-
async function ensureSecureRouterReady(server, timeout = 120000, interval = 500) {
|
|
4
|
-
if (!(server.kernel && server.kernel.peer && server.kernel.peer.https_active)) {
|
|
5
|
-
return { success: true, stage: "disabled" }
|
|
6
|
-
}
|
|
7
|
-
server.secure_router_debug = createSecureRouterDebugStore()
|
|
8
|
-
recordSecureRouterDebug(server.secure_router_debug, "wait started", {
|
|
9
|
-
active: true,
|
|
10
|
-
started_at: new Date().toISOString(),
|
|
11
|
-
last_status: null,
|
|
12
|
-
caddy_start_attempted: false,
|
|
13
|
-
caddy_start_finished: false,
|
|
14
|
-
caddy_start_error: null,
|
|
15
|
-
refresh_attempted: false,
|
|
16
|
-
refresh_finished: false,
|
|
17
|
-
refresh_error: null,
|
|
18
|
-
})
|
|
19
|
-
const caddy = server.kernel && server.kernel.bin && server.kernel.bin.mod
|
|
20
|
-
? server.kernel.bin.mod.caddy
|
|
21
|
-
: null
|
|
22
|
-
const deadline = Date.now() + timeout
|
|
23
|
-
let startedCaddyManually = false
|
|
24
|
-
let refreshedRouter = false
|
|
25
|
-
let lastStatus = null
|
|
26
|
-
let lastStatusSummary = null
|
|
27
|
-
while (Date.now() < deadline) {
|
|
28
|
-
lastStatus = await server.check_router_up()
|
|
29
|
-
const statusSummary = lastStatus && lastStatus.success
|
|
30
|
-
? "success"
|
|
31
|
-
: (lastStatus && lastStatus.error ? lastStatus.error : JSON.stringify(lastStatus))
|
|
32
|
-
if (statusSummary !== lastStatusSummary) {
|
|
33
|
-
lastStatusSummary = statusSummary
|
|
34
|
-
recordSecureRouterDebug(server.secure_router_debug, `check_router_up -> ${statusSummary}`, {
|
|
35
|
-
last_status: lastStatus
|
|
36
|
-
})
|
|
37
|
-
}
|
|
38
|
-
if (lastStatus && lastStatus.success) {
|
|
39
|
-
recordSecureRouterDebug(server.secure_router_debug, "wait success", {
|
|
40
|
-
active: false
|
|
41
|
-
})
|
|
42
|
-
return lastStatus
|
|
43
|
-
}
|
|
44
|
-
if (
|
|
45
|
-
lastStatus &&
|
|
46
|
-
lastStatus.error === "caddy admin unavailable" &&
|
|
47
|
-
!startedCaddyManually &&
|
|
48
|
-
caddy &&
|
|
49
|
-
typeof caddy.start === "function"
|
|
50
|
-
) {
|
|
51
|
-
startedCaddyManually = true
|
|
52
|
-
recordSecureRouterDebug(server.secure_router_debug, "manual caddy.start() attempted", {
|
|
53
|
-
caddy_start_attempted: true
|
|
54
|
-
})
|
|
55
|
-
try {
|
|
56
|
-
await caddy.start()
|
|
57
|
-
recordSecureRouterDebug(server.secure_router_debug, "manual caddy.start() finished", {
|
|
58
|
-
caddy_start_finished: true
|
|
59
|
-
})
|
|
60
|
-
} catch (e) {
|
|
61
|
-
recordSecureRouterDebug(server.secure_router_debug, "manual caddy.start() failed", {
|
|
62
|
-
caddy_start_error: e && e.message ? e.message : String(e)
|
|
63
|
-
})
|
|
64
|
-
throw e
|
|
65
|
-
}
|
|
66
|
-
continue
|
|
67
|
-
}
|
|
68
|
-
if (!refreshedRouter) {
|
|
69
|
-
refreshedRouter = true
|
|
70
|
-
recordSecureRouterDebug(server.secure_router_debug, "kernel.refresh(true) attempted", {
|
|
71
|
-
refresh_attempted: true
|
|
72
|
-
})
|
|
73
|
-
await server.kernel.refresh(true).then(() => {
|
|
74
|
-
recordSecureRouterDebug(server.secure_router_debug, "kernel.refresh(true) finished", {
|
|
75
|
-
refresh_finished: true
|
|
76
|
-
})
|
|
77
|
-
}).catch((e) => {
|
|
78
|
-
recordSecureRouterDebug(server.secure_router_debug, "kernel.refresh(true) failed", {
|
|
79
|
-
refresh_error: e && e.message ? e.message : String(e)
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
continue
|
|
83
|
-
}
|
|
84
|
-
await new Promise((resolve) => {
|
|
85
|
-
setTimeout(resolve, interval)
|
|
86
|
-
})
|
|
87
|
-
}
|
|
88
|
-
recordSecureRouterDebug(server.secure_router_debug, "wait timeout", {
|
|
89
|
-
active: false
|
|
90
|
-
})
|
|
91
|
-
throw new Error(lastStatus && lastStatus.error ? lastStatus.error : "secure router did not come up")
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
module.exports = {
|
|
95
|
-
ensureSecureRouterReady,
|
|
96
|
-
}
|