define-alpine-the-sequel/passwd.ts

33 lines
1,000 B
TypeScript
Raw Permalink Normal View History

2023-02-23 01:15:24 +00:00
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;
}