Функция ввода пароля в Lua - PullRequest
2 голосов
/ 05 января 2012

Как сделать маскировку пароля CLI в Lua?Например, когда я пишу пароль, он меняется на звездочку или вообще ничего не отображается?Мне нужно независимое от платформы решение, так как мой скрипт будет использоваться в приложении Java.

1 Ответ

2 голосов
/ 06 января 2012

В простом Lua ответ прост: вы не можете.

Поскольку Lua написан на ANSI C, вы не можете получить символы из командной строки, не нажимая ввод.Однако вы можете использовать привязки к библиотекам, таким как curses.lua, который поставляется с luaposix .

. Или, если вы предполагаете, что у вас есть ANSI VT, вы можете прибегнуть к такому хаку, какэто:

io.write("\027[s") -- save cursor position
l=io.read()
io.write('\027[u',('*'):rep(#l),"\n") -- rewind to where we were, and fill with the correct amount of stars
print("pst, I got", l, "but don't tell anyone!")

Дополнительная информация о контроле терминала ANSI

Но если он будет использоваться для приложения Java, почему бы не использовать Java для запроса пароля.Я думаю, что их поддержка и контроль над клиентом будут лучше и кроссплатформенными ...

...