Guide

Nouvelles mises à jour et améliorations de Roundfleet.

Avis important

Les exemples de code et scripts fournis dans ces tutoriels sont uniquement à des fins éducatives. Roundfleet n'est pas responsable des problèmes, dommages ou vulnérabilités de sécurité qui pourraient survenir lors de l'utilisation, modification ou implémentation de ces exemples. Toujours vérifier et tester le code dans un environnement sécurisé avant de l'utiliser dans des systèmes de production.

Installer la dernière version de Firefox sur les appareils macOS

Ce guide complet démontre comment installer et gérer la dernière version de Firefox sur les appareils macOS pour le déploiement d'entreprise, les mises à jour automatiques et la gestion de configuration.

Aperçu

Firefox privilégie la confidentialité des utilisateurs, la sécurité et fournit de nombreuses options de personnalisation pour la navigation selon les préférences organisationnelles, ce qui le rend idéal pour l'utilisation en entreprise.

Avantages clés

  • Axé sur la confidentialité : Protection renforcée de la confidentialité et des données utilisateur
  • Sécurité : Mises à jour de sécurité régulières et protection de niveau entreprise
  • Personnalisation : Options de configuration étendues pour les politiques d'entreprise
  • Multiplateforme : Expérience cohérente sur différents systèmes d'exploitation
  • Open source : Développement transparent et audit de sécurité

Installation de base de Firefox

Script d'installation Firefox simple

#!/bin/bash

# Script d'installation basique de Firefox
# Utilisation : ./installer_firefox.sh

installer_firefox() {
    echo "Démarrage du processus d'installation de Firefox..."
    
    # Vérifier si Firefox est déjà installé
    if [ -d "/Applications/Firefox.app" ]; then
        echo "Firefox est déjà installé."
        exit 0
    fi
    
    # URL de téléchargement Firefox
    firefox_url="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=fr"
    repertoire_telechargement="$HOME/Applications"
    
    # Créer le répertoire de téléchargement
    mkdir -p "$repertoire_telechargement"
    
    echo "Téléchargement de Firefox..."
    curl -L -o "$repertoire_telechargement/Firefox.dmg" "$firefox_url"
    
    echo "Montage de l'image disque Firefox..."
    hdiutil attach "$repertoire_telechargement/Firefox.dmg"
    
    echo "Installation de Firefox..."
    cp -r "/Volumes/Firefox/Firefox.app" "/Applications/"
    
    echo "Démontage de l'image disque Firefox..."
    hdiutil detach "/Volumes/Firefox"
    
    echo "Nettoyage..."
    rm "$repertoire_telechargement/Firefox.dmg"
    
    echo "Installation de Firefox terminée."
}

# Exécuter l'installation
installer_firefox

Installation Firefox avancée avec validation

#!/bin/bash

# Installation Firefox avancée avec validation et journalisation
# Utilisation : ./installation_firefox_avancee.sh

installation_firefox_avancee() {
    local fichier_log="/var/log/roundfleet_firefox_install.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    local repertoire_telechargement="/tmp/roundfleet_firefox"
    
    # Créer le répertoire de log
    mkdir -p /var/log
    mkdir -p "$repertoire_telechargement"
    
    echo "[$timestamp] Installation Firefox avancée démarrée" >> "$fichier_log"
    
    # Vérifier si s'exécute en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Attention : Exécution en tant qu'utilisateur. Certaines fonctionnalités peuvent être limitées."
        echo "[$timestamp] Exécution en tant qu'utilisateur, pas root" >> "$fichier_log"
    fi
    
    # Vérifier l'installation Firefox existante
    verifier_firefox_existant
    
    # Télécharger et installer Firefox
    telecharger_firefox
    installer_application_firefox
    verifier_installation
    nettoyer_installation
    
    echo "[$timestamp] Installation Firefox avancée terminée" >> "$fichier_log"
}

verifier_firefox_existant() {
    echo "Vérification de l'installation Firefox existante..."
    
    if [ -d "/Applications/Firefox.app" ]; then
        local version_actuelle=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        
        echo "Firefox est déjà installé (Version : $version_actuelle)"
        echo "[$timestamp] Firefox déjà installé - Version : $version_actuelle" >> "$fichier_log"
        
        read -p "Voulez-vous mettre à jour vers la dernière version ? (o/N) : " choix_mise_a_jour
        if [ "$choix_mise_a_jour" != "o" ] && [ "$choix_mise_a_jour" != "O" ]; then
            echo "Installation annulée."
            exit 0
        fi
        
        echo "Poursuite avec la mise à jour de Firefox..."
    else
        echo "Aucune installation Firefox existante trouvée."
        echo "[$timestamp] Aucune installation Firefox existante trouvée" >> "$fichier_log"
    fi
}

