X-Git-Url: http://lab.mitty.jp/git/?a=blobdiff_plain;ds=inline;f=snuploader%2Fupload.cgi;fp=snuploader%2Fupload.cgi;h=0000000000000000000000000000000000000000;hb=8333ea00a9fe608c90c20af12ea0c51548f66f4e;hp=4c5d35b2f54c863a3b528985f408265215915a24;hpb=920ad9e17feea13643c407944f9452b03bd45b6e;p=lab.git
diff --git a/snuploader/upload.cgi b/snuploader/upload.cgi
deleted file mode 100755
index 4c5d35b..0000000
--- a/snuploader/upload.cgi
+++ /dev/null
@@ -1,1079 +0,0 @@
-#!/usr/bin/perl
-use vars qw(%set %in);
-use strict;
-$set{'log_file'} = './log.cgi'; #Ot@C¼
-$set{'max_log'} = 30; #Û
-$set{'max_size'} = 1*1024; #ÅåeeÊ(KB)
-$set{'min_flag'} = 0; #ŬeʧÀðgp·é=1
-$set{'min_size'} = 100; #ŬeeÊ(KB)
-$set{'max_all_flag'} = 0; #eʧÀðgp·é=1
-$set{'max_all_size'} = 20*1024; #§ÀeÊ(KB)
-$set{'file_pre'} = 'up'; #t@CÚª«
-$set{'pagelog'} = 10; #1y[WÉ\¦·ét@C
-$set{'base_html'} = 'upload.html'; #1y[WÚÌt@C¼
-$set{'interval'} = 0; #¯êIPeÔub
-$set{'deny_host'} = ''; #eÖ~IP/HOST ,ÅæØé ex.(bbtec.net,219.119.66,ac.jp)
-$set{'admin_name'} = 'admin'; #ÇÒOCID
-$set{'admin_pass'} = '1234'; #ÇÒpX[h
-
-# Ⱥ5ÚðÄÝè·éÛÉÍPATHCfBNgÍ / ÅIíé±Æ
-# $set{'html_dir'},$set{'base_cgi'}ð ./ ÈOÉÝè·éê,
-# ܽÍDLkeyðgpµ Ȩ©ÂHTMLLbV
($set{'dummy_html'} = 2 or 3)ðgp·éêÍ
-# $set{'base_cgi'} , $set{'http_html_path'} , $set{'http_src_path'} ðtpX(http://`` or /``)ÅLq·é
-$set{'html_dir'} = './'; # àHTMLÛ¶fBNg
-$set{'src_dir'} = './src/'; # àt@CÛ¶fBNg
-$set{'base_cgi'} = './upload.cgi'; # ±ÌXNvg¼ http://`ÌwèÂ\
-$set{'http_html_path'} = './'; # htmlQÆ httpPATH http://`ÌwèÂ\
-$set{'http_src_path'} = './src/'; # fileQÆ httpPATH http://`ÌwèÂ\
-
-$set{'dlkey'} = 0; # DLKeyðgp·é=1,DLkeyK{=2
-$set{'up_ext'} = 'txt,lzh,zip,rar,gca,mpg,mp3,avi,swf,bmp,jpg,gif,png'; #Abv[hÅ«éî{g£q ¼pp¬¶ ,ÅæØé
-$set{'up_all'} = 0; #o^ÈOÌàÌàUP³¹çêéæ¤É·é=1
-$set{'ext_org'} = 0; #$set{'up_all'}ª1ÌIWiÌg£qÉ·é=1
-$set{'deny_ext'} = 'php,php3,phtml,rb,sh,bat,dll'; #eÖ~Ìg£q ¼pp¬¶ ,ÅæØé
-$set{'change_ext'} = 'cgi->txt,pl->txt,log->txt,jpeg->jpg,mpeg->mpg'; #g£qÏ· O->ã ¼pp¬¶ ,ÅæØé
-
-$set{'home_url'} = ''; #[HOME]ÌNæ ÎpXÍ http://©çnÜéâÎpX
-$set{'html_all'} = 1; #[ALL]ðo·=1
-$set{'dummy_html'} = 0; #t@CÂÊHTMLð쬷é Êít@CÌÝ=1,DLKeyÝèt@CÌÝ=2,·×Ä=3
-$set{'find_crypt'} = 1; #ûZIPðo·é=1
-$set{'binary_compare'} = 0; #ù¶t@CÆoCiär·é=1
-$set{'post_flag'} = 0; #PostKeyðgp·é=1
-$set{'post_key'} = 'postkey'; #PostKey ,ÅæØéÆ¡wè ex.(postkey1,postkey2)
-$set{'disp_error'} = 1; #[U[ÉG[ð\¦·é=1
-$set{'error_level'} = 1; #G[OðL^·é=1
-$set{'error_log'} = './error.cgi'; #G[Ot@C¼
-$set{'error_size'} = 1024; # G[OÅåeÊ(KB) §Àȵ=0
-$set{'zero_clear'} = 1; #t@Cª©Â©çÈ¢êO©çí·é=1
-
-$set{'disp_comment'} = 1; #Rgð\¦·é=1
-$set{'disp_date'} = 1; #útð\¦·é=1
-$set{'disp_size'} = 1; #TCYð\¦·é=1
-$set{'disp_mime'} = 1; #MIMETYPEð\¦·é=1
-$set{'disp_orgname'} = 1; #IWit@C¼ð\¦·é=1
-
-$set{'per_upfile'} = 0666; #Abv[ht@CÌp[~bV suexec=0604,other=0666
-$set{'per_dir'} = 0777; #\[XAbvfBNgÌp[~bV suexec=0701,other=0777
-$set{'per_logfile'} = 0666; #Ot@CÌp[~bV@suexec=0600,other=0666
-$set{'link_target'} = ''; #target®«
-
-#------
-$set{'ver'} = '2005/10/10e';
-$set{'char_delname'} = 'D';
-
-$in{'time'} = time(); $in{'date'} = conv_date($in{'time'});
-$in{'addr'} = $ENV{'REMOTE_ADDR'};
-$in{'host'} = gethostbyaddr(pack('C4',split(/\./, $in{'addr'})), 2) || $ENV{'REMOTE_HOST'} || '(none)';
-
-if($in{'addr'} eq $in{'host'}){ $in{'host'} = '(none)'; }
-
-$set{'html_head'} =<<"EOM";
-
-
-
-
-
-
-
-
-
-Uploader
-EOM
-
-$set{'html_css'} =<<"EOM";
-
-
-EOM
-
-unless(-e $set{'log_file'}){ &init; }
-unless(-e $set{'base_html'}){ &makehtml; }
-{ #fR[h
- my $readbuffsize = 1024*8;
- if ($ENV{'REQUEST_METHOD'} eq "POST" && $ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/i){
- if ($ENV{'CONTENT_LENGTH'} > ($set{'max_size'} * 1024 + 1024)){ if($ENV{'SERVER_SOFTWARE'} =~ /IIS/){ while(read(STDIN,my $buff,$readbuffsize)){} } &error(106,$ENV{'CONTENT_LENGTH'});}
- }else{
- if ($ENV{'CONTENT_LENGTH'} > 1024*100){ error(98); }
- }
- my %ck; foreach(split(/;/,$ENV{'HTTP_COOKIE'})){ my($key,$val) = split(/=/); $key =~ s/\s//g; $ck{$key} = $val;}
- my @ck = split(/<>/,$ck{'SN_USER'});
- if(length($ck[0]) < 5){
- my @salt = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/'); srand;
- my $salt = $salt[int(rand(@salt))] . $salt[int(rand(@salt))];
- $in{'user'} = crypt($in{'addr'}.$in{'time'}, $salt);
- }else{ $in{'user'} = $ck[0]; }
-
- if($ENV{'REQUEST_METHOD'} eq "POST" && $ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/i){
- my %FORM; my $subbuff; my $filename; my $valuename;
- my $upflag; my $valueflag; my $bound; my $mime;
- my $readlength = 0;
- my $random = int(rand(900000)) + 100000;
- my $endflag = 0;
- binmode(STDIN);
- while(){ $readlength += length($_); if(/(--.*)\r\n$/){ $bound = $1; last; }}
- if(-e "$set{'src_dir'}$random.temporary"){ $random++; }
- if(-e "$set{'src_dir'}$random.temporary"){ $random++; }
- if(-e "$set{'src_dir'}$random.temporary"){ &error(204); }
-
- open(OUT,">$set{'src_dir'}$random.temporary");
- binmode(OUT);
- my $formbuff;
- while(my $buff = ){
- $readlength += length($buff);
- if($upflag == 1){ if($buff =~ /Content-Type:\s(.*)\r\n$/i){ $mime = $1; } $upflag++; next;}
- if($upflag == 2){
- while(1){
- my $readblen; my $filebuff;
- if($ENV{'CONTENT_LENGTH'} - $readlength < $readbuffsize){ $readblen = $ENV{'CONTENT_LENGTH'} - $readlength; }
- else{ $readblen = $readbuffsize; }
- if(!read(STDIN,$filebuff,$readblen)){ last };
- $readlength += length($filebuff);
- if($ENV{'CONTENT_LENGTH'} - $readlength < $readbuffsize){
- my $readblen = $ENV{'CONTENT_LENGTH'} - $readlength;
- read(STDIN,my $subbuff,$readblen);
- $readlength += length($subbuff);
- $filebuff .= $subbuff;
- $endflag = 1;
- }
- my $offset = index($filebuff,$bound);
- if($offset >= 0){
- $buff = substr($filebuff,0,$offset-2); my $subbuff = substr($filebuff,$offset);
- print OUT $buff; $upflag = 0; $formbuff .= $subbuff; last;
- }else{ print OUT $filebuff; }
- }
- if($endflag){ last; }
- next;
- }
- if($buff =~ /^Content-Disposition:\sform-data;\sname=\"upfile\";\sfilename=\"(.*)\"\r\n$/i){
- $filename = $1; $upflag = 1; next;
- }
- $formbuff .= $buff;
- }
- close(OUT);
- chmod($set{'per_upfile'},"$set{'src_dir'}$random.temporary");
- { my $value;
- foreach my $buff(split(/\r\n/,$formbuff)){
- $buff .= "\r\n";
- if($buff =~ /^$bound\-\-/){ $FORM{$value} =~ s/\r\n$//; $valueflag = 0; last;}
- if($buff =~ /^$bound/){ $FORM{$value} =~ s/\r\n$//; $valueflag = 0; next;}
- if($valueflag == 1){ $valueflag++; next; }
- if($valueflag == 2){ $FORM{$value} .= $buff; }
- if($buff =~ /^Content-Disposition: form-data; name=\"(.+)\"\r\n$/){ $value = $1; $valueflag++; }
- }
- }
- if($upflag || $valueflag){ unlink("$set{'src_dir'}$random.temporary"); &error(108);}
-
- $in{'postname'} = $FORM{'postname'};
- $in{'org_pass'} = $in{'pass'} = $FORM{'pass'};
- $in{'dlkey'} = $FORM{'dlkey'};
- $in{'comment'} = $FORM{'comment'};
- $in{'jcode'} = $FORM{'jcode'};
- $in{'postkey'} = $FORM{'postkey'};
- $in{'upfile'} = $filename;
- $in{'type'} = $mime;
- $in{'tmpfile'} = "$set{'src_dir'}$random.temporary";
- $in{'orgname'} = $in{'upfile'};
- if(-s "$in{'tmpfile'}" == 0){ unlink("$in{'tmpfile'}"); &error(99) }
- if($set{'min_flag'} && ((-s "$in{'tmpfile'}") < $set{'min_size'} * 1024)){ &error(107,(-s "$in{'tmpfile'}"));}
- if((-s "$in{'tmpfile'}") > $set{'max_size'} * 1024){ &error(106,(-s "$in{'tmpfile'}"));}
- if($set{'post_flag'} && !check_postkey($in{'postkey'})){ &error(109); }
- if($set{'dlkey'} == 2 && !$in{'dlkey'}){ unlink("$in{'tmpfile'}"); &error(61); }
- }else{
- my ($buffer,%FORM,@admin_delno);
- if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});}
- else { $buffer = $ENV{'QUERY_STRING'}; }
- my @pairs = split(/&/,$buffer);
- foreach my $pair (@pairs) {
- my ($name, $value) = split(/=/, $pair);
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- if($name eq 'admin_delno'){
- push(@admin_delno,$value);
- }else{
- $FORM{$name} = $value;
- }
- }
- $in{'delpass'} = $FORM{'delpass'};
- $in{'delno'} = $FORM{'delno'};
- $in{'file'} = $FORM{'file'};
- $in{'dlkey'} = $FORM{'dlkey'};
- $in{'mode'} = $FORM{'mode'};
- $in{'checkmode'} = $FORM{'checkmode'};
- $in{'admin_delno'} = join(',',@admin_delno);
- if($in{'delno'} eq $set{'admin_name'} && $in{'delpass'} eq $set{'admin_pass'}){ &admin_mode(); }
- if(!$in{'delno'} && $in{'delpass'} eq $set{'admin_pass'}){ &makehtml; &quit; }
- }
-
- my @denyhost = split(/,/,$set{'deny_host'});
- foreach my $value (@denyhost){
- if ($in{'addr'} =~ /$value/ || $in{'host'} =~ /$value/){ &error(101);}
- }
-
- my @form = ($in{'postname'},$in{'comment'},$in{'orgname'},$in{'type'},$in{'dlkey'});
- foreach my $value (@form) {
- if (length($value) > 128) { $value = substr($value,0,128).'...'; }
-# $value =~ s/&/&/g;
- $value =~ s/"/"/g;
- $value =~ s/</g;
- $value =~ s/>/>/g;
- $value =~ s/\r//g;
- $value =~ s/\n//g;
- $value =~ s/\t//g;
- $value =~ s/\0//g;
- }
- ($in{'postname'},$in{'comment'},$in{'orgname'},$in{'type'},$in{'dlkey'}) = @form;
-}
-
-
-if($in{'mode'} eq 'delete'){ &delete(); &quit(); }
-if($in{'mode'} eq 'dl'){ &dlfile;} #DL
-if(!$in{'upfile'}){ &error(99); }
-
-{#C
-
- open(IN,$set{'log_file'})||&error(303);
- my @log = ;
- close(IN);
- my ($no,$lastip,$lasttime) = split(/<>/,$log[0]);
-
- if($set{'interval'} && $in{'time'} <= ($lasttime + $set{'interval'}) && $in{'addr'} eq $lastip){ &error(203);}
- $in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'}){ &error(202); }
-
- my $orgname;
- if(split(/\//,$in{'orgname'}) > split(/\\/,$in{'orgname'})){ my @name = split(/\//,$in{'orgname'}); $orgname = $name[$#name]; }
- else{ my @name = split(/\\/,$in{'orgname'}); $orgname = $name[$#name];}
-
- my @salt = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
- srand;
- my $salt = $salt[int(rand(@salt))] . $salt[int(rand(@salt))];
- $in{'pass'} = crypt($in{'pass'}, $salt);
-
- if($set{'binary_compare'}){
- my @files = globfile("$set{'src_dir'}",".*");
- my @dir = globdir("$set{'src_dir'}",".*");
- foreach my $dir (@dir){ push(@files,globfile($dir."/",".*")); }
- foreach my $value (@files){
- next if($value =~ /\.temporary$/);
- if(binarycmp($in{'tmpfile'},$value)){ unlink($in{'tmpfile'}); &error(205,$value);}
- }
- }
-
- if($set{'find_crypt'}){
- open(FILE,$in{'tmpfile'}); binmode(FILE); seek(FILE,0,0); read(FILE,my $buff,4); my $crypt_flag = 0;
- if($buff =~ /^\x50\x4b\x03\x04$/){ seek(FILE,6,0); read(FILE,my $buff,1); $crypt_flag = 1 if(($buff & "\x01") eq "\x01"); }
- close(FILE);
- $in{'comment'} = '*'.$in{'comment'} if($crypt_flag);
- }
-
- open(IN,$set{'log_file'})||&error(303);
- @log = ;
- close(IN);
- ($no,$lastip,$lasttime) = split(/<>/,$log[0]);
- shift(@log);
- $no++;
- my $tmpno = sprintf("%04d",$no);
-
- my $dlsalt;
- my $filedir;
- my $allsize = (-s $in{'tmpfile'});
-
- if($set{'dlkey'} && $in{'dlkey'}){
- my @salt = ('a'..'z', 'A'..'Z', '0'..'9'); srand;
- for (my $c = 1; $c <= 20; ++$c) { $dlsalt .= $salt[int(rand(@salt))]; }
- $filedir = "$set{'src_dir'}$set{'file_pre'}${tmpno}.$in{'ext'}_$dlsalt/";
- mkdir($filedir,$set{'per_dir'});
- rename("$in{'tmpfile'}","$filedir$set{'file_pre'}$tmpno.$in{'ext'}");
- open(OUT,">${filedir}index.html");
- close(OUT);
- chmod($set{'per_upfile'},"${filedir}index.html");
- $in{'comment'} = '[DLKey] '.$in{'comment'};
- }else{
- undef $in{'dlkey'};
- rename("$in{'tmpfile'}","$set{'src_dir'}$set{'file_pre'}$tmpno.$in{'ext'}");
- }
-
- if (length($orgname) > 128) { $orgname = substr($orgname,0,128).'...'; }
-
- my @note;
- if($set{'post_flag'} && $set{'post_key'}){
- push(@note,'PostKey:'.$in{'postkey'});
- }
- if($ENV{'SERVER_SOFTWARE'} =~ /Apache|IIS/){
- my $disptime;
- my $time = time() - $in{'time'};
- my @str = ('Upload:','b');
- my $disptime = $time.$str[1];
- push(@note,$str[0].$disptime);
- }
- if($in{'dlkey'}){
- my @salt = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/'); srand;
- my $salt = $salt[int(rand(@salt))] . $salt[int(rand(@salt))];
- my $crypt_dlkey = crypt($in{'dlkey'}, $salt);
- push(@note,"DLKey");
- }
- my $note = join(',',@note);
- my $usersalt = substr($in{'user'},0,2);
- my $userid = crypt($in{'user'},$usersalt);
- $in{'time'} = time();
-# $in{'date'} = conv_date(time());
- my @new;
- $new[0] = "$no<>$in{'addr'}<>$in{'time'}<>1\n";
- my $addlog = "$no<>$in{'postname'}<>$in{'ext'}<>$in{'date'}<>$in{'comment'}<>$in{'type'}<>$orgname<>$in{'addr'}<>$in{'host'}<>$in{'pass'},$userid<>$set{'file_pre'}<>$note<>1\n";
- $new[1] = $addlog;
-
-# open(OUT,">>./alllog.cgi"); print OUT $addlog; close(OUT);
-
- my $i = 2;
-
- foreach my $value (@log){
- my ($no,$postname,$ext,$date,$comment,$mime,$orgname,$addr,$host,$pass,$filepre,$note,$dummy) = split(/<>/,$value);
- if(!$dummy){ $filepre = $set{'file_pre'};}
- $no = sprintf("%04d",$no);
-
- my $filename;
- my $filedir;
- if($note =~ /DLpath:(.+)\s/){
- my $dlpath = $1;
- $filename = "$set{'src_dir'}$filepre$no.${ext}_$dlpath/$filepre$no.$ext";
- $filedir = "$set{'src_dir'}$filepre$no.${ext}_$dlpath/";
- }else{
- $filename = "$set{'src_dir'}$filepre$no.$ext";
- }
- $allsize += (-s $filename);
-
- if($i <= $set{'max_log'} && !($set{'max_all_flag'} && $set{'max_all_size'}*1024 < $allsize)){
- if((-e $filename)||!$set{'zero_clear'}){ push(@new,$value); $i++; }
- }else{
- if(unlink($filename)){
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } } rmdir($filedir);
- }elsif(unlink($filename)){
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } } rmdir($filedir);
- }elsif(-e $filename){
- push(@new,$value);
- }else{
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } } rmdir($filedir);
- }
- }
- }
- logwrite(@new);
- if($in{'dlkey'} && ( $set{'dummy_html'} == 2 || $set{'dummy_html'} == 3)){
- &makedummyhtml("$set{'file_pre'}$tmpno.$in{'ext'}",$in{'comment'},"$set{'file_pre'}$tmpno.$in{'ext'}",$dlsalt,$in{'date'},$in{'type'},$orgname,$no);
- }elsif(!$in{'dlkey'} && ($set{'dummy_html'} == 1 || $set{'dummy_html'} == 3)){
- &makedummyhtml("$set{'file_pre'}$tmpno.$in{'ext'}");
- }
- &makehtml(); &quit();
-}
-
-sub makehtml{
-
- my ($buff,$init,$postval,$dlkey);
- my $page = 0; my $i = 1;
-
- open(IN,$set{'log_file'})||&error(303);
- my $log = my @log = ;
- close(IN);
-
- if($log == 1){ $log++; $init++;}
- my $lastpage = int(($log - 2)/$set{'pagelog'}) + 1;
- $postval = ' obj.postkey.value = unescape(p[2]);' if($set{'post_flag'});
- my $header =<<"EOM";
-$set{'html_head'}
-
-$set{'html_css'}
-
-
-
-Now.. Testing..
-
-EOM
- my $maxsize = 'Max '.dispsize($set{'max_size'}*1024);
- my ($minsize,$total);
- if($set{'min_flag'}){ $minsize = 'Min '.dispsize($set{'min_size'}*1024).' - '; }
- if($set{'max_all_flag'}){ $total .= ' Total '.dispsize($set{'max_all_size'}*1024);}
- $header .= qq|';
-
- my $allsize = 0;
- my @files = globfile("$set{'src_dir'}",".*");
- my @dir = globdir("$set{'src_dir'}",".*");
- foreach my $dir (@dir){ push(@files,globfile($dir."/",".*")); }
- foreach my $value (@files){ $allsize += (-s "$value"); }
-
- $allsize = dispsize($allsize);
-
- my $footer = "
Used ${allsize}\n
";
- if($set{'up_all'} && !$set{'ext_org'}){ $footer .= $set{'up_ext'}.' +'; }
- elsif(!$set{'up_all'}){ $footer .= $set{'up_ext'}; }
- $footer .= "\n\n\n";
-
- my $info_title = "\n | NAME | FILE | ";
- if($set{'disp_comment'}){ $info_title .= "COMMENT | "; } if($set{'disp_size'}){ $info_title .= "SIZE | "; } if($set{'disp_date'}){ $info_title .= "DATE | "; }
- if($set{'disp_mime'}){ $info_title .= "MIME | "; } if($set{'disp_orgname'}){ $info_title .= "ORIG | "; }
- $info_title .= "
\n";
-
- my $home_url_link;
- if($set{'home_url'}){ $home_url_link = qq|[HOME] |;}
- if($set{'html_all'}){
- my $buff; my $no = 1; my $time = time; my $subheader;
- foreach my $value (@log){
- my ($no,$postname,$ext,$date,$comment,$mime,$orgname,$addr,$host,$pass,$dummy) = split(/<>/,$value);
- if(!$dummy){ next; }
- $buff .= makeitem($value);
- }
- $subheader .= "[ALL] ";
- while($no <= $lastpage){
- if($no == $page) { $subheader .= "\[$no\] ";}
- else{ if($no == 1){ $subheader .= "\[$no\] "}
- else{$subheader .= "\[$no\] ";} }
- $no++;
- }
- $subheader .= $info_title;
- open(OUT,">$set{'html_dir'}all.html")||&error(306,"$set{'html_dir'}all.html");
- print OUT $header."
".$home_url_link.$subheader."
".$buff.$footer;
- close(OUT);
- chmod($set{'per_upfile'},"$set{'html_dir'}all.html");
- }else{ unlink("$set{'html_dir'}all.html"); }
-
- while($log > $i){
- $buff .= makeitem($log[$i]) unless($init);
- if(($i % $set{'pagelog'}) == 0||$i == $log -1){
- $page++; my $subheader; my $no = 1; my $time = time;
- if($set{'html_all'}){ $subheader .= "[ALL] "; }
- while($no <= $lastpage){
- if($no == $page) { $subheader .= "\[$no\] ";}
- else{ if($no == 1){ $subheader .= "\[$no\] "}
- else{$subheader .= "\[$no\] ";}
- }
- $no++;
- }
- $subheader .= $info_title;
- my $loghtml;
- if($page == 1){ $loghtml = "$set{'html_dir'}$set{'base_html'}"; }
- else{ $loghtml = "$set{'html_dir'}$page.html"; }
-
- open(OUT,">$loghtml") || &error(306,"$loghtml");
- print OUT $header."
".$home_url_link.$subheader."
".$buff.$footer;
- close(OUT);
- chmod($set{'per_upfile'},$loghtml);
- undef $buff;
- }
- $i++;
- }
-
- while($page < 1000){
- $page ++;
- if(-e "$set{'html_dir'}$page.html"){ unlink("$set{'html_dir'}$page.html"); }else{ last; }
- }
-}
-
-sub delete{
- my $mode = $_[0];
- my @delno = split(/,/,$_[1]);
- my $delno; my $flag = 0; my $tmpaddr;
- my $delnote;
-
- if($in{'delno'} =~ /(\d+)/){ $delno = $1; }
- if($mode ne 'admin' && !$in{'delno'}){ return; }
- elsif($mode ne 'admin' && !$delno){ &error(401,$in{'delno'}); }
-
- open(IN,$set{'log_file'})|| &error(303);
- my @log = ;
- close(IN);
-
- if($in{'addr'} =~ /(\d+).(\d+).(\d+).(\d+)/){ $tmpaddr = "$1.$2.$3."; }
- my $findflag = 0;
- foreach my $value (@log){
- my ($no,$postname,$ext,$date,$comment,$mime,$orgname,$addr,$host,$pass,$filepre,$note,$dummy) = split(/<>/,$value);
- $delnote = $note;
- my $delflag = 0;
- if(!$addr){ next; }
- if($mode eq 'admin'){
- foreach my $delno (@delno){ if($no == $delno){ $delflag = 1; last; } }
- }elsif($no == $delno){
- $findflag = 1;
- unless ($addr =~ /^$tmpaddr/){
- my ($pass,$id) = split(/,/,$pass);
- my $delpass = $in{'delpass'} || $in{'addr'}.time();
- my $salt = substr($pass, 0, 2); $delpass = crypt($delpass,$salt);
- my $usersalt = substr($in{'user'},0,2); my $userid = crypt($in{'user'},$usersalt);
- if ($in{'delpass'} ne $set{'admin_pass'} && $delpass ne $pass && $userid ne $id){
- if($mode ne 'admin'){ if(!$dummy){ $filepre = $set{'file_pre'};} $no = sprintf("%04d",$no); &error(404,"$filepre$no.$ext");}
- }
- }
- $delflag = 1;
- }
- if($delflag){
-# open(OUT,">>./del.cgi"); print OUT $value; close(OUT);
- $flag = 1;
- if(!$dummy){ $filepre = $set{'file_pre'};}
- $no = sprintf("%04d",$no);
- my $filename;
- my ($dlpath,$filedir);
- if($delnote =~ /DLpath:(.+)\s/){
- $dlpath = $1;
- $filename = "$set{'src_dir'}$filepre$no.${ext}_$dlpath/$filepre$no.$ext";
- $filedir = "$set{'src_dir'}$filepre$no.${ext}_$dlpath/";
- }else{
- $filename = "$set{'src_dir'}$filepre$no.$ext";
- }
-
- if(unlink($filename)){
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } rmdir($filedir);} undef $value;
- }elsif(unlink($filename)){
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } rmdir($filedir);} undef $value;
- }elsif(!(-e $filename)){
- unlink("$set{'src_dir'}$filepre$no.$ext.html"); if($filedir){ foreach(globfile($filedir,".*")){ unlink; } rmdir($filedir);} undef $value;
- }else{
- if($mode ne 'admin'){ &error(403,"$filepre$no.$ext");}
- }
- }
- }
- if($mode ne 'admin' && !$findflag){ &error(402,$delno); }
- if($flag){
- logwrite(@log);
- &makehtml();
- }
-}
-
-
-sub quit{
- my ($cookiename,$buff);
- my $flag = 0;
- my @tmpfiles = globfile("$set{'src_dir'}","\.temporary");
- foreach my $value (@tmpfiles){ if((stat($value))[10] < time - 60*60){ unlink("$value"); $flag++; } }
- &makehtml() if($flag);
- $buff =<<"EOM";
-$set{'html_head'}
-EOM
- if($in{'jcode'} || $in{'mode'} eq 'delete'){
- $buff .=<<"EOM";
-
-
-\n|;
- }
- $buff .=<<"EOM";
-
-
-