@dotrino/vaultd 0.7.0 → 0.7.1
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/bin/dotrino-vaultd.js +14 -1
- package/package.json +1 -1
- package/src/vaultControl.js +12 -1
package/bin/dotrino-vaultd.js
CHANGED
|
@@ -33,8 +33,21 @@ if (process.argv.includes('--tui')) {
|
|
|
33
33
|
if (!process.stdout.isTTY) {
|
|
34
34
|
console.error('--tui necesita un terminal interactivo (TTY). La bóveda sigue corriendo sin él.')
|
|
35
35
|
} else {
|
|
36
|
+
// La TUI se adueña de la pantalla (pantalla alterna + modo crudo). Si el daemon sigue
|
|
37
|
+
// escribiendo sus logs en stdout, se los pinta ENCIMA y la deja ilegible. Se guardan
|
|
38
|
+
// y se sueltan al salir, para no perder un error por el camino.
|
|
39
|
+
const real = { log: console.log, error: console.error, warn: console.warn }
|
|
40
|
+
const guardados = []
|
|
41
|
+
const capturar = (nivel) => (...a) => { guardados.push([nivel, a]) }
|
|
42
|
+
console.log = capturar('log'); console.error = capturar('error'); console.warn = capturar('warn')
|
|
43
|
+
|
|
36
44
|
const { runTui } = await import('../src/tui/app.js')
|
|
37
|
-
|
|
45
|
+
try {
|
|
46
|
+
await runTui() // al salir de la TUI, se para todo: es la misma ventana
|
|
47
|
+
} finally {
|
|
48
|
+
Object.assign(console, real)
|
|
49
|
+
for (const [nivel, a] of guardados) real[nivel](...a)
|
|
50
|
+
}
|
|
38
51
|
process.exit(0)
|
|
39
52
|
}
|
|
40
53
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotrino/vaultd",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Certificador personal de Dotrino: daemon headless que custodia la clave maestra y delega capacidades a tus dispositivos por el proxy. Tu CA propia.",
|
|
6
6
|
"bin": {
|
package/src/vaultControl.js
CHANGED
|
@@ -88,10 +88,21 @@ function writeReq (name, obj, profile) {
|
|
|
88
88
|
try { fs.chmodSync(p(name), 0o600) } catch (_) {}
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Campanita para que el daemon lea la petición YA.
|
|
93
|
+
*
|
|
94
|
+
* Es best-effort A PROPÓSITO: SIGUSR1/SIGUSR2 **no existen en Windows** y ahí
|
|
95
|
+
* `process.kill` con ellas revienta — antes eso tumbaba la TUI entera (el CLI ya se había
|
|
96
|
+
* arreglado; este camino, que es el que usa la TUI, no). El daemon vigila su directorio de
|
|
97
|
+
* datos, así que la petición se atiende igual en cuanto el archivo está escrito; la señal
|
|
98
|
+
* solo ahorra la latencia del vigilante.
|
|
99
|
+
*
|
|
100
|
+
* Lo que SÍ sigue siendo un error es que el daemon no esté: sin él no hay quien atienda.
|
|
101
|
+
*/
|
|
91
102
|
function signal (sig) {
|
|
92
103
|
const s = readState()
|
|
93
104
|
if (!s || !pidAlive(s.pid)) throw new DaemonDownError()
|
|
94
|
-
process.kill(s.pid, sig)
|
|
105
|
+
try { process.kill(s.pid, sig) } catch (_) { /* Windows: no hay señales; lo verá el vigilante */ }
|
|
95
106
|
}
|
|
96
107
|
|
|
97
108
|
/**
|