diff options
Diffstat (limited to 'install.sh')
-rw-r--r-- | install.sh | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..3d8276d --- /dev/null +++ b/install.sh @@ -0,0 +1,175 @@ +#!/usr/bin/bash +set -e + +# Vérifie si le script est exécuté avec les droits root +if [[ $EUID -ne 0 ]]; then + echo "Ce script doit être exécuté avec les droits root" + exit 1 +fi + +# Variables +TOR_CONFIG="/etc/tor/torrc" +HIDDEN_SERVICE_DIR="/var/lib/tor/hidden_service1/" +PROSODY_CONFIG="/etc/prosody/prosody.cfg.lua" +# Définir un mot de passe par défaut +PROSODY_PASSWORD="${PROSODY_PASSWORD:-azerty1234}" + +# Installe les dépendances +echo "Installation des dépendances..." +dnf install -y tor prosody luarocks lua-devel luajit lua-bit32 profanity nano vim emacs-nw || { echo "Échec de l'installation des dépendances"; exit 1; } + +# Configuration de Tor +echo "Configuration de Tor..." +# Backup du fichier de configuration de Tor +if [[ -f $TOR_CONFIG ]]; then + cp $TOR_CONFIG ${TOR_CONFIG}.bak || { echo "Échec de la sauvegarde de $TOR_CONFIG"; exit 1; } +fi + +cat <<EOL > $TOR_CONFIG +Log notice file /var/lib/tor/tor.log +#SocksPort [::1]:9050 PreferIPv6 +SocksPort 127.0.0.1:9050 PreferIPv6 +ClientPreferIPv6ORPort 1 +HiddenServiceDir $HIDDEN_SERVICE_DIR +#HiddenServicePort 5269 [::1]:5269 +HiddenServicePort 5269 127.0.0.1:5269 +EOL + +# Démarre le service Tor +echo "Démarrage de Tor..." +/usr/bin/tor --runasdaemon 1 --defaults-torrc /usr/share/tor/defaults-torrc -f /etc/tor/torrc +sleep 10 + +# Récupère le nom de domaine .onion +ONION_HOSTNAME=$(cat $HIDDEN_SERVICE_DIR/hostname) +echo "Nom de domaine .onion généré : $ONION_HOSTNAME" + +# Configuration de Prosody +echo "Configuration de Prosody..." +if [[ -f $PROSODY_CONFIG ]]; then + cp $PROSODY_CONFIG ${PROSODY_CONFIG}.bak || { echo "Échec de la sauvegarde de $PROSODY_CONFIG"; exit 1; } +fi + +cp /prosody.cfg.lua.txt $PROSODY_CONFIG + +sed -i "s|p4ac3ntp3ai643k3h5f7ubggg7zmdf7ddsnfybn5rejy73vqdcplzxid.onion|$ONION_HOSTNAME|" $PROSODY_CONFIG + +# Suppression des fichiers inutiles +echo "-- Fichier vide" > /etc/prosody/conf.d/example.com.cfg.lua +echo "-- Fichier vide" > /etc/prosody/conf.d/localhost.cfg.lua + +# Installation du module pour Prosody +echo "Installation du module mod_onions..." +prosodyctl install --server=https://modules.prosody.im/rocks/ mod_onions + +# Configuration de mod_s2s_never_encrypt +MODULE_FILE="/var/lib/prosody/custom_plugins/share/lua/5.4/mod_s2s_never_encrypt.lua" +# Vérification de l'existence du fichier de configuration mod_s2s_never_encrypt +if [[ -f $MODULE_FILE ]]; then + echo "mod_s2s_never_encrypt.lua est déjà installé..." +else + export CREATE_USER=1 +fi + +cat <<EOL > $MODULE_FILE +local libev = module:get_option_boolean("use_libevent") + +local function disable_tls_for_baddies_in(event) + local session = event.origin + module:log("debug", "disabling tls on incoming stream from %s...", tostring(session.from_host)); + if libev then session.conn.starttls = false; else session.conn.starttls = nil; end +end + +local function disable_tls_for_baddies_out(event) + local session = event.origin + module:log("debug", "disabling tls on outgoing stream from %s...", tostring(session.to_host)); + if libev then session.conn.starttls = false; else session.conn.starttls = nil; end +end + +module:hook("s2s-stream-features", disable_tls_for_baddies_in, 600) +module:hook("stanza/http://etherx.jabber.org/streams:features", disable_tls_for_baddies_out, 600) +EOL + + +# Suppression des certificats inutiles +echo "Suppression des certificats inutiles..." +echo "" > /etc/pki/prosody/localhost.crt +echo "" > /etc/pki/prosody/localhost.key + +# Démarre le service Prosody +echo "Démarrage de Prosody..." +/usr/bin/prosody -D --config $PROSODY_CONFIG & +sleep 10 + +# Vérifie si la variable d'environnement CREATE_USER est définie et non vide +if [[ ! -z "${CREATE_USER}" ]]; then + # Création d'un utilisateur Jabber avec un mot de passe par défaut ou défini dans la variable + read -p "Entrez le nom d'utilisateur Jabber (ex: user) : " JID + + # Créer l'utilisateur avec le mot de passe par défaut ou celui défini par la variable d'environnement + prosodyctl register $JID $ONION_HOSTNAME $PROSODY_PASSWORD + echo "Utilisateur Jabber $JID créé avec le mot de passe : $PROSODY_PASSWORD" +else + echo "La création d'utilisateur Jabber est désactivée. Pour l'activer, définissez CREATE_USER." +fi + +echo "Installation et configuration terminées." +echo "Vous pouvez vous connecter sur votre client XMPP." + +# Vérification de l'existence des fichiers de configuration de Profanity +echo "Vérification des fichiers de configuration de Profanity..." + +PROFANITY_CONFIG_DIR="/home/prof/.config/profanity" +PROFANITY_ACCOUNTS_DIR="/home/prof/.local/share/profanity" +PROFANITY_CONFIG_FILE="$PROFANITY_CONFIG_DIR/profrc" +PROFANITY_ACCOUNTS_FILE="$PROFANITY_ACCOUNTS_DIR/accounts" + +# Vérifier si les fichiers existent +if [[ ! -f $PROFANITY_CONFIG_FILE || ! -f $PROFANITY_ACCOUNTS_FILE ]]; then + echo "Les fichiers de configuration de Profanity n'existent pas. Copie des fichiers depuis la source..." + + # Copier les fichiers de configuration depuis la source + cat <<EOL > $PROFANITY_CONFIG_FILE +[connection] +defaccount=$JID@$ONION_HOSTNAME +account=$JID@$ONION_HOSTNAME + +autoping=60 +autoping.timeout=300 + +reconnect=1 + +[omemo] +log=redact +trustmode=blind + +[logging] +chlog=true +grlog=true + +[ui] +compose.editor=nano +clear.persist_history=true +EOL + + cat <<EOL > $PROFANITY_ACCOUNTS_FILE +[$JID@$ONION_HOSTNAME] +enabled=true +jid=$JID@$ONION_HOSTNAME +resource=profanity.onion +muc.nick=$JID +password=azerty1234 +server=localhost +port=15222 +tls.policy=disable +EOL + + chown prof:prof $PROFANITY_CONFIG_FILE $PROFANITY_ACCOUNTS_FILE + echo "Fichiers de configuration copiés avec succès." +else + echo "Les fichiers de configuration de Profanity existent déjà." +fi + +# Lancer Profanity +echo "Lancement de Profanity..." +su - prof -c 'profanity' |