#!/usr/bin/perl
# Pošle na výstup obsah souboru. Slouží jako obálka na statické soubory ve složkách CGI.
# (c) 2006 Dan Zeman <zeman@ufal.mff.cuni.cz>
# Licence: GNU GPL

use utf8; # říct Perlu, že konstantní řetězce ve zdrojáku jsou v UTF
use open ":utf8"; # Perl musí vědět, že texty, které čteme z disku, jsou v UTF-8
use Encode; # funkce pro překódování
# Říct Perlu, kde najde Danovy sdílené knihovny.
# CGI skripty běží pod uživatelem apache, který nemá tyto knihovny v cestě.
BEGIN {unshift(@INC, '/s/w/lib/dan') unless(grep {$_ eq '/s/w/lib/dan'} @INC)}use dancgi; # čtení parametrů z webu nebo z ARGV
use jazyky; # jazykové verze textů
use mso; # funkce pro generování stránek o olympiádě
binmode(STDOUT, ":utf8"); # říct Perlu, že UTF chceme i na výstupu


# Připojit se k databázi
$databaze = mso::pripojit_se_k_databazi();
# Výchozí nastavení parametrů. Může být přebito parametry z URL/ARGV.
mso::provest_vychozi_nastaveni_parametru(\%konfig, $databaze);
# Načíst parametry z URL.
dancgi::cist_parametry(\%konfig);
# Umožnit volat skript z příkazového řádku a předat parametry tam (např. perl prihlaseni.pl akce=caroly).
dancgi::rozebrat_parametry($ARGV[0], \%konfig);

mso::vypsat_stranku(
{
    "nazev"  => "MSO: $konfig{rok}",
    "nadpis" => "",
    "telo"   => sestavit_text(\%konfig),
    "rok"  => $konfig{rok},
});

sub sestavit_text
{
    my $konfig = shift; # odkaz na hash
    my $stranka;
    # Následující krok představuje bezpečnostní hrozbu, proto dovolíme otevření
    # pouze souborů z předem známého seznamu. Kdyby nám někdo podstrčil cestu
    # obalenou svislítky, vytvoří rouru a může spustit systémový příkaz. Pomocí
    # programů jako curl, wget, links apod. potom může na náš systém dopravit
    # trojského koně. (To se už stalo 24.1.2008 při útoku z Kazachstánu.)
#    return "" unless($konfig->{text} =~ m/^(index)\.html?$/);
    open(TEXT, "/var/web/deskohrani.cz/www/$jazyky::jazyk/foto/$konfig->{text}");
    while(<TEXT>) {
        $stranka .= $_;
    }
    close(TEXT);
    return $stranka;
}
