CzADSB-Mapa: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Lighttpd)
(Autorizace)
Řádka 71: Řádka 71:
 
== Autorizace ==
 
== Autorizace ==
 
Za účelem přihlášení a přesměrování při neplatnem přihlášení vztvoříme skript:
 
Za účelem přihlášení a přesměrování při neplatnem přihlášení vztvoříme skript:
 +
sudo nano /etc/pam.d/lighttpd-auth
 +
 +
auth    required    pam_exec.so expose_authtok /usr/local/bin/lighttpd_auth.sh
 +
account required    pam_permit.so
 +
 +
 
  sudo mcedit /usr/local/bin/lighttpd_auth.sh
 
  sudo mcedit /usr/local/bin/lighttpd_auth.sh
  
 
  #!/bin/bash
 
  #!/bin/bash
 
   
 
   
  # 1. Načtení vstupu od Lighttpd (stdin)
+
  # PAM předává jméno v proměnné prostředí $PAM_USER
  # Lighttpd posílá jméno na prvním řádku a heslo (v našem případě token) na druhém
+
  # Heslo (token) čteme ze standardního vstupu
read -r USERNAME
 
 
  read -r TOKEN
 
  read -r TOKEN
 
   
 
   
  # 2. Získání reálné IP adresy klienta
+
  USERNAME="$PAM_USER"
  # Protože je server za proxy, musíme zkontrolovat X-Forwarded-For.
+
   
  # Pokud existuje, vezmeme první IP v seznamu. Pokud ne, použijeme REMOTE_ADDR.
+
  # Zjištění IP adresy (zůstává stejné)
 
  if [ -n "$HTTP_X_FORWARDED_FOR" ]; then
 
  if [ -n "$HTTP_X_FORWARDED_FOR" ]; then
    # Odstraníme případné mezery a vezmeme první záznam před první čárkou
 
 
     CLIENT_IP=$(echo "$HTTP_X_FORWARDED_FOR" | cut -d',' -f1 | tr -d ' ')
 
     CLIENT_IP=$(echo "$HTTP_X_FORWARDED_FOR" | cut -d',' -f1 | tr -d ' ')
 
  else
 
  else
Řádka 90: Řádka 94:
 
  fi
 
  fi
 
   
 
   
  # 3. Odeslání dotazu na centrální portál metodou POST
+
  # Dotaz na váš PHP portál
# Používáme timeout 5 sekund, aby Lighttpd nezatuhl, pokud by portál neodpovídal.
 
# Očekáváme, že PHP skript vrátí text "OK" pro úspěch.
 
 
  RESPONSE=$(curl -s --max-time 5 -X POST \
 
  RESPONSE=$(curl -s --max-time 5 -X POST \
 
     -d "username=$USERNAME" \
 
     -d "username=$USERNAME" \
Řádka 99: Řádka 101:
 
     "https://user.czadsb.cz/service/autentizace.php")
 
     "https://user.czadsb.cz/service/autentizace.php")
 
   
 
   
# 4. Vyhodnocení odpovědi
 
 
  if [ "$RESPONSE" == "OK" ]; then
 
  if [ "$RESPONSE" == "OK" ]; then
    # Úspěšná autorizace - skript musí skončit s kódem 0
 
 
     exit 0
 
     exit 0
 
  else
 
  else
    # Neúspěšná autorizace - skript musí skončit s kódem 1 (nebo jiným než 0)
 
    # Volitelně můžete logovat chyby pro ladění:
 
    # echo "$(date) Auth failed for $USERNAME from $CLIENT_IP. Portal said: $RESPONSE" >> /var/log/lighttpd/auth_debug.log
 
 
     exit 1
 
     exit 1
 
  fi
 
  fi
  
  sudo mcedit /var/www/html/redirect_login.html
+
 
 +
sudo mcedit /var/www/html/redirect_login.html
  
 
  <!DOCTYPE html>
 
  <!DOCTYPE html>

Verze z 12. 2. 2026, 17:40

Uvod

Predpokladany postup instalace

  • Pripravit si distribuci
  • Zkompilovat ReADSB (nepotrebujeme zadne sdr ovladace)
  • Nastavit ReADSB
  • Nainstalovat Tar1090
  • Zkonfigurovat Tar1090

Distribuce

Nebojime se niceho, takze jdeme do nejnovejsiho operacniho systemu, at mame na dlouho klid. Priparvime si komplet distribuci vcetne aktualizaci a ovladaci pro virtual ( Linux & Aplikace ).

WebServer

Pro provoz potrebujeme jeden ze dvou nize uvedenych web serveru. Volba je v podstate na vas, ale Tar1090 ma primo integrovanou podporu pro Lighttpd.

Lighttpd

# prvne nainstalujeme WebServer. Doporu4uje se nginx, nebo lighttpd
sudo apt install -y lighttpd
sudo apt install -y lighttpd-mod-authn-pam

Nginx

