133 lines
3.1 KiB
Bash
133 lines
3.1 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
PREFIX="/usr/local"
|
|
INSTANCE_DIR="$PREFIX/elog"
|
|
PASSWORD="testpassword"
|
|
|
|
# =======================
|
|
# 1. Installer dépendances
|
|
# =======================
|
|
sudo apt update
|
|
sudo apt install -y make gcc git curl openssl whois python3-full python3-venv
|
|
|
|
# =======================
|
|
# 2. Télécharger et compiler ELOG
|
|
# =======================
|
|
rm -rf /tmp/elog-src
|
|
mkdir -p /tmp/elog-src
|
|
cd /tmp/elog-src
|
|
git clone --recursive https://bitbucket.org/ritt/elog
|
|
cd elog
|
|
make -j"$(nproc)"
|
|
|
|
sudo mkdir -p "$PREFIX/sbin" "$INSTANCE_DIR/logbooks/demo"
|
|
sudo cp elogd "$PREFIX/sbin/"
|
|
|
|
# =======================
|
|
# 4. Créer users.xml avec mot de passe encodé
|
|
# =======================
|
|
sudo tee "$INSTANCE_DIR/users.xml" > /dev/null <<EOF
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!-- created by MXML on $(date) -->
|
|
<list>
|
|
<user>
|
|
<name>robot</name>
|
|
<password encoding="SHA256">me1T.2jUUqQNa1wNuey9zNBOmOa4eILOaPb.ZSZjpn4</password>
|
|
<full_name>Robot User</full_name>
|
|
<last_logout>0</last_logout>
|
|
<last_activity>0</last_activity>
|
|
<email>robot@example.com</email>
|
|
</user>
|
|
</list>
|
|
EOF
|
|
|
|
sudo chmod 644 "$INSTANCE_DIR/users.xml"
|
|
|
|
# =======================
|
|
# 5. Créer configuration elogd.cfg
|
|
# =======================
|
|
sudo tee "$INSTANCE_DIR/elogd.cfg" > /dev/null <<EOF
|
|
[global]
|
|
Port = 8080
|
|
Logbook dir = $INSTANCE_DIR/logbooks
|
|
Resource dir = $INSTANCE_DIR
|
|
Allow HTML = 1
|
|
Password file = $INSTANCE_DIR/users.xml
|
|
Admin user = robot
|
|
Self register = 0
|
|
Encrypt passwords = 0
|
|
|
|
[demo]
|
|
Subdir = demo
|
|
Preset Author = robot
|
|
Login user = robot
|
|
Required Attributes = Author
|
|
EOF
|
|
|
|
# =======================
|
|
# 6. Script init simple
|
|
# =======================
|
|
sudo tee /etc/init.d/elogd > /dev/null <<'EOF'
|
|
#!/bin/sh
|
|
case "$1" in
|
|
start)
|
|
echo "Starting elogd..."
|
|
/usr/local/sbin/elogd -D -c /usr/local/elog/elogd.cfg > /dev/null 2>&1 &
|
|
echo $! > /var/run/elogd.pid
|
|
;;
|
|
stop)
|
|
echo "Stopping elogd..."
|
|
kill $(cat /var/run/elogd.pid)
|
|
rm -f /var/run/elogd.pid
|
|
;;
|
|
restart)
|
|
$0 stop
|
|
sleep 1
|
|
$0 start
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
EOF
|
|
|
|
sudo chmod +x /etc/init.d/elogd
|
|
|
|
# =======================
|
|
# 7. Fix permissions pour éviter erreurs d’écriture
|
|
# =======================
|
|
sudo chmod -R 777 "$INSTANCE_DIR/logbooks"
|
|
|
|
# =======================
|
|
# 8. Lancer ELOG
|
|
# =======================
|
|
sudo service elogd restart
|
|
sleep 3
|
|
|
|
echo "✅ ELOG démarré sur http://localhost:8080"
|
|
echo " → Utilisateur : robot"
|
|
echo " → Mot de passe (clair) : $PASSWORD"
|
|
echo " → Mot de passe encodé : me1T.2jUUqQNa1wNuey9zNBOmOa4eILOaPb.ZSZjpn4"
|
|
|
|
# =======================
|
|
# 9. Test connexion
|
|
# =======================
|
|
COOKIEJAR=$(mktemp)
|
|
curl -s -L --max-time 5 -c "$COOKIEJAR" \
|
|
-d "cmd=Login" \
|
|
-d "unm=robot" \
|
|
-d "pwd=$PASSWORD" \
|
|
http://localhost:8080/demo > /dev/null
|
|
|
|
PAGE_RESP=$(curl -s -L --max-time 5 -b "$COOKIEJAR" http://localhost:8080/demo)
|
|
|
|
if [[ "$PAGE_RESP" == *"List of Messages"* ]]; then
|
|
echo "✅ Auth OK"
|
|
else
|
|
echo "❌ Auth FAIL"
|
|
echo "=== DEBUG HTML ==="
|
|
echo "$PAGE_RESP"
|
|
fi
|