@fastybird/smart-panel-backend 1.1.0-alpha.3 → 1.1.0-alpha.5

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 (62) hide show
  1. package/dist/common/filters/conflict-exception.filter.d.ts +6 -0
  2. package/dist/common/filters/conflict-exception.filter.js +59 -0
  3. package/dist/common/filters/conflict-exception.filter.js.map +1 -0
  4. package/dist/common/filters/global-error.filter.js +1 -4
  5. package/dist/common/filters/global-error.filter.js.map +1 -1
  6. package/dist/common/filters/global-filters.d.ts +3 -0
  7. package/dist/common/filters/global-filters.js +22 -0
  8. package/dist/common/filters/global-filters.js.map +1 -0
  9. package/dist/common/filters/unprocessable-entity-exception.filter.d.ts +1 -0
  10. package/dist/common/filters/unprocessable-entity-exception.filter.js +15 -3
  11. package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
  12. package/dist/main.js +2 -7
  13. package/dist/main.js.map +1 -1
  14. package/dist/modules/platform/services/platform.service.d.ts +13 -4
  15. package/dist/modules/platform/services/platform.service.js +57 -35
  16. package/dist/modules/platform/services/platform.service.js.map +1 -1
  17. package/dist/modules/remote-access/dto/update-config.dto.js +5 -0
  18. package/dist/modules/remote-access/dto/update-config.dto.js.map +1 -1
  19. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js +5 -2
  20. package/dist/modules/remote-access/validators/is-remote-access-url.validator.js.map +1 -1
  21. package/dist/modules/system/services/privileged-worker.service.d.ts +10 -0
  22. package/dist/modules/system/services/privileged-worker.service.js +137 -11
  23. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  24. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +6 -9
  25. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  26. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +1 -0
  27. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +26 -10
  28. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  29. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -1
  30. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +28 -3
  31. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  32. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +19 -0
  33. package/dist/plugins/remote-access-tailscale/models/status.model.js +158 -1
  34. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  35. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +2 -0
  36. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +3 -1
  37. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  38. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +13 -0
  39. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +27 -0
  40. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -0
  41. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  42. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +2 -0
  43. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  44. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +1 -1
  45. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +61 -0
  46. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -0
  47. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +12 -0
  48. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  49. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +1 -0
  50. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +27 -2
  51. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  52. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +30 -1
  53. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +300 -30
  54. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  55. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +8 -3
  56. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +39 -12
  57. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  58. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +14 -5
  59. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +51 -16
  60. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  61. package/dist/tsconfig.build.tsbuildinfo +1 -1
  62. package/package.json +2 -2
@@ -16,6 +16,7 @@ exports.TailscaleNodeManagedService = void 0;
16
16
  exports.compareTailscaleVersions = compareTailscaleVersions;
17
17
  const node_child_process_1 = require("node:child_process");
18
18
  const os_1 = __importDefault(require("os"));
19
+ const path_1 = require("path");
19
20
  const common_1 = require("@nestjs/common");
20
21
  const config_1 = require("@nestjs/config");
21
22
  const event_emitter_1 = require("@nestjs/event-emitter");
