define-alpine-the-sequel/passwd.ts
2023-02-22 22:15:33 -03:00

33 lines
1,000 B
TypeScript

import { nanoid } from "nanoid";
import { generateSecretsFile, loadSecretsFile } from "./helpers/secrets.js";
import { Alpine } from "./alpine.js";
import { execFile } from "./helpers/better-api.js";
export interface PasswdSecrets {
rootPassword: string;
}
const loadPasswdSecretsFile = loadSecretsFile<PasswdSecrets>("passwd");
export const generatePasswdSecretsFile = generateSecretsFile(
"passwd",
generatePasswdSecrets
);
async function generatePasswdSecrets(): Promise<PasswdSecrets> {
console.info(
"La contraseña por defecto de root va a estar en secrets/passwd.json"
);
return {
rootPassword: nanoid(),
};
}
export async function writePasswd(alpine: Alpine) {
const secrets = await loadPasswdSecretsFile();
const proc = execFile("chroot", [alpine.dir, "passwd", "root"]);
if (!proc.child.stdin) throw false;
proc.child.stdin.write(secrets.rootPassword + "\n");
proc.child.stdin.write(secrets.rootPassword + "\n");
proc.child.stdin.end();
await proc;
}