telecharger_firefox() {
    echo "Téléchargement de la dernière version de Firefox..."
    
    local firefox_url="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=fr"
    local firefox_dmg="$repertoire_telechargement/Firefox.dmg"
    
    # Vérifier la connectivité réseau
    if ! ping -c 1 download.mozilla.org >/dev/null 2>&1; then
        echo "Erreur : Pas de connectivité réseau vers les serveurs Mozilla"
        echo "[$timestamp] Échec de la vérification de connectivité réseau" >> "$fichier_log"
        exit 1
    fi
    
    # Télécharger Firefox avec barre de progression et gestion d'erreurs
    if curl -L --progress-bar -o "$firefox_dmg" "$firefox_url"; then
        echo "Téléchargement de Firefox terminé avec succès"
        echo "[$timestamp] Téléchargement de Firefox terminé" >> "$fichier_log"
    else
        echo "Erreur : Échec du téléchargement de Firefox"
        echo "[$timestamp] Échec du téléchargement de Firefox" >> "$fichier_log"
        exit 1
    fi
    
    # Vérifier le téléchargement
    if [ -f "$firefox_dmg" ]; then
        local taille_fichier=$(stat -f%z "$firefox_dmg" 2>/dev/null || echo "0")
        echo "Taille du fichier téléchargé : $taille_fichier octets"
        echo "[$timestamp] Taille du fichier téléchargé : $taille_fichier octets" >> "$fichier_log"
        
        if [ "$taille_fichier" -lt 50000000 ]; then  # Moins de 50MB indique un problème potentiel
            echo "Attention : Le fichier téléchargé semble trop petit. Problème de téléchargement possible."
            echo "[$timestamp] Avertissement taille du fichier téléchargé" >> "$fichier_log"
        fi
    else
        echo "Erreur : Fichier de téléchargement non trouvé"
        echo "[$timestamp] Fichier de téléchargement non trouvé" >> "$fichier_log"
        exit 1
    fi
}

installer_application_firefox() {
    echo "Installation de l'application Firefox..."
    
    local firefox_dmg="$repertoire_telechargement/Firefox.dmg"
    local point_montage="/tmp/firefox_mount"
    
    # Créer le point de montage
    mkdir -p "$point_montage"
    
    # Monter le fichier DMG
    if hdiutil attach "$firefox_dmg" -mountpoint "$point_montage" -quiet; then
        echo "Image disque Firefox montée avec succès"
        echo "[$timestamp] Image disque Firefox montée" >> "$fichier_log"
    else
        echo "Erreur : Échec du montage de l'image disque Firefox"
        echo "[$timestamp] Échec du montage de l'image disque Firefox" >> "$fichier_log"
        exit 1
    fi
    
    # Copier l'application Firefox
    if [ -d "$point_montage/Firefox.app" ]; then
        echo "Copie de l'application Firefox vers /Applications..."
        
        # Supprimer l'installation existante si présente
        if [ -d "/Applications/Firefox.app" ]; then
            rm -rf "/Applications/Firefox.app"
        fi
        
        # Copier la nouvelle application Firefox
        if cp -R "$point_montage/Firefox.app" "/Applications/"; then
            echo "Application Firefox copiée avec succès"
            echo "[$timestamp] Application Firefox copiée avec succès" >> "$fichier_log"
        else
            echo "Erreur : Échec de la copie de l'application Firefox"
            echo "[$timestamp] Échec de la copie de l'application Firefox" >> "$fichier_log"
            hdiutil detach "$point_montage" -quiet
            exit 1
        fi
    else
        echo "Erreur : Firefox.app non trouvé dans l'image disque"
        echo "[$timestamp] Firefox.app non trouvé dans l'image disque" >> "$fichier_log"
        hdiutil detach "$point_montage" -quiet
        exit 1
    fi
    
    # Démonter l'image disque
    if hdiutil detach "$point_montage" -quiet; then
        echo "Image disque Firefox démontée avec succès"
        echo "[$timestamp] Image disque Firefox démontée" >> "$fichier_log"
    else
        echo "Attention : Échec du démontage de l'image disque Firefox"
        echo "[$timestamp] Échec du démontage de l'image disque Firefox" >> "$fichier_log"
    fi
}

verifier_installation() {
    echo "Vérification de l'installation Firefox..."
    
    if [ -d "/Applications/Firefox.app" ]; then
        local version_installee=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        local bundle_id=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleIdentifier 2>/dev/null || echo "Inconnu")
        
        echo "Installation Firefox vérifiée :"
        echo "  Version : $version_installee"
        echo "  Bundle ID : $bundle_id"
        echo "  Emplacement : /Applications/Firefox.app"
        
        echo "[$timestamp] Installation Firefox vérifiée - Version : $version_installee" >> "$fichier_log"
        
        # Tester le lancement de Firefox (optionnel)
        echo "Test de lancement de Firefox..."
        if timeout 10 /Applications/Firefox.app/Contents/MacOS/firefox --version >/dev/null 2>&1; then
            echo "Test de lancement de Firefox réussi"
            echo "[$timestamp] Test de lancement de Firefox réussi" >> "$fichier_log"
        else
            echo "Attention : Test de lancement de Firefox échoué ou timeout"
            echo "[$timestamp] Test de lancement de Firefox échoué" >> "$fichier_log"
        fi
    else
        echo "Erreur : Vérification de l'installation Firefox échouée"
        echo "[$timestamp] Vérification de l'installation Firefox échouée" >> "$fichier_log"
        exit 1
    fi
}

