From 92845268af0d4babd17db00e7cc9f32ccb9ed8e4 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Thu, 6 Mar 2025 22:00:46 +0100 Subject: [PATCH] Add option to allow empty password or not (closes #577) Signed-off-by: AnErrupTion --- res/config.ini | 3 +++ res/lang/cat.ini | 1 + res/lang/cs.ini | 1 + res/lang/de.ini | 1 + res/lang/en.ini | 1 + res/lang/es.ini | 1 + res/lang/fr.ini | 1 + res/lang/it.ini | 1 + res/lang/pl.ini | 1 + res/lang/pt.ini | 1 + res/lang/pt_BR.ini | 1 + res/lang/ro.ini | 1 + res/lang/ru.ini | 1 + res/lang/sr.ini | 1 + res/lang/sv.ini | 1 + res/lang/tr.ini | 1 + res/lang/uk.ini | 1 + res/lang/zh_CN.ini | 1 + src/config/Config.zig | 1 + src/config/Lang.zig | 1 + src/main.zig | 12 +++++++++++- 21 files changed, 33 insertions(+), 1 deletion(-) diff --git a/res/config.ini b/res/config.ini index 413110d..c197fb8 100644 --- a/res/config.ini +++ b/res/config.ini @@ -15,6 +15,9 @@ # special value 0x00000000. This means that, if you want to use black, you *must* use # the styling option TB_HI_BLACK (the RGB values are ignored when using this option). +# Allow empty password or not when authenticating +allow_empty_password = true + # The active animation # none -> Nothing # doom -> PSX DOOM fire diff --git a/res/lang/cat.ini b/res/lang/cat.ini index c7c50fb..0351223 100644 --- a/res/lang/cat.ini +++ b/res/lang/cat.ini @@ -10,6 +10,7 @@ err_chdir = error en obrir la carpeta home err_console_dev = error en accedir a la consola err_dgn_oob = missatge de registre err_domain = domini invàlid + err_envlist = error en obtenir l'envlist err_hostname = error en obtenir el nom de l'amfitrió err_mlock = error en bloquejar la memòria de clau diff --git a/res/lang/cs.ini b/res/lang/cs.ini index 8b2d649..b2653d3 100644 --- a/res/lang/cs.ini +++ b/res/lang/cs.ini @@ -11,6 +11,7 @@ err_console_dev = chyba při přístupu do konzole err_dgn_oob = zpráva protokolu err_domain = neplatná doména + err_hostname = nelze získat název hostitele err_mlock = uzamčení paměti hesel selhalo err_null = nulový ukazatel diff --git a/res/lang/de.ini b/res/lang/de.ini index f57b042..d7da11e 100644 --- a/res/lang/de.ini +++ b/res/lang/de.ini @@ -11,6 +11,7 @@ err_console_dev = Zugriff auf die Konsole fehlgeschlagen err_dgn_oob = Protokoll Nachricht err_domain = Unzulaessige domain + err_hostname = Holen des Hostnames fehlgeschlagen err_mlock = Abschließen des Passwortspeichers fehlgeschlagen err_null = Null Zeiger diff --git a/res/lang/en.ini b/res/lang/en.ini index b3ff320..49accc5 100644 --- a/res/lang/en.ini +++ b/res/lang/en.ini @@ -10,6 +10,7 @@ err_config = unable to parse config file err_console_dev = failed to access console err_dgn_oob = log message err_domain = invalid domain +err_empty_password = empty password not allowed err_envlist = failed to get envlist err_hostname = failed to get hostname err_mlock = failed to lock password memory diff --git a/res/lang/es.ini b/res/lang/es.ini index abb5156..e1fbab5 100644 --- a/res/lang/es.ini +++ b/res/lang/es.ini @@ -11,6 +11,7 @@ err_console_dev = error al acceder a la consola err_dgn_oob = mensaje de registro err_domain = dominio inválido + err_hostname = error al obtener el nombre de host err_mlock = error al bloquear la contraseña de memoria err_null = puntero nulo diff --git a/res/lang/fr.ini b/res/lang/fr.ini index 852f227..728d0bd 100644 --- a/res/lang/fr.ini +++ b/res/lang/fr.ini @@ -10,6 +10,7 @@ err_config = échec de lecture du fichier de configuration err_console_dev = échec d'accès à la console err_dgn_oob = message err_domain = domaine invalide +err_empty_password = mot de passe vide non autorisé err_envlist = échec de lecture de la liste d'environnement err_hostname = échec de lecture du nom d'hôte err_mlock = échec du verrouillage mémoire diff --git a/res/lang/it.ini b/res/lang/it.ini index d594193..3527f3e 100644 --- a/res/lang/it.ini +++ b/res/lang/it.ini @@ -11,6 +11,7 @@ err_console_dev = impossibile aprire console err_dgn_oob = messaggio log err_domain = dominio non valido + err_hostname = impossibile ottenere hostname err_mlock = impossibile ottenere lock per la password in memoria err_null = puntatore nullo diff --git a/res/lang/pl.ini b/res/lang/pl.ini index 9d78b22..93ec5ba 100644 --- a/res/lang/pl.ini +++ b/res/lang/pl.ini @@ -11,6 +11,7 @@ err_console_dev = nie udało się uzyskać dostępu do konsoli err_dgn_oob = wiadomość loga err_domain = niepoprawna domena + err_hostname = nie udało się uzyskać nazwy hosta err_mlock = nie udało się zablokować pamięci haseł err_null = wskaźnik zerowy diff --git a/res/lang/pt.ini b/res/lang/pt.ini index e7dff51..eaaf8ff 100644 --- a/res/lang/pt.ini +++ b/res/lang/pt.ini @@ -11,6 +11,7 @@ err_console_dev = erro ao aceder à consola err_dgn_oob = mensagem de registo err_domain = domínio inválido + err_hostname = erro ao obter o nome do host err_mlock = erro de bloqueio de memória err_null = ponteiro nulo diff --git a/res/lang/pt_BR.ini b/res/lang/pt_BR.ini index ab03864..33b4437 100644 --- a/res/lang/pt_BR.ini +++ b/res/lang/pt_BR.ini @@ -11,6 +11,7 @@ err_console_dev = não foi possível acessar o console err_dgn_oob = mensagem de log err_domain = domínio inválido + err_hostname = não foi possível obter o nome do host err_mlock = bloqueio da memória de senha malsucedido err_null = ponteiro nulo diff --git a/res/lang/ro.ini b/res/lang/ro.ini index 43eb1a4..3f79c86 100644 --- a/res/lang/ro.ini +++ b/res/lang/ro.ini @@ -16,6 +16,7 @@ err_console_dev = nu s-a putut accesa consola + err_pam_abort = tranzacţie pam anulată err_pam_acct_expired = cont expirat err_pam_auth = eroare de autentificare diff --git a/res/lang/ru.ini b/res/lang/ru.ini index 9791065..3a15f54 100644 --- a/res/lang/ru.ini +++ b/res/lang/ru.ini @@ -11,6 +11,7 @@ err_console_dev = не удалось получить доступ к конс err_dgn_oob = отладочное сообщение (log) err_domain = неверный домен + err_hostname = не удалось получить имя хоста err_mlock = сбой блокировки памяти err_null = нулевой указатель diff --git a/res/lang/sr.ini b/res/lang/sr.ini index f5ccea8..d6cb896 100644 --- a/res/lang/sr.ini +++ b/res/lang/sr.ini @@ -11,6 +11,7 @@ err_console_dev = neuspijesno pristupanje konzoli err_dgn_oob = log poruka err_domain = nevazeci domen + err_hostname = neuspijesno trazenje hostname-a err_mlock = neuspijesno zakljucavanje memorije lozinke err_null = null pokazivac diff --git a/res/lang/sv.ini b/res/lang/sv.ini index 0a3de58..92143f0 100644 --- a/res/lang/sv.ini +++ b/res/lang/sv.ini @@ -11,6 +11,7 @@ err_console_dev = misslyckades att komma åt konsol err_dgn_oob = loggmeddelande err_domain = okänd domän + err_hostname = misslyckades att hämta värdnamn err_mlock = misslyckades att låsa lösenordsminne err_null = nullpekare diff --git a/res/lang/tr.ini b/res/lang/tr.ini index 3e7ce4c..048fb64 100644 --- a/res/lang/tr.ini +++ b/res/lang/tr.ini @@ -11,6 +11,7 @@ err_console_dev = konsola erisilemedi err_dgn_oob = log mesaji err_domain = gecersiz etki alani + err_hostname = ana bilgisayar adi alinamadi err_mlock = parola bellegi kilitlenemedi err_null = bos isaretci hatasi diff --git a/res/lang/uk.ini b/res/lang/uk.ini index dde7da7..3e1098c 100644 --- a/res/lang/uk.ini +++ b/res/lang/uk.ini @@ -11,6 +11,7 @@ err_console_dev = невдалий доступ до консолі err_dgn_oob = повідомлення журналу (log) err_domain = недійсний домен + err_hostname = не вдалося отримати ім'я хосту err_mlock = збій блокування пам'яті err_null = нульовий вказівник diff --git a/res/lang/zh_CN.ini b/res/lang/zh_CN.ini index 2460209..be970eb 100644 --- a/res/lang/zh_CN.ini +++ b/res/lang/zh_CN.ini @@ -11,6 +11,7 @@ err_console_dev = 无法访问控制台 err_dgn_oob = 日志消息 err_domain = 无效的域 + err_hostname = 获取主机名失败 err_mlock = 锁定密码存储器失败 err_null = 空指针 diff --git a/src/config/Config.zig b/src/config/Config.zig index 6e4c6eb..c0f3411 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -6,6 +6,7 @@ const Input = enums.Input; const ViMode = enums.ViMode; const Bigclock = enums.Bigclock; +allow_empty_password: bool = true, animation: Animation = .none, animation_timeout_sec: u12 = 0, asterisk: ?u32 = '*', diff --git a/src/config/Lang.zig b/src/config/Lang.zig index 389c4ac..fb71b45 100644 --- a/src/config/Lang.zig +++ b/src/config/Lang.zig @@ -15,6 +15,7 @@ err_config: []const u8 = "unable to parse config file", err_console_dev: []const u8 = "failed to access console", err_dgn_oob: []const u8 = "log message", err_domain: []const u8 = "invalid domain", +err_empty_password: []const u8 = "empty password not allowed", err_envlist: []const u8 = "failed to get envlist", err_hostname: []const u8 = "failed to get hostname", err_mlock: []const u8 = "failed to lock password memory", diff --git a/src/main.zig b/src/main.zig index 73f439b..628d2d7 100644 --- a/src/main.zig +++ b/src/main.zig @@ -686,7 +686,17 @@ pub fn main() !void { update = true; }, - termbox.TB_KEY_ENTER => { + termbox.TB_KEY_ENTER => authenticate: { + if (!config.allow_empty_password and password.text.items.len == 0) { + try info_line.addMessage(lang.err_empty_password, config.error_bg, config.error_fg); + InfoLine.clearRendered(allocator, buffer) catch { + try info_line.addMessage(lang.err_alloc, config.error_bg, config.error_fg); + }; + info_line.label.draw(); + _ = termbox.tb_present(); + break :authenticate; + } + try info_line.addMessage(lang.authenticating, config.bg, config.fg); InfoLine.clearRendered(allocator, buffer) catch { try info_line.addMessage(lang.err_alloc, config.error_bg, config.error_fg);