Files correlati : Ricompilazione Demo : [ ] Commento : Modifiche di marco git-svn-id: svn://10.65.10.50/trunk@8858 c028cbd2-c16b-5b4b-a496-9718f37d4682
129 lines
3.4 KiB
Perl
Executable File
129 lines
3.4 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
# Copyright (c) 1996 Steven E. Brenner
|
|
# $Id: upload.pl,v 1.1 2000-03-02 15:26:30 luca Exp $
|
|
|
|
require 5.001;
|
|
use strict;
|
|
require "./cgi-lib.pl";
|
|
require "./HyperNews/.scripts/check_mod_user.pl";
|
|
|
|
MAIN:
|
|
{
|
|
my (%cgi_data, # The form data
|
|
%cgi_cfn, # The uploaded file(s) client-provided name(s)
|
|
%cgi_ct, # The uploaded file(s) content-type(s). These are
|
|
# set by the user's browser and may be unreliable
|
|
%cgi_sfn, # The uploaded file(s) name(s) on the server (this machine)
|
|
$ret, # Return value of the ReadParse call.
|
|
$user, # User name from environment
|
|
$course, # Course name selected from user database
|
|
$basedir, # Base directory for download (per evitare i cheats)
|
|
$fn, # File per le note dell'utente
|
|
$fl, # nome del file in locale
|
|
$xn,
|
|
$ccc,
|
|
$i1,
|
|
$i2
|
|
);
|
|
|
|
# When writing files, several options can be set..
|
|
# Spool the files to the /tmp directory
|
|
#$basedir = "../upload/";
|
|
$basedir = "../corso_";
|
|
$user = $ENV{'REMOTE_USER'};
|
|
$course = get_course($user);
|
|
$cgi_lib::writefiles = "/tmp";
|
|
|
|
|
|
$basedir = "$basedir$course/upload/";
|
|
$user = "$basedir$user";
|
|
if (!-d $user) {
|
|
mkdir $user, 0755;
|
|
}
|
|
|
|
$cgi_lib::writefiles = $user;
|
|
|
|
# Limit upload size to avoid using too much memory
|
|
$cgi_lib::maxdata = 500000;
|
|
|
|
# Start off by reading and parsing the data. Save the return value.
|
|
# Pass references to retreive the data, the filenames, and the content-type
|
|
$ret = &ReadParse(\%cgi_data,\%cgi_cfn,\%cgi_ct,\%cgi_sfn);
|
|
|
|
# A bit of error checking never hurt anyone
|
|
if (!defined $ret) {
|
|
&CgiDie("Errore in lettura parametri del CGI");
|
|
} elsif (!$ret or !defined $cgi_data{'upfile'} or !defined $cgi_data{'note'}) {
|
|
# Legge il file upload.htm dal direttorio dei servizi
|
|
# e lo restituisce così com'è
|
|
print "Content-type: text/html\n\n";
|
|
$xn = "../servizi/upload.htm";
|
|
open (FKL, $xn);
|
|
while (!eof(FKL)) {
|
|
$ccc = getc(FKL);
|
|
print $ccc;
|
|
}
|
|
close (FKL);
|
|
exit 1;
|
|
}
|
|
|
|
if ($user eq '') {
|
|
&CgiDie("Utente non autorizzato\n",
|
|
"Si prega di effettuare ancora la validazione dell'utente.\n");
|
|
}
|
|
|
|
if (!-d $basedir) {
|
|
&CgiDie("Impossibile trovare il direttorio base per l'upload\n",
|
|
"Contattare il docente.\n");
|
|
}
|
|
|
|
if ($cgi_cfn{'upfile'} eq '') {
|
|
&CgiDie("Nome file non valido\n",
|
|
"Assicurarsi di aver fornito un nome file corretto.\n");
|
|
}
|
|
|
|
$fn = ">>$user/note.txt";
|
|
open (FILE, $fn) || &CgiDie("Impossibile aprire il file delle note $fn\n");
|
|
binmode (FILE); # write files accurately
|
|
print FILE "---- Nota ----\n";
|
|
print FILE $cgi_data{'note'} ;
|
|
# print FILE "\n---- Fine nota ----\n";
|
|
print FILE "\n";
|
|
close (FILE);
|
|
|
|
$i1 = rindex($cgi_cfn{'upfile'}, "\\");
|
|
$i2 = rindex($cgi_cfn{'upfile'}, "/");
|
|
if ($i2 > $i1) {
|
|
$i1 = $i2;
|
|
}
|
|
$fl = "$user/";
|
|
if ($i1 > -1) {
|
|
$fl .= substr($cgi_cfn{'upfile'}, $i1+1);
|
|
} else {
|
|
$fl .= $cgi_cfn{'upfile'};
|
|
}
|
|
|
|
# Cambia nome
|
|
rename ($cgi_sfn{'upfile'}, $fl) ;
|
|
|
|
# Now print the page for the user to see...
|
|
print &PrintHeader;
|
|
print &HtmlTop("Invio file");
|
|
|
|
|
|
print <<EOT;
|
|
Il file <i>$cgi_cfn{'upfile'}</i> e' stato ricevuto.<br>
|
|
<b>Grazie.</b>
|
|
<hr>
|
|
EOT
|
|
|
|
print &HtmlBot;
|
|
|
|
|
|
# The following lines are solely to suppress 'only used once' warnings
|
|
$cgi_lib::writefiles = $cgi_lib::writefiles;
|
|
$cgi_lib::maxdata = $cgi_lib::maxdata;
|
|
|
|
}
|