This commit is contained in:
2026-03-15 18:39:58 +01:00
parent 59db877c85
commit 4f05a86efe
16 changed files with 665 additions and 8 deletions
+14
View File
@@ -70,14 +70,28 @@ Exemples:
EOF
}
bootstrap_print_session_context() {
ui_info "Utilisateur courant : $(id -un) (uid $(id -u))"
ui_info "Mode de privileges : $(system_privilege_mode)"
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
ui_info "Utilisateur d'origine : $(system_origin_user)"
fi
}
bootstrap_run() {
bootstrap_parse_args "$@" || exit 1
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
system_reexec_as_root "$@" || exit 1
fi
runtime_init "$BOOTSTRAP_ROOT"
log_init
ui_header "Postinstall Debian"
ui_info "Initialisation du framework"
bootstrap_print_session_context
system_require_bash
system_require_debian
+74 -2
View File
@@ -25,6 +25,21 @@ dispatcher_prompt_and_run_module() {
local share_public=""
local archive_name=""
local docker_data_dir=""
local ftp_port=""
local ftp_anonymous=""
local ftp_local=""
local ftp_write=""
local ftp_root=""
local bitwarden_server_url=""
local bitwarden_email=""
local bitwarden_target_user=""
local bitwarden_install_cli=""
local bitwarden_install_desktop=""
local bitwarden_install_firefox=""
local bitwarden_install_chromium=""
local bitwarden_install_google_chrome=""
local bitwarden_login_now=""
local bitwarden_uri_mode=""
local default_nfs_ids=""
local nfs_entry=""
local nfs_item_id=""
@@ -63,8 +78,11 @@ dispatcher_prompt_and_run_module() {
dispatcher_run_module "$module_id" "$target_user" "$selected_groups"
;;
network/ssh-server)
ui_section "Configuration SSH"
ssh_port="$(prompt_read_default "Port SSH" "${POSTINSTALL_SSH_PORT:-22}")"
ui_info "L'authentification par mot de passe simplifie l'acces, mais elle est moins sure que les cles SSH."
ssh_password_auth="$(prompt_confirm_default "Autoriser l'authentification par mot de passe" "${POSTINSTALL_SSH_PASSWORD_AUTH:-yes}")"
ui_info "Autoriser root en SSH est pratique pour depanner, mais augmente le risque en cas d'exposition reseau."
ssh_root_login="$(prompt_confirm_default "Autoriser la connexion root SSH" "${POSTINSTALL_SSH_ROOT_LOGIN:-no}")"
dispatcher_run_module "$module_id" "$ssh_port" "$ssh_password_auth" "$ssh_root_login"
;;
@@ -79,8 +97,12 @@ dispatcher_prompt_and_run_module() {
dispatcher_run_module "$module_id" "$host_name" "$domain_name"
;;
network/ip-config)
ui_section "Configuration IP"
iface="$(prompt_read_default "Interface reseau" "${POSTINSTALL_NETWORK_IP_DEFAULT_INTERFACE:-$(system_primary_interface)}")"
ip_mode="$(prompt_read_default "Mode reseau (dhcp ou static)" "${POSTINSTALL_NETWORK_IP_DEFAULT_MODE:-dhcp}")"
ip_mode="$(prompt_select_described_from_list \
"Mode reseau" \
"dhcp|La box ou le routeur attribue automatiquement l'adresse IP." \
"static|Vous fixez manuellement l'adresse IP, la passerelle et le DNS.")"
if [[ "$ip_mode" == "static" ]]; then
ip_address="$(prompt_read_default "Adresse IP" "${POSTINSTALL_NETWORK_IP_DEFAULT_ADDRESS:-10.0.0.10}")"
ip_prefix="$(prompt_read_default "Prefixe CIDR" "${POSTINSTALL_NETWORK_IP_DEFAULT_PREFIX:-22}")"
@@ -97,7 +119,10 @@ dispatcher_prompt_and_run_module() {
network/nfs-client)
# shellcheck source=/dev/null
source "$RUNTIME_PROJECT_ROOT/modules/network/nfs-client/module.sh"
nfs_action="$(prompt_select_from_list "Action NFS client" "activer des partages" "desactiver des partages")"
nfs_action="$(prompt_select_described_from_list \
"Action NFS client" \
"activer des partages|Ajoute les partages choisis dans fstab et peut les monter immediatement." \
"desactiver des partages|Retire les partages choisis de fstab et tente de les demonter.")"
nfs_item_labels=()
nfs_item_ids=()
if [[ "$nfs_action" == "desactiver des partages" ]]; then
@@ -208,6 +233,53 @@ dispatcher_prompt_and_run_module() {
docker_data_dir="$(prompt_read_default "Dossier Docker" "/home/${target_user}/docker")"
dispatcher_run_module "$module_id" "$target_user" "$docker_data_dir"
;;
network/ftp-server)
ui_section "Configuration FTP"
ftp_port="$(prompt_read_default "Port FTP" "21")"
ui_info "L'acces anonyme ouvre le serveur sans compte local. A n'activer que sur un reseau de confiance."
ftp_anonymous="$(prompt_confirm_default "Autoriser l'acces anonyme" "no")"
ui_info "L'acces local permet aux comptes du systeme de se connecter au serveur FTP."
ftp_local="$(prompt_confirm_default "Autoriser les utilisateurs locaux" "yes")"
ui_info "L'ecriture permet l'envoi, la suppression ou la modification de fichiers."
ftp_write="$(prompt_confirm_default "Autoriser l'ecriture" "no")"
ftp_root="$(prompt_read_default "Dossier racine FTP" "/home/gilles")"
dispatcher_run_module "$module_id" "$ftp_port" "$ftp_anonymous" "$ftp_local" "$ftp_write" "$ftp_root"
;;
passwords/bitwarden)
ui_section "Configuration Bitwarden"
bitwarden_server_url="$(prompt_read_default "URL du serveur Bitwarden auto-heberge" "https://vw.maison43.duckdns.org")"
bitwarden_email="$(prompt_read_default "Adresse e-mail Bitwarden" "gil.soulier@gmail.com")"
bitwarden_target_user="$(prompt_read_default "Utilisateur local a configurer" "${POSTINSTALL_DEFAULT_USER:-gilles}")"
bitwarden_install_cli="$(prompt_confirm_default "Installer Bitwarden CLI" "yes")"
bitwarden_install_desktop="$(prompt_confirm_default "Installer l'application desktop Bitwarden" "yes")"
ui_info "Firefox peut etre preconfigure avec une politique systeme pour ton serveur Bitwarden."
bitwarden_install_firefox="$(prompt_confirm_default "Configurer l'extension Firefox Bitwarden" "yes")"
ui_info "Chromium et Chrome peuvent recevoir une politique systeme pour forcer l'extension et le serveur."
bitwarden_install_chromium="$(prompt_confirm_default "Configurer l'extension Chromium Bitwarden" "yes")"
bitwarden_install_google_chrome="$(prompt_confirm_default "Configurer aussi l'extension Google Chrome Bitwarden" "yes")"
bitwarden_login_now="no"
if [[ "$bitwarden_install_cli" == "yes" ]]; then
ui_info "Le mot de passe maitre ne sera pas stocke. Il sera saisi une seule fois si tu choisis la connexion immediate."
bitwarden_login_now="$(prompt_confirm_default "Connecter le CLI Bitwarden tout de suite" "no")"
fi
bitwarden_uri_mode="$(prompt_select_described_from_list \
"Detection de correspondance URI conseillee" \
"host|Adapte aux serveurs locaux et sous-domaines. Recommande pour ton usage." \
"base domain|Plus large, utile pour de grands domaines publics." \
"exact|Ne correspond que si l'URL est exactement identique.")"
dispatcher_run_module \
"$module_id" \
"$bitwarden_server_url" \
"$bitwarden_email" \
"$bitwarden_target_user" \
"$bitwarden_install_cli" \
"$bitwarden_install_desktop" \
"$bitwarden_install_firefox" \
"$bitwarden_install_chromium" \
"$bitwarden_install_google_chrome" \
"$bitwarden_login_now" \
"$bitwarden_uri_mode"
;;
*)
dispatcher_run_module "$module_id"
;;
+10 -1
View File
@@ -5,8 +5,17 @@ RUNTIME_LOG_DIR=""
RUNTIME_LOG_FILE=""
runtime_init() {
local uid_suffix=""
RUNTIME_PROJECT_ROOT="$1"
RUNTIME_LOG_DIR="${TMPDIR:-/tmp}/postinstall-debian"
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
RUNTIME_LOG_DIR="${TMPDIR:-/tmp}/postinstall-debian"
else
uid_suffix="$(id -u)"
RUNTIME_LOG_DIR="${TMPDIR:-/tmp}/postinstall-debian-$uid_suffix"
fi
RUNTIME_LOG_FILE="$RUNTIME_LOG_DIR/install.log"
mkdir -p "$RUNTIME_LOG_DIR"
}