33 lines
1,000 B
TypeScript
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;
|
|
}
|