diff --git a/install_elog.sh b/install_elog.sh index 0334eea2..22a2cd0c 100644 --- a/install_elog.sh +++ b/install_elog.sh @@ -1,29 +1,27 @@ #!/bin/bash +set -euo pipefail -# --- 1) Build ELOG from git --- -echo "๐Ÿ“ฅ Cloning ELOG (Bitbucket)โ€ฆ" +# Build 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)" -echo "๐Ÿ“Œ Installing to ~/.local/bin โ€ฆ" mkdir -p "$HOME/.local/bin" cp elogd "$HOME/.local/bin/" export PATH="$HOME/.local/bin:$PATH" -# --- 2) Prepare instance --- -echo "๐Ÿ“ Preparing instance โ€ฆ" +# Prepare instance INSTANCE_DIR="$HOME/elog_instance" LOGBOOK_DIR="$INSTANCE_DIR/logbooks/demo" -mkdir -p "$LOGBOOK_DIR" -chmod -R 775 "$INSTANCE_DIR" +YEAR_DIR="$LOGBOOK_DIR/$(date +%Y)" +mkdir -p "$YEAR_DIR" +chmod -R 777 "$INSTANCE_DIR" -# --- 3) Global passwords --- -#PASSWORD="me1T.2jUUqQNa1wNuey9zNBOmOa4eILOaPb.ZSZjpn4" +# Generate SHA256-crypt hash for testpassword +HASH=$(python3 -c "import crypt; print(crypt.crypt('testpassword', crypt.mksalt(crypt.METHOD_SHA256, rounds=5000)))") -# --- 4) Write config --- cat > "$INSTANCE_DIR/elogd.cfg" </dev/null || true ~/.local/bin/elogd -c "$INSTANCE_DIR/elogd.cfg" -v & sleep 2 ~/.local/bin/elogd -h | head -n 1 - -# --- 6) Test in CI --- -URL="http://localhost:8080/demo" - -echo "๐Ÿงช Testing public read (should work without auth)โ€ฆ" -curl -s -L "$URL/?cmd=Last%2010" | head -n 5 - -echo "๐Ÿงช Testing write (should require auth)โ€ฆ" -# Try without auth (should fail) -if curl -s -L -F "Author=CI Bot" -F "Text=NoAuthTest" "$URL/?cmd=Submit" | grep -qi "login"; then - echo "โœ… Write without auth blocked" -else - echo "โŒ Write without auth unexpectedly allowed" - exit 1 -fi - -# Try with auth -curl -s -L -u "ci:testpassword" \ - -F "Author=CI Bot" \ - -F "Text=CI post OK" \ - "$URL/?cmd=Submit" - -# Verify post appears in Last 10 without needing auth -if curl -s -L "$URL/?cmd=Last%2010" | grep -q "CI post OK"; then - echo "โœ… CI post succeeded and is visible" -else - echo "โŒ CI post not found" - exit 1 -fi - -echo "ELOG is running with public read + auth-required write/admin (password: testpassword)"