# prvne nainstalujeme WebServer. Doporu4uje se nginx, nebo lighttpd
sudo apt install nginx

ReADSB

Kompilace

sudo apt update && sudo apt upgrade -y
sudo apt install --no-install-recommends --no-install-suggests -y \
   git build-essential debhelper libusb-1.0-0-dev pkg-config fakeroot libncurses-dev zlib1g-dev libzstd-dev librtlsdr-dev help2man

git clone --depth 20 https://github.com/wiedehopf/readsb.git
cd readsb

rm -f ../readsb_*.deb
export DEB_BUILD_OPTIONS=noddebs
dpkg-buildpackage -b -ui -uc -us

Pokud již máme potřebný balíček, tak jej nainstalujeme:

cd
rm -f /tmp/readsb_*.deb
cp ./readsb_*.deb /tmp/
sudo apt install /tmp/readsb_*.deb
rm -f /tmp/readsb_*.deb

Dale vytvorime pravidlo pro Lighttpd (pokud jsme jej instalovali

sudo wget -q https://rxw.cz/adsb/install/web/64-readsb.conf -O /etc/lighttpd/conf-available/64-readsb.conf
sudo ln -s ../conf-available/64-readsb.conf /etc/lighttpd/conf-enabled/64-readsb.conf
sudo wget -q https://rxw.cz/adsb/install/web/system.cgi -O /var/www/html/system.cgi
sudo systemctl reload lighttpd.service

Nastaveni ReADSB

sudo mcedit /etc/default/readsb
# readsb configuration
# This is sourced by /etc/systemd/system/default.target.wants/readsb.service as
# daemon startup configuration.

RECEIVER_OPTIONS="--net --net-only --net-ingest --net-connector 10.0.0.74,30005,beast_in,silent_fail --net-connector 10.129.99.147,30005,beast_in,silent_fail --net-connector 10.0.0.73,30005,beast_in,silent_fail"
DECODER_OPTIONS="--write-json-every 1 --net-beast-reduce-interval 0.5 --net-heartbeat 60 --net-ro-size 1280 --net-ro-interval=0.05 --net-ro-interval-beast-reduce=0.12"
NET_OPTIONS="--net-ro-port 0 --net-sbs-port 0 --net-bi-port 0 --net-bo-port 0 --net-ri-port 0 --net-api-port unix:/run/readsb/api.sock --api-shutdown-delay 10 --tar1090-use-api"
JSON_OPTIONS="--write-receiver-id-json --write-json-every 1 --json-location-accuracy 2 --range-outline-hours 24"
sudo systemctl restart readsb.service

Tar1090

POZOR: Pokud neni funkcni ReADSB, tak nam nebude fungovat ani Tar. Ve skriptu si zjistuje kde ma data letadel a pokud je nema, tak se nespusti.

Instalace

# Nainstalujeme vlastni Tar1090
sudo bash -c "$(wget -nv -O - https://github.com/wiedehopf/tar1090/raw/master/install.sh)"
sudo wget -O /usr/local/share/tar1090/aircraft.csv.gz https://github.com/wiedehopf/tar1090-db/raw/csv/aircraft.csv.gz

Nastaveni Tar1090

Autorizace

Za účelem přihlášení a přesměrování při neplatnem přihlášení vztvoříme skript:

sudo nano /etc/pam.d/lighttpd-auth
auth    required    pam_exec.so expose_authtok /usr/local/bin/lighttpd_auth.sh
account required    pam_permit.so


sudo mcedit /usr/local/bin/lighttpd_auth.sh
#!/bin/bash

# PAM předává jméno v proměnné prostředí $PAM_USER
# Heslo (token) čteme ze standardního vstupu
read -r TOKEN

USERNAME="$PAM_USER"

# Zjištění IP adresy (zůstává stejné)
if [ -n "$HTTP_X_FORWARDED_FOR" ]; then
    CLIENT_IP=$(echo "$HTTP_X_FORWARDED_FOR" | cut -d',' -f1 | tr -d ' ')
else
    CLIENT_IP="$REMOTE_ADDR"
fi

# Dotaz na váš PHP portál
RESPONSE=$(curl -s --max-time 5 -X POST \
    -d "username=$USERNAME" \
    -d "token=$TOKEN" \
    -d "ip=$CLIENT_IP" \
    "https://user.czadsb.cz/service/autentizace.php")

if [ "$RESPONSE" == "OK" ]; then
    exit 0
else
    exit 1
fi


sudo mcedit /var/www/html/redirect_login.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="refresh" content="0;url=https://user.czadsb.cz/index.php?page=login&return=mapa">
    <script type="text/javascript">
        window.location.href = "https://user.czadsb.cz/index.php?page=login&return=mapa"
    </script>
</head>
<body>
    Požadováno přihlášení. Přesměrovávám na <a href="https://user.czadsb.cz/login.php">user.czadsb.cz</a>...
</body>
</html>

Následně upravíme konfiguraci pro lighttpd a tar1090: