#!/usr/bin/perl -w $lib = "/WWW/e-log/cgi-bin"; # Default path for loading libraries require "$lib/cgi-lib.pl"; use CGI; print < SR1 Elog
Add an entry to the SR1 elog

 
Back to SR1 elog page


Add an comment:
Your name:    (without any space please)
Activity: 
Comments: 

  

END_of # Perl script for including images # if you want to restrict upload a file size (in bytes), uncomment the # next line and change the number #$CGI::POST_MAX=50000; #$|=1; ## To generate crypt encoded password, use the mcryptcgi.cgi script # The text database contains the # |separated items, namely login|encrypted password|upload path # if no path is specified, the file must be located in the cgi-bin directory. my $g_upload_db="/WWW/e-log/cgi-bin/SR1/upload.db"; # overwrite the existing file or not. Default is to overwrite # change the value to 0 if you do not want to overwrite an existing file. my $g_overwrite=1; # if you want to restrict upload to files with certain extentions, change # the value of $g_restrict_by_ext=1 and ALSO modify the @g_allowed_ext if you # want to add other allowable extensions. my $g_restrict_by_ext=0; # case insensitive, so file with Jpeg JPEG GIF gif etc will be allowed my @g_allowed_ext=("jpeg","jpg","gif","png","ps","eps"); #-------------- globals---------- STARTS ------------------ my $query=new CGI; my $g_debug=0; my $g_title="File upload"; my $g_upload_path=''; #-------------- globals---------- ENDS ------------------ # Java Script for form validation # my $JSCRIPT=<param) { &doWork(); } else { &printForm(); } ##----- # printForm() - print the HTML form ##----- # # To activate a login/password requirement for image upload, uncomment the # lines "print...." and -onClick=>"return ValidateAllFields(this.form)"),"\n"; # ## sub printForm { print "Add an image:
(if you have filled the comments area before uploading pictures, please use the back button after the upload to come back to this page.)
\n"; print "

