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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinokiod",
3
- "version": "7.1.70",
3
+ "version": "7.1.71",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
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
- }