@fastybird/smart-panel-backend 1.1.0-alpha.62 → 1.1.0-alpha.64

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.
Files changed (28) hide show
  1. package/dist/common/utils/privileged-helper.utils.d.ts +8 -0
  2. package/dist/common/utils/privileged-helper.utils.js +28 -0
  3. package/dist/common/utils/privileged-helper.utils.js.map +1 -0
  4. package/dist/modules/platform/services/platform.service.d.ts +2 -0
  5. package/dist/modules/platform/services/platform.service.js +34 -2
  6. package/dist/modules/platform/services/platform.service.js.map +1 -1
  7. package/dist/modules/system/scripts/privileged/helper.py +268 -0
  8. package/dist/modules/system/scripts/privileged/install-helper.py +238 -0
  9. package/dist/modules/system/scripts/update-worker.sh +296 -16
  10. package/dist/modules/system/services/privileged-worker.service.d.ts +3 -0
  11. package/dist/modules/system/services/privileged-worker.service.js +53 -11
  12. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  13. package/dist/modules/system/services/update-executor.service.d.ts +2 -0
  14. package/dist/modules/system/services/update-executor.service.js +99 -51
  15. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  16. package/dist/modules/system/services/update.service.js +1 -1
  17. package/dist/modules/system/services/update.service.js.map +1 -1
  18. package/dist/modules/system/system.constants.d.ts +2 -0
  19. package/dist/modules/system/system.constants.js +3 -1
  20. package/dist/modules/system/system.constants.js.map +1 -1
  21. package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +17 -2
  22. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +9 -3
  23. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -1
  24. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +8 -0
  25. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +9 -3
  26. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  27. package/dist/tsconfig.build.tsbuildinfo +1 -1
  28. package/package.json +2 -2
@@ -16,6 +16,7 @@ const node_crypto_1 = require("node:crypto");
16
16
  const path_1 = require("path");
17
17
  const common_1 = require("@nestjs/common");
18
18
  const logger_1 = require("../../../common/logger");
19
+ const privileged_helper_utils_1 = require("../../../common/utils/privileged-helper.utils");
19
20
  const platform_service_1 = require("../../platform/services/platform.service");
20
21
  const system_constants_1 = require("../system.constants");
21
22
  const system_exceptions_1 = require("../system.exceptions");
@@ -45,9 +46,22 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
45
46
  if (spec.trackStatusHistory && spec.mapStatus) {
46
47
  throw new Error('Status history cannot be combined with mapStatus');
47
48
  }