nettoyer_installation() {
    echo "Nettoyage des fichiers d'installation..."
    
    if [ -d "$repertoire_telechargement" ]; then
        rm -rf "$repertoire_telechargement"
        echo "Fichiers d'installation nettoyés"
        echo "[$timestamp] Fichiers d'installation nettoyés" >> "$fichier_log"
    fi
}

# Exécuter l'installation avancée
installation_firefox_avancee

Gestion Firefox d'entreprise

Gestionnaire de déploiement Firefox d'entreprise

#!/bin/bash

# Gestionnaire de déploiement Firefox d'entreprise
# Utilisation : ./gestionnaire_firefox_entreprise.sh

gestionnaire_firefox_entreprise() {
    local fichier_config="/etc/roundfleet/firefox_config.conf"
    local fichier_log="/var/log/roundfleet_firefox_entreprise.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    # Vérifier si s'exécute en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root pour le déploiement d'entreprise"
        exit 1
    fi
    
    # Créer le répertoire de configuration
    mkdir -p /etc/roundfleet
    
    # Charger ou créer la configuration
    if [ -f "$fichier_config" ]; then
        source "$fichier_config"
    else
        creer_config_entreprise
        source "$fichier_config"
    fi
    
    echo "[$timestamp] Gestionnaire Firefox d'entreprise démarré" >> "$fichier_log"
    
    # Afficher le menu d'entreprise
    afficher_menu_entreprise
}

creer_config_entreprise() {
    cat > "/etc/roundfleet/firefox_config.conf" << 'EOF'
# Configuration Firefox d'entreprise Roundfleet

# Paramètres de l'organisation
NOM_ORGANISATION="Organisation Roundfleet"
CONTACT_IT="[email protected]"

# Paramètres d'installation Firefox
LANGUE_FIREFOX="fr"
CANAL_FIREFOX="release"  # release, beta, nightly
MISE_A_JOUR_AUTO_ACTIVEE="true"
INSTALLATION_SILENCIEUSE="true"

# Politiques d'entreprise
ACTIVER_POLITIQUES_ENTREPRISE="true"
DESACTIVER_TELEMETRIE="true"
DESACTIVER_ETUDES="true"
BLOQUER_ABOUT_CONFIG="false"
URL_PAGE_ACCUEIL="https://www.roundfleet.com"

# Paramètres de sécurité
ACTIVER_POLITIQUES_SECURITE="true"
BLOQUER_TELECHARGEMENTS_DANGEREUX="true"
ACTIVER_NAVIGATION_SECURISEE="true"
DESACTIVER_OUTILS_DEVELOPPEUR="false"

# Journalisation et surveillance
ACTIVER_JOURNALISATION_DETAILLEE="true"
RETENTION_LOGS_JOURS="30"
ENVOYER_RAPPORTS_DEPLOIEMENT="true"
EOF
    
    echo "Configuration d'entreprise créée à /etc/roundfleet/firefox_config.conf"
}

afficher_menu_entreprise() {
    while true; do
        clear
        echo "======================================="
        echo "Gestionnaire Firefox d'entreprise Roundfleet"
        echo "======================================="
        echo ""
        echo "Organisation : $NOM_ORGANISATION"
        echo "Contact : $CONTACT_IT"
        echo ""
        echo "Actions disponibles :"
        echo "1. Installer/Mettre à jour Firefox"
        echo "2. Configurer les politiques d'entreprise"
        echo "3. Vérifier le statut Firefox"
        echo "4. Générer un rapport de déploiement"
        echo "5. Voir la configuration"
        echo "6. Quitter"
        echo ""
        read -p "Sélectionnez une option (1-6) : " choix
        
        case $choix in
            1)
                installer_mettre_a_jour_firefox
                ;;
            2)
                configurer_politiques_entreprise
                ;;
            3)
                verifier_statut_firefox
                ;;
            4)
                generer_rapport_deploiement
                ;;
            5)
                voir_configuration
                ;;
            6)
                echo "Fermeture du gestionnaire Firefox d'entreprise."
                exit 0
                ;;
            *)
                echo "Option invalide. Veuillez réessayer."
                ;;
        esac
        
        echo ""
        read -p "Appuyez sur Entrée pour continuer..."
    done
}

