summaryrefslogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install.sh')
-rw-r--r--install.sh175
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'