Amélioration de la splash_page et du login

This commit is contained in:
d6soft
2025-06-04 16:51:40 +02:00
parent 8c9e9a21c4
commit bcfdbb2c8b
168 changed files with 153842 additions and 6183 deletions

137
sync-mac-pm1.sh Executable file
View File

@@ -0,0 +1,137 @@
#!/bin/bash
# Script to synchronize the current directory to the same path on another Mac
# and optionally to an external NVME drive
# Author: Cline
# Date: $(date +"%Y-%m-%d")
# Define IP addresses
IP_MAC1="192.168.7.1"
IP_MAC2="192.168.7.4"
NVME_PATH="/Volumes/d4to"
# Detect local IP address on Thunderbolt interface
get_local_ip() {
local thunderbolt_ip=$(ifconfig | grep -A 4 "bridge0\|en5\|en6" | grep "inet " | awk '{print $2}' | grep "192.168.7.")
echo "$thunderbolt_ip"
}
# Determine destination IP based on local IP
get_destination_ip() {
local local_ip=$(get_local_ip)
if [ "$local_ip" = "$IP_MAC1" ]; then
echo "$IP_MAC2"
elif [ "$local_ip" = "$IP_MAC2" ]; then
echo "$IP_MAC1"
else
echo ""
fi
}
# Source and destination paths
SOURCE_DIR=$(pwd)
DEST_IP=$(get_destination_ip)
if [ -z "$DEST_IP" ]; then
echo "Error: Could not determine destination IP. Make sure you're on a Mac with IP $IP_MAC1 or $IP_MAC2"
exit 1
fi
DESTINATION="pierre@$DEST_IP:$SOURCE_DIR"
# Log file
LOG_FILE="$SOURCE_DIR/sync_log_$(date +"%Y%m%d_%H%M%S").log"
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# Function to log messages
log_message() {
local message="$1"
local type="$2"
local color="$NC"
case "$type" in
"INFO") color="$GREEN" ;;
"ERROR") color="$RED" ;;
"WARNING") color="$YELLOW" ;;
esac
echo -e "${color}[$(date +"%Y-%m-%d %H:%M:%S")] [$type] $message${NC}"
echo "[$(date +"%Y-%m-%d %H:%M:%S")] [$type] $message" >> "$LOG_FILE"
}
# Check if rsync is installed
if ! command -v rsync &> /dev/null; then
log_message "rsync is not installed. Please install it using 'brew install rsync'" "ERROR"
exit 1
fi
# Check if source directory exists
if [ ! -d "$SOURCE_DIR" ]; then
log_message "Source directory $SOURCE_DIR does not exist" "ERROR"
exit 1
fi
# Create log file
touch "$LOG_FILE"
log_message "Starting synchronization from $SOURCE_DIR to $DESTINATION" "INFO"
# Ping the destination to check if it's reachable
if ! ping -c 1 "$DEST_IP" &> /dev/null; then
log_message "Destination $DEST_IP is not reachable. Check your network connection." "ERROR"
exit 1
fi
# Run rsync with archive mode, compression, and verbose output
log_message "Running rsync..." "INFO"
rsync -avz --exclude=".git" \
"$SOURCE_DIR/" "$DESTINATION/" 2>&1 | tee -a "$LOG_FILE"
# Check rsync exit status
if [ ${PIPESTATUS[0]} -eq 0 ]; then
log_message "Synchronization completed successfully" "INFO"
else
log_message "Synchronization failed with exit code ${PIPESTATUS[0]}" "ERROR"
exit 1
fi
# Get local IP
LOCAL_IP=$(get_local_ip)
# If we're on MAC2 and NVME is mounted, also backup to NVME
if [ "$LOCAL_IP" = "$IP_MAC2" ] && [ -d "$NVME_PATH" ]; then
# Get parent directory name
PARENT_DIR=$(basename "$(dirname "$SOURCE_DIR")")
PROJECT_DIR=$(basename "$SOURCE_DIR")
BACKUP_DATE=$(date +"%Y-%m-%d")
NVME_BACKUP_DIR="$NVME_PATH/dev/$PARENT_DIR-$PROJECT_DIR/Y-w-$BACKUP_DATE"
log_message "Also backing up to NVME at $NVME_BACKUP_DIR" "INFO"
# Create backup directory if it doesn't exist
mkdir -p "$NVME_BACKUP_DIR"
# Backup to NVME
rsync -avz --exclude=".git" "$SOURCE_DIR/" "$NVME_BACKUP_DIR/" 2>&1 | tee -a "$LOG_FILE"
# Check rsync exit status
if [ ${PIPESTATUS[0]} -eq 0 ]; then
log_message "NVME backup completed successfully" "INFO"
else
log_message "NVME backup failed with exit code ${PIPESTATUS[0]}" "WARNING"
fi
# Purge backups older than 3 weeks
log_message "Purging backups older than 3 weeks" "INFO"
find "$NVME_PATH/dev/$PARENT_DIR-$PROJECT_DIR" -type d -name "Y-w-*" -mtime +21 -exec rm -rf {} \; 2>/dev/null || true
fi
log_message "Synchronization process finished" "INFO"
echo -e "${GREEN}Synchronization log saved to: $LOG_FILE${NC}"
exit 0