installer_mettre_a_jour_firefox() {
    echo "======================================="
    echo "Installer/Mettre à jour Firefox"
    echo "======================================="
    
    local version_actuelle=""
    if [ -d "/Applications/Firefox.app" ]; then
        version_actuelle=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        echo "Version actuelle de Firefox : $version_actuelle"
    else
        echo "Firefox n'est pas actuellement installé"
    fi
    
    echo ""
    echo "Options d'installation :"
    echo "1. Installer/Mettre à jour vers la dernière version stable"
    echo "2. Installer/Mettre à jour vers la dernière version beta"
    echo "3. Annuler"
    echo ""
    read -p "Sélectionnez l'option d'installation (1-3) : " choix_installation
    
    case $choix_installation in
        1)
            installer_version_firefox "release"
            ;;
        2)
            installer_version_firefox "beta"
            ;;
        3)
            echo "Installation annulée."
            ;;
        *)
            echo "Option invalide."
            ;;
    esac
}

installer_version_firefox() {
    local canal="$1"
    local repertoire_telechargement="/tmp/roundfleet_firefox_entreprise"
    
    echo "Installation de Firefox version $canal..."
    
    # Créer le répertoire de téléchargement
    mkdir -p "$repertoire_telechargement"
    
    # Déterminer l'URL de téléchargement basée sur le canal
    local firefox_url
    case $canal in
        "release")
            firefox_url="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=$LANGUE_FIREFOX"
            ;;
        "beta")
            firefox_url="https://download.mozilla.org/?product=firefox-beta-latest&os=osx&lang=$LANGUE_FIREFOX"
            ;;
        *)
            echo "Erreur : Canal Firefox invalide"
            return 1
            ;;
    esac
    
    echo "Téléchargement de Firefox $canal..."
    local firefox_dmg="$repertoire_telechargement/Firefox-$canal.dmg"
    
    if curl -L --progress-bar -o "$firefox_dmg" "$firefox_url"; then
        echo "Téléchargement terminé avec succès"
        echo "[$timestamp] Téléchargement Firefox $canal terminé" >> "$fichier_log"
    else
        echo "Erreur : Échec du téléchargement"
        echo "[$timestamp] Échec du téléchargement Firefox $canal" >> "$fichier_log"
        return 1
    fi
    
    # Installer Firefox
    echo "Installation de Firefox..."
    local point_montage="/tmp/firefox_${canal}_mount"
    mkdir -p "$point_montage"
    
    if hdiutil attach "$firefox_dmg" -mountpoint "$point_montage" -quiet; then
        # Supprimer l'installation existante
        if [ -d "/Applications/Firefox.app" ]; then
            rm -rf "/Applications/Firefox.app"
        fi
        
        # Copier la nouvelle installation
        if cp -R "$point_montage/Firefox.app" "/Applications/"; then
            echo "Firefox $canal installé avec succès"
            echo "[$timestamp] Firefox $canal installé avec succès" >> "$fichier_log"
            
            # Appliquer les politiques d'entreprise si activées
            if [ "$ACTIVER_POLITIQUES_ENTREPRISE" = "true" ]; then
                appliquer_politiques_entreprise
            fi
        else
            echo "Erreur : Échec de l'installation"
            echo "[$timestamp] Échec de l'installation Firefox $canal" >> "$fichier_log"
        fi
        
        hdiutil detach "$point_montage" -quiet
    else
        echo "Erreur : Échec du montage de l'image disque"
        echo "[$timestamp] Échec du montage de l'image disque Firefox $canal" >> "$fichier_log"
    fi
    
    # Nettoyage
    rm -rf "$repertoire_telechargement"
}

configurer_politiques_entreprise() {
    echo "======================================="
    echo "Configurer les politiques d'entreprise"
    echo "======================================="
    
    local repertoire_politiques="/Applications/Firefox.app/Contents/Resources/distribution"
    local fichier_politiques="$repertoire_politiques/policies.json"
    
    echo "Création de la configuration des politiques d'entreprise..."
    
    # Créer le répertoire de distribution
    mkdir -p "$repertoire_politiques"
    
    # Générer policies.json
    cat > "$fichier_politiques" << EOF
{
  "policies": {
    "DisableTelemetry": $DESACTIVER_TELEMETRIE,
    "DisableFirefoxStudies": $DESACTIVER_ETUDES,
    "BlockAboutConfig": $BLOQUER_ABOUT_CONFIG,
    "Homepage": {
      "URL": "$URL_PAGE_ACCUEIL",
      "Locked": true
    },
    "DisableSystemAddonUpdate": true,
    "DisableAppUpdate": $([ "$MISE_A_JOUR_AUTO_ACTIVEE" = "true" ] && echo "false" || echo "true"),
    "NoDefaultBookmarks": true,
    "OfferToSaveLogins": false,
    "PasswordManagerEnabled": false,
    "DisableDeveloperTools": $DESACTIVER_OUTILS_DEVELOPPEUR,
    "DisablePrivateBrowsing": false,
    "DisableProfileImport": true,
    "DisableFeedbackCommands": true,
    "DisableFirefoxAccounts": false,
    "DisableForgetButton": true,
    "DisablePocket": true,
    "DisableSetDesktopBackground": true,
    "DisplayBookmarksToolbar": false,
    "DontCheckDefaultBrowser": true,
    "EnableTrackingProtection": {
      "Value": true,
      "Locked": true
    }
  }
}
EOF
    
    echo "Configuration des politiques d'entreprise créée"
    echo "[$timestamp] Politiques d'entreprise configurées" >> "$fichier_log"
    
    # Définir les permissions appropriées
    chmod 644 "$fichier_politiques"
    
    echo "Politiques d'entreprise appliquées à l'installation Firefox"
}

