openship 0.6.5 → 0.6.6
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/dist/{bare-XQIPDO4R.js → bare-OXJVW3AK.js} +11 -10
- package/dist/{chunk-WE7BXW6L.js → chunk-2YM3NI2E.js} +2 -2
- package/dist/{chunk-RFWJE7ZN.js → chunk-4I2BM2DT.js} +3 -3
- package/dist/{chunk-QLX7NBEA.js → chunk-5DMWSTOM.js} +78 -1836
- package/dist/{chunk-VDESJSG6.js → chunk-77QDF6UD.js} +135 -21
- package/dist/{chunk-7334NSJL.js → chunk-A4GXYE4L.js} +67 -31
- package/dist/{chunk-HPXP6LXZ.js → chunk-CBLD2HS5.js} +3 -3
- package/dist/{chunk-6JELW75A.js → chunk-FE7ZZQSE.js} +3 -3
- package/dist/{chunk-XVOBL7BC.js → chunk-HKRQXPTI.js} +1 -1
- package/dist/{chunk-GRTXMUHA.js → chunk-LFE5KQ7Y.js} +11 -11
- package/dist/{chunk-TM2IQPYU.js → chunk-LH2PLRQO.js} +2 -2
- package/dist/{chunk-LFCSC4IU.js → chunk-LUKYPVJ4.js} +3 -3
- package/dist/{chunk-VHMOQL5Y.js → chunk-MLYSEZQB.js} +115 -19
- package/dist/{chunk-7S4USQYF.js → chunk-NK5N5LXN.js} +50 -122
- package/dist/{chunk-3ZAGC5NT.js → chunk-OBPKYXQL.js} +17 -6
- package/dist/{chunk-5OUWIPOB.js → chunk-PCPVTH6M.js} +12 -84
- package/dist/chunk-Q7WGTQQ5.js +88 -0
- package/dist/{chunk-VLQ3UIVO.js → chunk-QVW76WDL.js} +52 -26
- package/dist/{chunk-PZRRL5PC.js → chunk-RSR7PFIQ.js} +14 -3
- package/dist/{chunk-A7EWM2KA.js → chunk-SM26HDS2.js} +1 -1
- package/dist/{chunk-LEYSL46B.js → chunk-UJ6JZM65.js} +3426 -632
- package/dist/{chunk-WFRXYWK2.js → chunk-UVNMQM7W.js} +1 -1
- package/dist/chunk-VTGPEC6B.js +308 -0
- package/dist/chunk-WVAML4H6.js +2145 -0
- package/dist/{chunk-MSZUCNPV.js → chunk-YIMOCZBZ.js} +1 -1
- package/dist/{chunk-EZPPTWJQ.js → chunk-YMMQRE5J.js} +1 -1
- package/dist/{cloud-3DODOWTR.js → cloud-75VIT4KV.js} +16 -15
- package/dist/{detect-P4CIQBRH.js → detect-OIE5V3VZ.js} +3 -3
- package/dist/{docker-3K2NEBD6.js → docker-VTR2GK5Y.js} +7 -6
- package/dist/{docker-edge-executor-YZZ6P7IC.js → docker-edge-executor-22IBXNYJ.js} +4 -4
- package/dist/{edge-import-MCJNVTZ2.js → edge-import-WJUB4M7F.js} +23 -22
- package/dist/{edge-preflight-ES6FH4JK.js → edge-preflight-GBNCPNVU.js} +10 -10
- package/dist/{ensure-container-edge-YPITNH45.js → ensure-container-edge-KPI2CVXJ.js} +9 -9
- package/dist/{executor-DZGX55K2.js → executor-7LXXZPBR.js} +6 -3
- package/dist/{host-channel-preflight-MUXE3KZU.js → host-channel-preflight-KE6OONYK.js} +23 -22
- package/dist/index.js +95 -84
- package/dist/{nginx-NSAHWGJV.js → nginx-KUFMLMAC.js} +9 -7
- package/dist/{openresty-lua-DR4D3EZ6.js → openresty-lua-ATTH35BE.js} +6 -4
- package/dist/{privilege-YTVI4SKF.js → privilege-I4W3ZNZK.js} +4 -4
- package/dist/server/engine/samples/amavisd/amavisd.conf +25 -0
- package/dist/server/engine/samples/postfix/master.cf +14 -0
- package/dist/server/index.js +35002 -27533
- package/dist/server/migrations/0105_mail_inbound_rules.sql +80 -0
- package/dist/server/migrations/0106_mcp_call_tracking.sql +23 -0
- package/dist/server/migrations/0107_build_minute_metering_indexes.sql +20 -0
- package/dist/server/migrations/0108_credential.sql +68 -0
- package/dist/server/migrations/meta/_journal.json +28 -0
- package/dist/{setup-WUUZURHS.js → setup-XGLGUUFW.js} +10 -10
- package/dist/ssh-client-JBMA7SN4.js +28 -0
- package/dist/{up-XEO3SR6Z.js → up-K4BV7466.js} +26 -27
- package/package.json +1 -1
- package/dist/chunk-6HOA5JT7.js +0 -124
- package/dist/chunk-XRNRT37W.js +0 -316
- /package/dist/{dist-es-ZP5QDSJ3.js → dist-es-AXFRS7PS.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -7,18 +7,13 @@ import {
|
|
|
7
7
|
RELEASES,
|
|
8
8
|
RELEASES_DIR,
|
|
9
9
|
assetUrl,
|
|
10
|
-
bootstrapAdmin,
|
|
11
|
-
detectPublicIp,
|
|
12
10
|
downloadToFile,
|
|
13
11
|
ensureDashboard,
|
|
14
|
-
ensureInternalToken,
|
|
15
12
|
expectedSha256,
|
|
16
13
|
fetchSidecar,
|
|
17
14
|
formatBytes,
|
|
18
15
|
hashFile,
|
|
19
16
|
headlessProvision,
|
|
20
|
-
internalGet,
|
|
21
|
-
internalPost,
|
|
22
17
|
normalizeUrl,
|
|
23
18
|
parseSha256,
|
|
24
19
|
readCliInstall,
|
|
@@ -30,24 +25,8 @@ import {
|
|
|
30
25
|
startService,
|
|
31
26
|
stop,
|
|
32
27
|
upCommand,
|
|
33
|
-
waitDashboard,
|
|
34
|
-
waitHealthy,
|
|
35
28
|
writeCliInstall
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import {
|
|
38
|
-
importMigratedSites
|
|
39
|
-
} from "./chunk-6HOA5JT7.js";
|
|
40
|
-
import {
|
|
41
|
-
completeHostEdge,
|
|
42
|
-
confirmEdgeAction,
|
|
43
|
-
diagnoseEdge,
|
|
44
|
-
planAndApplyHostEdge,
|
|
45
|
-
remediateUnreachableStaticRoots,
|
|
46
|
-
renderEdgeConflict,
|
|
47
|
-
repairEdgeConflict,
|
|
48
|
-
rollbackHostEdge
|
|
49
|
-
} from "./chunk-HPXP6LXZ.js";
|
|
50
|
-
import "./chunk-XRNRT37W.js";
|
|
29
|
+
} from "./chunk-NK5N5LXN.js";
|
|
51
30
|
import {
|
|
52
31
|
composeDown,
|
|
53
32
|
composeInternalToken,
|
|
@@ -79,16 +58,40 @@ import {
|
|
|
79
58
|
saveInstanceUrl,
|
|
80
59
|
shortSha,
|
|
81
60
|
sourceBuildDir,
|
|
82
|
-
startUnitHint,
|
|
83
61
|
storedApiPort,
|
|
84
62
|
storedDashboardPort
|
|
85
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-WVAML4H6.js";
|
|
64
|
+
import {
|
|
65
|
+
bootstrapAdmin,
|
|
66
|
+
detectPublicIp,
|
|
67
|
+
importMigratedSites,
|
|
68
|
+
internalFetch,
|
|
69
|
+
internalGet,
|
|
70
|
+
internalPost,
|
|
71
|
+
internalTokenRejectedProblem,
|
|
72
|
+
waitDashboard,
|
|
73
|
+
waitHealthy
|
|
74
|
+
} from "./chunk-VTGPEC6B.js";
|
|
75
|
+
import {
|
|
76
|
+
startUnitHint
|
|
77
|
+
} from "./chunk-5DMWSTOM.js";
|
|
86
78
|
import "./chunk-QWHBRY2K.js";
|
|
79
|
+
import {
|
|
80
|
+
completeHostEdge,
|
|
81
|
+
confirmEdgeAction,
|
|
82
|
+
diagnoseEdge,
|
|
83
|
+
planAndApplyHostEdge,
|
|
84
|
+
remediateUnreachableStaticRoots,
|
|
85
|
+
renderEdgeConflict,
|
|
86
|
+
repairEdgeConflict,
|
|
87
|
+
rollbackHostEdge
|
|
88
|
+
} from "./chunk-CBLD2HS5.js";
|
|
87
89
|
import {
|
|
88
90
|
DATA_DIR,
|
|
89
91
|
LOG_DIR,
|
|
90
92
|
OS_DIR
|
|
91
93
|
} from "./chunk-ELGRMZOW.js";
|
|
94
|
+
import "./chunk-HKRQXPTI.js";
|
|
92
95
|
import "./chunk-ONKEYSMY.js";
|
|
93
96
|
import "./chunk-XZYFZ6A5.js";
|
|
94
97
|
import "./chunk-PDW4L3NV.js";
|
|
@@ -97,37 +100,38 @@ import "./chunk-42WQABXM.js";
|
|
|
97
100
|
import "./chunk-DRK3MEDS.js";
|
|
98
101
|
import "./chunk-3NQQXMDR.js";
|
|
99
102
|
import "./chunk-ZWLDLTJP.js";
|
|
100
|
-
import "./chunk-
|
|
101
|
-
import "./chunk-
|
|
102
|
-
import "./chunk-WNWQBB7F.js";
|
|
103
|
-
import "./chunk-2GWYYHOR.js";
|
|
104
|
-
import "./chunk-RXQBD4ZY.js";
|
|
105
|
-
import "./chunk-XVOBL7BC.js";
|
|
103
|
+
import "./chunk-FE7ZZQSE.js";
|
|
104
|
+
import "./chunk-OBPKYXQL.js";
|
|
106
105
|
import {
|
|
107
106
|
detectInstalledProxy,
|
|
108
107
|
scanImportableSites
|
|
109
|
-
} from "./chunk-
|
|
110
|
-
import "./chunk-
|
|
108
|
+
} from "./chunk-A4GXYE4L.js";
|
|
109
|
+
import "./chunk-QVW76WDL.js";
|
|
110
|
+
import "./chunk-RSR7PFIQ.js";
|
|
111
111
|
import "./chunk-I3DPMTSF.js";
|
|
112
|
-
import "./chunk-
|
|
113
|
-
import "./chunk-
|
|
114
|
-
import "./chunk-
|
|
115
|
-
import "./chunk-
|
|
116
|
-
import "./chunk-
|
|
117
|
-
import "./chunk-
|
|
118
|
-
import "./chunk-
|
|
112
|
+
import "./chunk-WNWQBB7F.js";
|
|
113
|
+
import "./chunk-2GWYYHOR.js";
|
|
114
|
+
import "./chunk-RXQBD4ZY.js";
|
|
115
|
+
import "./chunk-77QDF6UD.js";
|
|
116
|
+
import "./chunk-LUKYPVJ4.js";
|
|
117
|
+
import "./chunk-LFE5KQ7Y.js";
|
|
118
|
+
import "./chunk-YIMOCZBZ.js";
|
|
119
|
+
import "./chunk-LH2PLRQO.js";
|
|
120
|
+
import "./chunk-MLYSEZQB.js";
|
|
121
|
+
import "./chunk-Q7WGTQQ5.js";
|
|
122
|
+
import "./chunk-PCPVTH6M.js";
|
|
119
123
|
import {
|
|
120
124
|
LocalExecutor
|
|
121
125
|
} from "./chunk-6FH4AXVY.js";
|
|
122
|
-
import "./chunk-
|
|
123
|
-
import "./chunk-
|
|
124
|
-
import "./chunk-
|
|
125
|
-
import "./chunk-PZRRL5PC.js";
|
|
126
|
-
import "./chunk-EZPPTWJQ.js";
|
|
127
|
-
import "./chunk-WFRXYWK2.js";
|
|
126
|
+
import "./chunk-4I2BM2DT.js";
|
|
127
|
+
import "./chunk-YMMQRE5J.js";
|
|
128
|
+
import "./chunk-UVNMQM7W.js";
|
|
128
129
|
import "./chunk-ZFJXPCQP.js";
|
|
130
|
+
import "./chunk-2YM3NI2E.js";
|
|
131
|
+
import "./chunk-SM26HDS2.js";
|
|
129
132
|
import {
|
|
130
133
|
CLOUD_DASHBOARD_URL,
|
|
134
|
+
HOST_CHANNEL_AUTH_REJECTED_SHORT,
|
|
131
135
|
HOST_CHANNEL_PROVISION_COMMAND,
|
|
132
136
|
LOCAL_API_URL,
|
|
133
137
|
LOCAL_DASHBOARD_URL,
|
|
@@ -142,7 +146,7 @@ import {
|
|
|
142
146
|
parseOpenshipConfigJson,
|
|
143
147
|
resolveCliUpdatePlan,
|
|
144
148
|
summarizeHostChannelCause
|
|
145
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-UJ6JZM65.js";
|
|
146
150
|
import "./chunk-PXKCZB2I.js";
|
|
147
151
|
|
|
148
152
|
// src/index.ts
|
|
@@ -301,7 +305,7 @@ function getDashboardUrl(name) {
|
|
|
301
305
|
}
|
|
302
306
|
|
|
303
307
|
// src/lib/api-client.ts
|
|
304
|
-
var USER_AGENT = `openship-cli/${true ? "0.6.
|
|
308
|
+
var USER_AGENT = `openship-cli/${true ? "0.6.6" : "dev"}`;
|
|
305
309
|
function getApiUrl2() {
|
|
306
310
|
return `${getApiUrl()}/api`;
|
|
307
311
|
}
|
|
@@ -1008,16 +1012,11 @@ function ensure(value) {
|
|
|
1008
1012
|
return value;
|
|
1009
1013
|
}
|
|
1010
1014
|
async function internalGet2(path2, timeoutMs = 8e3) {
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
if (!res.ok) return null;
|
|
1017
|
-
return await res.json();
|
|
1018
|
-
} catch {
|
|
1019
|
-
return null;
|
|
1020
|
-
}
|
|
1015
|
+
const call = await internalFetch(String(storedApiPort()), path2, {
|
|
1016
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
1017
|
+
});
|
|
1018
|
+
if (call.kind !== "response" || !call.res.ok) return null;
|
|
1019
|
+
return await call.res.json().catch(() => null);
|
|
1021
1020
|
}
|
|
1022
1021
|
async function apiReachable() {
|
|
1023
1022
|
try {
|
|
@@ -1102,7 +1101,7 @@ function dockerNameRunning(nameFilter) {
|
|
|
1102
1101
|
return r.stdout.trim().length > 0;
|
|
1103
1102
|
}
|
|
1104
1103
|
async function hostControlCheck(api) {
|
|
1105
|
-
const { checkHostChannel } = await import("./host-channel-preflight-
|
|
1104
|
+
const { checkHostChannel } = await import("./host-channel-preflight-KE6OONYK.js");
|
|
1106
1105
|
return hostControlRow(await checkHostChannel().catch(() => null), api);
|
|
1107
1106
|
}
|
|
1108
1107
|
var NEVER_PROVISIONED_DETAIL = `never provisioned \u2014 run \`${HOST_CHANNEL_PROVISION_COMMAND}\``;
|
|
@@ -1127,6 +1126,11 @@ function hostControlRow(res, api) {
|
|
|
1127
1126
|
case "key_unreadable":
|
|
1128
1127
|
case "unreachable":
|
|
1129
1128
|
return row2("fail", `${api.state.replace(/_/g, " ")} \u2014 see the api container's boot log`);
|
|
1129
|
+
// Its own case, NOT grouped above: this is the one fault here an operator can act
|
|
1130
|
+
// on without the withheld address, and #527 is what happens when the only thing
|
|
1131
|
+
// we tell them is to go read a log.
|
|
1132
|
+
case "auth_rejected":
|
|
1133
|
+
return row2("fail", HOST_CHANNEL_AUTH_REJECTED_SHORT);
|
|
1130
1134
|
// `disabled` (a hardening choice) and `not_applicable` (a bare install) are the
|
|
1131
1135
|
// same non-event the local path returns null for. Whitelisted rather than derived
|
|
1132
1136
|
// from `ok === false`, which `disabled` also is.
|
|
@@ -1502,7 +1506,7 @@ async function interactiveDoctor() {
|
|
|
1502
1506
|
continue;
|
|
1503
1507
|
}
|
|
1504
1508
|
if (action2 === "host-control") {
|
|
1505
|
-
const { verifyHostChannel } = await import("./host-channel-preflight-
|
|
1509
|
+
const { verifyHostChannel } = await import("./host-channel-preflight-KE6OONYK.js");
|
|
1506
1510
|
const report3 = await verifyHostChannel().catch(() => null);
|
|
1507
1511
|
if (report3?.status === "fixed") log2.success("Host control is reachable now.");
|
|
1508
1512
|
else if (report3?.status === "ok") log2.success("Host control was already reachable.");
|
|
@@ -3459,7 +3463,7 @@ async function runRepair2(mode) {
|
|
|
3459
3463
|
requireLinux();
|
|
3460
3464
|
const sp = spin2(mode === "migrate" ? "Migrating the existing proxy's sites into the edge\u2026" : "Taking over :80/:443\u2026");
|
|
3461
3465
|
try {
|
|
3462
|
-
const { repairEdgeConflict: repairEdgeConflict2 } = await import("./edge-preflight-
|
|
3466
|
+
const { repairEdgeConflict: repairEdgeConflict2 } = await import("./edge-preflight-GBNCPNVU.js");
|
|
3463
3467
|
sp?.stop();
|
|
3464
3468
|
const res = await repairEdgeConflict2(mode, apiPort(), onLog);
|
|
3465
3469
|
reportRepair(res);
|
|
@@ -3608,7 +3612,7 @@ async function panelStatus() {
|
|
|
3608
3612
|
async function panelRepair(mode) {
|
|
3609
3613
|
const sp = spin2(mode === "migrate" ? "Migrating the existing proxy's sites\u2026" : "Taking over :80/:443\u2026");
|
|
3610
3614
|
try {
|
|
3611
|
-
const { repairEdgeConflict: repairEdgeConflict2 } = await import("./edge-preflight-
|
|
3615
|
+
const { repairEdgeConflict: repairEdgeConflict2 } = await import("./edge-preflight-GBNCPNVU.js");
|
|
3612
3616
|
sp?.stop();
|
|
3613
3617
|
const res = await repairEdgeConflict2(mode, apiPort(), onLog);
|
|
3614
3618
|
renderRepair(res);
|
|
@@ -4450,7 +4454,7 @@ function printMonitoringNextSteps() {
|
|
|
4450
4454
|
info(" openship edge analytics -p <project> per-domain analytics");
|
|
4451
4455
|
}
|
|
4452
4456
|
async function runMonitoringInstall(opts) {
|
|
4453
|
-
const up = await import("./up-
|
|
4457
|
+
const up = await import("./up-K4BV7466.js");
|
|
4454
4458
|
let adminName = opts.adminName;
|
|
4455
4459
|
let adminEmail = opts.adminEmail;
|
|
4456
4460
|
let adminPassword = opts.adminPassword;
|
|
@@ -6152,21 +6156,26 @@ var resetAdminCommand = new Command24("reset-admin-password").description("Reset
|
|
|
6152
6156
|
pw = entered;
|
|
6153
6157
|
}
|
|
6154
6158
|
const port = String(opts.port || storedApiPort());
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
|
|
6161
|
-
});
|
|
6162
|
-
} catch {
|
|
6159
|
+
const call = await internalFetch(port, "/api/system/reset-admin-password", {
|
|
6160
|
+
method: "POST",
|
|
6161
|
+
headers: { "Content-Type": "application/json" },
|
|
6162
|
+
body: JSON.stringify({ password: pw, email: opts.email, name: opts.name })
|
|
6163
|
+
});
|
|
6164
|
+
if (call.kind === "unreachable") {
|
|
6163
6165
|
log4.error(`Couldn't reach the Openship API on port ${port}. Is it running? (openship status)`);
|
|
6164
6166
|
log4.info("If it's listening on another port, pass --port <n>.");
|
|
6165
6167
|
process.exit(1);
|
|
6166
6168
|
}
|
|
6169
|
+
if (call.kind === "no-token") {
|
|
6170
|
+
log4.error(`Reset failed \u2014 ${call.detail}`);
|
|
6171
|
+
process.exit(1);
|
|
6172
|
+
}
|
|
6173
|
+
const res = call.res;
|
|
6167
6174
|
const data = await res.json().catch(() => ({}));
|
|
6168
6175
|
if (!res.ok || !data.ok) {
|
|
6169
|
-
log4.error(
|
|
6176
|
+
log4.error(
|
|
6177
|
+
`Reset failed: ${call.tokenRejected ? internalTokenRejectedProblem() : data.error || res.statusText}`
|
|
6178
|
+
);
|
|
6170
6179
|
process.exit(1);
|
|
6171
6180
|
}
|
|
6172
6181
|
outro3(chalk18.green(`Password reset. Log in as ${data.email} with your new password.`));
|
|
@@ -6602,7 +6611,7 @@ function applyOnlyArgv(selfArgs, json) {
|
|
|
6602
6611
|
// src/commands/update.ts
|
|
6603
6612
|
async function verifyHostChannelAfterUpdate() {
|
|
6604
6613
|
if (isJsonMode()) return;
|
|
6605
|
-
const { verifyHostChannel } = await import("./host-channel-preflight-
|
|
6614
|
+
const { verifyHostChannel } = await import("./host-channel-preflight-KE6OONYK.js");
|
|
6606
6615
|
await verifyHostChannel().catch(() => {
|
|
6607
6616
|
});
|
|
6608
6617
|
}
|
|
@@ -6679,7 +6688,7 @@ async function runSourceUpdate(source, opts) {
|
|
|
6679
6688
|
}
|
|
6680
6689
|
var REINSTALL_HINT = "curl -fsSL https://get.openship.io | sh";
|
|
6681
6690
|
async function runTarballUpdate(install, opts) {
|
|
6682
|
-
const current = "0.6.
|
|
6691
|
+
const current = "0.6.6";
|
|
6683
6692
|
let latest;
|
|
6684
6693
|
try {
|
|
6685
6694
|
latest = (await resolveLatestTag()).replace(/^v/, "");
|
|
@@ -6763,7 +6772,7 @@ var updateCommand = new Command26("update").description("Update the Openship CLI
|
|
|
6763
6772
|
if (source) return runSourceUpdate(source, opts);
|
|
6764
6773
|
const cliInstall = readCliInstall();
|
|
6765
6774
|
if (cliInstall?.method === "tarball") return runTarballUpdate(cliInstall, opts);
|
|
6766
|
-
const current = "0.6.
|
|
6775
|
+
const current = "0.6.6";
|
|
6767
6776
|
let latest;
|
|
6768
6777
|
try {
|
|
6769
6778
|
latest = (await resolveLatestTag()).replace(/^v/, "");
|
|
@@ -7023,10 +7032,11 @@ async function streamProvision(port, sessionId, s) {
|
|
|
7023
7032
|
let ok3 = false;
|
|
7024
7033
|
let detail;
|
|
7025
7034
|
try {
|
|
7026
|
-
const
|
|
7027
|
-
headers: { "X-Internal-Token": ensureInternalToken() },
|
|
7035
|
+
const call = await internalFetch(port, `/api/system/self-register/stream?id=${sessionId}`, {
|
|
7028
7036
|
signal: AbortSignal.timeout(3e5)
|
|
7029
7037
|
});
|
|
7038
|
+
if (call.kind !== "response") return { ok: false, detail: call.detail };
|
|
7039
|
+
const res = call.res;
|
|
7030
7040
|
if (!res.ok || !res.body) return { ok: false };
|
|
7031
7041
|
const reader = res.body.getReader();
|
|
7032
7042
|
const decoder = new TextDecoder();
|
|
@@ -7370,7 +7380,7 @@ async function runWizard() {
|
|
|
7370
7380
|
}
|
|
7371
7381
|
}
|
|
7372
7382
|
}
|
|
7373
|
-
const uiTag = `v${"0.6.
|
|
7383
|
+
const uiTag = `v${"0.6.6"}`;
|
|
7374
7384
|
if (method === "bare") {
|
|
7375
7385
|
const dl = spinner4();
|
|
7376
7386
|
dl.start("Pulling the Openship dist from GitHub");
|
|
@@ -7430,7 +7440,7 @@ async function runWizard() {
|
|
|
7430
7440
|
const dashboardPort = String(ports.dashboard);
|
|
7431
7441
|
const moved = portMoveNotice(ports, composeTrustedOriginUrls());
|
|
7432
7442
|
if (moved.length) log5.info(moved.join("\n"));
|
|
7433
|
-
if (!pinnedImagesReady({ version: "0.6.
|
|
7443
|
+
if (!pinnedImagesReady({ version: "0.6.6" })) {
|
|
7434
7444
|
cancel4("The pinned Openship image tag isn't in the registry yet \u2014 nothing on this box was changed.");
|
|
7435
7445
|
process.exit(1);
|
|
7436
7446
|
}
|
|
@@ -7454,7 +7464,7 @@ async function runWizard() {
|
|
|
7454
7464
|
dashboardPort,
|
|
7455
7465
|
publicUrl,
|
|
7456
7466
|
trustProxy: behindProxy,
|
|
7457
|
-
version: "0.6.
|
|
7467
|
+
version: "0.6.6",
|
|
7458
7468
|
noHostControl: !allowHostControl
|
|
7459
7469
|
});
|
|
7460
7470
|
if (!fetched.ok) {
|
|
@@ -7483,7 +7493,7 @@ async function runWizard() {
|
|
|
7483
7493
|
dashboardPort,
|
|
7484
7494
|
publicUrl,
|
|
7485
7495
|
trustProxy: behindProxy,
|
|
7486
|
-
version: "0.6.
|
|
7496
|
+
version: "0.6.6",
|
|
7487
7497
|
noHostControl: !allowHostControl
|
|
7488
7498
|
});
|
|
7489
7499
|
if (!up.ok) {
|
|
@@ -7538,9 +7548,10 @@ async function runWizard() {
|
|
|
7538
7548
|
migratedCertPems,
|
|
7539
7549
|
migratedStaticRootOverrides
|
|
7540
7550
|
);
|
|
7541
|
-
|
|
7551
|
+
const missed = migratedSites.length - imported.registered.length;
|
|
7552
|
+
if (missed > 0) {
|
|
7542
7553
|
log5.warn(
|
|
7543
|
-
|
|
7554
|
+
`${missed} of your ${migratedSites.length} existing site${migratedSites.length === 1 ? "" : "s"} ${missed === 1 ? "isn't" : "aren't"} served yet \u2014 see the import output above.`
|
|
7544
7555
|
);
|
|
7545
7556
|
}
|
|
7546
7557
|
}
|
|
@@ -7583,7 +7594,7 @@ async function runWizard() {
|
|
|
7583
7594
|
if (result.liveUrl) liveUrl2 = result.liveUrl;
|
|
7584
7595
|
else if (!result.domainRegistered) liveUrl2 = `http://localhost:${started.dashPort}`;
|
|
7585
7596
|
for (const w of result.warnings) log5.warn(w);
|
|
7586
|
-
const { verifyHostChannel } = await import("./host-channel-preflight-
|
|
7597
|
+
const { verifyHostChannel } = await import("./host-channel-preflight-KE6OONYK.js");
|
|
7587
7598
|
await verifyHostChannel().catch(() => {
|
|
7588
7599
|
});
|
|
7589
7600
|
finishSetup({
|
|
@@ -7862,7 +7873,7 @@ function attachCompletion(program2) {
|
|
|
7862
7873
|
|
|
7863
7874
|
// src/index.ts
|
|
7864
7875
|
var program = new Command28();
|
|
7865
|
-
program.name("openship").description("Openship CLI \u2014 install, run, and manage Openship from your terminal").version("0.6.
|
|
7876
|
+
program.name("openship").description("Openship CLI \u2014 install, run, and manage Openship from your terminal").version("0.6.6").option("--json", "Machine-readable JSON output (stdout data only)").hook("preAction", (thisCommand) => {
|
|
7866
7877
|
if (thisCommand.opts().json) setJsonMode(true);
|
|
7867
7878
|
}).action(async () => {
|
|
7868
7879
|
const installed = serviceStatus().installed || readInstallMethod() === "compose";
|
|
@@ -8,20 +8,21 @@ import {
|
|
|
8
8
|
VHOST_GENERATION,
|
|
9
9
|
acmeKeyArgs,
|
|
10
10
|
assertValidChallengeToken,
|
|
11
|
+
isAcmePortBindFailure,
|
|
11
12
|
readVhostGeneration,
|
|
12
13
|
renderGeoEntries,
|
|
13
14
|
renderProxyOptions,
|
|
14
15
|
renderProxyTlsOptions,
|
|
15
16
|
summarizeCertbotFailure
|
|
16
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-QVW76WDL.js";
|
|
18
|
+
import "./chunk-RSR7PFIQ.js";
|
|
17
19
|
import "./chunk-I3DPMTSF.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-PZRRL5PC.js";
|
|
21
|
-
import "./chunk-EZPPTWJQ.js";
|
|
22
|
-
import "./chunk-WFRXYWK2.js";
|
|
20
|
+
import "./chunk-YMMQRE5J.js";
|
|
21
|
+
import "./chunk-UVNMQM7W.js";
|
|
23
22
|
import "./chunk-ZFJXPCQP.js";
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-2YM3NI2E.js";
|
|
24
|
+
import "./chunk-SM26HDS2.js";
|
|
25
|
+
import "./chunk-UJ6JZM65.js";
|
|
25
26
|
import "./chunk-PXKCZB2I.js";
|
|
26
27
|
export {
|
|
27
28
|
MANAGED_STATIC_BASE,
|
|
@@ -29,6 +30,7 @@ export {
|
|
|
29
30
|
VHOST_GENERATION,
|
|
30
31
|
acmeKeyArgs,
|
|
31
32
|
assertValidChallengeToken,
|
|
33
|
+
isAcmePortBindFailure,
|
|
32
34
|
readVhostGeneration,
|
|
33
35
|
renderGeoEntries,
|
|
34
36
|
renderProxyOptions,
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
EDGE_CHALLENGE_LOCATION,
|
|
11
11
|
EDGE_CHALLENGE_ROOT,
|
|
12
12
|
EDGE_CHALLENGE_URL_PREFIX,
|
|
13
|
+
EDGE_CLIENT_MAX_BODY_SIZE,
|
|
13
14
|
EDGE_CONTAINER_MOUNTS,
|
|
14
15
|
EDGE_DEFAULT_CERT_CN,
|
|
15
16
|
EDGE_DEFAULT_CERT_DIRNAME,
|
|
@@ -39,11 +40,11 @@ import {
|
|
|
39
40
|
ensureOpenRestyConfig,
|
|
40
41
|
luaSourceAvailable,
|
|
41
42
|
parseNginxVersion
|
|
42
|
-
} from "./chunk-
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
43
|
+
} from "./chunk-RSR7PFIQ.js";
|
|
44
|
+
import "./chunk-YMMQRE5J.js";
|
|
45
|
+
import "./chunk-UVNMQM7W.js";
|
|
45
46
|
import "./chunk-ZFJXPCQP.js";
|
|
46
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-UJ6JZM65.js";
|
|
47
48
|
import "./chunk-PXKCZB2I.js";
|
|
48
49
|
export {
|
|
49
50
|
ACME_CHALLENGE_LOCATION,
|
|
@@ -53,6 +54,7 @@ export {
|
|
|
53
54
|
EDGE_CHALLENGE_LOCATION,
|
|
54
55
|
EDGE_CHALLENGE_ROOT,
|
|
55
56
|
EDGE_CHALLENGE_URL_PREFIX,
|
|
57
|
+
EDGE_CLIENT_MAX_BODY_SIZE,
|
|
56
58
|
EDGE_CONTAINER_MOUNTS,
|
|
57
59
|
EDGE_DEFAULT_CERT_CN,
|
|
58
60
|
EDGE_DEFAULT_CERT_DIRNAME,
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
privilegedExecutor,
|
|
7
7
|
rootChecked,
|
|
8
8
|
rootOrDegrade
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-4I2BM2DT.js";
|
|
10
|
+
import "./chunk-YMMQRE5J.js";
|
|
11
|
+
import "./chunk-UVNMQM7W.js";
|
|
12
12
|
import "./chunk-ZFJXPCQP.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-UJ6JZM65.js";
|
|
14
14
|
import "./chunk-PXKCZB2I.js";
|
|
15
15
|
export {
|
|
16
16
|
privilegedExecutor,
|
|
@@ -477,6 +477,31 @@ $bad_header_quarantine_to = 'bad-header-quarantine';
|
|
|
477
477
|
#$undecipherable_subject_tag = '***UNCHECKED*** '; # undef disables it
|
|
478
478
|
$undecipherable_subject_tag = undef;
|
|
479
479
|
|
|
480
|
+
# ─── What happens when NO virus scanner can be reached (GH-565) ──────────────
|
|
481
|
+
#
|
|
482
|
+
# With the settings above and @av_scanners_backup = () earlier in this file, a
|
|
483
|
+
# message that no scanner could examine is DELIVERED, with no subject tag and no
|
|
484
|
+
# admin notification. That is amavis' default and it is a deliberate choice here:
|
|
485
|
+
# clamd's signature load is memory-hungry and its socket is the most fragile part
|
|
486
|
+
# of the stack, so failing OPEN keeps mail flowing on small VPSes.
|
|
487
|
+
#
|
|
488
|
+
# It is a real trade-off, so know which side you are on. Note that amavis still
|
|
489
|
+
# adds its `X-Virus-Scanned` header on this path — the header records that amavis
|
|
490
|
+
# processed the message, NOT that a scanner passed it, and it must not be read as
|
|
491
|
+
# proof of a clean scan. The Emails → Health tab is the honest signal: it reports
|
|
492
|
+
# ClamAV as Crashed/Failed and says mail is being delivered without scanning.
|
|
493
|
+
#
|
|
494
|
+
# To fail CLOSED instead — mail queues (4xx tempfail) until a scanner is back,
|
|
495
|
+
# rather than arriving unscanned — uncomment ONE of these:
|
|
496
|
+
#
|
|
497
|
+
# $virus_scanners_failure_is_fatal = 1; # scanner failure => tempfail
|
|
498
|
+
# $final_unchecked_destiny = D_TEMPFAIL; # same, via the destiny table
|
|
499
|
+
#
|
|
500
|
+
# Before you do: while clamd is down this defers EVERY inbound message, and a
|
|
501
|
+
# queue that outlives the sender's retry window loses mail. Pair it with the
|
|
502
|
+
# subject tag above if you would rather label than defer.
|
|
503
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
504
|
+
|
|
480
505
|
# Hope to fix 'nested MAIL command' issue on high load server.
|
|
481
506
|
$smtp_connection_cache_enable = 0;
|
|
482
507
|
|
|
@@ -24,12 +24,26 @@ mlmmj unix - n n - - pipe
|
|
|
24
24
|
flags=ORhu user=PH_SYS_USER_MLMMJ:PH_SYS_GROUP_MLMMJ argv=PH_CMD_MLMMJ_AMIME_RECEIVE -L PH_MLMMJ_SPOOL_DIR/${nexthop}
|
|
25
25
|
|
|
26
26
|
# Amavisd integration.
|
|
27
|
+
#
|
|
28
|
+
# smtp_tls_security_level=none is REQUIRED, not an optimisation (GH-392). This
|
|
29
|
+
# is an smtp CLIENT service, so it inherits the global smtp_tls_security_level
|
|
30
|
+
# — and amavisd's :10024 listener does not offer STARTTLS. With the global set
|
|
31
|
+
# to `encrypt` every inbound message defers with "TLS is required, but was not
|
|
32
|
+
# offered": a complete INBOUND outage, from a setting that only looks like it
|
|
33
|
+
# concerns outbound delivery. Saving an outbound relay with scope "all" sets
|
|
34
|
+
# exactly that (apps/api/src/modules/mail/admin/outbound-relay.service.ts), and
|
|
35
|
+
# so does an operator hardening TLS by hand.
|
|
36
|
+
#
|
|
37
|
+
# TLS here would be meaningless anyway: the hop is loopback to a content filter
|
|
38
|
+
# on the same host. Pinning it at the transport keeps the guarantee local to the
|
|
39
|
+
# thing that needs it, instead of depending on every writer of the global.
|
|
27
40
|
smtp-amavis unix - - n - PH_AMAVISD_MAX_SERVERS smtp
|
|
28
41
|
-o syslog_name=postfix/amavis
|
|
29
42
|
-o local_header_rewrite_clients=
|
|
30
43
|
-o smtp_data_done_timeout=1200
|
|
31
44
|
-o smtp_send_xforward_command=yes
|
|
32
45
|
-o smtp_dns_support_level=disabled
|
|
46
|
+
-o smtp_tls_security_level=none
|
|
33
47
|
-o max_use=20
|
|
34
48
|
|
|
35
49
|
# smtp port used by Amavisd to re-inject scanned email back to Postfix
|