source: main/tags/2.53/gsdl/cgi-bin/upload@ 33188

Last change on this file since 33188 was 9208, checked in by mdewsnip, 19 years ago

Changed to be executable.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1#!/usr/bin/perl -w
2
3
4use gsdlCGI;
5
6
7sub main
8{
9 my $gsdl_cgi = new gsdlCGI();
10 my $gsdlhome = $gsdl_cgi->get_config_info("gsdlhome");
11
12 my $col = $gsdl_cgi->clean_param("c");
13 if ((!defined $col) || ($col =~ m/^\s*$/)) {
14 $gsdl_cgi->generate_error("No collection name specified");
15 }
16
17 my $dir = $gsdl_cgi->clean_param("dir");
18 if ((!defined $dir) || ($dir =~ m/^\s*$/)) {
19 $gsdl_cgi->generate_error("No directory name specified");
20 }
21
22 my $delete = $gsdl_cgi->clean_param("del");
23 $delete = "all" if((!defined $delete) || ($delete eq ""));
24
25 $dir = "" if (($dir eq ".") || ($dir =~ m/^\.\./));
26
27 my $zip_content = $gsdl_cgi->clean_param("zip");
28 my $zip_fname = "$col.zip";
29
30 if ($col =~ m/^\//) {
31 # leading / at start denotes special "cols" such as "/tmp"
32 $gsdl_cgi->checked_chdir("$gsdlhome");
33 $col =~ s/^\///;
34 }
35 else {
36 $gsdl_cgi->checked_chdir("$gsdlhome/collect");
37 }
38
39 my $col_dir = "$col/$dir"; # Unix specific
40
41 if($delete eq "all") {
42 $gsdl_cgi->rm_rf($col_dir);
43 }
44 elsif($delete eq "files") {
45 `cd $gsdlhome/$col_dir ; find -not -name "metadata.xml" -exec rm {} \;`;
46 }
47 elsif($delete eq "metadata") {
48 `cd $gsdlhome/$col_dir ; find -name "metadata.xml" -exec rm {} \;`;
49 }
50
51 if (!-e $col_dir) {
52 my $mkdir_cmd = "mkdir $col_dir";
53 $gsdl_cgi->unix_cmd($mkdir_cmd);
54 }
55
56 if (open(ZOUT,"> $zip_fname")) {
57
58 my $ZIN = $gsdl_cgi->upload('zip');
59 binmode($ZIN);
60
61 my $buf;
62 my $num_bytes = 0;
63
64 while (read($ZIN,$buf,1024)>0) {
65 print ZOUT $buf;
66 $num_bytes += length($buf);
67 }
68
69 close($ZIN);
70 close(ZOUT);
71
72 `java -classpath $gsdlhome/bin/java/SignedGatherer.jar org.greenstone.gatherer.util.Unzip $gsdlhome/ $zip_fname`;
73
74 unlink "$zip_fname";
75
76 $gsdl_cgi->generate_ok_message("$dir or $col uploaded successfully.");
77 }
78 else {
79 $gsdl_cgi->generate_error("unable to open $zip_fname");
80 }
81}
82
83&main();
Note: See TracBrowser for help on using the repository browser.