appliquer_politiques_entreprise() {
    echo "Application des politiques d'entreprise..."
    configurer_politiques_entreprise
}

verifier_statut_firefox() {
    echo "======================================="
    echo "Rapport de statut Firefox"
    echo "======================================="
    
    local nom_appareil=$(scutil --get ComputerName)
    local version_os=$(sw_vers -productVersion)
    
    echo "Appareil : $nom_appareil"
    echo "Version macOS : $version_os"
    echo "Horodatage : $(date)"
    echo ""
    
    if [ -d "/Applications/Firefox.app" ]; then
        local version_firefox=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        local bundle_id=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleIdentifier 2>/dev/null || echo "Inconnu")
        
        echo "Statut Firefox : INSTALLÉ"
        echo "Version : $version_firefox"
        echo "Bundle ID : $bundle_id"
        echo "Chemin d'installation : /Applications/Firefox.app"
        
        # Vérifier si Firefox est en cours d'exécution
        if pgrep -x "firefox" >/dev/null; then
            echo "Statut du processus : EN COURS D'EXÉCUTION"
        else
            echo "Statut du processus : NON EN COURS D'EXÉCUTION"
        fi
        
        # Vérifier les politiques d'entreprise
        local fichier_politiques="/Applications/Firefox.app/Contents/Resources/distribution/policies.json"
        if [ -f "$fichier_politiques" ]; then
            echo "Politiques d'entreprise : CONFIGURÉES"
        else
            echo "Politiques d'entreprise : NON CONFIGURÉES"
        fi
        
    else
        echo "Statut Firefox : NON INSTALLÉ"
    fi
}

generer_rapport_deploiement() {
    echo "======================================="
    echo "Générer un rapport de déploiement"
    echo "======================================="
    
    local fichier_rapport="/tmp/firefox_rapport_deploiement_$(date +%Y%m%d_%H%M%S).txt"
    
    cat > "$fichier_rapport" << EOF
Rapport de déploiement Firefox Roundfleet
Généré : $(date)
Organisation : $NOM_ORGANISATION

Informations sur l'appareil :
  Nom de l'ordinateur : $(scutil --get ComputerName)
  Version macOS : $(sw_vers -productVersion)
  Modèle matériel : $(system_profiler SPHardwareDataType | grep "Model Name" | cut -d: -f2 | xargs)

Installation Firefox :
EOF
    
    if [ -d "/Applications/Firefox.app" ]; then
        local version_firefox=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        
        echo "  Statut : Installé" >> "$fichier_rapport"
        echo "  Version : $version_firefox" >> "$fichier_rapport"
        echo "  Date d'installation : $(stat -f "%Sm" /Applications/Firefox.app)" >> "$fichier_rapport"
        
        # Vérifier les politiques d'entreprise
        local fichier_politiques="/Applications/Firefox.app/Contents/Resources/distribution/policies.json"
        if [ -f "$fichier_politiques" ]; then
            echo "  Politiques d'entreprise : Configurées" >> "$fichier_rapport"
        else
            echo "  Politiques d'entreprise : Non configurées" >> "$fichier_rapport"
        fi
    else
        echo "  Statut : Non installé" >> "$fichier_rapport"
    fi
    
    cat >> "$fichier_rapport" << EOF

Configuration :
  Langue : $LANGUE_FIREFOX
  Canal : $CANAL_FIREFOX
  Mise à jour automatique : $MISE_A_JOUR_AUTO_ACTIVEE
  Politiques d'entreprise : $ACTIVER_POLITIQUES_ENTREPRISE

Contact : $CONTACT_IT
EOF
    
    echo "Rapport de déploiement généré : $fichier_rapport"
}

voir_configuration() {
    echo "======================================="
    echo "Configuration actuelle"
    echo "======================================="
    
    if [ -f "/etc/roundfleet/firefox_config.conf" ]; then
        cat "/etc/roundfleet/firefox_config.conf"
    else
        echo "Aucun fichier de configuration trouvé."
    fi
}

# Exécuter le gestionnaire d'entreprise
gestionnaire_firefox_entreprise

Système de mise à jour automatisé

Mise à jour automatique de Firefox

#!/bin/bash

# Système de mise à jour automatique de Firefox
# Utilisation : ./mise_a_jour_firefox_automatique.sh

