#!/usr/local/bin/perl #################################################################### # Copyright @ 1995-1998 University of Rochester # All Rights Reserved #################################################################### ## profRemoveTmpFiles.pl ## Remove tempory files from .../html/tmp/eps, .../html/tmp/gif use lib '/ww/webwork/gage_system/webwork/system/lib/'; # mainWeBWorKDirectory use CGI qw(:standard); use Global; use Auth; use strict; # begin Timing code use Benchmark; my $beginTime = new Benchmark; # end Timing code &CGI::ReadParse; my %inputs =%main::in; # get information from CGI inputs (see also below for additional information) my $Course = $inputs{'course'}; my $User = $inputs{'user'}; my $Session_key = $inputs{'key'}; # verify that information has been received unless($Course && $User && $Session_key) { &wwerror("$0","The script did not receive the proper input data.","",""); } # establish environment for this script &Global::getCourseEnvironment($inputs{'course'}); my $cgiURL = getWebworkCgiURL; my $databaseDirectory = getCourseDatabaseDirectory($Course); my $scriptDirectory = getWebworkScriptDirectory; my $tmpDirectory = getCourseTempDirectory($Course); require "${scriptDirectory}$Global::DBglue_pl"; require "${scriptDirectory}$Global::FILE_pl"; require "${scriptDirectory}$Global::HTMLglue_pl"; require "${scriptDirectory}$Global::SCRtools_pl"; # log access &Global::log_info('', query_string); my $permissionsFile = &Global::getCoursePermissionsFile($inputs{'course'}); my $permissions = &get_permissions($inputs{'user'}, $permissionsFile); my $keyFile = &Global::getCourseKeyFile($inputs{'course'}); #verify session key &verify_key($inputs{'user'}, $inputs{'key'}, $keyFile, $inputs{'course'}); # verify permissions are correct if ($permissions != $Global::instructor_permissions ) { print "permissions = $permissions instructor_permissions = $Global::instructor_permissions\n"; print &html_NO_PERMISSION; exit(0); } ## clean up eps, html and gif directories. my $epsDirectory = convertPath("${tmpDirectory}eps"); cleanUpDirectory($epsDirectory); my $gifDirectory = convertPath("${tmpDirectory}gif"); cleanUpDirectory($gifDirectory); my $hlDirectory = convertPath("${tmpDirectory}html"); cleanUpDirectory($hlDirectory); cleanUpDirectory($tmpDirectory); cleanUpSuccess(); exit; ## subroutines sub cleanUpDirectory { my ($directory) = @_; return 0 unless (-e $directory); my ($file, $user, %active, $name); ## We delete all files except ## those associated with active users my @activeUsers = (); my @allfiles = (); my @tmpArray = (); my @toDeleteFiles = (); opendir( DIRHANDLE, "$directory") or wwerror($0,"Can't open directory $directory",'','',''); @allfiles = grep( !/^\.\.?$/, readdir DIRHANDLE); closedir(DIRHANDLE); @activeUsers = get_active_users_from_keysDB($keyFile); foreach $user (@activeUsers) {$active{$user} =1;} foreach $file (@allfiles) { $file =~ m!(^[^-\.]*)!; ##tmp files are named e.g. apizer-123245... ## or apizer.123245... $name = $1; push @tmpArray, $file unless $active{$name}; } $directory = convertPath("$directory/"); ## add trailing / @toDeleteFiles = map "$directory$_", @tmpArray; unlink(@toDeleteFiles); 1; } sub cleanUpSuccess { print"content-type:\n\n