mirror of
https://github.com/fairyglade/ly.git
synced 2025-12-20 11:14:56 +00:00
Add fallback UID range options at compile-time
Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
@@ -44,6 +44,8 @@ pub fn build(b: *std.Build) !void {
|
||||
const enable_x11_support = b.option(bool, "enable_x11_support", "Enable X11 support (default is on)") orelse true;
|
||||
const default_tty = b.option(u8, "default_tty", "Set the TTY (default is 2)") orelse 2;
|
||||
const fallback_tty = b.option(u8, "fallback_tty", "Set the fallback TTY (default is 2). This value gets embedded into the binary") orelse 2;
|
||||
const fallback_uid_min = b.option(std.posix.uid_t, "fallback_uid_min", "Set the fallback minimum UID (default is 1000). This value gets embedded into the binary") orelse 2;
|
||||
const fallback_uid_max = b.option(std.posix.uid_t, "fallback_uid_max", "Set the fallback maximum UID (default is 60000). This value gets embedded into the binary") orelse 2;
|
||||
|
||||
default_tty_str = try std.fmt.allocPrint(b.allocator, "{d}", .{default_tty});
|
||||
|
||||
@@ -52,6 +54,8 @@ pub fn build(b: *std.Build) !void {
|
||||
build_options.addOption([]const u8, "version", version_str);
|
||||
build_options.addOption(u8, "tty", default_tty);
|
||||
build_options.addOption(u8, "fallback_tty", fallback_tty);
|
||||
build_options.addOption(std.posix.uid_t, "fallback_uid_min", fallback_uid_min);
|
||||
build_options.addOption(std.posix.uid_t, "fallback_uid_max", fallback_uid_max);
|
||||
build_options.addOption(bool, "enable_x11_support", enable_x11_support);
|
||||
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
||||
@@ -50,6 +50,7 @@ err_sleep = فشل في تنفيذ أمر sleep
|
||||
|
||||
err_tty_ctrl = فشل في نقل تحكم الطرفية (TTY)
|
||||
|
||||
|
||||
err_user_gid = فشل في تعيين معرّف المجموعة (GID) للمستخدم
|
||||
err_user_init = فشل في تهيئة بيانات المستخدم
|
||||
err_user_uid = فشل في تعيين معرّف المستخدم (UID)
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = error en obtenir la informació de l'usuari
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = error en establir el GID de l'usuari
|
||||
err_user_init = error en inicialitzar usuari
|
||||
err_user_uid = error en establir l'UID de l'usuari
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = nelze získat informace o uživateli
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = nastavení GID uživatele selhalo
|
||||
err_user_init = inicializace uživatele selhala
|
||||
err_user_uid = nastavení UID uživateli selhalo
|
||||
|
||||
@@ -50,6 +50,7 @@ err_sleep = Sleep-Befehl fehlgeschlagen
|
||||
|
||||
err_tty_ctrl = Fehler bei der TTY-Uebergabe
|
||||
|
||||
|
||||
err_user_gid = Fehler beim Setzen der Gruppen-ID
|
||||
err_user_init = Nutzer-Initialisierung fehlgeschlagen
|
||||
err_user_uid = Setzen der Benutzer-ID fehlgeschlagen
|
||||
|
||||
@@ -11,7 +11,7 @@ err_brightness_change = failed to change brightness
|
||||
err_chdir = failed to open home folder
|
||||
err_clock_too_long = clock string too long
|
||||
err_config = unable to parse config file
|
||||
|
||||
err_crawl = failed to crawl session directories
|
||||
err_dgn_oob = log message
|
||||
err_domain = invalid domain
|
||||
err_empty_password = empty password not allowed
|
||||
@@ -50,6 +50,7 @@ err_battery = failed to load battery status
|
||||
err_switch_tty = failed to switch tty
|
||||
err_tty_ctrl = tty control transfer failed
|
||||
err_no_users = no users found
|
||||
err_uid_range = failed to dynamically get uid range
|
||||
err_user_gid = failed to set user GID
|
||||
err_user_init = failed to initialize user
|
||||
err_user_uid = failed to set user UID
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = error al obtener la información del usuario
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = error al establecer el GID del usuario
|
||||
err_user_init = error al inicializar usuario
|
||||
err_user_uid = error al establecer el UID del usuario
|
||||
|
||||
@@ -50,6 +50,7 @@ err_battery = échec de lecture de l'état de la batterie
|
||||
err_switch_tty = échec du changement de terminal
|
||||
err_tty_ctrl = échec du transfert de contrôle du terminal
|
||||
err_no_users = aucun utilisateur trouvé
|
||||
err_uid_range = échec de récupération dynamique de la plage d'UID
|
||||
err_user_gid = échec de modification du GID
|
||||
err_user_init = échec d'initialisation de l'utilisateur
|
||||
err_user_uid = échec de modification du UID
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = impossibile ottenere dati utente
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = impossibile impostare GID utente
|
||||
err_user_init = impossibile inizializzare utente
|
||||
err_user_uid = impossible impostare UID utente
|
||||
|
||||
@@ -50,6 +50,7 @@ err_sleep = スリープコマンドの実行に失敗しました
|
||||
|
||||
err_tty_ctrl = TTY制御の転送に失敗しました
|
||||
|
||||
|
||||
err_user_gid = ユーザーGIDの設定に失敗しました
|
||||
err_user_init = ユーザーの初期化に失敗しました
|
||||
err_user_uid = ユーザーUIDの設定に失敗しました
|
||||
|
||||
@@ -50,6 +50,7 @@ err_battery = neizdevās ielādēt akumulatora stāvokli
|
||||
err_switch_tty = neizdevās pārslēgt tty
|
||||
err_tty_ctrl = tty vadības nodošana neizdevās
|
||||
err_no_users = lietotāji nav atrasti
|
||||
|
||||
err_user_gid = neizdevās iestatīt lietotāja GID
|
||||
err_user_init = neizdevās inicializēt lietotāju
|
||||
err_user_uid = neizdevās iestatīt lietotāja UID
|
||||
|
||||
@@ -50,6 +50,7 @@ err_battery = nie udało się sprawdzić statusu baterii
|
||||
err_switch_tty = nie można przełączyć tty
|
||||
err_tty_ctrl = nie udało się przekazać kontroli tty
|
||||
err_no_users = nie znaleziono żadnego użytkownika
|
||||
|
||||
err_user_gid = nie udało się ustawić GID użytkownika
|
||||
err_user_init = nie udało się zainicjalizować użytkownika
|
||||
err_user_uid = nie udało się ustawić UID użytkownika
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = erro ao obter informação do utilizador
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = erro ao definir o GID do utilizador
|
||||
err_user_init = erro ao iniciar o utilizador
|
||||
err_user_uid = erro ao definir o UID do utilizador
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = não foi possível obter informações do usuário
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = não foi possível definir o GID do usuário
|
||||
err_user_init = não foi possível iniciar o usuário
|
||||
err_user_uid = não foi possível definir o UID do usuário
|
||||
|
||||
@@ -59,6 +59,7 @@ err_perm_user = nu s-a putut face downgrade permisiunilor de utilizator
|
||||
|
||||
|
||||
|
||||
|
||||
login = utilizator
|
||||
logout = opreşte sesiunea
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ err_battery = не удалось получить статус батареи
|
||||
err_switch_tty = не удалось переключить tty
|
||||
err_tty_ctrl = передача управления tty не удалась
|
||||
err_no_users = пользователи не найдены
|
||||
|
||||
err_user_gid = не удалось установить GID пользователя
|
||||
err_user_init = не удалось инициализировать пользователя
|
||||
err_user_uid = не удалось установить UID пользователя
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = neuspijesno skupljanje informacija o korisniku
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = neuspijesno postavljanje korisničkog GID-a
|
||||
err_user_init = neuspijensa inicijalizacija korisnika
|
||||
err_user_uid = neuspijesno postavljanje UID-a korisnika
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = misslyckades att hämta användarinfo
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = misslyckades att ställa in användar-GID
|
||||
err_user_init = misslyckades att initialisera användaren
|
||||
err_user_uid = misslyckades att ställa in användar-UID
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = kullanici bilgileri alinamadi
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = kullanici icin GID ayarlanamadi
|
||||
err_user_init = kullanici oturumu baslatilamadi
|
||||
err_user_uid = kullanici icin UID ayarlanamadi
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = не вдалося отримати дані користувача
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = не вдалося змінити GID користувача
|
||||
err_user_init = не вдалося ініціалізувати користувача
|
||||
err_user_uid = не вдалося змінити UID користувача
|
||||
|
||||
@@ -50,6 +50,7 @@ err_pwnam = 获取用户信息失败
|
||||
|
||||
|
||||
|
||||
|
||||
err_user_gid = 设置用户GID失败
|
||||
err_user_init = 初始化用户失败
|
||||
err_user_uid = 设置用户UID失败
|
||||
|
||||
@@ -55,6 +55,7 @@ err_battery: []const u8 = "failed to load battery status",
|
||||
err_switch_tty: []const u8 = "failed to switch tty",
|
||||
err_tty_ctrl: []const u8 = "tty control transfer failed",
|
||||
err_no_users: []const u8 = "no users found",
|
||||
err_uid_range: []const u8 = "failed to dynamically get uid range",
|
||||
err_user_gid: []const u8 = "failed to set user GID",
|
||||
err_user_init: []const u8 = "failed to initialize user",
|
||||
err_user_uid: []const u8 = "failed to set user UID",
|
||||
|
||||
19
src/main.zig
19
src/main.zig
@@ -26,6 +26,7 @@ const SavedUsers = @import("config/SavedUsers.zig");
|
||||
const migrator = @import("config/migrator.zig");
|
||||
const SharedError = @import("SharedError.zig");
|
||||
const LogFile = @import("LogFile.zig");
|
||||
const UidRange = @import("UidRange.zig");
|
||||
|
||||
const StringList = std.ArrayListUnmanaged([]const u8);
|
||||
const Ini = ini.Ini;
|
||||
@@ -219,7 +220,8 @@ pub fn main() !void {
|
||||
migrator.lateConfigFieldHandler(&config);
|
||||
}
|
||||
|
||||
var usernames = try getAllUsernames(allocator, config.login_defs_path);
|
||||
var maybe_uid_range_error: ?anyerror = null;
|
||||
var usernames = try getAllUsernames(allocator, config.login_defs_path, &maybe_uid_range_error);
|
||||
defer {
|
||||
for (usernames.items) |username| allocator.free(username);
|
||||
usernames.deinit(allocator);
|
||||
@@ -344,6 +346,11 @@ pub fn main() !void {
|
||||
try log_writer.print("unable to parse argument '{s}{s}': {s}\n", .{ longest.kind.prefix(), longest.name, @errorName(arg_parse_error) });
|
||||
}
|
||||
|
||||
if (maybe_uid_range_error) |err| {
|
||||
try info_line.addMessage(lang.err_uid_range, config.error_bg, config.error_fg);
|
||||
try log_writer.print("failed to get uid range: {s}; falling back to default\n", .{@errorName(err)});
|
||||
}
|
||||
|
||||
if (maybe_config_load_error) |err| {
|
||||
// We can't localize this since the config failed to load so we'd fallback to the default language anyway
|
||||
try info_line.addMessage("unable to parse config file", config.error_bg, config.error_fg);
|
||||
@@ -1277,8 +1284,14 @@ fn findSessionByName(session: *Session, name: []const u8) ?usize {
|
||||
return null;
|
||||
}
|
||||
|
||||
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8) !StringList {
|
||||
const uid_range = try interop.getUserIdRange(allocator, login_defs_path);
|
||||
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8, uid_range_error: *?anyerror) !StringList {
|
||||
const uid_range = interop.getUserIdRange(allocator, login_defs_path) catch |err| no_uid_range: {
|
||||
uid_range_error.* = err;
|
||||
break :no_uid_range UidRange{
|
||||
.uid_min = build_options.fallback_uid_min,
|
||||
.uid_max = build_options.fallback_uid_max,
|
||||
};
|
||||
};
|
||||
|
||||
var usernames: StringList = .empty;
|
||||
var maybe_entry = interop.getNextUsernameEntry();
|
||||
|
||||
Reference in New Issue
Block a user