48
- const supported = await this.platformService.supportsPrivilegedWorkers();
49
- if (!supported) {
50
- throw new system_exceptions_1.PrivilegedWorkerUnavailableException(`Privileged workers are not supported on this platform (${this.platformService.getPlatformType()}).`);
49
+ const support = await this.platformService.getPrivilegedWorkerSupport();
50
+ if (!support.supported) {
51
+ throw new system_exceptions_1.PrivilegedWorkerUnavailableException(support.reason ??
52
+ `Privileged workers are not supported on this platform (${this.platformService.getPlatformType()}).`);
53
+ }
54
+ if (spec.job !== undefined && !Object.prototype.hasOwnProperty.call(privileged_helper_utils_1.PRIVILEGED_OPERATIONS, spec.job)) {
55
+ throw new system_exceptions_1.PrivilegedWorkerUnavailableException('Unknown privileged helper operation.');
56
+ }
57
+ if (support.transport === 'helper') {
58
+ if (!spec.job) {
59
+ throw new system_exceptions_1.PrivilegedWorkerUnavailableException('Installed privileged helper requires an allowlisted operation.');
60
+ }
61
+ if ((spec.job === 'update' && spec.args.length !== 1) || (spec.job !== 'update' && spec.args.length !== 0)) {
62
+ throw new system_exceptions_1.PrivilegedWorkerUnavailableException('Invalid privileged helper operation arguments.');
63
+ }
64
+ spec = { ...spec, ...privileged_helper_utils_1.PRIVILEGED_OPERATIONS[spec.job], unitType: 'service' };
51
65
  }
52
66
  if (this.busyUnits.has(spec.unit)) {
53
67
  const busyJobId = this.busyUnits.get(spec.unit);
@@ -60,6 +74,8 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
60
74
  const id = (0, node_crypto_1.randomUUID)();
61
75
  const timeoutMs = spec.timeoutMs ?? DEFAULT_TIMEOUT_MS;
62
76
  const record = {
77
+ transport: support.transport ?? 'legacy',
78
+ operation: spec.job,
63
79
  id,
64
80
  unit: spec.unit,
65
81
  statusFile: spec.statusFile,
@@ -91,7 +107,9 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
91
107
  }
92
108
  const setenvArgs = Object.entries(env).flatMap(([key, value]) => ['--setenv', `${key}=${value}`]);
93
109
  const unitArgs = spec.unitType === 'service' ? ['--collect', '--service-type=exec'] : ['--scope'];
94
- const child = (0, node_child_process_1.spawn)('sudo', ['-n', 'systemd-run', ...unitArgs, `--unit=${spec.unit}`, ...setenvArgs, 'bash', spec.script, ...spec.args], { detached: true, stdio: ['ignore', 'ignore', 'pipe'] });
110
+ const child = (0, node_child_process_1.spawn)('sudo', record.transport === 'helper'
111
+ ? ['-n', privileged_helper_utils_1.PRIVILEGED_HELPER_PATH, 'run-job', spec.job, id, ...(spec.job === 'update' ? [spec.args[0]] : [])]
112
+ : ['-n', 'systemd-run', ...unitArgs, `--unit=${spec.unit}`, ...setenvArgs, 'bash', spec.script, ...spec.args], { detached: true, stdio: ['ignore', 'ignore', 'pipe'] });
95
113
  child.stderr?.unref?.();
96
114
  child.stderr?.on('data', (chunk) => {
97
115
  if (record.stderrBuffer.length >= STDERR_CAPTURE_LIMIT_BYTES) {
@@ -121,7 +139,7 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
121
139
  record.serviceLaunched = spec.unitType === 'service';
122
140
  return;
123
141
  }
124
- if (record.trackStatusHistory) {
142
+ if (record.trackStatusHistory || record.transport === 'helper') {
125
143
  this.pollTick(record);
126
144
  if (record.lastStatus.state !== 'running' || !record.pollTimer) {
127
145
  return;
@@ -155,6 +173,18 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
155
173
  this.startPolling(record);
156
174
  return { id };
157
175
  }
176
+ async clearUpdateStatus() {
177
+ await new Promise((resolve, reject) => {
178
+ (0, node_child_process_1.execFile)('sudo', ['-n', privileged_helper_utils_1.PRIVILEGED_HELPER_PATH, 'clear-update-status'], { timeout: STOP_ATTEMPT_TIMEOUT_MS }, (error, _stdout, stderr) => {
179
+ if (error) {
180
+ reject(new Error((stderr ?? '').toString().trim() || error.message));
181
+ }
182
+ else {
183
+ resolve();
184
+ }
185
+ });
186
+ });
187
+ }
158
188
  getStatus(id) {
159
189
  return this.jobs.get(id)?.lastStatus ?? null;
160
190
  }
@@ -266,10 +296,13 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
266
296
  }
267
297
  let mapped;
268
298
  try {
269
- const raw = record.trackStatusHistory
299
+ const raw = record.trackStatusHistory || record.transport === 'helper'
270
300
  ? this.readBoundedStatusFile(record.statusFile)
271
301
  : (0, fs_1.readFileSync)(record.statusFile, 'utf-8');
272
302
  const rawParsed = JSON.parse(raw);
303
+ if (record.transport === 'helper' && rawParsed.jobId !== record.id) {
304
+ return;
305
+ }
273
306
  if (record.trackStatusHistory) {
274
307
  this.acceptStatusHistory(record, rawParsed);
275
308
  return;
@@ -397,7 +430,8 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
397
430
  record.serviceProbePending = false;
398
431
  }
399
432
  }
400
- stopUnit(unit) {
433
+ stopUnit(record) {
434
+ const unit = record.unit;
401
435
  return new Promise((resolve) => {
402
436
  let settled = false;
403
437
  let timer = null;
@@ -413,7 +447,9 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
413
447
  resolve();
414
448
  };
415
449
  try {
416
- const child = (0, node_child_process_1.spawn)('sudo', ['-n', 'systemd-run', '--scope', '--quiet', `--unit=${unit}-stop`, 'systemctl', 'stop', unit], { stdio: 'ignore' });
450
+ const child = (0, node_child_process_1.spawn)('sudo', record.transport === 'helper'
451
+ ? ['-n', privileged_helper_utils_1.PRIVILEGED_HELPER_PATH, 'stop-job', record.operation, record.id]
452
+ : ['-n', 'systemd-run', '--scope', '--quiet', `--unit=${unit}-stop`, 'systemctl', 'stop', unit], { stdio: 'ignore' });
417
453
  child.on('exit', settle);
418
454
  child.on('error', settle);
419
455
  timer = setTimeout(settle, STOP_ATTEMPT_TIMEOUT_MS);
@@ -425,9 +461,15 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
425
461
  }
426
462
  });
427
463
  }
428
- isUnitActive(unit) {
464
+ isUnitActive(unit, failClosed = false) {
429
465
  return new Promise((resolve) => {
430
466
  (0, node_child_process_1.execFile)('systemctl', ['is-active', unit], { timeout: IS_ACTIVE_PROBE_TIMEOUT_MS }, (error, stdout) => {
467
+ if (failClosed) {
468
+ const state = (stdout ?? '').trim();
469
+ resolve(!(((!error || error.code === 3) && ['inactive', 'failed'].includes(state)) ||
470
+ ((!error || error.code === 4) && state === 'unknown')));
471
+ return;
472
+ }
431
473
  if (error) {
432
474
  resolve(false);
433
475
  return;
@@ -438,8 +480,8 @@ let PrivilegedWorkerService = class PrivilegedWorkerService {
438
480
  }
439
481
  async handleTimeout(record) {
440
482
  this.logger.error(`Privileged worker unit "${record.unit}" timed out after ${record.timeoutMs}ms`);
441
- await this.stopUnit(record.unit);
442
- const stillActive = await this.isUnitActive(record.unit);
483
+ await this.stopUnit(record);
484
+ const stillActive = await this.isUnitActive(record.unit, record.transport === 'helper');
443
485
  const stderr = this.getCapturedStderr(record);
444
486
  if (record.lastStatus.state !== 'running') {
445
487
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"privileged-worker.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/privileged-worker.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"privileged-worker.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/privileged-worker.service.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ export declare class UpdateExecutorService implements OnModuleDestroy, OnModuleI
24
24
  constructor(updateService: UpdateService, privilegedWorker: PrivilegedWorkerService, notifications: NotificationsService);
25
25
  onModuleInit(): Promise<void>;
26
26
  onModuleDestroy(): void;
27
+ private get statusFile();
28
+ private get attemptFile();
27
29
  private readAttempt;
28
30
  private isAttemptUnresolved;
29
31
  private isObserverCurrent;
@@ -14,16 +14,15 @@ const fs_1 = require("fs");
14
14
  const path_1 = require("path");
15
15
  const common_1 = require("@nestjs/common");
16
16
  const logger_1 = require("../../../common/logger");
17
+ const privileged_helper_utils_1 = require("../../../common/utils/privileged-helper.utils");
17
18
  const notifications_constants_1 = require("../../notifications/notifications.constants");
18
19
  const notifications_utils_1 = require("../../notifications/notifications.utils");
19
20
  const notifications_service_1 = require("../../notifications/services/notifications.service");
20
21
  const system_constants_1 = require("../system.constants");
21
22
  const privileged_worker_service_1 = require("./privileged-worker.service");
22
23
  const update_service_1 = require("./update.service");
23
- const STATUS_FILE = '/var/lib/smart-panel/update-status.json';
24
- const ATTEMPT_FILE = '/var/lib/smart-panel/update-attempt/attempt.json';
25
- const UPDATE_TIMEOUT_MS = 10 * 60 * 1000;
26
- const STATUS_POLL_MAX_MS = UPDATE_TIMEOUT_MS + 30_000;
24
+ const LEGACY_STATUS_FILE = '/var/lib/smart-panel/update-status.json';
25
+ const LEGACY_ATTEMPT_FILE = '/var/lib/smart-panel/update-attempt/attempt.json';
27
26
  const ATTEMPT_RECONCILIATION_POLL_INTERVAL_MS = 3_000;
28
27
  const LOCAL_HEALTH_PATH = '/api/v1/modules/system/system/health';
29
28
  const UPDATE_WORKER_UNIT = 'smart-panel-update';
@@ -60,7 +59,12 @@ let UpdateExecutorService = class UpdateExecutorService {
60
59
  this.observerTimers = new Map();
61
60
  }
62
61
  async onModuleInit() {
63
- await this.checkPendingUpdateStatus();
62
+ try {
63
+ await this.checkPendingUpdateStatus();
64
+ }
65
+ catch (error) {
66
+ await this.failUpdate(error instanceof Error ? error.message : 'Cannot read privileged update recovery state');
67
+ }
64
68
  }
65
69
  onModuleDestroy() {
66
70
  this.observerGeneration += 1;
@@ -72,21 +76,44 @@ let UpdateExecutorService = class UpdateExecutorService {
72
76
  this.observerAttemptId = null;
73
77
  this.observerTask = null;
74
78
  }
79
+ get statusFile() {
80
+ return (0, privileged_helper_utils_1.privilegedHelperPresent)() ? privileged_helper_utils_1.PRIVILEGED_OPERATIONS.update.statusFile : LEGACY_STATUS_FILE;
81
+ }
82
+ get attemptFile() {
83
+ return (0, privileged_helper_utils_1.privilegedHelperPresent)() ? `${privileged_helper_utils_1.PRIVILEGED_STATE_DIR}/update-attempt/attempt.json` : LEGACY_ATTEMPT_FILE;
84
+ }
75
85
  readAttempt() {
76
- if (!(0, fs_1.existsSync)(ATTEMPT_FILE)) {
86
+ if (!(0, fs_1.existsSync)(this.attemptFile)) {
77
87
  return null;
78
88
  }
79
89
  try {
80
- return JSON.parse((0, fs_1.readFileSync)(ATTEMPT_FILE, 'utf-8'));
90
+ const attempt = JSON.parse((0, fs_1.readFileSync)(this.attemptFile, 'utf-8'));
91
+ if ((0, privileged_helper_utils_1.privilegedHelperPresent)() &&
92
+ (!attempt ||
93
+ typeof attempt.attemptId !== 'string' ||
94
+ attempt.attemptId.length === 0 ||
95
+ !Number.isInteger(attempt.ownerPid) ||
96
+ attempt.ownerPid <= 0 ||
97
+ typeof attempt.targetVersion !== 'string' ||
98
+ typeof attempt.phase !== 'string' ||
99
+ !['active', 'failed_preflight', 'reconciled', 'recovery_required', 'complete'].includes(attempt.state) ||
100
+ typeof attempt.recoveryRequired !== 'boolean')) {
101
+ throw new Error('Invalid privileged update attempt record; operator recovery is required');
102
+ }
103
+ return attempt;
81
104
  }
82
105
  catch (error) {
83
106
  const err = error;
84
107
  this.logger.error(`Failed to read update attempt record: ${err.message}`);
108
+ if ((0, privileged_helper_utils_1.privilegedHelperPresent)()) {
109
+ throw err;
110
+ }
85
111
  return null;
86
112
  }
87
113
  }
88
114
  isAttemptUnresolved(attempt) {
89
- return Boolean(attempt && (attempt.state === 'active' || attempt.recoveryRequired === true));
115
+ return Boolean(attempt &&
116
+ (attempt.state === 'active' || attempt.state === 'recovery_required' || attempt.recoveryRequired === true));
90
117
  }
91
118
  isObserverCurrent(generation, attemptId) {
92
119
  return this.observerGeneration === generation && this.observerAttemptId === attemptId;
@@ -104,10 +131,10 @@ let UpdateExecutorService = class UpdateExecutorService {
104
131
  }
105
132
  }
106
133
  readStatusFile() {
107
- if (!(0, fs_1.existsSync)(STATUS_FILE)) {
134
+ if (!(0, fs_1.existsSync)(this.statusFile)) {
108
135
  return null;
109
136
  }
110
- return JSON.parse((0, fs_1.readFileSync)(STATUS_FILE, 'utf-8'));
137
+ return JSON.parse((0, fs_1.readFileSync)(this.statusFile, 'utf-8'));
111
138
  }
112
139
  async waitForObserverPoll(generation, attemptId) {
113
140
  if (!this.isObserverCurrent(generation, attemptId)) {
@@ -126,7 +153,7 @@ let UpdateExecutorService = class UpdateExecutorService {
126
153
  async waitForAttemptSettlement(initialAttempt, generation) {
127
154
  let attempt = initialAttempt;
128
155
  let status = null;
129
- const deadline = Date.now() + STATUS_POLL_MAX_MS;
156
+ const deadline = Date.now() + system_constants_1.UPDATE_WORKER_TIMEOUT_MS;
130
157
  while (this.isObserverCurrent(generation, initialAttempt.attemptId) &&
131
158
  this.isAttemptUnresolved(attempt) &&
132
159
  this.isAttemptOwnerAlive(attempt)) {
@@ -146,8 +173,8 @@ let UpdateExecutorService = class UpdateExecutorService {
146
173
  }
147
174
  return { attempt, status };
148
175
  }
149
- async reconcileCompletedAttempt(attempt, status) {
150
- const targetVersion = status?.targetVersion ?? attempt.targetVersion;
176
+ async reconcileCompletedAttempt(attempt) {
177
+ const targetVersion = attempt.targetVersion;
151
178
  this.logger.log(`Update to ${targetVersion} completed successfully (durable attempt record)`);
152
179
  this.updateService.setStatus({
153
180
  status: system_constants_1.UpdateStatusType.COMPLETE,
@@ -157,8 +184,11 @@ let UpdateExecutorService = class UpdateExecutorService {
157
184
  error: null,
158
185
  });
159
186
  await this.reportUpdateSucceeded();
160
- if ((0, fs_1.existsSync)(STATUS_FILE)) {
161
- (0, fs_1.unlinkSync)(STATUS_FILE);
187
+ try {
188
+ await this.cleanupPendingStatus();
189
+ }
190
+ catch (error) {
191
+ this.logHandlerFailure('Deferring completed update status acknowledgement', error);
162
192
  }
163
193
  }
164
194
  observeLiveAttempt(attempt) {
@@ -193,12 +223,16 @@ let UpdateExecutorService = class UpdateExecutorService {
193
223
  if (!this.isObserverCurrent(generation, attempt.attemptId)) {
194
224
  return;
195
225
  }
226
+ if ((0, privileged_helper_utils_1.privilegedHelperPresent)() && !settled.attempt) {
227
+ await this.failUpdate(`Update attempt ${attempt.attemptId} lost its durable recovery record; operator recovery is required`);
228
+ return;
229
+ }
196
230
  if (settled.attempt && settled.attempt.attemptId !== attempt.attemptId) {
197
231
  this.logger.warn(`Update attempt ${attempt.attemptId} was replaced while being observed`);
198
232
  return;
199
233
  }
200
- if (settled.attempt?.state === 'complete') {
201
- await this.reconcileCompletedAttempt(settled.attempt, settled.status);
234
+ if (settled.attempt?.state === 'complete' && !this.isAttemptUnresolved(settled.attempt)) {
235
+ await this.reconcileCompletedAttempt(settled.attempt);
202
236
  this.updateService.releaseUpdateLock();
203
237
  return;
204
238
  }
@@ -211,14 +245,14 @@ let UpdateExecutorService = class UpdateExecutorService {
211
245
  }
212
246
  if (settled.status) {
213
247
  await this.processPendingStatus(settled.status);
214
- this.cleanupPendingStatus();
248
+ await this.cleanupPendingStatus();
215
249
  this.updateService.releaseUpdateLock();
216
250
  }
217
251
  }
218
252
  async checkPendingUpdateStatus() {
219
253
  const attemptBeforeStatus = this.readAttempt();
220
- if (!(0, fs_1.existsSync)(STATUS_FILE)) {
221
- if (attemptBeforeStatus?.state === 'complete') {
254
+ if (!(0, fs_1.existsSync)(this.statusFile)) {
255
+ if (attemptBeforeStatus?.state === 'complete' && !this.isAttemptUnresolved(attemptBeforeStatus)) {
222
256
  await this.reconcileCompletedAttempt(attemptBeforeStatus);
223
257
  this.updateService.releaseUpdateLock();
224
258
  return;
@@ -236,8 +270,8 @@ let UpdateExecutorService = class UpdateExecutorService {
236
270
  try {
237
271
  const status = this.readStatusFile();
238
272
  const attempt = this.readAttempt();
239
- if (attempt?.state === 'complete') {
240
- await this.reconcileCompletedAttempt(attempt, status);
273
+ if (attempt?.state === 'complete' && !this.isAttemptUnresolved(attempt)) {
274
+ await this.reconcileCompletedAttempt(attempt);
241
275
  this.updateService.releaseUpdateLock();
242
276
  return;
243
277
  }
@@ -263,13 +297,13 @@ let UpdateExecutorService = class UpdateExecutorService {
263
297
  return;
264
298
  }
265
299
  await this.processPendingStatus(status);
266
- this.cleanupPendingStatus();
300
+ await this.cleanupPendingStatus();
267
301
  }
268
302
  catch (error) {
269
303
  const err = error;
270
304
  this.logger.error(`Failed to read update status file: ${err.message}`);
271
305
  try {
272
- (0, fs_1.unlinkSync)(STATUS_FILE);
306
+ await this.cleanupPendingStatus();
273
307
  }
274
308
  catch {
275
309
  }
@@ -294,9 +328,9 @@ let UpdateExecutorService = class UpdateExecutorService {
294
328
  }
295
329
  else {
296
330
  const startedAt = new Date(status.startedAt).getTime();
297
- if (Date.now() - startedAt > UPDATE_TIMEOUT_MS) {
331
+ if (Date.now() - startedAt > system_constants_1.UPDATE_TIMEOUT_MS) {
298
332
  this.logger.error(`Update to ${status.targetVersion} timed out`);
299
- await this.failUpdate('Update timed out after 10 minutes');
333
+ await this.failUpdate(`Update timed out after ${system_constants_1.UPDATE_TIMEOUT_MS / 60_000} minutes`);
300
334
  }
301
335
  else {
302
336
  this.logger.warn(`Update to ${status.targetVersion} was in progress (phase: ${status.phase}), service restarted`);
@@ -304,13 +338,18 @@ let UpdateExecutorService = class UpdateExecutorService {
304
338
  }
305
339
  }
306
340
  }
307
- cleanupPendingStatus() {
308
- if (!(0, fs_1.existsSync)(STATUS_FILE)) {
341
+ async cleanupPendingStatus() {
342
+ if ((0, privileged_helper_utils_1.privilegedHelperPresent)()) {
343
+ await this.privilegedWorker.clearUpdateStatus();
309
344
  return;
310
345
  }
311
- (0, fs_1.unlinkSync)(STATUS_FILE);
346
+ if (!(0, fs_1.existsSync)(this.statusFile)) {
347
+ return;
348
+ }
349
+ (0, fs_1.unlinkSync)(this.statusFile);
312
350
  }
313
351
  async startUpdate(targetVersion) {
352
+ const helperMode = (0, privileged_helper_utils_1.privilegedHelperPresent)();
314
353
  const attempt = this.readAttempt();
315
354
  if (this.isAttemptUnresolved(attempt)) {
316
355
  throw new Error(`An earlier update attempt (${attempt.attemptId}) requires recovery before another update can start`);
@@ -320,7 +359,7 @@ let UpdateExecutorService = class UpdateExecutorService {
320
359
  }
321
360
  const installType = this.updateService.getInstallType();
322
361
  let healthUrl;
323
- if (installType === 'image') {
362
+ if (!helperMode && installType === 'image') {
324
363
  try {
325
364
  healthUrl = this.getLocalHealthUrl();
326
365
  }
@@ -333,7 +372,7 @@ let UpdateExecutorService = class UpdateExecutorService {
333
372
  }
334
373
  this.logger.log(`Starting ${installType} update to version ${targetVersion}`);
335
374
  let downloadUrl;
336
- if (installType === 'image') {
375
+ if (!helperMode && installType === 'image') {
337
376
  const asset = await this.updateService.fetchServerReleaseAsset(targetVersion);
338
377
  if (!asset) {
339
378
  this.updateService.releaseUpdateLock();
@@ -357,7 +396,7 @@ let UpdateExecutorService = class UpdateExecutorService {
357
396
  startedAt: new Date(),
358
397
  });
359
398
  const updateScript = (0, path_1.join)(__dirname, '..', 'scripts', 'update-worker.sh');
360
- if (!(0, fs_1.existsSync)(updateScript)) {
399
+ if (!helperMode && !(0, fs_1.existsSync)(updateScript)) {
361
400
  this.updateService.releaseUpdateLock();
362
401
  const errorMsg = `Update worker script not found at ${updateScript}`;
363
402
  this.logger.error(errorMsg);
@@ -371,39 +410,45 @@ let UpdateExecutorService = class UpdateExecutorService {
371
410
  });
372
411
  throw new Error(errorMsg);
373
412
  }
374
- const envVars = {
375
- UPDATE_VERSION: targetVersion,
376
- UPDATE_START_MODE: 'running-service',
377
- STATUS_FILE,
378
- INSTALL_TYPE: installType,
379
- IMAGE_BASE_DIR: installType === 'image' ? this.updateService.getImageBaseDir() : '',
380
- DOWNLOAD_URL: downloadUrl ?? '',
381
- HOME: process.env.HOME ?? '/root',
382
- PATH: process.env.PATH ?? '/usr/local/bin:/usr/bin:/bin',
383
- };
413
+ const envVars = helperMode
414
+ ? {}
415
+ : {
416
+ UPDATE_VERSION: targetVersion,
417
+ UPDATE_START_MODE: 'running-service',
418
+ STATUS_FILE: this.statusFile,
419
+ INSTALL_TYPE: installType,
420
+ IMAGE_BASE_DIR: installType === 'image' ? this.updateService.getImageBaseDir() : '',
421
+ DOWNLOAD_URL: downloadUrl ?? '',
422
+ HOME: process.env.HOME ?? '/root',
423
+ PATH: process.env.PATH ?? '/usr/local/bin:/usr/bin:/bin',
424
+ };
384
425
  const observerGid = process.getgid?.();
385
- if (observerGid !== undefined) {
426
+ if (!helperMode && observerGid !== undefined) {
386
427
  envVars.UPDATE_OBSERVER_GID = String(observerGid);
387
428
  }
388
429
  if (healthUrl) {
389
430
  envVars.HEALTH_URL = healthUrl;
390
431
  envVars.HEALTH_EXPECTED_VERSION = targetVersion;
391
432
  }
392
- if (process.env.FB_DATA_DIR)
433
+ if (!helperMode && process.env.FB_DATA_DIR)
393
434
  envVars.FB_DATA_DIR = process.env.FB_DATA_DIR;
394
- if (process.env.FB_DB_PATH)
435
+ if (!helperMode && process.env.FB_DB_PATH)
395
436
  envVars.FB_DB_PATH = process.env.FB_DB_PATH;
396
- if (process.env.FB_CONFIG_PATH)
437
+ if (!helperMode && process.env.FB_CONFIG_PATH)
397
438
  envVars.FB_CONFIG_PATH = process.env.FB_CONFIG_PATH;
398
439
  try {
440
+ if (helperMode) {
441
+ await this.cleanupPendingStatus();
442
+ }
399
443
  const { id } = await this.privilegedWorker.run({
444
+ job: 'update',
400
445
  unit: UPDATE_WORKER_UNIT,
401
446
  unitType: 'service',
402
447
  script: updateScript,
403
448
  args: [targetVersion],
404
449
  env: envVars,
405
- statusFile: STATUS_FILE,
406
- timeoutMs: STATUS_POLL_MAX_MS,
450
+ statusFile: this.statusFile,
451
+ timeoutMs: system_constants_1.UPDATE_WORKER_TIMEOUT_MS,
407
452
  mapStatus: mapUpdateWorkerStatus,
408
453
  });
409
454
  this.logger.log(`Update worker spawned for version ${targetVersion} (job: ${id}, type: ${installType})`);
@@ -472,14 +517,17 @@ let UpdateExecutorService = class UpdateExecutorService {
472
517
  });
473
518
  }
474
519
  writeStatusFile(status) {
520
+ if ((0, privileged_helper_utils_1.privilegedHelperPresent)()) {
521
+ return;
522
+ }
475
523
  try {
476
- const dir = (0, path_1.dirname)(STATUS_FILE);
524
+ const dir = (0, path_1.dirname)(this.statusFile);
477
525
  if (!(0, fs_1.existsSync)(dir)) {
478
526
  (0, fs_1.mkdirSync)(dir, { recursive: true });
479
527
  }
480
- const tmpFile = `${STATUS_FILE}.tmp`;
528
+ const tmpFile = `${this.statusFile}.tmp`;
481
529
  (0, fs_1.writeFileSync)(tmpFile, JSON.stringify(status, null, '\t'), { mode: 0o644 });
482
- (0, fs_1.renameSync)(tmpFile, STATUS_FILE);
530
+ (0, fs_1.renameSync)(tmpFile, this.statusFile);
483
531
  }
484
532
  catch (error) {
485
533
  const err = error;