#!/usr/bin/perl ########################################################################## # # My Downloader V1.1 Copyright 1998, Jim Melanson # www.thebeaches.to/jmwd/index.html # webmaster@thebeaches.to # 416-261-8840 # # Please read the disclaimer and terms and conditions of use in the # Readme file that accompanied this program. Alteration of use of # this script constitutes acceptance of the terms and condition. # ########################################################################## require 'attack.cgi'; require 'e63_config.cgi'; $ScriptURL = "http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}"; &Parse; &Date; print "Content-type: text/html\n\n"; if($ENV{'QUERY_STRING'} eq 'admin') {&Admin} elsif($ENV{'QUERY_STRING'} eq 'viewlog') {&ViewLog} elsif($ENV{'QUERY_STRING'} eq 'viewarchive') {&ViewArchive} elsif($ENV{'QUERY_STRING'} eq 'addarchive') {&AddArchive} elsif($ENV{'QUERY_STRING'} eq 'purgearchive') {&PurgeArchive} elsif($ENV{'QUERY_STRING'} eq 'setup') {&Setup} elsif($FORM{'action'} eq 'removelog') {&RemoveLog} elsif($FORM{'action'} eq 'setupfinal') {&SetupFinal} elsif($FORM{'action'} eq 'updateform') {&UpdateForm} elsif($FORM{'action'} eq 'updatefinal') {&UpdateFinal} elsif($FORM{'action'} eq 'remove') {&RemoveFile} elsif($FORM{'action'} eq 'add') {&AddFile} elsif($FORM{'action'} eq 'confirm') {&DownloadConfirm} elsif($FORM{'action'} eq 'download') {&DownloadFinal} else{&Display} exit; ########################################################################## # SUBROUTINES ########################################################################## sub Display { &PrintHead; print "
Ευχαριστούμε για το ενδιαφέρον σας να για το έργο\n"; print "$SiteName.\n"; print "Στη συνέχεια θα βρείτε μια λίστα των διαθέσιμων αρχείων του\n"; print "έργου.Επιλέξτε το αρχείο που επιθυμείτε να κατεβάσετε πατώντας το\n"; print "αντίστοιχο κουμπί επιλογής αριστερά από τον τίτλο κάθε εγγράφου.\n"; print "Στη συνέχεια συμπληρώστε τη φόρμα που ακολουθεί. Τέλος πατήστε το κουμπί\n"; print "της υποβολής. Θα σας ζητηθεί η επιβεβαίωση των στοιχείων που δώσατε,\n"; print "και αν όλα είναι σωστά, θα σας δοθεί δυνατότητα παραλαβής του\n"; print "αρχείου που ζητήσατε.\n"; print "
\n"; &PrintFoot; } sub DownloadConfirm { if(&CheckEmail($FORM{'email'})) { $FileNumb = int($FORM{'downloadfile'}); &PrintHead; print "$SiteName
Επιβεβαίωση\n"; print "Στοιχείων
\n"; print "Έχετε επιλέξει να κατεβάσετε το εξής αρχείο:\n"; open(DATA, "<$Data/files.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); $Content = @Contents[$FileNumb]; &SplitData($Content); print "
\n"; if($FileName) {print "$FileName
\n"} if($FileSize) {print "Μέγεθος αρχείου: $FileSize
\n"} if($FileType) {print "Είδος αρχείου: $FileType
\n"} if($FileText) {print "Περιγραφή αρχείου:$FileText
\n"} print "\n"; print "
\n"; print " Το όνομά σας: $FORM{'name'} \n"; if($FORM{'company'}) {print " Η ηλεκτρονική σας διεύθυνση: $FORM{'email'} \n";} print " Ο οργανισμός σας: $FORM{'company'}
Αν οι πληροφορίες αυτές είναι ακριβείς, προχωρείστε\n"; print "στη σελίδα προσπέλασης, πιέζοντας το κουμπί επιβεβαίωσης που ακολουθεί.\n"; print "Αν όχι, χρησιμοποιείστε το BACK κουμπί του φυλλομετρητή σας για να \n"; print "διορθώσετε τα στοιχεία που\n"; print "δώσατε.
\n"; &PrintFoot; } else { $Problem = "Η ηλεκτρονική διεύθυνση που δώσατε δεν φαίνεται να είναι σωστή."; &Error($Problem); } } sub DownloadFinal { $FileNumb = int($FORM{'downloadnumber'}); if((!$FORM{'name'}) || (!$FORM{'email'})) { $Problem = "Δεν δώσατε το όνομα ή την ηλεκτρονική σας διεύθυνση. και" . "είναι απαραίτητα πριν κατεβάσετε ένα αχείο. Παρακαλώ πιέστε το" . "BACK κουμπί του φυλλομετρητή σας και συμπληρώστε σωστά τα " . "πεδία αυτά."; &Error($Problem); } else { open(DATA, "<$Data/files.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); $Content = @Contents[$FileNumb]; &SplitData($Content); $NewUser = $FileName . "||" . $FORM{'name'} . "||" . $FORM{'email'} . "||" . $FORM{'company'} . "||" . $date . "||" . $time; open(LOGS, ">>$Data/downloadlog.list") || die "Δεν μπορώ να γράψω στο αρχείο καταγραφής προσπελάσεων.\n"; print LOGS "$NewUser\n"; close(LOGS); &PrintHead; print "ΑΠΟΔΟΧΗ ΚΑΤΑΧΩΡΗΣΗΣ
\n"; print "Σας ευχαριστούμε για την υπομονή σας να καταχωρηθείτε για την\n"; print "προσπέλαση του αρχείου: $FileName\n"; print ". Η καταχώρηση αυτή γίνεται για καλύτερο έλεγχο της τοποθεσίας\n"; print "του έργου.Το αρχείο που ζητήσατε είναι έτοιμο.\n"; print "Απλά πιέστε το \"Download\" εικονίδιο και το αρχείο\n"; print "θα σας αποσταλεί.
Σας ευχαριστούμε για την υπομονή σας.\n"; print "
\n"; print "[DOWNLOAD]\n"; print "
\n"; &PrintFoot; } } sub Admin { &PrintHead; print "$SiteName
Σελίδα Διαχείρισης\n"; print "Έχετε 4 επιλογές στη σελίδα αυτή.\n"; print "Αυτές είναι:
- Προσθήκη αρχείου στη βάση\n"; print "
- Διαγραφή αρχείου από τη βάση\n"; print "
- Ενημέρωση αρχείου που υπάρχει ήδη στη βάση\n"; print "
- Επισκόπηση των προσπελάσεων\n"; print "
Χρειάζεστε βοήθεια;
\n"; print "\n"; #Add file print "
Θέλετε βοήθεια;\n"; print "
\n"; #Remove print "
Θέλετε βοήθεια;
\n"; print "
\n"; #Update print "
Θέλετε βοήθεια;
\n"; print "
\n"; &PrintFoot; } sub RemoveFile { local($cushion) = 0; if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { $RemoveFile = $FORM{'removefile'}; open(DATA, "<$Data/files.list") || die "Δεν μπορώ να διαβάσω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); $num = @Contents; open(DATA, ">$Data/files.list") || die "Δεν μπορώ να διαβάσω τη λίστα των αρχείων.\n"; for($a = 0; $a < $num; $a++) { $Content = @Contents[$a]; chop($Content); if($a == $RemoveFile) { chop($Content); &SplitData($Content); $cushion = 1; } else {print DATA "$Content\n"} } close(DATA); if($cushion) { &PrintHead; print "Επιτυχής διαγραφή
Το\n"; print "αρχείο \"$FileName\" διαγράφτηκε\n"; print "επιτυχώς από τη βάση των διαθέσιμων εγγράφων του έργου.\n"; print "Σας συνιστούμε να σβήσετε και το αντίστοιχο αρχείο από\n"; print "την τοποθεσία σας, γιατί συνεχίζει να είναι διαθέσιμο \n"; print "από κάποιον που θα δώσει απευθείας το URL.\n"; print "Χρησιμοποιείστε είτε FTP είτε Telnet για να σβήσετε το αρχείο αυτό.\n"; print "Αν έχετε πρόβλημα, επικοινωνήστε με το διαχειριστή του συστήματος\n"; print "όπου βρίσκεται η τοποθεσία του έργου σας.
Το πλήρες\n"; print "URL του προς διαγραφή αρχείου είναι:
\n"; print "$RootURL$FileLink\n"; print "
Ευχαριστώ.\n"; &PrintFoot; } else { $Problem = "το αρχείο που επιλέξατε δεν διαγράφηκε από τη βάση," . "των διαθέσιμων εγγράφων του έργου. Παρακαλώ στείλτε μήνυμα στο διαχειριστή σας" . " με την ένδειξη λάθους: \"FILE NOT REMOVED\"" . " και το όνομα του αρχείου που προσπαθήσατε να διαγράψετε."; &Error($Problem); } } else { $Problem = "ο κωδικός ή το όνομα που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub AddFile { $setlink = $FORM{'filelink'}; if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { unless($FORM{'filesize'}) { $FORM{'filesize'} = (-s '$RootURL$setlink'); } $NewFile = $FORM{'filename'} . "||" . $FORM{'filepage'} . "||" . $FORM{'filesize'} . "||" . $FORM{'filetype'} . "||" . $FORM{'filelink'} . "||" . $FORM{'filetext'}; if(open(DATA, ">>$Data/files.list")) { print DATA "$NewFile\n"; close(DATA); &PrintHead; print "
Επιτυχής προσθήκη εγγράφου
Το αρχείο\n"; print "$FORM{'filename'} προστέθηκε με επιτυχία στη βάση των \n"; print "διαθέσιμων εγγράφων του έργου. Παρακαλώ βεβαιωθείτε ότι τα ακόλουθα\n"; print "στοιχεία που μας δώσατε για το έγγραφο αυτό είναι σωστά:\n"; print "
- Ενημερωτική σελίδα του εγγράφου:\n"; print "$RootURL$FORM{'filepage'}\n"; print "
- Μέγεθος του αρχείου: $FORM{'filesize'}\n"; print "
- Τύπος του αρχείου: $FORM{'filetype'}\n"; print "
- Σύνδεση με το αρχείο: $RootURL$FORM{'filelink'}\n"; $ShowFileText = $FORM{'filetext'}; $ShowFileText =~ s/LBCR//g; print "
- Περιγραφή εγγράφου: $ShowFileText
\n"; print "Αν τα στοιχεία αυτά δεν είναι ακριβή, θα πρέπει να τα\n"; print "ενημερώσετε από τη σελίδα\n"; print "διαχείρισης.Μπορείτε τώρα να μεταβείτε στη\n"; print "Σελίδα προσπέλασης των εγγράφων.
\n"; &PrintFoot; } else { $Problem = "Δεν μπορώ να προσθέσω το έγγραφο στη βάση."; &Error($Problem); } } else { $Problem = "ο κωδικός ή το όνομα που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub UpdateForm { if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { $UpdateFile = int($FORM{'updatefile'}); open(DATA, "<$Data/files.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων\n"; @Contents = ; close(DATA); $Content = @Contents[$UpdateFile]; &SplitData($Content); &PrintHead; print "Ενημέρωση στοιχείων εγγράφου
Το\n"; print "ακόλουθο έγγραφο έχει επιλεγεί για ενημέρωση των στοιχείων του. Κάντε\n"; print "τις απαραίτητες αλλαγές και στη συνέχεια πατήστε το κουμπί ΥΠΟΒΟΛΗ.
\n"; print "
Θέλετε βοήθεια;
\n"; print "
\n"; print "
Θέλετε βοήθεια;
\n"; &PrintFoot; } else { $Problem = "ο κωδικός ή το όνομα που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub UpdateFinal { if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { local($cushion) = 0; $UpdateFile = int($FORM{'updatenumber'}); $size = $FORM{'filesize'}; unless($size) { $size = (-s '$RootURL$size'); } $NewFile = $FORM{'filename'} . "||" . $FORM{'filepage'} . "||" . $size . "||" . $FORM{'filetype'} . "||" . $FORM{'filelink'} . "||" . $FORM{'filetext'}; open(DATA, "<$Data/files.list") || die "Δεν μπορώ να διαβάσω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); $num = @Contents; open(DATA, ">$Data/files.list") || die "Δεν μπορώ να γράψω στη λίστα των αρχείων.\n"; for($a = 0; $a < $num; $a++) { $Content = @Contents[$a]; if($a == $UpdateFile) { $cushion = 1; } else{ chop($Content); print DATA "$Content\n"; } } close(DATA); open(DATA, ">>$Data/files.list") || die "Δεν μπορώ να διαβάσω τη λίστα των αρχείων.\n"; print DATA "$NewFile\n"; close(DATA); &PrintHead; if($cushion) { print "Επιτυχής ενημέρωση
Το έγγραφο\n"; print "$FORM{'filename'} ενημερώθηκε με επιτυχία. Τώρα μπορείτε να\n"; print "επιστρέψετε στη σελίδα διαχείρισης\n"; print ", ή να μεταβείτε στη σελίδα προσπέλασης των εγγράφων.\n"; print "
\n"; &PrintFoot; } else { $Problem = "Το έγγραφο δεν ενημερώθηκε. Παρακαλώ προσπαθείστε ξανά, ή ειδοποιήστε το διαχειριστή."; &Error($Problem); } } else { $Problem = "ο κωδικος ή το όνομα (User ID) που δώσατε δεν ταιριάζουν." . "Παρακαλώ πατήστε το BACK εικονίδιο του φυλλομετρητή σας και ξαναπροσπαθήστε"; &Error($Problem); } } sub Error { $cause = @_[0]; &PrintHead; print "ΠΡΟΒΛΗΜΑ
Κάποιο πρόβλημα παρουσιάστηκε. \n"; print "Αυτό έγινε γιατί: $cause
Παρακαλώ επιστρέψτε στην προηγούμενη\n"; print "σελίδα και ξαναπροσπαθήστε, ή\n"; print "στείλτε μήνυμα στο διαχειριστή \n"; print "για να σας βοηθήσει.
Ευχαριστώ.
\n"; &PrintFoot; } sub ViewLog { &PrintHead; print "$SiteName
\n"; print "
Σελίδα Καταγραφής ΕπισκεπτώνΣτη σελίδα αυτή δίνεται κατάλογος των επισκεπτών που\n"; print "ζήτησαν πρόσβαση στα διαθέσιμα αρχεία του έργου.\n"; print "\n"; open(DATA, "<$Data/downloadlog.list") || die "Δεν μπορώ να ανοίξω το αρχείο\n"; @Contents = ; close(DATA); local($a) = 1; foreach $Content (@Contents) { @File = split(/\|\|/, $Content); $FileName = $File[0]; $UserName = $File[1]; $UserEmail = $File[2]; $Company = $File[3]; $DLDate = $File[4]; $DLTime = $File[5]; print "
\n"; $a++; } print " Αύξων αριθμός εγγραφής: $a
\n"; print "$FileName
$UserName
\n"; print "$UserEmail\n"; if($Company) {print "
Οργανισμός: $Company
\n"} print "
Η προσπέλαση έγινε στις $DLDate, $DLTime
\n"; print "
\n"; print "Αν θέλετε να διαγράψετε εγγραφές, πρέπει να το κάνετε δίνοντας\n"; print "\"Από - Έως\" εύρος των αριθμών εγγραφών που θέλετε να διαγραφούν.\n"; print "Για να διαγράψετε μια μόνο εγγραφή, απλά δώστε τον αύξοντα αριθμό της και\n"; print "στα δυο πεδία. \n"; print " \n"; print "
\n"; print "Αν είστε έτοιμος, πιέστε το κουμπί της ενημέρωσης για να προσθέσετε αυτές τις \n"; print "εγγραφές στο αρχείο καταχώρησης προσπελάσεων. Οι εγγραφές αυτές θα σβηστούν\n"; print "από τη σελίδα προσωρινής καταγραφής (log file) που βλέπετε αυτή τη στιγμή\n"; print "αλλά θα είναι διαθέσιμες μέσω του\n"; print "αρχείου καταχώρησης προσπελάσεων, εφόσον τις προσθέσετε σε αυτό.\n"; print "Για να γίνει αυτό πατήστε το αντίστοιχο κουμπί, αφού πρώτα δώσετε τα στοιχεία σας.\n"; print "\n"; print "\n"; print "
\n"; &PrintFoot; } sub ViewArchive { &PrintHead; print "$SiteName
\n"; print "
Αρχείο καταχώρησης προσπελάσεωνΣτη σελίδα αυτή εμφανίζονται όλες οι προηγούμενες προσπελάσεις\n"; print "επισκεπτών σε έγγραφα της τοποθεσίας, τα οποία έχουν καταγραφεί μέχρι τώρα.\n"; print "ΣΗΜΕΙΩΣΗ: Στο αρχείο αυτό, υπάρχουν μόνο οι εγγραφές που έχει επιλέξει ο \n"; print "διαχειριστής να αποθηκεύσει από τη σελίδα προσωρινής\n"; print "καταγραφής.\n"; &PrintFoot; } sub AddArchive { if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { &PrintHead; open(DATA, "<$Data/downloadlog.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; @Contents = ; $num = @Contents; close(DATA); open(ARCH, ">>$Data/archive.list") || die "Δεν μπορώ να ανοίξω το αρχείο καταχώρησης των προσπελάσεων.\n"; for($a = 0; $a < $num; $a++) { print ARCH "$Contents[$a]"; } close(ARCH); open(DATA, ">$Data/downloadlog.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; close(DATA); print "
\n"; open(DATA, "<$Data/archive.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); local($a) = 1; foreach $Content (@Contents) { @File = split(/\|\|/, $Content); $FileName = $File[0]; $UserName = $File[1]; $UserEmail = $File[2]; $Company = $File[3]; $DLDate = $File[4]; $DLTime = $File[5]; print " Όνομα εγγράφου Όνομα επισκέπτη "; print "E-Mail επισκέπτη Οργανισμός Ημερομηνία προσπέλασης \n"; $a++; } print " $a \n"; print "$FileName $UserName \n"; print "$UserEmail \n"; if($Company) {print "$Company \n"} else {print "\n"} print " $DLDate - $DLTime
\n"; print "Μπορείτε να καθαρίσετε το αρχείο καταχώρησης προσπελάσεων \n"; print "πατώντας το κουμπί καθαρισμού που ακολουθεί, αφού πρώτα
δώσετε\n"; print "τα στοιχεία του διαχειριστή.
\n"; print "ΣΗΜΕΙΩΣΗ: Με την ενέργεια αυτή θα χαθεί οριστικά το περιεχόμενο\n"; print "ολόκληρου του αρχείου καταχώρησης προσπελάσεων.
\n"; print "Επιτυχής ενημέρωση αρχείου προσπελάσεων
\n"; print "Το αρχείο καταγραφής προσπελάσεων ενημερώθηκε με επιτυχία.\n"; print "
H σελίδα προσωρινής καταγραφής έχει\n"; print "σβηστεί,
αλλά οι παρελθούσες προσπελάσεις υπάρχουν στο
\n"; print "αρχείο καταχώρησης προσεπλάσεων.\n"; print "
\n"; &PrintFoot; } else { $Problem = "ο κωδικός ή το όνομα διαχειριστή που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub PurgeArchive { if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { &PrintHead; open(ARCH, ">$Data/archive.list") || die "Δεν μπορώ να ανοίξω το αρχείο καταχώρησης των προσπελάσεων.\n"; close(ARCH); print "Επιτυχής καθαρισμός αρχείου καταχώρησης προσπελάσεων
\n"; print "Το αρχείο καταχώρησης προσπελάσεων καθαρίστηκε επιτυχώς.
Όλες οι εγγραφές
\n"; print "σβήστηκαν επιτυχώς.
\n"; &PrintFoot; } else { $Problem = "ο κωδικός ή το όνομα διαχειριστή που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub RemoveLog { local($FirstEntry) = int($FORM{'first'}); local($LastEntry) = int($FORM{'last'}); local($cushion) = 0; local($b) = $FirstEntry - 1; local($c) = $LastEntry - 1; if(&PassCheck($FORM{'user'}, $FORM{'pass'})) { open(DATA, "<$Data/downloadlog.list") || die "Δεν μπορώ να ανοίξω τη λίστα των αρχείων.\n"; @Contents = ; close(DATA); $num = @Contents; open(DATA, ">$Data/downloadlog.list") || die "Δεν μπορώ να διαβάσω τη λίστα των αρχείων.\n"; for($a = 0; $a < $num; $a++) { $Content = @Contents[$a]; chop($Content); if(($a < $b) || ($a > $c)) { print DATA "$Content\n"; } else {$cushion = 1} } close(DATA); if($cushion) { &PrintHead; print "Επιτυχής διαγραφή
Το αρχείο που επιλέξατε \n"; print "διαγράφηκε με επιτυχία από τη βάση. Μπορείτε τώρα να \n"; print "επιστρέψετε στη σελίδα διαχείρισης\n"; print ", να δείτε τη σελίδα των πρόσφατων\n"; print "προσπελάσεων, ή τη σελίδα προσπέλασης των εγγράφων.\n"; print "
\n"; &PrintFoot; } else { $Problem = "Η εγγραφή που επιλέξατε δεν διαγράφηκε από τη βάση."; &Error($Problem); } } else { $Problem = "ο κωδικός ή το όνομα διαχειριστή που δώσατε δεν ταιριάζουν."; &Error($Problem); } } sub PassCheck { $CheckName = @_[0]; $CheckPass = @_[1]; $Name = crypt($CheckName, NB); $Pass = crypt($CheckPass, NB); open(PASS, "<$Data/pass.list") || die "Δεν μπορώ να διαβάσω το αρχείο των κωδικών πρόσβασης.\n"; $Compare =; close(PASS); chop($Compare); ($CompareName, $ComparePass) = split(/\t/, $Compare); if(($Name eq $CompareName) && ($Pass eq $ComparePass)) { return(1); } else{return(0)} } sub PrintHead { print "\n"; print " $SiteName Προσπέλαση διαθέσιμων αρχείων \n"; print "\n"; } sub PrintFoot { print "\n"; print "Επιστροφή στη σελίδα του έργου.\n"; print "\n"; print "Η επιμέλεια των \n"; print "σελίδων έγινε από το\n"; print "Ινστιτούτο\n"; print "Τεχνολογίας Υπολογιστών
\n"; print "Για περισσότερες πληροφορίες επικοινωνήστε με τον "; print "διαχειριστή της τοποθεσίας.\n"; print "Τελευταία ενημέρωση σελίδων: Μάρτιος, 1999.\n"; print "