@@ -28,9 +29,15 @@ const platform_service_1 = require("../../../modules/platform/services/platform.
28
29
  const remote_access_constants_1 = require("../../../modules/remote-access/remote-access.constants");
29
30
  const config_model_1 = require("../models/config.model");
30
31
  const remote_access_tailscale_constants_1 = require("../remote-access-tailscale.constants");
32
+ const remote_access_tailscale_exceptions_1 = require("../remote-access-tailscale.exceptions");
31
33
  const tailscale_cli_service_1 = require("./tailscale-cli.service");
32
34
  const tailscale_serve_service_1 = require("./tailscale-serve.service");
33
35
  const tailscale_status_mapper_service_1 = require("./tailscale-status-mapper.service");
36
+ const TAILSCALE_REQUIREMENTS_PERIODIC_REFRESH_MS = 5 * 60 * 1000;
37
+ const TAILSCALE_PRINT_PLAN_TIMEOUT_MS = 2_000;
38
+ const OPERATOR_GRANTED_SATISFIED_MESSAGE = 'The smart-panel operator is granted.';
39
+ const TAILSCALE_DOCUMENTATION_URL = 'https://smart-panel.fastybird.com/docs';
40
+ const TAILSCALE_VENDOR_DOWNLOAD_URL = 'https://tailscale.com/download/linux';
34
41
  function compareTailscaleVersions(a, b) {
35
42
  const toParts = (v) => v.split('.').map((segment) => parseInt(segment, 10) || 0);
36
43
  const partsA = toParts(a);
@@ -60,7 +67,13 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
60
67
  this.activationPolicy = 'owner-enabled';
61
68
  this.pollTimer = null;
62
69
  this.lastStatus = null;
70
+ this.lastError = null;
63
71
  this.pluginConfig = null;
72
+ this.requirementsCache = null;
73
+ this.requirementsRefreshedAt = 0;
74
+ this.lastServeConvergeDenied = false;
75
+ this.reconnectAttempts = 0;
76
+ this.nextReconnectAttemptAt = 0;
64
77
  }
65
78
  async start() {
66
79
  await this.withLock(async () => {
@@ -69,11 +82,13 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
69
82
  }
70
83
  this.state = 'starting';
71
84
  this.pluginConfig = null;
85
+ this.reconnectAttempts = 0;
86
+ this.nextReconnectAttemptAt = 0;
72
87
  const config = this.getPluginConfig();
73
88
  this.logger.log('Starting Tailscale node service');
74
89
  try {
75
- const requirements = await this.evaluateRequirements();
76
- if (requirements.every((requirement) => requirement.satisfied)) {
90
+ const requirements = await this.refreshRequirements('start');
91
+ if (this.requirementsSatisfied(requirements)) {
77
92
  const status = await this.getStatusOrNull();
78
93
  if (status && this.mapper.hasExistingKey(status)) {
79
94
  await this.cli.set(this.buildPreferenceFlags(config));
@@ -82,9 +97,17 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
82
97
  }
83
98
  }
84
99
  catch (error) {
100
+ if (error instanceof tailscale_cli_service_1.TailscaleCliError && error.kind === 'permission-denied') {
101
+ await this.refreshRequirements('permission-denied').catch(() => undefined);
102
+ }
85
103
  this.logger.warn('Failed to bring the Tailscale node up during start; the poller keeps reporting live status.', {
86
104
  message: error instanceof Error ? error.message : String(error),
87
105
  });
106
+ await this.emitStatus().catch((emitError) => {
107
+ this.logger.debug('Failed to emit status after a failed start', {
108
+ message: emitError instanceof Error ? emitError.message : String(emitError),
109
+ });
110
+ });
88
111
  }
89
112
  this.schedulePoll(0);
90
113
  this.state = 'started';
@@ -100,16 +123,41 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
100
123
  this.clearPoll();
101
124
  try {
102
125
  await this.cli.down();
126
+ this.state = 'stopped';
103
127
  }
104
128
  catch (error) {
105
- this.logger.debug('tailscale down failed while stopping (safe to ignore if the node was already down)', {
106
- message: error instanceof Error ? error.message : String(error),
107
- });
129
+ if (await this.isStopFailureTolerated(error)) {
130
+ this.logger.debug('tailscale down failed while stopping (safe to ignore if the node was already down)', {
131
+ message: error instanceof Error ? error.message : String(error),
132
+ });
133
+ this.state = 'stopped';
134
+ }
135
+ else {
136
+ const message = error instanceof Error ? error.message : String(error);
137
+ this.state = 'error';
138
+ this.lastError = message;
139
+ this.logger.error('Failed to stop the Tailscale node service', { message });
140
+ await this.emitStatus();
141
+ throw new remote_access_tailscale_exceptions_1.TailscaleNodeStopFailedException(message);
142
+ }
108
143
  }
109
- this.state = 'stopped';
144
+ await this.emitStatus();
110
145
  this.logger.log('Tailscale node service stopped');
111
146
  });
112
147
  }
148
+ async isStopFailureTolerated(error) {
149
+ if (error instanceof tailscale_cli_service_1.TailscaleCliError &&
150
+ (error.kind === 'needs-login' || error.kind === 'daemon-down' || error.kind === 'not-installed')) {
151
+ return true;
152
+ }
153
+ const status = await this.getStatusOrNull();
154
+ return status?.BackendState === 'Stopped';
155
+ }
156
+ async emitStatus() {
157
+ const status = await this.computeStatus();
158
+ this.lastStatus = status;
159
+ this.eventEmitter.emit(remote_access_constants_1.EventType.PROVIDER_STATUS, status);
160
+ }
113
161
  async onConfigChanged() {
114
162
  const previous = this.pluginConfig;
115
163
  this.pluginConfig = null;
@@ -133,19 +181,22 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
133
181
  return { restartRequired: true };
134
182
  }
135
183
  try {
136
- const requirements = await this.evaluateRequirements();
137
- if (requirements.every((requirement) => requirement.satisfied)) {
184
+ const requirements = await this.refreshRequirements('start');
185
+ if (this.requirementsSatisfied(requirements)) {
138
186
  const status = await this.getStatusOrNull();
139
187
  if (status && this.mapper.hasExistingKey(status)) {
140
188
  await this.cli.set(this.buildPreferenceFlags(next));
141
189
  const port = this.getBackendPort();
142
190
  if (this.mapper.map(status, { port }).state === 'connected') {
143
- await this.serveService.apply(next, port, status);
191
+ await this.convergeServe(next, port, status);
144
192
  }
145
193
  }
146
194
  }
147
195
  }
148
196
  catch (error) {
197
+ if (error instanceof tailscale_cli_service_1.TailscaleCliError && error.kind === 'permission-denied') {
198
+ await this.refreshRequirements('permission-denied').catch(() => undefined);
199
+ }
149
200
  this.logger.warn('Failed to apply changed Tailscale preferences', {
150
201
  message: error instanceof Error ? error.message : String(error),
151
202
  });
@@ -153,6 +204,9 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
153
204
  return { restartRequired: false };
154
205
  }
155
206
  async isHealthy() {
207
+ if (!this.requirementsSatisfied(this.getRequirements())) {
208
+ return false;
209
+ }
156
210
  try {
157
211
  const status = await this.cli.getStatus();
158
212
  return status.BackendState === 'Running' && status.Self?.Online === true;
@@ -175,14 +229,34 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
175
229
  }
176
230
  }
177
231
  async evaluateRequirements() {
232
+ return this.refreshRequirements('status-read');
233
+ }
234
+ getRequirements() {
235
+ return this.requirementsCache ?? [];
236
+ }
237
+ async refreshRequirements(reason) {
238
+ if (reason === 'periodic' &&
239
+ this.requirementsCache &&
240
+ Date.now() - this.requirementsRefreshedAt < TAILSCALE_REQUIREMENTS_PERIODIC_REFRESH_MS) {
241
+ return this.requirementsCache;
242
+ }
243
+ const requirements = await this.evaluateRequirementsLive();
244
+ this.requirementsCache = requirements;
245
+ this.requirementsRefreshedAt = Date.now();
246
+ return requirements;
247
+ }
248
+ requirementsSatisfied(requirements) {
249
+ return requirements.length > 0 && requirements.every((requirement) => requirement.satisfied);
250
+ }
251
+ async evaluateRequirementsLive() {
178
252
  const platform = await this.evaluatePlatformSupported();
179
253
  if (!platform.satisfied) {
180
254
  return [
181
- platform,
182
- { code: 'binary-installed', satisfied: false, message: UNEVALUATED_MESSAGE },
183
- { code: 'daemon-active', satisfied: false, message: UNEVALUATED_MESSAGE },
184
- { code: 'operator-granted', satisfied: false, message: UNEVALUATED_MESSAGE },
185
- { code: 'version-supported', satisfied: false, message: UNEVALUATED_MESSAGE },
255
+ await this.finalizeRequirement(platform),
256
+ this.unevaluatedRequirement('binary-installed'),
257
+ this.unevaluatedRequirement('daemon-active'),
258
+ this.unevaluatedRequirement('operator-granted'),
259
+ this.unevaluatedRequirement('version-supported'),
186
260
  ];
187
261
  }
188
262
  const [{ binary, version }, daemonActive, operatorGranted] = await Promise.all([
@@ -190,41 +264,153 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
190
264
  this.evaluateDaemonActive(),
191
265
  this.evaluateOperatorGranted(),
192
266
  ]);
193
- return [platform, binary, daemonActive, operatorGranted, version];
267
+ return this.attachRemedies([platform, binary, daemonActive, operatorGranted, version]);
268
+ }
269
+ unevaluatedRequirement(code) {
270
+ return { code, satisfied: false, message: UNEVALUATED_MESSAGE, remedy: null };
271
+ }
272
+ async attachRemedies(requirements) {
273
+ let installRemedyPromise = null;
274
+ const getInstallRemedy = () => {
275
+ installRemedyPromise ??= this.buildInstallRemedy();
276
+ return installRemedyPromise;
277
+ };
278
+ return Promise.all(requirements.map((requirement) => this.finalizeRequirement(requirement, getInstallRemedy)));
279
+ }
280
+ async finalizeRequirement(requirement, getInstallRemedy) {
281
+ if (requirement.satisfied) {
282
+ return { ...requirement, remedy: null };
283
+ }
284
+ const remedy = getInstallRemedy && (requirement.code === 'binary-installed' || requirement.code === 'version-supported')
285
+ ? await getInstallRemedy()
286
+ : await this.buildRemedy(requirement.code);
287
+ return { ...requirement, remedy };
288
+ }
289
+ async buildRemedy(code) {
290
+ const serviceUser = os_1.default.userInfo().username;
291
+ switch (code) {
292
+ case 'binary-installed':
293
+ case 'version-supported':
294
+ return this.buildInstallRemedy();
295
+ case 'daemon-active':
296
+ return { commands: ['sudo systemctl enable --now tailscaled'], note: null };
297
+ case 'operator-granted':
298
+ return { commands: [`sudo tailscale set --operator=${serviceUser}`], note: null };
299
+ case 'platform-supported':
300
+ default:
301
+ return { commands: [], note: TAILSCALE_DOCUMENTATION_URL };
302
+ }
303
+ }
304
+ async buildInstallRemedy() {
305
+ try {
306
+ const stdout = await this.runSetupScriptPrintPlan('install');
307
+ const lines = stdout
308
+ .split('\n')
309
+ .map((line) => line.trim())
310
+ .filter((line) => line.length > 0);
311
+ if (lines.length === 0) {
312
+ return { commands: [], note: TAILSCALE_VENDOR_DOWNLOAD_URL };
313
+ }
314
+ return {
315
+ commands: lines.map((line) => (line.includes('|') ? line : `sudo ${line}`)),
316
+ note: null,
317
+ };
318
+ }
319
+ catch (error) {
320
+ this.logger.debug('Failed to build the install remedy from tailscale-setup.sh --print-plan', {
321
+ message: error instanceof Error ? error.message : String(error),
322
+ });
323
+ return { commands: [], note: TAILSCALE_VENDOR_DOWNLOAD_URL };
324
+ }
194
325
  }
195
- async computeStatus() {
326
+ runSetupScriptPrintPlan(step) {
327
+ const script = (0, path_1.join)(__dirname, '..', 'scripts', 'tailscale-setup.sh');
328
+ return new Promise((resolve, reject) => {
329
+ (0, node_child_process_1.execFile)('bash', [script, '--print-plan', `--step=${step}`], { timeout: TAILSCALE_PRINT_PLAN_TIMEOUT_MS }, (error, stdout) => {
330
+ if (error) {
331
+ reject(error);
332
+ return;
333
+ }
334
+ resolve(stdout ?? '');
335
+ });
336
+ });
337
+ }
338
+ async computeStatus(requirementsReason = 'status-read') {
339
+ return (await this.computeStatusWithRawStatus(requirementsReason)).status;
340
+ }
341
+ async computeStatusWithRawStatus(requirementsReason = 'status-read') {
342
+ if (this.state === 'stopped' || this.state === 'stopping') {
343
+ return { status: this.buildStatus('disconnected', 'The node service is stopped.'), raw: null };
344
+ }
345
+ if (this.state === 'error') {
346
+ return { status: this.buildStatus('error', this.lastError ?? 'The Tailscale node service failed.'), raw: null };
347
+ }
196
348
  const platform = await this.evaluatePlatformSupported();
197
349
  if (!platform.satisfied) {
198
- return this.buildStatus('unsupported', platform.message);
350
+ return { status: this.buildStatus('unsupported', platform.message), raw: null };
199
351
  }
200
352
  try {
201
353
  const status = await this.cli.getStatus();
202
354
  const port = this.getBackendPort();
203
- const mapped = this.mapper.map(status, { port });
204
355
  const postureAdvisories = this.buildPostureAdvisories(status);
356
+ const requirements = await this.refreshRequirements(requirementsReason);
357
+ const operatorRequirement = requirements.find((requirement) => requirement.code === 'operator-granted');
358
+ if (operatorRequirement && !operatorRequirement.satisfied) {
359
+ return {
360
+ status: this.buildStatus('setup-required', operatorRequirement.message, {}, [], [], [
361
+ ...postureAdvisories,
362
+ { code: 'operator-not-granted', severity: 'critical', message: operatorRequirement.message },
363
+ ]),
364
+ raw: status,
365
+ };
366
+ }
367
+ const mapped = this.mapper.map(status, { port });
205
368
  if (mapped.state !== 'connected') {
206
- return this.buildStatus(mapped.state, mapped.message, mapped.details, mapped.proxyAddresses, mapped.endpoints, postureAdvisories);
369
+ return {
370
+ status: this.buildStatus(mapped.state, mapped.message, mapped.details, mapped.proxyAddresses, mapped.endpoints, postureAdvisories),
371
+ raw: status,
372
+ };
207
373
  }
208
374
  const config = this.getPluginConfig();
209
- const serveResult = await this.serveService.apply(config, port, status);
210
- return this.buildStatus(mapped.state, mapped.message, mapped.details, [...mapped.proxyAddresses, ...serveResult.proxyAddresses], [...mapped.endpoints, ...serveResult.endpoints], [...postureAdvisories, ...serveResult.advisories]);
375
+ const serveResult = await this.serveService.read(config, port, status);
376
+ return {
377
+ status: this.buildStatus(mapped.state, mapped.message, mapped.details, [...mapped.proxyAddresses, ...serveResult.proxyAddresses], [...mapped.endpoints, ...serveResult.endpoints], [...postureAdvisories, ...serveResult.advisories]),
378
+ raw: status,
379
+ };
211
380
  }
212
381
  catch (error) {
213
382
  if (error instanceof tailscale_cli_service_1.TailscaleCliError) {
214
383
  switch (error.kind) {
215
384
  case 'not-installed':
216
- return this.buildStatus('not-installed', 'Tailscale is not installed.');
385
+ return { status: this.buildStatus('not-installed', 'Tailscale is not installed.'), raw: null };
217
386
  case 'permission-denied':
218
- return this.buildStatus('setup-required', 'The smart-panel operator has not been granted on tailscaled.');
387
+ return {
388
+ status: this.buildStatus('setup-required', 'The smart-panel operator has not been granted on tailscaled.'),
389
+ raw: null,
390
+ };
219
391
  case 'daemon-down':
220
- return this.buildStatus('setup-required', 'The Tailscale daemon is not running.');
392
+ return { status: this.buildStatus('setup-required', 'The Tailscale daemon is not running.'), raw: null };
221
393
  default:
222
- return this.buildStatus('error', 'Failed to retrieve the Tailscale status.');
394
+ return { status: this.buildStatus('error', 'Failed to retrieve the Tailscale status.'), raw: null };
223
395
  }
224
396
  }
225
397
  throw error;
226
398
  }
227
399
  }
400
+ async convergeServe(config, port, status) {
401
+ const result = await this.serveService.converge(config, port, status);
402
+ if (result.permissionDenied) {
403
+ if (!this.lastServeConvergeDenied) {
404
+ this.lastServeConvergeDenied = true;
405
+ this.logger.warn('Tailscale Serve/Funnel mutation was denied — the smart-panel operator grant may have been revoked.');
406
+ await this.refreshRequirements('permission-denied').catch(() => undefined);
407
+ }
408
+ }
409
+ else {
410
+ this.lastServeConvergeDenied = false;
411
+ }
412
+ return result;
413
+ }
228
414
  async evaluatePlatformSupported() {
229
415
  const platformType = await this.platformService.getPlatformTypeAsync();
230
416
  if (platformType === platform_constants_1.PlatformType.RASPBERRY || platformType === platform_constants_1.PlatformType.GENERIC) {
@@ -291,19 +477,41 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
291
477
  };
292
478
  }
293
479
  async evaluateOperatorGranted() {
480
+ const serviceUser = os_1.default.userInfo().username;
294
481
  try {
295
- await this.cli.getStatus();
296
- return { code: 'operator-granted', satisfied: true, message: 'The smart-panel operator is granted.' };
482
+ const prefs = await this.cli.getPrefs();
483
+ return this.buildOperatorRequirement(prefs.OperatorUser === serviceUser, serviceUser);
297
484
  }
298
485
  catch (error) {
299
486
  if (error instanceof tailscale_cli_service_1.TailscaleCliError) {
300
- if (error.kind === 'permission-denied') {
487
+ if (error.kind === 'daemon-down') {
301
488
  return {
302
489
  code: 'operator-granted',
303
490
  satisfied: false,
304
- message: 'The smart-panel operator has not been granted; run setup again.',
491
+ message: 'Cannot verify the operator grant while tailscaled is not running.',
305
492
  };
306
493
  }
494
+ if (error.kind === 'not-installed') {
495
+ return {
496
+ code: 'operator-granted',
497
+ satisfied: false,
498
+ message: 'Cannot verify the operator grant before Tailscale is installed.',
499
+ };
500
+ }
501
+ }
502
+ return this.evaluateOperatorGrantedViaProbe(serviceUser);
503
+ }
504
+ }
505
+ async evaluateOperatorGrantedViaProbe(serviceUser) {
506
+ try {
507
+ await this.cli.set([`--operator=${serviceUser}`]);
508
+ return this.buildOperatorRequirement(true, serviceUser);
509
+ }
510
+ catch (error) {
511
+ if (error instanceof tailscale_cli_service_1.TailscaleCliError) {
512
+ if (error.kind === 'permission-denied') {
513
+ return this.buildOperatorRequirement(false, serviceUser);
514
+ }
307
515
  if (error.kind === 'daemon-down') {
308
516
  return {
309
517
  code: 'operator-granted',
@@ -322,6 +530,15 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
322
530
  return { code: 'operator-granted', satisfied: false, message: 'Failed to verify the operator grant.' };
323
531
  }
324
532
  }
533
+ buildOperatorRequirement(satisfied, serviceUser) {
534
+ return {
535
+ code: 'operator-granted',
536
+ satisfied,
537
+ message: satisfied
538
+ ? OPERATOR_GRANTED_SATISFIED_MESSAGE
539
+ : `The ${serviceUser} user is not the tailscaled operator. Run Set up, or on the device run \`sudo tailscale set --operator=${serviceUser}\`.`,
540
+ };
541
+ }
325
542
  async getStatusOrNull() {
326
543
  try {
327
544
  return await this.cli.getStatus();
@@ -362,10 +579,33 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
362
579
  }
363
580
  async pollTick() {
364
581
  try {
365
- const status = await this.computeStatus();
582
+ let { status, raw } = await this.computeStatusWithRawStatus('periodic');
366
583
  if (!this.isPollable()) {
367
584
  return;
368
585
  }
586
+ if (status.state === 'connected') {
587
+ this.reconnectAttempts = 0;
588
+ this.nextReconnectAttemptAt = 0;
589
+ }
590
+ if (status.state === 'disconnected' &&
591
+ raw &&
592
+ this.mapper.hasExistingKey(raw) &&
593
+ this.requirementsSatisfied(this.getRequirements()) &&
594
+ Date.now() >= this.nextReconnectAttemptAt) {
595
+ const reconnected = await this.attemptReconnect();
596
+ if (!this.isPollable()) {
597
+ return;
598
+ }
599
+ if (reconnected) {
600
+ ({ status, raw } = await this.computeStatusWithRawStatus('periodic'));
601
+ if (!this.isPollable()) {
602
+ return;
603
+ }
604
+ }
605
+ }
606
+ if (raw && status.state === 'connected' && this.requirementsSatisfied(this.getRequirements())) {
607
+ await this.convergeServe(this.getPluginConfig(), this.getBackendPort(), raw);
608
+ }
369
609
  if (this.hasStatusChanged(this.lastStatus, status)) {
370
610
  this.lastStatus = status;
371
611
  this.eventEmitter.emit(remote_access_constants_1.EventType.PROVIDER_STATUS, status);
@@ -382,6 +622,36 @@ let TailscaleNodeManagedService = class TailscaleNodeManagedService extends base
382
622
  this.schedulePoll(remote_access_tailscale_constants_1.TAILSCALE_POLL_INTERVAL_STABLE_MS);
383
623
  }
384
624
  }
625
+ async attemptReconnect() {
626
+ return this.withLock(async () => {
627
+ if (this.state !== 'started') {
628
+ return false;
629
+ }
630
+ try {
631
+ const config = this.getPluginConfig();
632
+ await this.cli.set(this.buildPreferenceFlags(config));
633
+ await this.cli.up(this.buildUpFlags(config));
634
+ this.reconnectAttempts = 0;
635
+ this.nextReconnectAttemptAt = 0;
636
+ this.logger.log('Tailscale node reconnected automatically after being found unexpectedly disconnected.');
637
+ return true;
638
+ }
639
+ catch (error) {
640
+ this.reconnectAttempts += 1;
641
+ const delayMs = Math.min(remote_access_tailscale_constants_1.TAILSCALE_RECONNECT_BASE_DELAY_MS * 2 ** (this.reconnectAttempts - 1), remote_access_tailscale_constants_1.TAILSCALE_RECONNECT_MAX_DELAY_MS);
642
+ this.nextReconnectAttemptAt = Date.now() + delayMs;
643
+ if (error instanceof tailscale_cli_service_1.TailscaleCliError && error.kind === 'permission-denied') {
644
+ await this.refreshRequirements('permission-denied').catch(() => undefined);
645
+ }
646
+ this.logger.warn('Automatic Tailscale reconnect attempt failed; will retry with backoff.', {
647
+ attempt: this.reconnectAttempts,
648
+ nextAttemptInMs: delayMs,
649
+ message: error instanceof Error ? error.message : String(error),
650
+ });
651
+ return false;
652
+ }
653
+ });
654
+ }
385
655
  hasStatusChanged(previous, next) {
386
656
  if (!previous) {
387
657
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"tailscale-node-managed.service.js","sourceRoot":"","sources":["../../../../src/plugins/remote-access-tailscale/services/tailscale-node-managed.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tailscale-node-managed.service.js","sourceRoot":"","sources":["../../../../src/plugins/remote-access-tailscale/services/tailscale-node-managed.service.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,24 @@
1
1
  import { RemoteAccessAdvisory, RemoteAccessEndpoint } from '../../../modules/remote-access/platforms/remote-access-provider.platform';
2
2
  import { RemoteAccessTailscalePluginConfigModel } from '../models/config.model';
3
3
  import { TailscaleCliService, TailscaleStatus } from './tailscale-cli.service';
4
- export interface TailscaleServeApplyResult {
4
+ export interface TailscaleServeResult {
5
5
  endpoints: RemoteAccessEndpoint[];
6
6
  proxyAddresses: string[];
7
7
  advisories: RemoteAccessAdvisory[];
8
+ permissionDenied: boolean;
8
9
  }
9
10
  export declare class TailscaleServeService {
10
11
  private readonly cli;
11
12
  private readonly logger;
12
13
  constructor(cli: TailscaleCliService);
13
- apply(config: RemoteAccessTailscalePluginConfigModel, port: number, status: TailscaleStatus): Promise<TailscaleServeApplyResult>;
14
+ read(config: RemoteAccessTailscalePluginConfigModel, port: number, status: TailscaleStatus): Promise<TailscaleServeResult>;
15
+ converge(config: RemoteAccessTailscalePluginConfigModel, port: number, status: TailscaleStatus): Promise<TailscaleServeResult>;
16
+ private readCaps;
17
+ private buildResult;
14
18
  private desiredState;
15
19
  private currentState;
16
- private applyHandler;
20
+ private readHandlerState;
21
+ private convergeHandler;
17
22
  private readServeStatus;
18
23
  private isServeActive;
19
24
  private isFunnelActive;