source: trunk/gsdl/cgi-bin/upload@ 8202

Last change on this file since 8202 was 8096, checked in by davidb, 20 years ago

Special case code added for a collection name of "/tmp" (or any collection
name beginning with a slash). This is interpreted to mean the top level
gsdl folder, not within 'collect'.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.6 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 $dir = "" if (($dir eq ".") || ($dir =~ m/^\.\./));
23
24 my $zip_content = $gsdl_cgi->clean_param("zip");
25 my $zip_fname = "$col.zip";
26
27 if ($col =~ m/^\//) {
28 # leading / at start denotes special "cols" such as "/tmp"
29 $gsdl_cgi->checked_chdir("$gsdlhome");
30 $col =~ s/^\///;
31 }
32 else {
33 $gsdl_cgi->checked_chdir("$gsdlhome/collect");
34 }
35
36 my $col_dir = "$col/$dir"; # Unix specific
37 $gsdl_cgi->rm_rf($col_dir);
38 if (!-e $col_dir) {
39 my $mkdir_cmd = "mkdir $col_dir";
40 $gsdl_cgi->unix_cmd($mkdir_cmd);
41 }
42
43 if (open(ZOUT,"> $zip_fname")) {
44
45 my $ZIN = $gsdl_cgi->upload('zip');
46 binmode($ZIN);
47
48 my $buf;
49 my $num_bytes = 0;
50
51 while (read($ZIN,$buf,1024)>0) {
52 print ZOUT $buf;
53 $num_bytes += length($buf);
54 }
55
56 close($ZIN);
57 close(ZOUT);
58
59
60## print STDERR "**** Debug as /tmp/XXX.zip\n";
61## `cp $zip_fname /tmp/XXX.zip`;
62
63 `java -classpath $gsdlhome/bin/java/SignedGatherer.jar org.greenstone.gatherer.util.Unzip $gsdlhome/ $zip_fname`;
64
65 unlink "$zip_fname";
66
67 $gsdl_cgi->generate_ok_message("$dir or $col uploaded successfully.");
68 }
69 else {
70 $gsdl_cgi->generate_error("unable to open $zip_fname");
71 }
72}
73
74&main();
75
Note: See TracBrowser for help on using the repository browser.