mise_a_jour_firefox_automatique() {
    local fichier_config="/etc/roundfleet/firefox_mise_a_jour_auto.conf"
    local fichier_log="/var/log/roundfleet_firefox_mises_a_jour.log"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    # Vérifier si s'exécute en tant que root
    if [ "$EUID" -ne 0 ]; then
        echo "Erreur : Ce script doit être exécuté en tant que root"
        exit 1
    fi
    
    # Créer la configuration si elle n'existe pas
    if [ ! -f "$fichier_config" ]; then
        creer_config_mise_a_jour
    fi
    
    source "$fichier_config"
    
    echo "[$timestamp] Mise à jour automatique de Firefox démarrée" >> "$fichier_log"
    
    # Vérifier si les mises à jour sont activées
    if [ "$ACTIVER_MISES_A_JOUR_AUTO" = "true" ]; then
        verifier_et_mettre_a_jour_firefox
    else
        echo "Les mises à jour automatiques sont désactivées"
        echo "[$timestamp] Les mises à jour automatiques sont désactivées" >> "$fichier_log"
    fi
}

creer_config_mise_a_jour() {
    mkdir -p /etc/roundfleet
    
    cat > "/etc/roundfleet/firefox_mise_a_jour_auto.conf" << 'EOF'
# Configuration de mise à jour automatique Firefox Roundfleet

# Paramètres de mise à jour
ACTIVER_MISES_A_JOUR_AUTO="true"
CANAL_MISE_A_JOUR="release"
INTERVALLE_VERIFICATION="quotidien"
HEURE_MISE_A_JOUR="02:00"

# Paramètres de sécurité
SAUVEGARDER_PROFILS="true"
RETENTION_SAUVEGARDE_JOURS="7"
NECESSITER_CONSENTEMENT_UTILISATEUR="false"
IGNORER_SI_EN_COURS="true"

# Paramètres de notification
ENVOYER_NOTIFICATIONS="true"
EMAIL_NOTIFICATION="[email protected]"
NOTIFIER_SUCCES="true"
NOTIFIER_ECHEC="true"

# Paramètres d'entreprise
MAINTENIR_POLITIQUES="true"
PRESERVER_PERSONNALISATIONS="true"
VERIFIER_INSTALLATION="true"
EOF
    
    echo "Configuration de mise à jour automatique créée à /etc/roundfleet/firefox_mise_a_jour_auto.conf"
}

