#!/usr/bin/perl -w -- # # written by gecon - finalized on 31/1/2011 # enjoy! # # # use strict; BEGIN { package DissertsViewer; use vars qw($VERSION); $VERSION = '0.5'; use base 'CGI::Application'; use CGI::Application::Plugin::Forward; use LWP::UserAgent; use HTTP::Request; #cap setup sub setup { my $c = shift; $c->start_mode('parse_request'); $c->run_modes([qw/ parse_request show_pdf show_pdf_error show_access_restrict show_disclaimer show_pdf /]); } sub cgiapp_postrun { my $c = shift; my $output_ref = shift; $c->header_add( -charset => 'utf-8' ); return 1; } #main logic sub parse_request { my $c = shift; my $q = $c->query(); my $fileid = $q->param('i'); #proper call if (!defined($fileid) || $fileid eq '') { return $c->forward('show_access_restrict'); } #ip check (in uoa range) if (not $c->ip_check) { return $c->forward('show_access_restrict'); } #proper referer if (not $c->proper_referer) { return $c->forward('show_access_restrict'); } return $c->forward('show_disclaimer'); } #checks our request to see if we've got a proper referer sub proper_referer { my $c = shift; my $q = $c->query(); my $good_url_1 = 'http://efessos.lib.uoa.gr/applications/'; my $good_url_2 = 'http://hippo.lib.uoa.gr/'; my $self_url = $q->url(-path_info=>1); my $referer = $q->referer(); #$ENV{'HTTP_REFERER'}; print STDERR "Self: $self_url --- Referer: $referer" ."\n"; return 0 unless defined($referer); #from self ... if ($referer =~ /^\Q$self_url/i) { return 1; } #from efessos ... if ($referer =~ /^\Q$good_url_1/i) { return 1; } #from hippo ... if ($referer =~ /^\Q$good_url_2/i) { return 1; } #bad boys ... return 0; } #shows access restriction sub show_access_restrict { my $c = shift; #my $t = $c->load_tmpl; #$t->param($errs) if $errs; #return $t->output; return "
Η πλήρης πρόσβαση στο ψηφιακό υλικό επιτρέπεται κατόπιν συναίνεσης των συγγραφέων και προσφέρεται αποκλειστικά για προσωπική, εκπαιδευτική ή ερευνητική χρήση. Απαγορεύεται η συστηματική αποθήκευση ή/και εκτύπωση του υλικού καθώς και οποιαδήποτε εμπορική χρήση του.