$max_upload = 1024 * 1024 * 1024 * 1; $file_location='/var/www/vhosts/somedomain.com/httpsdocs/content'; use CGI; use DBI; use Fcntl qw(:DEFAULT :flock); use File::Temp qw/ tempfile tempdir /; # This subroutine handles exiting with an error message. $error_file = "$file_location/tmp_err"; sub UploadFailure { $mes = shift; # Try to open error file to output message to $err_ok = open (ERRFILE,">", $error_file); if($err_ok) { print ERRFILE "$mes\n"; print ERRFILE "post_data_file: $post_data_file\nmonitor_file: $monitor_file\n"; close (ERRFILE); } # clear out the previous files if they exist if (-e "$post_data_file") { unlink("$post_data_file"); } print "$mes\n"; exit; } print "Content-type: text/html\n\n"; print "
"; # Get the ClientID from the Query String @qstring=split(/&/,$ENV{'QUERY_STRING'}); @p1 = split(/=/,$qstring[0]); $ClientID = $p1[1]; $ClientID =~ s/[^0-9]//g; if($ClientID !~ /^[0-9]+$/ ) {&UploadFailure("Invalid ID");} $error_file = "$file_location/$ClientID/tmp_err"; $post_data_file = "$file_location/$ClientID/"."tmp_postdata"; $monitor_file = "$file_location/$ClientID/"."tmp_flength"; #$signal_file = "$file_location/$ClientID/"."tmp_signal"; #$qstring_file = "$file_location/$ClientID/"."tmp_qstring"; print "ClientID: $ClientID"; # Connect to the database $dbase = "XXXXX"; $dbuser = "XXXXX"; $dbpass = "XXXXX"; $host='localhost'; $drh = DBI ->install_driver('mysql'); $dbh = $drh->connect("$dbase:$host", $dbuser, $dbpass); # Test Connection &UploadFailure("Cannot Connect to Database") unless $dbh; $query='SELECT Clients.ID,ClientPackages.StorageSpace,ClientPackages.MaxFileSize FROM Clients INNER JOIN ClientPackages ON Clients.ClientPackagesID=ClientPackages.ID WHERE Clients.ID='.$ClientID.' AND Clients.Status="Active"'; $ClientQuery = $dbh->prepare($query); $ClientFound = $ClientQuery->execute; if($ClientFound<1) {&UploadFailure("Invalid Client ID");} ($ID,$MaxSpace,$MaxSize) = $ClientQuery->fetchrow_array; $MaxSpace*=1024 * 1024; $MaxSize*=1024*1024; # calculate how much space is currently being used $TmpFile=$file_location.'/'.$ClientID.'/disk_use.txt'; $command='/usr/bin/du -sb ' . $file_location.'/'.$ClientID.' > '.$TmpFile; system $command; open(FILEIN, "<$TmpFile") or die "Could not open $TmpFile\n"; $UsedSpace=0; while (