verifier_et_mettre_a_jour_firefox() {
    echo "[$timestamp] Vérification des mises à jour Firefox" >> "$fichier_log"
    
    # Vérifier si Firefox est installé
    if [ ! -d "/Applications/Firefox.app" ]; then
        echo "Firefox n'est pas installé. Installation de la dernière version..."
        installer_firefox_derniere_version
        return
    fi
    
    # Obtenir la version actuelle
    local version_actuelle=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
    
    # Vérifier si Firefox est en cours d'exécution et ignorer si configuré
    if [ "$IGNORER_SI_EN_COURS" = "true" ] && pgrep -x "firefox" >/dev/null; then
        echo "Firefox est actuellement en cours d'exécution. Mise à jour ignorée."
        echo "[$timestamp] Firefox en cours d'exécution - mise à jour ignorée" >> "$fichier_log"
        return
    fi
    
    # Créer une sauvegarde si activé
    if [ "$SAUVEGARDER_PROFILS" = "true" ]; then
        sauvegarder_profils_firefox
    fi
    
    # Télécharger et vérifier la dernière version
    local repertoire_telechargement="/tmp/roundfleet_firefox_mise_a_jour"
    mkdir -p "$repertoire_telechargement"
    
    local firefox_url="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=fr"
    local firefox_dmg="$repertoire_telechargement/Firefox-derniere.dmg"
    
    echo "Téléchargement de la dernière version de Firefox pour comparaison..."
    if curl -L -s -o "$firefox_dmg" "$firefox_url"; then
        # Monter et vérifier la version
        local point_montage="/tmp/firefox_mise_a_jour_mount"
        mkdir -p "$point_montage"
        
        if hdiutil attach "$firefox_dmg" -mountpoint "$point_montage" -quiet; then
            local derniere_version=$(defaults read "$point_montage/Firefox.app/Contents/Info.plist" CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
            
            echo "Version actuelle : $version_actuelle"
            echo "Dernière version : $derniere_version"
            
            if [ "$version_actuelle" != "$derniere_version" ]; then
                echo "Mise à jour disponible. Mise à jour de Firefox..."
                echo "[$timestamp] Mise à jour disponible - Actuelle : $version_actuelle, Dernière : $derniere_version" >> "$fichier_log"
                
                # Effectuer la mise à jour
                mettre_a_jour_installation_firefox "$point_montage"
                
                # Vérifier la mise à jour
                if verifier_mise_a_jour_firefox "$derniere_version"; then
                    echo "Firefox mis à jour avec succès vers la version $derniere_version"
                    echo "[$timestamp] Firefox mis à jour avec succès vers la version $derniere_version" >> "$fichier_log"
                    
                    if [ "$ENVOYER_NOTIFICATIONS" = "true" ] && [ "$NOTIFIER_SUCCES" = "true" ]; then
                        envoyer_notification_mise_a_jour "succes" "$version_actuelle" "$derniere_version"
                    fi
                else
                    echo "Échec de la vérification de la mise à jour Firefox"
                    echo "[$timestamp] Échec de la vérification de la mise à jour Firefox" >> "$fichier_log"
                    
                    if [ "$ENVOYER_NOTIFICATIONS" = "true" ] && [ "$NOTIFIER_ECHEC" = "true" ]; then
                        envoyer_notification_mise_a_jour "echec" "$version_actuelle" "$derniere_version"
                    fi
                fi
            else
                echo "Firefox est déjà à jour (version $version_actuelle)"
                echo "[$timestamp] Firefox est déjà à jour (version $version_actuelle)" >> "$fichier_log"
            fi
            
            hdiutil detach "$point_montage" -quiet
        else
            echo "Échec du montage de l'image disque Firefox"
            echo "[$timestamp] Échec du montage de l'image disque Firefox pour vérification de mise à jour" >> "$fichier_log"
        fi
    else
        echo "Échec du téléchargement de Firefox pour vérification de version"
        echo "[$timestamp] Échec du téléchargement de Firefox pour vérification de version" >> "$fichier_log"
    fi
    
    # Nettoyage
    rm -rf "$repertoire_telechargement"
}

installer_firefox_derniere_version() {
    echo "Installation de la dernière version de Firefox..."
    
    local repertoire_telechargement="/tmp/roundfleet_firefox_installation"
    mkdir -p "$repertoire_telechargement"
    
    local firefox_url="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=fr"
    local firefox_dmg="$repertoire_telechargement/Firefox.dmg"
    
    if curl -L --progress-bar -o "$firefox_dmg" "$firefox_url"; then
        local point_montage="/tmp/firefox_installation_mount"
        mkdir -p "$point_montage"
        
        if hdiutil attach "$firefox_dmg" -mountpoint "$point_montage" -quiet; then
            if cp -R "$point_montage/Firefox.app" "/Applications/"; then
                local version_installee=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
                echo "Firefox installé avec succès (version $version_installee)"
                echo "[$timestamp] Firefox installé avec succès (version $version_installee)" >> "$fichier_log"
                
                # Appliquer les politiques d'entreprise si nécessaire
                if [ "$MAINTENIR_POLITIQUES" = "true" ]; then
                    appliquer_politiques_entreprise
                fi
            else
                echo "Échec de l'installation de Firefox"
                echo "[$timestamp] Échec de l'installation de Firefox" >> "$fichier_log"
            fi
            
            hdiutil detach "$point_montage" -quiet
        else
            echo "Échec du montage de l'image disque Firefox"
            echo "[$timestamp] Échec du montage de l'image disque Firefox pour installation" >> "$fichier_log"
        fi
    else
        echo "Échec du téléchargement de Firefox"
        echo "[$timestamp] Échec du téléchargement de Firefox pour installation" >> "$fichier_log"
    fi
    
    rm -rf "$repertoire_telechargement"
}

mettre_a_jour_installation_firefox() {
    local point_montage="$1"
    
    echo "Mise à jour de l'installation Firefox..."
    
    # Supprimer l'ancienne installation
    if [ -d "/Applications/Firefox.app" ]; then
        rm -rf "/Applications/Firefox.app"
    fi
    
    # Installer la nouvelle version
    if cp -R "$point_montage/Firefox.app" "/Applications/"; then
        echo "Application Firefox mise à jour avec succès"
        
        # Restaurer les politiques d'entreprise si activé
        if [ "$MAINTENIR_POLITIQUES" = "true" ]; then
            appliquer_politiques_entreprise
        fi
        
        return 0
    else
        echo "Échec de la mise à jour de l'application Firefox"
        return 1
    fi
}

verifier_mise_a_jour_firefox() {
    local version_attendue="$1"
    
    if [ -d "/Applications/Firefox.app" ]; then
        local version_reelle=$(defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString 2>/dev/null || echo "Inconnue")
        
        if [ "$version_reelle" = "$version_attendue" ]; then
            return 0
        else
            echo "Discordance de version - Attendue : $version_attendue, Réelle : $version_reelle"
            return 1
        fi
    else
        echo "Application Firefox non trouvée après mise à jour"
        return 1
    fi
}

sauvegarder_profils_firefox() {
    echo "Création d'une sauvegarde des profils Firefox..."
    
    local repertoire_profils="$HOME/Library/Application Support/Firefox"
    local repertoire_sauvegarde="/var/backups/roundfleet/firefox_profils"
    local timestamp_sauvegarde=$(date +%Y%m%d_%H%M%S)
    
    mkdir -p "$repertoire_sauvegarde"
    
    if [ -d "$repertoire_profils" ]; then
        if tar -czf "$repertoire_sauvegarde/firefox_profils_sauvegarde_$timestamp_sauvegarde.tar.gz" -C "$HOME/Library/Application Support" "Firefox"; then
            echo "Profils Firefox sauvegardés avec succès"
            echo "[$timestamp] Profils Firefox sauvegardés" >> "$fichier_log"
            
            # Nettoyer les anciennes sauvegardes
            find "$repertoire_sauvegarde" -name "firefox_profils_sauvegarde_*.tar.gz" -mtime +$RETENTION_SAUVEGARDE_JOURS -delete
        else
            echo "Échec de la sauvegarde des profils Firefox"
            echo "[$timestamp] Échec de la sauvegarde des profils Firefox" >> "$fichier_log"
        fi
    else
        echo "Répertoire des profils Firefox non trouvé"
    fi
}

envoyer_notification_mise_a_jour() {
    local statut="$1"
    local ancienne_version="$2"
    local nouvelle_version="$3"
    
    local titre_notification="Mise à jour Firefox Roundfleet"
    local message_notification
    
    case $statut in
        "succes")
            message_notification="Firefox mis à jour avec succès de $ancienne_version vers $nouvelle_version"
            ;;
        "echec")
            message_notification="Échec de la mise à jour Firefox - tentative de mise à jour de $ancienne_version vers $nouvelle_version"
            ;;
        *)
            message_notification="Statut de mise à jour Firefox : $statut"
            ;;
    esac
    
    # Utiliser osascript pour afficher la notification
    osascript -e "display notification \"$message_notification\" with title \"$titre_notification\""
    
    echo "[$timestamp] Notification de mise à jour envoyée - Statut : $statut" >> "$fichier_log"
}