\n"; print "\n"; print $query->start_multipart_form,"\n"; #------------- userid print "\n"; print "\n"; print "\n"; print "\n"; #------------- password print "\n"; print "\n"; print "\n"; print "\n"; #------------- upload print "\n"; print "\n"; print "\n"; print "\n"; # convert option print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; #------------- submit print "\n"; print "\n"; print "\n"; print $query->endform,"\n"; print "
\n"; # print "Userid:\n"; print "\n"; # print $query->textfield(-name=>'userid', # -size=>20); print "
\n"; # print "Password:\n"; print "\n"; # print $query->password_field(-name=>'password', # -size=>20); print "
\n"; print "Upload file:\n"; print "\n"; print $query->filefield(-name=>'upload_file', -size=>30, -maxlength=>80); print "
\n"; print "Conversion to jpg (yes or no)?\n"; print "\n"; print $query->textfield(-name=>'convertopt', -size=>4); print "
\n"; print "
\n"; print $query->submit(-label=>'Upload', -value=>'Upload', ),"\n"; # -onClick=>"return ValidateAllFields(this.form)"),"\n"; print "
\n"; print "
\n"; } ##------ # printHTMLHeader() ##------ sub printHTMLHeader { print $query->start_html( -title=>"$g_title", -script=>$JSCRIPT, -bgcolor=>"#ffffff", -link=>"#ffff00", -vlink=>"#00ffff", -alink=>"#ffff00", -text=>"#000000"); } ##------- # doWork() - upload file ##------- sub doWork { ################## my $em=''; ################## # import the paramets into a series of variables in 'q' namespace $query->import_names('q'); # check if the necessary fields are empty or not # Uncomment the next two lines in case you put a login/password for image upload: # $em .= "
You must specify your Userid!
" if !$q::userid; # $em .= "You must specify your Password!
" if !$q::password; $em .= "You must select a file to upload!
" if !$q::upload_file; &printForm(); if ($em) { &printError($em); return; } if (&validateUser() == 0) { &printError("Will not upload! Could not validate Userid: $q::userid"); return; } # if you want to restrict upload to files with certain extention if ($g_restrict_by_ext == 1) { my $file=$q::upload_file; my @ta=split('\.',$file); my $sz=scalar(@ta); if ($sz > 1) { my $ext=$ta[$sz-1]; if (! grep(/$ext/i,@g_allowed_ext)) { &printError("You are not allowed to upload this file"); return; } } else { &printError("You are not allowed to upload this file"); return; } } # now upload file &uploadFile(); if ($g_debug == 1) { my @all=$query->param; my $name; foreach $name (@all) { print "$name ->", $query->param($name),"
\n"; } } } ##------ # printError() - print error message ##------ sub printError { my $em=shift; print<
Error - $em
EOF ; } ##-- # validate login name # returns 1, if validated successfully # 0 if validation fails due to password or non existence of login # name in text database ##-- sub validateUser { my $rc=0; my ($u,$p); # Uncomment the next two lines of you want to require login/password for image upload # $u=$userid; # $p=$plain_pass; my $userid=$query->param('userid'); my $plain_pass=$query->param('password'); # open the text database unless(open(PFD,$g_upload_db)) { &printError("Could not open user database"); return; } # first check if user exist $g_upload_path=''; while () { chomp; ($u,$p,$g_upload_path)=split('\|',$_); if ($userid eq $u) { $rc=1; last; } } close(PFD); if (crypt($plain_pass,$p) ne $p) { $rc=1; } # $rc=1; return ($rc); } ##-------- # uploadFile() ##-------- sub uploadFile { my $bytes_read=0; my $size=''; my $buff=''; my $start_time; my $time_took; my $filepath=''; my $filename=''; my $write_file=''; my $convert_opt=''; $filepath=$query->param('upload_file'); if ($filepath =~ /([^\/\\]+)$/) { $filename="$1"; } else { $filename="$filepath"; } # if there's any space in the filename, get rid of them $filename =~ s/\s+//g; ## convert to jpg if needed ## $convert_opt='yes' or 'no'; $convert_opt=$query->param('convertopt'); if($convert_opt eq 'yes'){ my @filename2=split(/\./,$filename); my $filename3=@filename2[0].'.jpg'; system "convert $filename $filename3"; $filename=$filename3; } $write_file="$g_upload_path" . "/" . "$filename"; print "Filename=$filename
\n" if $g_debug; print "Writefile= $write_file
\n" if $g_debug; if ($g_overwrite == 0) { if (-e $write_file) { &printError("File $filename exists, will not overwrite!"); return; } } if (!open(WFD,">$write_file")) { &printError("Error opening file for writing. It's a permission problem. Make sure your web server has write permission to the upload directory"); return; } $start_time=time(); while ($bytes_read=read($filepath,$buff,2096)) { $size += $bytes_read; binmode WFD; print WFD $buff; } print "size= $size
\n" if $g_debug; close(WFD); if ((stat $write_file)[7] <= 0) { unlink($write_file); &printError("Could not upload file: $filename"); return; } else { $time_took=time()-$start_time; # write image file name in an intermediate file # each time you do an image upload during a given entry, the file name is added to # this intermediate file. When including the comments, this file is read out, the total # number of image uploads determined, and pictures are linked to the relevant web pages # for display (genSR1.html, etc...) my $myfilenameSR="SRinterm.html"; system "chmod 777 $myfilenameSR"; open (SRINTERFILE, ">>$myfilenameSR") or die "Can't open or create file $!"; print SRINTERFILE "$filename \n"; close(SRINTERFILE); system "cp -a $myfilenameSR ../../SR1IM_UPLOAD"; system "chmod 777 ../../SR1IM_UPLOAD/$myfilenameSR"; system "chmod 777 /WWW/e-log/SR1IM_UPLOAD/$filename"; print<
File $filename of size $size bytes is uploaded successfully!



EOF ; } }