blob: 3d8276dcc0f56398fcf3e33fb27729063c163778 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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'
|