#!/usr/bin/env bash
# Creates the practice environment ~/linux-lab
set -e
LAB="$HOME/linux-lab"
rm -rf "$LAB"
mkdir -p "$LAB"/{logs/archive,config,projects/{webshop,blog,old-stuff},notes,media/{photos,music},backup}
cd "$LAB"
# --- logs -----------------------------------------------------------
cat > logs/app.log <<'EOF'
2026-10-01 08:12:03 INFO Server started on 192.168.10.5:8080
2026-10-01 08:15:44 WARN Slow response from 10.0.0.23 (2350 ms)
2026-10-01 09:01:17 ERROR Database connection refused (host=db01.htl.local)
2026-10-02 11:22:09 INFO User anna.berger@htl-krems.ac.at logged in
2026-10-02 11:23:51 ERROR Payment failed for order #4711
2026-10-03 14:00:00 INFO Backup finished
2026-10-03 14:05:12 error Unexpected token in config.ini line 12
2026-10-04 07:45:33 WARN Disk usage at 91% on /dev/sda1
2026-10-04 07:46:01 ERROR Disk quota exceeded for user max
EOF
cat > logs/access.log <<'EOF'
192.168.10.17 - - [01/Oct/2026:08:20:11] "GET /index.html HTTP/1.1" 200
10.0.0.23 - - [01/Oct/2026:08:21:45] "GET /shop/cart HTTP/1.1" 500
192.168.10.17 - - [02/Oct/2026:10:02:01] "POST /login HTTP/1.1" 302
172.16.4.200 - - [02/Oct/2026:10:05:33] "GET /admin HTTP/1.1" 403
10.0.0.23 - - [03/Oct/2026:12:44:19] "GET /index.html HTTP/1.1" 200
999.1.1.1 - - [03/Oct/2026:12:45:00] "GET /hack HTTP/1.1" 404
EOF
for d in 2026-09-01 2026-09-15 2026-09-30; do
echo "$d 00:00:01 INFO rotated" > "logs/archive/app-$d.log"
touch -d "$d 12:00" "logs/archive/app-$d.log"
done
echo "old garbage" > logs/archive/app.log.old
touch -d "2026-08-01 12:00" logs/archive/app.log.old
# --- config ---------------------------------------------------------
cat > config/server.conf <<'EOF'
# Server configuration
hostname = web01
port = 8080
debug = true
db_host = db01.htl.local
db_user = webshop
db_password = Sommer2026!
admin_email = admin@htl-krems.ac.at
EOF
cat > config/config.ini <<'EOF'
[general]
debug=true
loglevel=INFO
# legacy option
use_ftp=yes
[database]
host=db01.htl.local
port=3306
EOF
printf 'export PATH=$PATH:/opt/tools\nalias ll="ls -la"\n' > config/.hidden_profile
# --- projects -------------------------------------------------------
cat > projects/webshop/index.html <<'EOF'
<html><head><title>Webshop 2025</title></head>
<body>
<p>Contact: shop@htl-krems.ac.at</p>
<p>© 2025 HTL Krems Webshop</p>
<!-- TODO: add cart -->
</body></html>
EOF
cat > projects/webshop/cart.js <<'EOF'
// TODO: validate input
function addToCart(id) { console.log("add " + id); }
// FIXME: rounding error in total
EOF
cat > projects/webshop/README.md <<'EOF'
# Webshop
Release date: 15.03.2025
Maintainer: max.mustermann@htl-krems.ac.at
EOF
cat > projects/blog/post1.md <<'EOF'
# First post
Published: 01.09.2026
Visit http://blog.htl-krems.ac.at for more.
EOF
cat > projects/blog/post2.md <<'EOF'
# Second post
Published: 24.12.2026
TODO: proofread
Links: http://example.com and http://wiki.debian.org
EOF
cp projects/blog/post1.md "projects/blog/post 1 (copy).md"
echo 'print("hello")' > projects/old-stuff/test.py
echo 'print("bye")' > projects/old-stuff/Test2.PY
: > projects/old-stuff/empty.txt
: > projects/old-stuff/also_empty.log
touch -d "2025-01-10 10:00" projects/old-stuff/*
# --- notes ----------------------------------------------------------
cat > notes/shopping.txt <<'EOF'
milk
bread
coffee
EOF
cat > notes/phone.txt <<'EOF'
Anna +43 664 1234567
Max 0676/9876543
Office +43 2732 87654
Lisa no number
EOF
for i in 01 02 03 10 11 2 7; do echo "note $i" > "notes/note_$i.txt"; done
echo "secret" > notes/.secret
# --- media ----------------------------------------------------------
for f in IMG_0001.jpg IMG_0002.JPG img_0003.jpeg holiday.png Scan-2024.PDF; do
head -c 2048 /dev/urandom > "media/photos/$f"
done
head -c 3M /dev/urandom > media/photos/panorama_big.jpg
head -c 1500K /dev/urandom > media/music/song.mp3
head -c 6M /dev/urandom > media/music/live_concert.flac
# --- permissions ----------------------------------------------------
chmod 600 config/server.conf
chmod 777 projects/old-stuff/test.py
printf '#!/bin/bash\necho "Backup started"\n' > backup/run_backup.sh
chmod 755 backup/run_backup.sh
echo "Lab created in $LAB"