@lamalibre/create-portlama 1.0.49 → 1.0.52

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 (30) hide show
  1. package/package.json +1 -1
  2. package/src/lib/service-config.js +3 -1
  3. package/src/tasks/redeploy.js +7 -2
  4. package/vendor/panel-client/dist/assets/index-CbeiNT8I.js +708 -0
  5. package/vendor/panel-client/dist/assets/index-DouEt_5g.css +1 -0
  6. package/vendor/panel-client/dist/docs/01-concepts/mtls.md +38 -16
  7. package/vendor/panel-client/dist/docs/01-concepts/security-model.md +2 -0
  8. package/vendor/panel-client/dist/docs/02-guides/desktop-app-setup.md +2 -1
  9. package/vendor/panel-client/dist/docs/03-architecture/panel-client.md +1 -1
  10. package/vendor/panel-client/dist/docs/03-architecture/panel-server.md +37 -4
  11. package/vendor/panel-client/dist/docs/03-architecture/state-management.md +83 -6
  12. package/vendor/panel-client/dist/docs/04-api-reference/certificates.md +111 -5
  13. package/vendor/panel-client/dist/docs/04-api-reference/overview.md +14 -0
  14. package/vendor/panel-client/dist/docs/04-api-reference/system.md +97 -4
  15. package/vendor/panel-client/dist/docs/06-reference/config-files.md +18 -2
  16. package/vendor/panel-client/dist/docs/_index.json +5 -0
  17. package/vendor/panel-client/dist/index.html +2 -2
  18. package/vendor/panel-server/package.json +1 -1
  19. package/vendor/panel-server/src/index.js +15 -0
  20. package/vendor/panel-server/src/lib/config.js +9 -3
  21. package/vendor/panel-server/src/lib/constants.js +1 -1
  22. package/vendor/panel-server/src/lib/nginx.js +108 -1
  23. package/vendor/panel-server/src/lib/storage.js +57 -60
  24. package/vendor/panel-server/src/lib/user-access-session.js +126 -0
  25. package/vendor/panel-server/src/lib/user-access.js +334 -0
  26. package/vendor/panel-server/src/middleware/user-access-session.js +50 -0
  27. package/vendor/panel-server/src/routes/management/system.js +130 -14
  28. package/vendor/panel-server/src/routes/user-access.js +271 -0
  29. package/vendor/panel-client/dist/assets/index-D8uiVw3q.js +0 -689
  30. package/vendor/panel-client/dist/assets/index-DkI5S9UE.css +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lamalibre/create-portlama",
3
- "version": "1.0.49",
3
+ "version": "1.0.52",
4
4
  "description": "One-command setup for secure reverse tunnels with a management dashboard",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -168,6 +168,8 @@ portlama ALL=(root) NOPASSWD: /usr/bin/test -f /etc/nginx/sites-available/*
168
168
  portlama ALL=(root) NOPASSWD: /usr/bin/test -r /etc/portlama/pki/*
169
169
 
170
170
  # --- self-update: run update script in its own cgroup (survives panel restart) ---
171
- portlama ALL=(root) NOPASSWD: /usr/bin/systemd-run --unit portlama-update-* --no-block /usr/bin/bash /etc/portlama/portlama-update-*
171
+ # Each argument is pinned except the script ID suffix (16-char hex from randomBytes).
172
+ # The sudoers wildcard only matches within a single argument — no trailing args accepted.
173
+ portlama ALL=(root) NOPASSWD: /usr/bin/systemd-run --unit portlama-update-* --no-block /usr/bin/bash /etc/portlama/portlama-update-*.sh
172
174
  `;
173
175
  }
@@ -1,5 +1,5 @@
1
1
  import { execa } from 'execa';
2
- import { writeFile, readFile, cp, rm } from 'node:fs/promises';
2
+ import { writeFile, readFile, cp, rm, rename, open } from 'node:fs/promises';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { setTimeout as sleep } from 'node:timers/promises';
5
5
  import { fileURLToPath } from 'node:url';
@@ -183,7 +183,12 @@ export function redeployTasks(ctx, task) {
183
183
  staticDir: join(installDir, 'panel-client', 'dist'),
184
184
  };
185
185
 
186
- await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', { mode: 0o640 });
186
+ const tmpConfigPath = `${configPath}.tmp`;
187
+ await writeFile(tmpConfigPath, JSON.stringify(config, null, 2) + '\n', { mode: 0o600 });
188
+ const fd = await open(tmpConfigPath, 'r');
189
+ await fd.sync();
190
+ await fd.close();
191
+ await rename(tmpConfigPath, configPath);
187
192
  await execa('chown', ['portlama:portlama', configPath]);
188
193
 
189
194
  subtask.output = 'Configuration updated';