mirror of
https://github.com/fairyglade/ly.git
synced 2025-12-20 19:24:53 +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 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 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_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});
|
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([]const u8, "version", version_str);
|
||||||
build_options.addOption(u8, "tty", default_tty);
|
build_options.addOption(u8, "tty", default_tty);
|
||||||
build_options.addOption(u8, "fallback_tty", fallback_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);
|
build_options.addOption(bool, "enable_x11_support", enable_x11_support);
|
||||||
|
|
||||||
const target = b.standardTargetOptions(.{});
|
const target = b.standardTargetOptions(.{});
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ err_sleep = فشل في تنفيذ أمر sleep
|
|||||||
|
|
||||||
err_tty_ctrl = فشل في نقل تحكم الطرفية (TTY)
|
err_tty_ctrl = فشل في نقل تحكم الطرفية (TTY)
|
||||||
|
|
||||||
|
|
||||||
err_user_gid = فشل في تعيين معرّف المجموعة (GID) للمستخدم
|
err_user_gid = فشل في تعيين معرّف المجموعة (GID) للمستخدم
|
||||||
err_user_init = فشل في تهيئة بيانات المستخدم
|
err_user_init = فشل في تهيئة بيانات المستخدم
|
||||||
err_user_uid = فشل في تعيين معرّف المستخدم (UID)
|
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_gid = error en establir el GID de l'usuari
|
||||||
err_user_init = error en inicialitzar usuari
|
err_user_init = error en inicialitzar usuari
|
||||||
err_user_uid = error en establir l'UID de l'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_gid = nastavení GID uživatele selhalo
|
||||||
err_user_init = inicializace uživatele selhala
|
err_user_init = inicializace uživatele selhala
|
||||||
err_user_uid = nastavení UID uživateli selhalo
|
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_tty_ctrl = Fehler bei der TTY-Uebergabe
|
||||||
|
|
||||||
|
|
||||||
err_user_gid = Fehler beim Setzen der Gruppen-ID
|
err_user_gid = Fehler beim Setzen der Gruppen-ID
|
||||||
err_user_init = Nutzer-Initialisierung fehlgeschlagen
|
err_user_init = Nutzer-Initialisierung fehlgeschlagen
|
||||||
err_user_uid = Setzen der Benutzer-ID 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_chdir = failed to open home folder
|
||||||
err_clock_too_long = clock string too long
|
err_clock_too_long = clock string too long
|
||||||
err_config = unable to parse config file
|
err_config = unable to parse config file
|
||||||
|
err_crawl = failed to crawl session directories
|
||||||
err_dgn_oob = log message
|
err_dgn_oob = log message
|
||||||
err_domain = invalid domain
|
err_domain = invalid domain
|
||||||
err_empty_password = empty password not allowed
|
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_switch_tty = failed to switch tty
|
||||||
err_tty_ctrl = tty control transfer failed
|
err_tty_ctrl = tty control transfer failed
|
||||||
err_no_users = no users found
|
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_gid = failed to set user GID
|
||||||
err_user_init = failed to initialize user
|
err_user_init = failed to initialize user
|
||||||
err_user_uid = failed to set user UID
|
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_gid = error al establecer el GID del usuario
|
||||||
err_user_init = error al inicializar usuario
|
err_user_init = error al inicializar usuario
|
||||||
err_user_uid = error al establecer el UID del 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_switch_tty = échec du changement de terminal
|
||||||
err_tty_ctrl = échec du transfert de contrôle du terminal
|
err_tty_ctrl = échec du transfert de contrôle du terminal
|
||||||
err_no_users = aucun utilisateur trouvé
|
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_gid = échec de modification du GID
|
||||||
err_user_init = échec d'initialisation de l'utilisateur
|
err_user_init = échec d'initialisation de l'utilisateur
|
||||||
err_user_uid = échec de modification du UID
|
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_gid = impossibile impostare GID utente
|
||||||
err_user_init = impossibile inizializzare utente
|
err_user_init = impossibile inizializzare utente
|
||||||
err_user_uid = impossible impostare UID utente
|
err_user_uid = impossible impostare UID utente
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ err_sleep = スリープコマンドの実行に失敗しました
|
|||||||
|
|
||||||
err_tty_ctrl = TTY制御の転送に失敗しました
|
err_tty_ctrl = TTY制御の転送に失敗しました
|
||||||
|
|
||||||
|
|
||||||
err_user_gid = ユーザーGIDの設定に失敗しました
|
err_user_gid = ユーザーGIDの設定に失敗しました
|
||||||
err_user_init = ユーザーの初期化に失敗しました
|
err_user_init = ユーザーの初期化に失敗しました
|
||||||
err_user_uid = ユーザーUIDの設定に失敗しました
|
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_switch_tty = neizdevās pārslēgt tty
|
||||||
err_tty_ctrl = tty vadības nodošana neizdevās
|
err_tty_ctrl = tty vadības nodošana neizdevās
|
||||||
err_no_users = lietotāji nav atrasti
|
err_no_users = lietotāji nav atrasti
|
||||||
|
|
||||||
err_user_gid = neizdevās iestatīt lietotāja GID
|
err_user_gid = neizdevās iestatīt lietotāja GID
|
||||||
err_user_init = neizdevās inicializēt lietotāju
|
err_user_init = neizdevās inicializēt lietotāju
|
||||||
err_user_uid = neizdevās iestatīt lietotāja UID
|
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_switch_tty = nie można przełączyć tty
|
||||||
err_tty_ctrl = nie udało się przekazać kontroli tty
|
err_tty_ctrl = nie udało się przekazać kontroli tty
|
||||||
err_no_users = nie znaleziono żadnego użytkownika
|
err_no_users = nie znaleziono żadnego użytkownika
|
||||||
|
|
||||||
err_user_gid = nie udało się ustawić GID 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_init = nie udało się zainicjalizować użytkownika
|
||||||
err_user_uid = nie udało się ustawić UID 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_gid = erro ao definir o GID do utilizador
|
||||||
err_user_init = erro ao iniciar o utilizador
|
err_user_init = erro ao iniciar o utilizador
|
||||||
err_user_uid = erro ao definir o UID do 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_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_init = não foi possível iniciar o usuário
|
||||||
err_user_uid = não foi possível definir o UID do 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
|
login = utilizator
|
||||||
logout = opreşte sesiunea
|
logout = opreşte sesiunea
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ err_battery = не удалось получить статус батареи
|
|||||||
err_switch_tty = не удалось переключить tty
|
err_switch_tty = не удалось переключить tty
|
||||||
err_tty_ctrl = передача управления tty не удалась
|
err_tty_ctrl = передача управления tty не удалась
|
||||||
err_no_users = пользователи не найдены
|
err_no_users = пользователи не найдены
|
||||||
|
|
||||||
err_user_gid = не удалось установить GID пользователя
|
err_user_gid = не удалось установить GID пользователя
|
||||||
err_user_init = не удалось инициализировать пользователя
|
err_user_init = не удалось инициализировать пользователя
|
||||||
err_user_uid = не удалось установить UID пользователя
|
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_gid = neuspijesno postavljanje korisničkog GID-a
|
||||||
err_user_init = neuspijensa inicijalizacija korisnika
|
err_user_init = neuspijensa inicijalizacija korisnika
|
||||||
err_user_uid = neuspijesno postavljanje UID-a 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_gid = misslyckades att ställa in användar-GID
|
||||||
err_user_init = misslyckades att initialisera användaren
|
err_user_init = misslyckades att initialisera användaren
|
||||||
err_user_uid = misslyckades att ställa in användar-UID
|
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_gid = kullanici icin GID ayarlanamadi
|
||||||
err_user_init = kullanici oturumu baslatilamadi
|
err_user_init = kullanici oturumu baslatilamadi
|
||||||
err_user_uid = kullanici icin UID ayarlanamadi
|
err_user_uid = kullanici icin UID ayarlanamadi
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ err_pwnam = не вдалося отримати дані користувача
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
err_user_gid = не вдалося змінити GID користувача
|
err_user_gid = не вдалося змінити GID користувача
|
||||||
err_user_init = не вдалося ініціалізувати користувача
|
err_user_init = не вдалося ініціалізувати користувача
|
||||||
err_user_uid = не вдалося змінити UID користувача
|
err_user_uid = не вдалося змінити UID користувача
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ err_pwnam = 获取用户信息失败
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
err_user_gid = 设置用户GID失败
|
err_user_gid = 设置用户GID失败
|
||||||
err_user_init = 初始化用户失败
|
err_user_init = 初始化用户失败
|
||||||
err_user_uid = 设置用户UID失败
|
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_switch_tty: []const u8 = "failed to switch tty",
|
||||||
err_tty_ctrl: []const u8 = "tty control transfer failed",
|
err_tty_ctrl: []const u8 = "tty control transfer failed",
|
||||||
err_no_users: []const u8 = "no users found",
|
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_gid: []const u8 = "failed to set user GID",
|
||||||
err_user_init: []const u8 = "failed to initialize user",
|
err_user_init: []const u8 = "failed to initialize user",
|
||||||
err_user_uid: []const u8 = "failed to set user UID",
|
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 migrator = @import("config/migrator.zig");
|
||||||
const SharedError = @import("SharedError.zig");
|
const SharedError = @import("SharedError.zig");
|
||||||
const LogFile = @import("LogFile.zig");
|
const LogFile = @import("LogFile.zig");
|
||||||
|
const UidRange = @import("UidRange.zig");
|
||||||
|
|
||||||
const StringList = std.ArrayListUnmanaged([]const u8);
|
const StringList = std.ArrayListUnmanaged([]const u8);
|
||||||
const Ini = ini.Ini;
|
const Ini = ini.Ini;
|
||||||
@@ -219,7 +220,8 @@ pub fn main() !void {
|
|||||||
migrator.lateConfigFieldHandler(&config);
|
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 {
|
defer {
|
||||||
for (usernames.items) |username| allocator.free(username);
|
for (usernames.items) |username| allocator.free(username);
|
||||||
usernames.deinit(allocator);
|
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) });
|
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| {
|
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
|
// 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);
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8) !StringList {
|
fn getAllUsernames(allocator: std.mem.Allocator, login_defs_path: []const u8, uid_range_error: *?anyerror) !StringList {
|
||||||
const uid_range = try interop.getUserIdRange(allocator, login_defs_path);
|
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 usernames: StringList = .empty;
|
||||||
var maybe_entry = interop.getNextUsernameEntry();
|
var maybe_entry = interop.getNextUsernameEntry();
|
||||||
|
|||||||
Reference in New Issue
Block a user