This commit is contained in:
2026-03-15 04:54:51 +01:00
parent 0fb8fe5a66
commit 7ac487f640
81 changed files with 3867 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
POSTINSTALL_NETWORK_IDENTITY_DEFAULT_HOSTNAME="${HOSTNAME:-debian}"
POSTINSTALL_NETWORK_IDENTITY_DEFAULT_DOMAIN="local"
POSTINSTALL_NETWORK_IDENTITY_STATE_FILE="/etc/postinstall-debian/network-identity.conf"
+4
View File
@@ -0,0 +1,4 @@
MODULE_ID="network/identity"
MODULE_NAME="Identite reseau"
MODULE_CATEGORY="network"
MODULE_DESCRIPTION="Configure le hostname et l'identite locale de la machine"
+68
View File
@@ -0,0 +1,68 @@
#!/usr/bin/env bash
MODULE_NETWORK_IDENTITY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MODULE_NETWORK_IDENTITY_PROJECT_ROOT="$(cd "$MODULE_NETWORK_IDENTITY_DIR/../../.." && pwd)"
# shellcheck source=modules/network/identity/config.sh
source "$MODULE_NETWORK_IDENTITY_DIR/config.sh"
# shellcheck source=modules/network/identity/metadata.conf
source "$MODULE_NETWORK_IDENTITY_DIR/metadata.conf"
module_identity_metadata() {
printf '%s|%s|%s\n' "$MODULE_ID" "$MODULE_NAME" "$MODULE_DESCRIPTION"
}
module_identity_validate_hostname() {
local host_name="$1"
[[ "$host_name" =~ ^[a-zA-Z0-9][a-zA-Z0-9-]{0,62}$ ]]
}
module_identity_update_hosts() {
local host_name="$1"
local domain_name="${2:-}"
local fqdn="$host_name"
local temp_file=""
if [[ -n "$domain_name" ]]; then
fqdn="$host_name.$domain_name"
fi
temp_file="$(mktemp)"
awk '!/^127\.0\.1\.1[[:space:]]/' /etc/hosts > "$temp_file"
printf '127.0.1.1 %s %s\n' "$fqdn" "$host_name" >> "$temp_file"
cat "$temp_file" > /etc/hosts
rm -f "$temp_file"
}
module_identity_install() {
local host_name="${1:-$POSTINSTALL_NETWORK_IDENTITY_DEFAULT_HOSTNAME}"
local domain_name="${2:-$POSTINSTALL_NETWORK_IDENTITY_DEFAULT_DOMAIN}"
if ! module_identity_validate_hostname "$host_name"; then
ui_error "Hostname invalide : $host_name"
return 1
fi
if command -v hostnamectl >/dev/null 2>&1; then
hostnamectl set-hostname "$host_name"
else
hostname "$host_name"
fi
printf '%s\n' "$host_name" > /etc/hostname
module_identity_update_hosts "$host_name" "$domain_name"
mkdir -p "$(dirname "$POSTINSTALL_NETWORK_IDENTITY_STATE_FILE")"
{
printf 'HOSTNAME=%s\n' "$host_name"
printf 'DOMAIN=%s\n' "$domain_name"
} > "$POSTINSTALL_NETWORK_IDENTITY_STATE_FILE"
log_info "Hostname configure : $host_name"
ui_success "Hostname configure : $host_name"
}
module_identity_test() {
test -f "$POSTINSTALL_NETWORK_IDENTITY_STATE_FILE" || return 1
test -s /etc/hostname || return 1
hostnamectl >/dev/null 2>&1 || return 1
}
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
MODULE_NETWORK_IDENTITY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$MODULE_NETWORK_IDENTITY_DIR/../../.." && pwd)"
# shellcheck source=lib/ui.sh
source "$PROJECT_ROOT/lib/ui.sh"
# shellcheck source=lib/log.sh
source "$PROJECT_ROOT/lib/log.sh"
# shellcheck source=core/runtime.sh
source "$PROJECT_ROOT/core/runtime.sh"
# shellcheck source=modules/network/identity/module.sh
source "$MODULE_NETWORK_IDENTITY_DIR/module.sh"
runtime_init "$PROJECT_ROOT"
log_init
if ! test -f /etc/postinstall-debian/network-identity.conf; then
printf 'network-identity test SKIPPED: module configuration not applied\n'
exit 0
fi
if module_identity_test; then
printf 'network-identity test OK\n'
else
printf 'network-identity test FAILED\n' >&2
exit 1
fi