@imenam/self-register-proxy 1.0.46 → 1.0.48

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/README.md CHANGED
@@ -585,6 +585,12 @@ Le format des logs inclut la date, l'heure, le PID et le tag `[PROXY]`.
585
585
  que soit leur groupe
586
586
  - Les applications doivent implémenter `GET /proxy/health` pour ne pas être désenregistrées automatiquement
587
587
 
588
+ ## Publication
589
+
590
+ Chaque push sur `main`, merge de pull request compris, publie une nouvelle version de `@imenam/self-register-proxy` sur npm (`.github/workflows/publish.yml`) : `npm ci`, puis `npm version patch`, dont le commit et le tag sont poussés sur `main`, et `npm publish`. La publication passe par le trusted publishing de npm (OIDC, sans token), avec attestation de provenance.
591
+
592
+ Sur npmjs.com, le paquet déclare ce workflow comme publieur de confiance (Settings → Trusted publishing → GitHub Actions : `Matthieu-Pesnot-Pin`, `dynamic-self-register-proxy`, `publish.yml`, avec `npm publish` dans les actions autorisées). Le commit de version est poussé avec `GITHUB_TOKEN` : si `main` est protégée, la règle doit autoriser GitHub Actions à y pousser.
593
+
588
594
  ## Licence
589
595
 
590
596
  ISC
