#!/usr/bin/perl

use CGI qw/:standard/;

sub is_allowed_remote_host {
 
 
$remhost = $ENV{'REMOTE_HOST'};
open (FD,"<./allowed_remhost.txt");
 
while(<FD>) {
 
	if (/^#/) { next;   };
	if (/^ALLOWED/) { return 1;};
	if (/^$/) { next;   };
	chomp($_);

	if($remhost =~ /$_$/){
 
 	       close FD;
               return 1;
        }
}
   
close FD;
return 0;
}

  
sub is_allowed_remote_host_for_fi {
 
open (FID,"<./allowed_remhost_for_$fi.txt") ;
 
while(<FID>) {
 
	if (/^#/) { next;   };
	if (/^ALLOWED/) { return 1;};
	if (/^$/) { next;   };
	chomp($_);
 
	($host,@tobbi) = split(/\|/,$_);

	if ($host eq $_ && $remhost =~ /$host$/)
		 {  close FID; return 1;  };

	$sz_kezdo_0_nelkul = $sz;
	$sz_kezdo_0_nelkul =~ s/^0//;
 
   if($remhost =~ /$host$/) {
     
     foreach (@tobbi) {
       ($evszam,@szamok) = split(/,/,$_);
       if($evszam eq $ev) {

              foreach $x (@szamok) {
                if($x eq $sz_kezdo_0_nelkul) {


                        close FID;
                        return 1;
                }
               }#foreach

       }
     } 
   }		#if
} 		#while
 
close FID;
return 0;
}		 #sub


if (is_allowed_remote_host )
{
$tibi_dir = '/opt/scan/journals';
$tibi_lista = "$tibi_dir/tibi.lst";
$tibi_url = 'http://fulltext.lib.unideb.hu/journals';
$toc_filename = 'TOC.html';
$program_name = "tibi.cgi";

$icon_url = 'http://fulltext.lib.unideb.hu/notes/icons';
$imgtag_begin = qq{<IMG BORDER=0 SRC="$icon_url/bi_begin.gif" ALT="Első oldal">};
$imgtag_frew = qq{<IMG BORDER=0 SRC="$icon_url/bi_frew.gif" ALT="10 oldal hátra">};
$imgtag_rew = qq{<IMG BORDER=0 SRC="$icon_url/bi_rew.gif" ALT="1 oldal hátra">};
$imgtag_forw = qq{<IMG BORDER=0 SRC="$icon_url/bi_forw.gif" ALT="1 oldal előre">};
$imgtag_fforw = qq{<IMG BORDER=0 SRC="$icon_url/bi_fforw.gif" ALT="10 oldal előre">};
$imgtag_end = qq{<IMG BORDER=0 SRC="$icon_url/bi_end.gif" ALT="Utolsó oldal">};
$imgtag_up = qq{<IMG BORDER=0 SRC="$icon_url/bi_up.gif" ALT="Vissza">};
$imgtag_toc = qq{<IMG BORDER=0 SRC="$icon_url/bi_toc.gif" ALT="Tartalom">};

$q = new CGI;

$fi = $q->param('fi');
$ev = $q->param('ev');
$sz = $q->param('sz');
$pn = $q->param('pn');		# A kert oldal szama
$pm = $q->param('pm');
$o  = $q->param('o');

open LISTFILE, "$tibi_lista";
while (<LISTFILE>) {
    if (/^(\S+)\s+(.+)$/) { $title{$1} = $2 };
}
close LISTFILE;

if ($fi eq "" || $ev eq "" || $sz eq "" ) {

    print $q->header('text/html');
    print $q->start_html(-title=>'Tibi-tibi', bgcolor=>white,-noScript);

    if ($fi eq "") { @fi_lista = sort(keys %title) }
    else { @fi_lista = ($fi) }

    for $fi (@fi_lista) {

        $fi_dir = "$tibi_dir/$fi";

        opendir DIR, "$fi_dir";
        @evfolyamok = sort(grep(/^[^\.]/, readdir(DIR)));
        closedir DIR;


        # Kiírjuk a folyóirat címét
        print "<HR><H2>$title{$fi}</H2>";
        print "<TABLE BORDER=0 CELLPADDING=5>";

        for $ev (@evfolyamok) {

            print "<TR>";
            if ( -d "$fi_dir/$ev" ) {

                opendir(DIR, "$fi_dir/$ev");
                @szamok = sort(grep(/^[^\.]/, readdir(DIR)));
                closedir DIR;

                print "<TD VALIGN=TOP><H3>$ev</H3></TD><TD VALIGN=TOP>";

                for $sz (@szamok) {
                    ($ssz = $sz) =~ s/^0+//;
                    $postfix = $sz=~m{^[0-9]} ? ". szám, " : "";
                    print qq{<A HREF="$program_name?fi=$fi&ev=$ev&sz=$sz"><B>$ssz</B></A>$postfix};
                }
                print "</TD>";

            }
            print "</TR>";
        }
        print "</TABLE>";
    }
print $q->end_html();

}
else {

if (is_allowed_remote_host_for_fi )
{
# print header(), start_html("Tiltott"),h1("engedelyezett a hozzaferes az $title{$fi} folyoirathoz."), h2($host), h3($remhost), end_html;

        $image_url = "$tibi_url/$fi/$ev/$sz";
        $image_dir = "$tibi_dir/$fi/$ev/$sz";

        opendir DIR, "$image_dir";  
        @filelist = readdir(DIR);
        closedir DIR;
        @smalllist = sort(grep(/^s[ABC]/, @filelist));
        @tinylist = sort(grep(/^t[ABC]/, @filelist));

        if ($#tinylist < 0) { $o = "left" }

        $cgi_par = "o=left&fi=$fi&ev=$ev&sz=$sz";


    SWITCH: {
        if ($o eq "left") {

            $pm_end = @smalllist - 1;
            if ($pn ne "") {
                $osz = sprintf("%03d", $pn);

                for ($i=0; $i <= $#smalllist; $i++) {
                    $pm = $i if $smalllist[$i] =~ m{sB$osz.jpg}; 

                }
            }
            if ($pm eq "") {
                $pm = 0;
            }

            $pm_begin = 0; 
            $pm_forw = $pm + 1;
            $pm_rew = $pm - 1;
            $ff_step = 10;
            $pm_fforw = $pm + $ff_step > $pm_end ? $pm_end : $pm + $ff_step;
            $pm_frew = $pm - $ff_step < $pm_begin ? $pm_begin : $pm - $ff_step;


            $tag_begin = $pm > $pm_begin ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_begin">$imgtag_begin</A>} : qq{$imgtag_begin};
            $tag_frew = $pm > $pm_begin ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_frew">$imgtag_frew</A>} : qq{$imgtag_frew};
            $tag_rew = $pm > $pm_begin ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_rew">$imgtag_rew</A>} : qq{$imgtag_rew};
            $tag_forw = $pm < $pm_end ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_forw">$imgtag_forw</A>} : qq{$imgtag_forw};
            $tag_fforw = $pm < $pm_end ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_fforw">$imgtag_fforw</A>} : qq{$imgtag_fforw};
            $tag_end = $pm < $pm_end ? qq{<A HREF="$program_name?$cgi_par&pm=$pm_end">$imgtag_end</A>} : qq{$imgtag_end};
            $tag_up = qq{<A HREF="$program_name" TARGET="_parent">$imgtag_up</A>};

            if ( -f "$image_dir/$toc_filename" ) {
                $tag_toc = qq{<TD><A HREF="$image_url/$toc_filename">$imgtag_toc</A>};
            }

            $image = $smalllist[$pm];
            $big_image = substr($image, 1);

            print $q->header();
            print $q->start_html(-title=>'Tibi-tibi', -bgcolor=>white);
            print<<end_left;
<H1>$title</H1>
<TABLE><TR ALIGN=LEFT>
<TD>$tag_begin <TD>$tag_frew <TD>$tag_rew <TD>$tag_forw <TD>$tag_fforw <TD>$tag_end
<TD WIDTH=80> <TD>$tag_up $tag_toc </TABLE>
<HR><CENTER><A HREF="$image_url/$big_image"><IMG BORDER=0 SRC="$image_url/$image"></A></CENTER>
end_left
            print $q->end_html();

            last SWITCH;
        }

        if ($o eq "right") {
            print $q->header();
            print $q->start_html(-target=>left, -bgcolor=>white);
            print "<CENTER>";

            for ($i=0; $i <= $#tinylist; $i++) {

                 $tinyalt = $tinylist[$i]=~m{t[B]0*(.+)\.jpg} ? 
                            "$1. oldal" : "Borító";
                print<<end_right;
<BR><A HREF="$program_name?$cgi_par&pm=$i">
<IMG BORDER=0 SRC="$image_url/$tinylist[$i]" ALT="$tinyalt"></A>
end_right
            }

            print "</CENTER>";
            print $q->end_html();
            last SWITCH;
        }
	else {};

        if ($o eq "") {
            $pn_value = $pn eq "" ? "" : "&pn=$pn";
            $pm_value = $pm eq "" ? "" : "&pm=$pm";
            $other_params = "&fi=$fi&ev=$ev&sz=$sz$pn_value$pm_value";

            print $q->header();

            print<<end_main;

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
           "http://www.w3.org/TR/html4/frameset.dtd">

<HTML>\r
 <HEAD>\r
  <TITLE>Tibi</TITLE>\r
 </HEAD>\r
 <FRAMESET COLS="*,150" >\r
  <FRAME SRC="$program_name?o=left$other_params" NAME="left">\r
  <FRAME SRC="$program_name?o=right$other_params" NAME="right">\r
 </FRAMESET\r
</HTML>\r
end_main

################################################   FRAMEBORDER="NO" BORDER="0"
# Ez nem kell! 2001 julius 6. Balazs laszlo
#
#           print $q->start_html(-title=>'Tibi-tibi', bgcolor=>white);
#           print $q->end_html();
################################################
            last SWITCH;
        }
        else {};
    }
}

else
{
 print header(), start_html("Tiltott"),h1("Nem engedelyezett a hozzaferes az $title{$fi} folyoirathoz."), end_html;


#$r = new CGI;

#print $r->header();
#print $r->start_html(-title=>'Informaciok',bgcolor=>white); 






#print $r->end_html();



}
}
}
else
{
}

