#!/usr/local/bin/perl
#script: upload.pl


#<TITLE>upload.pl</TITLE>
#<META name="description" content="A perl upload script.">
#<META name="icon" content="/~jipp/melk/perlt.jpg,66,38">
#
#from
#http://www.modperl.com/perl_conference/handout.html#File_Uploads
#Cute Tricks with Perl and Apache.
#changed by: pip@dds.nl









package upload;      
use vars qw($dyndns);

use CGI qw/:standard/;
use strict;

$dyndns="kwark.penguinpowered.com";
$|=1;$:=1;      



if (param('rss')){
    print header;
    print rssls("/www/incoming/");
}else{

print header;
print <<GROK;

<html>
  <head>
    <meta name="category" content="" />
    <meta name="description" content="" />
    <meta name="begun" content="" />
    <title>Kwark eet</title>
    <link href="pip" rev="made" />
    <meta href="http://purl.org/metadata/dublin_core" rel="SCHEMA.dc" />
    <meta name="DC.TITLE" content="Kwark eet" />
    <meta name="DC.AUTHOR" content="Jip de Kort,pip\@dds.nl" />
    <meta name="DC.IDENTIFIER" content="/net/kwark/" />
    <meta name="DC.DATE" content="January 2000" />
    <meta name="DC.PUBLISHER" content="Kwark inc." />
    <link rel="stylesheet" href="/css/kwark.css" type="text/css">

  </head>
  <body>

<table class="w" width="100%" cellspacing="0" cellpadding="0">  
 <tr class="wr">
 <td>
 <span class="title">
<a href="http://$dyndns/">Kwark</a>
    &gt;
<a  href="/x/upload.pl">upload</a>



 </span>
</td>
 <td class="wm" align="right">




 <a href="http://kwark.penguinpowered.com:8080/">Z</a>
</td>
</tr>
</table>






<div class="main">
GROK



print_form()    unless param;
print_results() if param;

print br,br;

saverss();

#print `/www/bin/rss2html.pl /www/XML/rss/kwark.incoming.rss`;


&lsfiles;
print <<GROK;


</div>
<br clear="all">
<a href="mailto:pip\@dds.nl">pip\@dds.nl</a>
changed
<a href="/bin/x/upload.pl">upload.pl</a>
from 
<a href="http://www.modperl.com/perl_conference/handout.html#File_Uploads">Cute Tricks with Perl and Apache.</a>
GROK
print end_html;
      
}


#-------------------------------------------



sub print_form {
    
    print <<GROK;
<br>
<table class="fbox"><tr><td>
<FORM METHOD="POST"  
 ENCTYPE="multipart/form-data"
 action="/x/upload.pl"
>
 <fieldset><legend>
  Upload a file to kwark
 </legend>
 <br>
  <INPUT TYPE="file" 
    NAME="upload" VALUE="/fire/tmp/moz.html"
    size="15"
  >

  <input type="submit" value="Submit">
  </fieldset>
</FORM>
</td></tr></table>
GROK


#    print start_multipart_form(),
#             filefield(-name=>'upload',-size=>60),br,
#    filefield(-name=>'upload',
#	      -value=>'/fire/tmp/moz.html'),
#    br,
    
#    submit(-label=>'Upload File'),
#    end_form;
}

sub print_results {
    my $length;
    my $file = param('upload');
    my $mime= uploadInfo($file)->{'Content-Type'}||"unknown" if $file;
    my $content;
    if (!$file) {
	print "No filename, try again.<br>\n";
	&print_form;
	return;
    }
    print p('File name: ', $file);
    
    print p('File MIME type: ',$mime);
    while (<$file>) {
	my $i=$_;
	$length += length($i);
	$content .= $i;
	
    }
    if (!$length){
	print "Zere length file uploaded,try again.<br>\n";
	&print_form;
	return;
    }
    print p('File length: ',$length);
    print &savefile($file,$content);
}

sub savefile{
    my ($file,$content)=@_;
    print "Saving $file\n";
    $file="/www/incoming/".$file;
    while ( -r $file){
	my ($d)=$file =~ m!\.(\d+)$!;
	$file =~ s/\.$d$//;
	$d++;
	$file .= ".$d";
	print "<br>file already exists, trying $file\n";
    }
    open (FILE, ">$file") || return "Can't open $file" ;
    print FILE $content;
    close(FILE);
    return " done.<br>\n";
    
}



sub saverss{
    my $dir = "/www/incoming";
    open(FILE,">/www/XML/rss/kwark.incoming.rss");
    my $c=rssls($dir);
    print FILE $c;
    close FILE;
}


sub rssls{
    my ($dir)=@_;
    my ($limit)=param('rss');
    my ($li);
    $limit=15 unless $limit;
    my @ls=`ls -l1t $dir`;
    chop(@ls);
    splice(@ls, $limit) if ($limit);
    foreach my $i (@ls){
	$li .= <<GROK;
 <item>
  <title>$i</title>
  <link>http://$dyndns/incoming/$i</link>
 </item>
GROK
}
    unless($li){
	$li= <<GROK;
 <item>
  <title>No files, click to upload.</title>
   <link>http://$dyndns/x/upload.pl</link>
 </item> 
GROK
}
    return <<GROK;
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
             "http://my.netscape.com/publish/formats/rss-0.91.dtd">

 <rss version="0.91">


    <channel>
      <title>Kwark incoming</title>
      <link>http://$dyndns/x/upload.pl</link>
      <description>15 latest imcoming</description>
     <language>en-us</language> 

$li

 </channel>
</rss>
GROK
}




sub lsfiles{
    my $dir="/www/incoming/";
    my @ls=`ls -l1t $dir`;
    chop(@ls);
    my $li='<ul class="rssul">'."\n";
    foreach my $i (@ls){
	$li .= <<GROK;
	<li class="rssli">
	  <a href="/incoming/$i">$i</a>
	</li>
GROK
}	
    $li.="</ul>\n";
    print <<GROK;
<table class="rsstable">
<tr><td>
<h3 class="rsstitle">
<a href="/incoming/?M=D">Listing of $dir</a>
</h3>

$li

</td></tr></table>
GROK

}



















