Update install_elog.sh
Run CI Tests / test (push) Successful in 1m45s

This commit is contained in:
2025-08-14 16:37:38 +02:00
parent eab83c75c4
commit 01090e19f7
+94 -39
View File
@@ -1,45 +1,60 @@
#!/bin/bash
set -e
# =======================
# 1. Télécharger et compiler ELOG
# =======================
rm -rf /tmp/elog-build && mkdir -p /tmp/elog-build
cd /tmp/elog-build
git clone --recursive https://bitbucket.org/ritt/elog
cd elog
make -j"$(nproc)"
mkdir -p "$HOME/.local/bin"
cp elogd "$HOME/.local/bin/"
export PATH="$HOME/.local/bin:$PATH"
# =======================
# 2. Préparer l'instance
# =======================
INSTANCE_DIR="/tmp/elog_instance"
mkdir -p "$INSTANCE_DIR/logbooks/demo"
LOGBOOK_DIR="$INSTANCE_DIR/logbooks/demo"
YEAR_DIR="$LOGBOOK_DIR/$(date +%Y)"
mkdir -p "$YEAR_DIR"
chmod 1777 /tmp
chmod -R 777 "$INSTANCE_DIR"
# Génération des hashes avec elogd
MD5_PASS=$(~/.local/bin/elogd -P testpassword md5)
SHA1_PASS=$(~/.local/bin/elogd -P testpassword sha1)
CRYPT_PASS=$(~/.local/bin/elogd -P testpassword crypt)
# Création du fichier users.xml avec plusieurs utilisateurs
# =======================
# 3. Créer users.xml (mot de passe en clair)
# =======================
cat > "$INSTANCE_DIR/users.xml" <<EOF
<?xml version="1.0" encoding="ISO-8859-1"?>
<list>
<!-- Mot de passe en clair -->
<user>
<name>clear</name>
<name>robot</name>
<password>testpassword</password>
<full_name>Clear Password</full_name>
</user>
<!-- MD5 -->
<user>
<name>md5</name>
<password>${MD5_PASS}</password>
<full_name>MD5 Password</full_name>
</user>
<!-- SHA1 -->
<user>
<name>sha1</name>
<password>${SHA1_PASS}</password>
<full_name>SHA1 Password</full_name>
</user>
<!-- crypt(3) -->
<user>
<name>crypt</name>
<password>${CRYPT_PASS}</password>
<full_name>Crypt Password</full_name>
<full_name>Robot User</full_name>
<last_logout>0</last_logout>
<last_activity>0</last_activity>
<email>robot@example.com</email>
</user>
</list>
EOF
# Config ELOG pour qu'il lise ce fichier
sudo chown nobody:nogroup "$INSTANCE_DIR/users.xml"
chmod 644 "$INSTANCE_DIR/users.xml"
# DEBUG users.xml
echo "=== DEBUG: droits users.xml ==="
ls -l "$INSTANCE_DIR/users.xml"
echo "=== DEBUG: contenu users.xml ==="
cat "$INSTANCE_DIR/users.xml"
echo "=== DEBUG: qui peut lire ? ==="
sudo -u nobody cat "$INSTANCE_DIR/users.xml" || echo "❌ nobody ne peut pas lire"
# =======================
# 4. Configuration ELOG
# =======================
cat > "$INSTANCE_DIR/elogd.cfg" <<EOF
[global]
Port = 8080
@@ -47,25 +62,65 @@ Logbook dir = $INSTANCE_DIR/logbooks
Resource dir = $INSTANCE_DIR
Allow HTML = 1
List after submit = 0
User = $(id -un)
Group = $(id -gn)
Password file = $INSTANCE_DIR/users.xml
Encrypt passwords = 0
Login expiration = 24
Admin user = robot
Self register = 0
Admin user = clear
[demo]
Subdir = demo
Preset Author = robot
Login user = robot
Menu commands = List, New, Edit, Reply, Duplicate, Find, Config, Logout, Help
Required Attributes = Author
EOF
# Lancer ELOG
# =======================
# 5. Lancer ELOG
# =======================
pkill -f 'elogd -c' 2>/dev/null || true
~/.local/bin/elogd -c "$INSTANCE_DIR/elogd.cfg" -vvv &
sleep 2
# Tester toutes les combinaisons
for user in clear md5 sha1 crypt; do
echo "=== Test connexion: $user:testpassword ==="
RESPONSE=$(curl -s -u "$user:testpassword" http://localhost:8080/demo)
if echo "$RESPONSE" | grep -q "redir"; then
echo "❌ Échec pour $user"
echo "✅ ELOG démarré sur http://localhost:8080"
echo " → Utilisateur : robot"
echo " → Mot de passe : testpassword"
# =======================
# 6. Tester différentes combinaisons de mot de passe
# =======================
function test_connexion() {
local mode=$1
local pwd=$2
echo "=== Test connexion: $mode:$pwd ==="
RESP=$(curl -s -u "robot:$pwd" http://localhost:8080/demo)
if [[ "$RESP" == *"List of Messages"* || "$RESP" == *"redir"* ]]; then
echo "✅ Succès pour $mode"
else
echo "✅ Succès pour $user"
echo "❌ Échec pour $mode"
fi
done
}
# Test clair
test_connexion "clear" "testpassword"
# Test md5
MD5PWD=$(echo -n "testpassword" | md5sum | awk '{print $1}')
sed -i "s|<password>.*</password>|<password>$MD5PWD</password>|" "$INSTANCE_DIR/users.xml"
test_connexion "md5" "testpassword"
# Test sha1
SHA1PWD=$(echo -n "testpassword" | sha1sum | awk '{print $1}')
sed -i "s|<password>.*</password>|<password>$SHA1PWD</password>|" "$INSTANCE_DIR/users.xml"
test_connexion "sha1" "testpassword"
# Test crypt
CRYPTPWD=$(openssl passwd -crypt "testpassword")
sed -i "s|<password>.*</password>|<password>$CRYPTPWD</password>|" "$INSTANCE_DIR/users.xml"
test_connexion "crypt" "testpassword"
echo "=== Tests terminés ==="