appliquer_politiques_entreprise() {
    echo "Application des politiques d'entreprise..."
    # Cela appellerait la fonction de configuration des politiques d'entreprise
}

# Exécuter la mise à jour automatique
mise_a_jour_firefox_automatique

Dépannage et bonnes pratiques

Problèmes courants et solutions

  1. Connectivité réseau : S'assurer d'une connexion internet stable pour les téléchargements
  2. Permissions : Exécuter les scripts d'installation avec les privilèges appropriés
  3. Espace disque : Vérifier l'espace disque suffisant avant l'installation
  4. Processus existants : Vérifier les processus Firefox en cours avant les mises à jour
  5. Politiques d'entreprise : Valider les configurations de politiques après déploiement

Bonnes pratiques

  • Tester les déploiements : Toujours tester dans des environnements contrôlés d'abord
  • Sauvegarder les profils : Créer des sauvegardes avant les mises à jour majeures
  • Surveiller les installations : Utiliser la journalisation et la surveillance pour les déploiements d'entreprise
  • Contrôle de version : Suivre les versions de Firefox dans votre flotte
  • Mises à jour de sécurité : Prioriser les mises à jour et correctifs de sécurité

Conclusion

Le déploiement et la gestion de Firefox sur macOS nécessitent une planification et une exécution minutieuses. Ces scripts fournissent des solutions complètes pour installer, mettre à jour et gérer Firefox à travers les flottes Mac. Des installations de base à l'automatisation de niveau entreprise, ces outils assurent des déploiements Firefox cohérents et sécurisés tout en maintenant les politiques organisationnelles et les préférences utilisateur.

Related Tutorials

Installer des Packages Non Signés sur macOS

Déployez et installez des packages PKG non signés sur Mac à l'aide de scripts pour les outils de développement spécialisés et logiciels open-source.

7 juil. 2025

Gestion Navigateur Safari sur macOS

Apprenez à configurer la page d'accueil Safari, paramètres navigateur, politiques sécurité et déployer la gestion navigateur entreprise sur vos appareils Roundfleet avec gestion utilisateur complète et fonctionnalités conformité.

7 juil. 2025

Gestion Rosetta 2 et Compatibilité Apple Silicon sur macOS

Apprenez à installer, gérer et surveiller la couche traduction Rosetta 2 sur Mac Apple Silicon avec gestion compatibilité niveau entreprise, surveillance applications et capacités déploiement flotte.

7 juil. 2025

Gestion de Paquets d'Entreprise avec Homebrew sur macOS

Déployez, gérez et maintenez les paquets logiciels sur les appareils macOS en utilisant Homebrew avec une gestion de configuration d'entreprise, un suivi de conformité et des flux de déploiement automatisés.

7 juil. 2025

Gérer les extensions de noyau sur macOS

Apprenez à afficher, charger, décharger et surveiller les extensions de noyau (kexts) sur les appareils macOS via des scripts en ligne de commande pour une gestion système et sécurité améliorées.

7 juil. 2025

Récupérer les versions des applications installées sur macOS

Apprenez à récupérer les versions d'applications sur les appareils macOS à l'aide de scripts shell pour une gestion efficace de votre flotte Mac.

7 juil. 2025

Gestion des Privilèges Utilisateur et Conformité Sécurité sur macOS

Gestion complète des privilèges utilisateur, contrôle d'accès administrateur, surveillance de conformité sécuritaire et détection automatisée d'escalade de privilèges pour les appareils macOS en environnements d'entreprise.

7 juil. 2025

Obtenir le Chemin d'Application sur macOS

Trouvez et récupérez les chemins d'installation d'applications sur Mac en utilisant les identifiants de bundle et commandes de recherche Spotlight.

7 juil. 2025