1
0
Fork 0
forked from fun/fun
fun/examples/interactive/input_hidden_pam_auth.fun
2026-01-14 04:53:09 +01:00

48 lines
1 KiB
Standard ML
Executable file

#!/usr/bin/env fun
/*
* This file is part of the Fun programming language.
* https://fun-lang.xyz/
*
* Example: Demonstrate hidden input (no echo) for passwords using
* /usr/bin/chkpwd from https://git.xw3.org/hanez/chkusr for PAM authetication.
*
* Added: 2026-01-02
*/
#include <io/console.fun>
print("=== input_hidden() example with PAM authentication ===")
c = Console()
username = c.ask("Username")
password = c.ask_hidden("Password")
// Do not print the password; just show the username
print(join(["Hello, ", username, "!"], ""))
res = proc_run("chkpwd -u " + username + " -p " + password)
content = res["out"]
if (res["code"] == 0)
print("Login success!")
else
print("Login failed!")
// Propagate the child process exit status to the Fun program's exit code
exit res["code"]
/* Possible output:
Username: hanez
Password:
=== input_hidden() example with PAM authentication ===
Hello, hanez!
Login success!
Or:
Username: hanez
Password:
=== input_hidden() example with PAM authentication ===
Hello, hanez!
Login failed!
*/