package/config.js CHANGED
@@ -1,72 +1,72 @@
1
- const crypto = require('crypto');
2
-
3
- const PROXY_PORT = process.env.PROXY_PORT || 3000;
4
- const PROXY_NAME = process.env.PROXY_NAME || 'Proxy Server';
5
-
6
- /**
7
- * Interface d'écoute. Non définie = comportement historique : Express écoute sur
8
- * **toutes** les interfaces (0.0.0.0), le dashboard et son terminal PTY sont donc
9
- * joignables depuis le réseau. `PROXY_HOST=127.0.0.1` restreint l'écoute à la
10
- * boucle locale — c'est ce que pose un superviseur qui démarre un proxy sans
11
- * `PROXY_ADMIN_PASSWORD`.
12
- */
13
- const PROXY_HOST = process.env.PROXY_HOST || undefined;
14
-
15
- /**
16
- * Plage des ports attribués aux applications enregistrées.
17
- *
18
- * Historiquement codée en dur à 4000-5000, ce qui rendait impossible de faire
19
- * cohabiter deux proxys sur une même machine sans qu'ils se disputent les mêmes
20
- * ports. Elle est désormais configurable ; **les valeurs par défaut ne changent
21
- * pas**, et une valeur invalide est ignorée au profit du défaut.
22
- */
23
- function readPortBound(name, fallback) {
24
- const raw = process.env[name];
25
- if (raw === undefined || raw === '') return fallback;
26
- const value = Number.parseInt(raw, 10);
27
- if (!Number.isInteger(value) || value < 1 || value > 65535) {
28
- console.warn(`[CONFIG] ${name}="${raw}" invalide — valeur par défaut ${fallback} conservée.`);
29
- return fallback;
30
- }
31
- return value;
32
- }
33
-
34
- let INTERNAL_PORT_START = readPortBound('PROXY_INTERNAL_PORT_START', 4000);
35
- let INTERNAL_PORT_END = readPortBound('PROXY_INTERNAL_PORT_END', 5000);
36
- if (INTERNAL_PORT_START > INTERNAL_PORT_END) {
37
- console.warn(
38
- `[CONFIG] Plage de ports internes inversée (${INTERNAL_PORT_START}-${INTERNAL_PORT_END}) — ` +
39
- 'retour aux valeurs par défaut 4000-5000.'
40
- );
41
- INTERNAL_PORT_START = 4000;
42
- INTERNAL_PORT_END = 5000;
43
- }
44
- const HEALTH_CHECK_INTERVAL = process.env.HEALTH_CHECK_INTERVAL || 30000;
45
- const HEALTH_CHECK_TIMEOUT = process.env.HEALTH_CHECK_TIMEOUT || 5000;
46
- const HEALTH_CHECK_GRACE_PERIOD = process.env.HEALTH_CHECK_GRACE_PERIOD || 60000;
47
-
48
- const ADMIN_PASSWORD = process.env.PROXY_ADMIN_PASSWORD;
49
- const SESSION_SECRET = process.env.PROXY_SESSION_SECRET || crypto.randomBytes(32).toString('hex');
50
-
51
- const TERMINAL_CWD = process.env.PROXY_TERMINAL_CWD || process.env.HOME || process.env.USERPROFILE;
52
- const TERMINAL_COMMAND = process.env.PROXY_TERMINAL_COMMAND || '';
53
- const OPENCODE_CLEAN_UP = process.env.PROXY_OPENCODE_CLEAN_UP || '';
54
-
55
- const MINIMAL_DASHBOARD = process.argv.includes('--minimal-dashboard');
56
-
57
- module.exports = {
58
- PROXY_PORT,
59
- PROXY_NAME,
60
- PROXY_HOST,
61
- INTERNAL_PORT_START,
62
- INTERNAL_PORT_END,
63
- HEALTH_CHECK_INTERVAL,
64
- HEALTH_CHECK_TIMEOUT,
65
- HEALTH_CHECK_GRACE_PERIOD,
66
- ADMIN_PASSWORD,
67
- SESSION_SECRET,
68
- TERMINAL_CWD,
69
- TERMINAL_COMMAND,
70
- OPENCODE_CLEAN_UP,
71
- MINIMAL_DASHBOARD,
72
- };
1
+ const crypto = require('crypto');
2
+
3
+ const PROXY_PORT = process.env.PROXY_PORT || 3000;
4
+ const PROXY_NAME = process.env.PROXY_NAME || 'Proxy Server';
5
+
6
+ /**
7
+ * Interface d'écoute. Non définie = comportement historique : Express écoute sur
8
+ * **toutes** les interfaces (0.0.0.0), le dashboard et son terminal PTY sont donc
9
+ * joignables depuis le réseau. `PROXY_HOST=127.0.0.1` restreint l'écoute à la
10
+ * boucle locale — c'est ce que pose un superviseur qui démarre un proxy sans
11
+ * `PROXY_ADMIN_PASSWORD`.
12
+ */
13
+ const PROXY_HOST = process.env.PROXY_HOST || undefined;
14
+
15
+ /**
16
+ * Plage des ports attribués aux applications enregistrées.
17
+ *
18
+ * Historiquement codée en dur à 4000-5000, ce qui rendait impossible de faire
19
+ * cohabiter deux proxys sur une même machine sans qu'ils se disputent les mêmes
20
+ * ports. Elle est désormais configurable ; **les valeurs par défaut ne changent
21
+ * pas**, et une valeur invalide est ignorée au profit du défaut.
22
+ */
23
+ function readPortBound(name, fallback) {
24
+ const raw = process.env[name];
25
+ if (raw === undefined || raw === '') return fallback;
26
+ const value = Number.parseInt(raw, 10);
27
+ if (!Number.isInteger(value) || value < 1 || value > 65535) {
28
+ console.warn(`[CONFIG] ${name}="${raw}" invalide — valeur par défaut ${fallback} conservée.`);
29
+ return fallback;
30
+ }
31
+ return value;
32
+ }
33
+
34
+ let INTERNAL_PORT_START = readPortBound('PROXY_INTERNAL_PORT_START', 4000);
35
+ let INTERNAL_PORT_END = readPortBound('PROXY_INTERNAL_PORT_END', 5000);
36
+ if (INTERNAL_PORT_START > INTERNAL_PORT_END) {
37
+ console.warn(
38
+ `[CONFIG] Plage de ports internes inversée (${INTERNAL_PORT_START}-${INTERNAL_PORT_END}) — ` +
39
+ 'retour aux valeurs par défaut 4000-5000.'
40
+ );
41
+ INTERNAL_PORT_START = 4000;
42
+ INTERNAL_PORT_END = 5000;
43
+ }
44
+ const HEALTH_CHECK_INTERVAL = process.env.HEALTH_CHECK_INTERVAL || 30000;
45
+ const HEALTH_CHECK_TIMEOUT = process.env.HEALTH_CHECK_TIMEOUT || 5000;
46
+ const HEALTH_CHECK_GRACE_PERIOD = process.env.HEALTH_CHECK_GRACE_PERIOD || 60000;
47
+
48
+ const ADMIN_PASSWORD = process.env.PROXY_ADMIN_PASSWORD;
49
+ const SESSION_SECRET = process.env.PROXY_SESSION_SECRET || crypto.randomBytes(32).toString('hex');
50
+
51
+ const TERMINAL_CWD = process.env.PROXY_TERMINAL_CWD || process.env.HOME || process.env.USERPROFILE;
52
+ const TERMINAL_COMMAND = process.env.PROXY_TERMINAL_COMMAND || '';
53
+ const OPENCODE_CLEAN_UP = process.env.PROXY_OPENCODE_CLEAN_UP || '';
54
+
55
+ const MINIMAL_DASHBOARD = process.argv.includes('--minimal-dashboard');
56
+
57
+ module.exports = {
58
+ PROXY_PORT,
59
+ PROXY_NAME,
60
+ PROXY_HOST,
61
+ INTERNAL_PORT_START,
62
+ INTERNAL_PORT_END,
63
+ HEALTH_CHECK_INTERVAL,
64
+ HEALTH_CHECK_TIMEOUT,
65
+ HEALTH_CHECK_GRACE_PERIOD,
66
+ ADMIN_PASSWORD,
67
+ SESSION_SECRET,
68
+ TERMINAL_CWD,
69
+ TERMINAL_COMMAND,
70
+ OPENCODE_CLEAN_UP,
71
+ MINIMAL_DASHBOARD,
72
+ };