--- /dev/null
+#####\r
+# FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+# Copyright (C) 2003-2007 Frederico Caldeira Knabben\r
+#\r
+# == BEGIN LICENSE ==\r
+#\r
+# Licensed under the terms of any of the following licenses at your\r
+# choice:\r
+#\r
+# - GNU General Public License Version 2 or later (the "GPL")\r
+# http://www.gnu.org/licenses/gpl.html\r
+#\r
+# - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+# http://www.gnu.org/licenses/lgpl.html\r
+#\r
+# - Mozilla Public License Version 1.1 or later (the "MPL")\r
+# http://www.mozilla.org/MPL/MPL-1.1.html\r
+#\r
+# == END LICENSE ==\r
+#\r
+# This is the File Manager Connector for Perl.\r
+#####\r
+\r
+# image data save dir\r
+$img_dir = './temp/';\r
+\r
+\r
+# File size max(unit KB)\r
+$MAX_CONTENT_SIZE = 30000;\r
+\r
+# Filelock (1=use,0=not use)\r
+$PM{'flock'} = '1';\r
+\r
+\r
+# upload Content-Type list\r
+my %UPLOAD_CONTENT_TYPE_LIST = (\r
+ 'image/(x-)?png' => 'png', # PNG image\r
+ 'image/p?jpe?g' => 'jpg', # JPEG image\r
+ 'image/gif' => 'gif', # GIF image\r
+ 'image/x-xbitmap' => 'xbm', # XBM image\r
+\r
+ 'image/(x-(MS-)?)?bmp' => 'bmp', # Windows BMP image\r
+ 'image/pict' => 'pict', # Macintosh PICT image\r
+ 'image/tiff' => 'tif', # TIFF image\r
+ 'application/pdf' => 'pdf', # PDF image\r
+ 'application/x-shockwave-flash' => 'swf', # Shockwave Flash\r
+\r
+ 'video/(x-)?msvideo' => 'avi', # Microsoft Video\r
+ 'video/quicktime' => 'mov', # QuickTime Video\r
+ 'video/mpeg' => 'mpeg', # MPEG Video\r
+ 'video/x-mpeg2' => 'mpv2', # MPEG2 Video\r
+\r
+ 'audio/(x-)?midi?' => 'mid', # MIDI Audio\r
+ 'audio/(x-)?wav' => 'wav', # WAV Audio\r
+ 'audio/basic' => 'au', # ULAW Audio\r
+ 'audio/mpeg' => 'mpga', # MPEG Audio\r
+\r
+ 'application/(x-)?zip(-compressed)?' => 'zip', # ZIP Compress\r
+\r
+ 'text/html' => 'html', # HTML\r
+ 'text/plain' => 'txt', # TEXT\r
+ '(?:application|text)/(?:rtf|richtext)' => 'rtf', # RichText\r
+\r
+ 'application/msword' => 'doc', # Microsoft Word\r
+ 'application/vnd.ms-excel' => 'xls', # Microsoft Excel\r
+\r
+ ''\r
+);\r
+\r
+# Upload is permitted.\r
+# A regular expression is possible.\r
+my %UPLOAD_EXT_LIST = (\r
+ 'png' => 'PNG image',\r
+ 'p?jpe?g|jpe|jfif|pjp' => 'JPEG image',\r
+ 'gif' => 'GIF image',\r
+ 'xbm' => 'XBM image',\r
+\r
+ 'bmp|dib|rle' => 'Windows BMP image',\r
+ 'pi?ct' => 'Macintosh PICT image',\r
+ 'tiff?' => 'TIFF image',\r
+ 'pdf' => 'PDF image',\r
+ 'swf' => 'Shockwave Flash',\r
+\r
+ 'avi' => 'Microsoft Video',\r
+ 'moo?v|qt' => 'QuickTime Video',\r
+ 'm(p(e?gv?|e|v)|1v)' => 'MPEG Video',\r
+ 'mp(v2|2v)' => 'MPEG2 Video',\r
+\r
+ 'midi?|kar|smf|rmi|mff' => 'MIDI Audio',\r
+ 'wav' => 'WAVE Audio',\r
+ 'au|snd' => 'ULAW Audio',\r
+ 'mp(e?ga|2|a|3)|abs' => 'MPEG Audio',\r
+\r
+ 'zip' => 'ZIP Compress',\r
+ 'lzh' => 'LZH Compress',\r
+ 'cab' => 'CAB Compress',\r
+\r
+ 'd?html?' => 'HTML',\r
+ 'rtf|rtx' => 'RichText',\r
+ 'txt|text' => 'Text',\r
+\r
+ ''\r
+);\r
+\r
+\r
+# sjis or euc\r
+my $CHARCODE = 'sjis';\r
+\r
+$TRANS_2BYTE_CODE = 0;\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# Form Read input\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+sub read_input\r
+{\r
+eval("use File::Copy;");\r
+eval("use File::Path;");\r
+\r
+ my ($FORM) = @_;\r
+\r
+\r
+ mkdir($img_dir,0777);\r
+ chmod(0777,$img_dir);\r
+\r
+ undef $img_data_exists;\r
+ undef @NEWFNAMES;\r
+ undef @NEWFNAME_DATA;\r
+\r
+ if($ENV{'CONTENT_LENGTH'} > 10000000 || $ENV{'CONTENT_LENGTH'} > $MAX_CONTENT_SIZE * 1024) {\r
+ &upload_error(\r
+ 'Size Error',\r
+ sprintf(\r
+ "Transmitting size is too large.MAX <strong>%d KB</strong> Now Size <strong>%d KB</strong>(<strong>%d bytes</strong> Over)",\r
+ $MAX_CONTENT_SIZE,\r
+ int($ENV{'CONTENT_LENGTH'} / 1024),\r
+ $ENV{'CONTENT_LENGTH'} - $MAX_CONTENT_SIZE * 1024\r
+ )\r
+ );\r
+ }\r
+\r
+ my $Buffer;\r
+ if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/) {\r
+ # METHOD POST only\r
+ return unless($ENV{'CONTENT_LENGTH'});\r
+\r
+ binmode(STDIN);\r
+ # STDIN A pause character is detected.'(MacIE3.0 boundary of $ENV{'CONTENT_TYPE'} cannot be trusted.)\r
+ my $Boundary = <STDIN>;\r
+ $Boundary =~ s/\x0D\x0A//;\r
+ $Boundary = quotemeta($Boundary);\r
+ while(<STDIN>) {\r
+ if(/^\s*Content-Disposition:/i) {\r
+ my($name,$ContentType,$FileName);\r
+ # form data get\r
+ if(/\bname="([^"]+)"/i || /\bname=([^\s:;]+)/i) {\r
+ $name = $1;\r
+ $name =~ tr/+/ /;\r
+ $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;\r
+ &Encode(\$name);\r
+ }\r
+ if(/\bfilename="([^"]*)"/i || /\bfilename=([^\s:;]*)/i) {\r
+ $FileName = $1 || 'unknown';\r
+ }\r
+ # head read\r
+ while(<STDIN>) {\r
+ last if(! /\w/);\r
+ if(/^\s*Content-Type:\s*"([^"]+)"/i || /^\s*Content-Type:\s*([^\s:;]+)/i) {\r
+ $ContentType = $1;\r
+ }\r
+ }\r
+ # body read\r
+ $value = "";\r
+ while(<STDIN>) {\r
+ last if(/^$Boundary/o);\r
+ $value .= $_;\r
+ };\r
+ $lastline = $_;\r
+ $value =~s /\x0D\x0A$//;\r
+ if($value ne '') {\r
+ if($FileName || $ContentType) {\r
+ $img_data_exists = 1;\r
+ (\r
+ $FileName, #\r
+ $Ext, #\r
+ $Length, #\r
+ $ImageWidth, #\r
+ $ImageHeight, #\r
+ $ContentName #\r
+ ) = &CheckContentType(\$value,$FileName,$ContentType);\r
+\r
+ $FORM{$name} = $FileName;\r
+ $new_fname = $FileName;\r
+ push(@NEWFNAME_DATA,"$FileName\t$Ext\t$Length\t$ImageWidth\t$ImageHeight\t$ContentName");\r
+\r
+ # Multi-upload correspondence\r
+ push(@NEWFNAMES,$new_fname);\r
+ open(OUT,">$img_dir/$new_fname");\r
+ binmode(OUT);\r
+ eval "flock(OUT,2);" if($PM{'flock'} == 1);\r
+ print OUT $value;\r
+ eval "flock(OUT,8);" if($PM{'flock'} == 1);\r
+ close(OUT);\r
+\r
+ } elsif($name) {\r
+ $value =~ tr/+/ /;\r
+ $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;\r
+ &Encode(\$value,'trans');\r
+ $FORM{$name} .= "\0" if(defined($FORM{$name}));\r
+ $FORM{$name} .= $value;\r
+ }\r
+ }\r
+ };\r
+ last if($lastline =~ /^$Boundary\-\-/o);\r
+ }\r
+ } elsif($ENV{'CONTENT_LENGTH'}) {\r
+ read(STDIN,$Buffer,$ENV{'CONTENT_LENGTH'});\r
+ }\r
+ foreach(split(/&/,$Buffer),split(/&/,$ENV{'QUERY_STRING'})) {\r
+ my($name, $value) = split(/=/);\r
+ $name =~ tr/+/ /;\r
+ $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;\r
+ $value =~ tr/+/ /;\r
+ $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;\r
+\r
+ &Encode(\$name);\r
+ &Encode(\$value,'trans');\r
+ $FORM{$name} .= "\0" if(defined($FORM{$name}));\r
+ $FORM{$name} .= $value;\r
+\r
+ }\r
+\r
+}\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# CheckContentType\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+sub CheckContentType\r
+{\r
+\r
+ my($DATA,$FileName,$ContentType) = @_;\r
+ my($Ext,$ImageWidth,$ImageHeight,$ContentName,$Infomation);\r
+ my $DataLength = length($$DATA);\r
+\r
+ # An unknown file type\r
+\r
+ $_ = $ContentType;\r
+ my $UnknownType = (\r
+ !$_\r
+ || /^application\/(x-)?macbinary$/i\r
+ || /^application\/applefile$/i\r
+ || /^application\/octet-stream$/i\r
+ || /^text\/plane$/i\r
+ || /^x-unknown-content-type/i\r
+ );\r
+\r
+ # MacBinary(Mac Unnecessary data are deleted.)\r
+ if($UnknownType || $ENV{'HTTP_USER_AGENT'} =~ /Macintosh|Mac_/) {\r
+ if($DataLength > 128 && !unpack("C",substr($$DATA,0,1)) && !unpack("C",substr($$DATA,74,1)) && !unpack("C",substr($$DATA,82,1)) ) {\r
+ my $MacBinary_ForkLength = unpack("N", substr($$DATA, 83, 4)); # ForkLength Get\r
+ my $MacBinary_FileName = quotemeta(substr($$DATA, 2, unpack("C",substr($$DATA, 1, 1))));\r
+ if($MacBinary_FileName && $MacBinary_ForkLength && $DataLength >= $MacBinary_ForkLength + 128\r
+ && ($FileName =~ /$MacBinary_FileName/i || substr($$DATA,102,4) eq 'mBIN')) { # DATA TOP 128byte MacBinary!!\r
+ $$DATA = substr($$DATA,128,$MacBinary_ForkLength);\r
+ my $ResourceLength = $DataLength - $MacBinary_ForkLength - 128;\r
+ $DataLength = $MacBinary_ForkLength;\r
+ }\r
+ }\r
+ }\r
+\r
+ # A file name is changed into EUC.\r
+# &jcode::convert(\$FileName,'euc',$FormCodeDefault);\r
+# &jcode::h2z_euc(\$FileName);\r
+ $FileName =~ s/^.*\\//; # Windows, Mac\r
+ $FileName =~ s/^.*\///; # UNIX\r
+ $FileName =~ s/&/&/g;\r
+ $FileName =~ s/"/"/g;\r
+ $FileName =~ s/</</g;\r
+ $FileName =~ s/>/>/g;\r
+#\r
+# if($CHARCODE ne 'euc') {\r
+# &jcode::convert(\$FileName,$CHARCODE,'euc');\r
+# }\r
+\r
+ # An extension is extracted and it changes into a small letter.\r
+ my $FileExt;\r
+ if($FileName =~ /\.(\w+)$/) {\r
+ $FileExt = $1;\r
+ $FileExt =~ tr/A-Z/a-z/;\r
+ }\r
+\r
+ # Executable file detection (ban on upload)\r
+ if($$DATA =~ /^MZ/) {\r
+ $Ext = 'exe';\r
+ }\r
+ # text\r
+ if(!$Ext && ($UnknownType || $ContentType =~ /^text\//i || $ContentType =~ /^application\/(?:rtf|richtext)$/i || $ContentType =~ /^image\/x-xbitmap$/i)\r
+ && ! $$DATA =~ /[\000-\006\177\377]/) {\r
+# $$DATA =~ s/\x0D\x0A/\n/g;\r
+# $$DATA =~ tr/\x0D\x0A/\n\n/;\r
+#\r
+# if(\r
+# $$DATA =~ /<\s*SCRIPT(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*(?:.|\n)*?\bONLOAD\s*=(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*(?:.|\n)*?\bONCLICK\s*=(?:.|\n)*?>/i\r
+# ) {\r
+# $Infomation = '(JavaScript contains)';\r
+# }\r
+# if($$DATA =~ /<\s*TABLE(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*BLINK(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*MARQUEE(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*OBJECT(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*EMBED(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*FRAME(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*APPLET(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*FORM(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*(?:.|\n)*?\bSRC\s*=(?:.|\n)*?>/i\r
+# || $$DATA =~ /<\s*(?:.|\n)*?\bDYNSRC\s*=(?:.|\n)*?>/i\r
+# ) {\r
+# $Infomation = '(the HTML tag which is not safe is included)';\r
+# }\r
+\r
+ if($FileExt =~ /^txt$/i || $FileExt =~ /^cgi$/i || $FileExt =~ /^pl$/i) { # Text File\r
+ $Ext = 'txt';\r
+ } elsif($ContentType =~ /^text\/html$/i || $FileExt =~ /html?/i || $$DATA =~ /<\s*HTML(?:.|\n)*?>/i) { # HTML File\r
+ $Ext = 'html';\r
+ } elsif($ContentType =~ /^image\/x-xbitmap$/i || $FileExt =~ /^xbm$/i) { # XBM(x-BitMap) Image\r
+ my $XbmName = $1;\r
+ my ($XbmWidth, $XbmHeight);\r
+ if($$DATA =~ /\#define\s*$XbmName\_width\s*(\d+)/i) {\r
+ $XbmWidth = $1;\r
+ }\r
+ if($$DATA =~ /\#define\s*$XbmName\_height\s*(\d+)/i) {\r
+ $XbmHeight = $1;\r
+ }\r
+ if($XbmWidth && $XbmHeight) {\r
+ $Ext = 'xbm';\r
+ $ImageWidth = $XbmWidth;\r
+ $ImageHeight = $XbmHeight;\r
+ }\r
+ } else { #\r
+ $Ext = 'txt';\r
+ }\r
+ }\r
+\r
+ # image\r
+ if(!$Ext && ($UnknownType || $ContentType =~ /^image\//i)) {\r
+ # PNG\r
+ if($$DATA =~ /^\x89PNG\x0D\x0A\x1A\x0A/) {\r
+ if(substr($$DATA, 12, 4) eq 'IHDR') {\r
+ $Ext = 'png';\r
+ ($ImageWidth, $ImageHeight) = unpack("N2", substr($$DATA, 16, 8));\r
+ }\r
+ } elsif($$DATA =~ /^GIF8(?:9|7)a/) { # GIF89a(modified), GIF89a, GIF87a\r
+ $Ext = 'gif';\r
+ ($ImageWidth, $ImageHeight) = unpack("v2", substr($$DATA, 6, 4));\r
+ } elsif($$DATA =~ /^II\x2a\x00\x08\x00\x00\x00/ || $$DATA =~ /^MM\x00\x2a\x00\x00\x00\x08/) { # TIFF\r
+ $Ext = 'tif';\r
+ } elsif($$DATA =~ /^BM/) { # BMP\r
+ $Ext = 'bmp';\r
+ } elsif($$DATA =~ /^\xFF\xD8\xFF/ || $$DATA =~ /JFIF/) { # JPEG\r
+ my $HeaderPoint = index($$DATA, "\xFF\xD8\xFF", 0);\r
+ my $Point = $HeaderPoint + 2;\r
+ while($Point < $DataLength) {\r
+ my($Maker, $MakerType, $MakerLength) = unpack("C2n",substr($$DATA,$Point,4));\r
+ if($Maker != 0xFF || $MakerType == 0xd9 || $MakerType == 0xda) {\r
+ last;\r
+ } elsif($MakerType >= 0xC0 && $MakerType <= 0xC3) {\r
+ $Ext = 'jpg';\r
+ ($ImageHeight, $ImageWidth) = unpack("n2", substr($$DATA, $Point + 5, 4));\r
+ if($HeaderPoint > 0) {\r
+ $$DATA = substr($$DATA, $HeaderPoint);\r
+ $DataLength = length($$DATA);\r
+ }\r
+ last;\r
+ } else {\r
+ $Point += $MakerLength + 2;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ # audio\r
+ if(!$Ext && ($UnknownType || $ContentType =~ /^audio\//i)) {\r
+ # MIDI Audio\r
+ if($$DATA =~ /^MThd/) {\r
+ $Ext = 'mid';\r
+ } elsif($$DATA =~ /^\x2esnd/) { # ULAW Audio\r
+ $Ext = 'au';\r
+ } elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {\r
+ my $HeaderPoint = index($$DATA, "RIFF", 0);\r
+ $_ = substr($$DATA, $HeaderPoint + 8, 8);\r
+ if(/^WAVEfmt $/) {\r
+ # WAVE\r
+ if(unpack("V",substr($$DATA, $HeaderPoint + 16, 4)) == 16) {\r
+ $Ext = 'wav';\r
+ } else { # RIFF WAVE MP3\r
+ $Ext = 'mp3';\r
+ }\r
+ } elsif(/^RMIDdata$/) { # RIFF MIDI\r
+ $Ext = 'rmi';\r
+ } elsif(/^RMP3data$/) { # RIFF MP3\r
+ $Ext = 'rmp';\r
+ }\r
+ if($ContentType =~ /^audio\//i) {\r
+ $Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';\r
+ }\r
+ }\r
+ }\r
+\r
+ # a binary file\r
+ unless ($Ext) {\r
+ # PDF image\r
+ if($$DATA =~ /^\%PDF/) {\r
+ # Picture size is not measured.\r
+ $Ext = 'pdf';\r
+ } elsif($$DATA =~ /^FWS/) { # Shockwave Flash\r
+ $Ext = 'swf';\r
+ } elsif($$DATA =~ /^RIFF/ || $$DATA =~ /^ID3/ && $$DATA =~ /RIFF/) {\r
+ my $HeaderPoint = index($$DATA, "RIFF", 0);\r
+ $_ = substr($$DATA,$HeaderPoint + 8, 8);\r
+ # AVI\r
+ if(/^AVI LIST$/) {\r
+ $Ext = 'avi';\r
+ }\r
+ if($ContentType =~ /^video\//i) {\r
+ $Infomation .= '(RIFF '. substr($$DATA, $HeaderPoint + 8, 4). ')';\r
+ }\r
+ } elsif($$DATA =~ /^PK/) { # ZIP Compress File\r
+ $Ext = 'zip';\r
+ } elsif($$DATA =~ /^MSCF/) { # CAB Compress File\r
+ $Ext = 'cab';\r
+ } elsif($$DATA =~ /^Rar\!/) { # RAR Compress File\r
+ $Ext = 'rar';\r
+ } elsif(substr($$DATA, 2, 5) =~ /^\-lh(\d+|d)\-$/) { # LHA Compress File\r
+ $Infomation .= "(lh$1)";\r
+ $Ext = 'lzh';\r
+ } elsif(substr($$DATA, 325, 25) eq "Apple Video Media Handler" || substr($$DATA, 325, 30) eq "Apple \x83\x72\x83\x66\x83\x49\x81\x45\x83\x81\x83\x66\x83\x42\x83\x41\x83\x6E\x83\x93\x83\x68\x83\x89") {\r
+ # QuickTime\r
+ $Ext = 'mov';\r
+ }\r
+ }\r
+\r
+ # Header analysis failure\r
+ unless ($Ext) {\r
+ # It will be followed if it applies for the MIME type from the browser.\r
+ foreach (keys %UPLOAD_CONTENT_TYPE_LIST) {\r
+ next unless ($_);\r
+ if($ContentType =~ /^$_$/i) {\r
+ $Ext = $UPLOAD_CONTENT_TYPE_LIST{$_};\r
+ $ContentName = &CheckContentExt($Ext);\r
+ if(\r
+ grep {$_ eq $Ext;} (\r
+ 'png',\r
+ 'gif',\r
+ 'jpg',\r
+ 'xbm',\r
+ 'tif',\r
+ 'bmp',\r
+ 'pdf',\r
+ 'swf',\r
+ 'mov',\r
+ 'zip',\r
+ 'cab',\r
+ 'lzh',\r
+ 'rar',\r
+ 'mid',\r
+ 'rmi',\r
+ 'au',\r
+ 'wav',\r
+ 'avi',\r
+ 'exe'\r
+ )\r
+ ) {\r
+ $Infomation .= ' / Header analysis failure';\r
+ }\r
+ if($Ext ne $FileExt && &CheckContentExt($FileExt) eq $ContentName) {\r
+ $Ext = $FileExt;\r
+ }\r
+ last;\r
+ }\r
+ }\r
+ # a MIME type is unknown--It judges from an extension.\r
+ unless ($Ext) {\r
+ $ContentName = &CheckContentExt($FileExt);\r
+ if($ContentName) {\r
+ $Ext = $FileExt;\r
+ $Infomation .= ' / MIME type is unknown('. $ContentType. ')';\r
+ last;\r
+ }\r
+ }\r
+ }\r
+\r
+# $ContentName = &CheckContentExt($Ext) unless($ContentName);\r
+# if($Ext && $ContentName) {\r
+# $ContentName .= $Infomation;\r
+# } else {\r
+# &upload_error(\r
+# 'Extension Error',\r
+# "$FileName A not corresponding extension ($Ext)<BR>The extension which can be responded ". join(',', sort values(%UPLOAD_EXT_LIST))\r
+# );\r
+# }\r
+\r
+# # SSI Tag Deletion\r
+# if($Ext =~ /.?html?/ && $$DATA =~ /<\!/) {\r
+# foreach (\r
+# 'config',\r
+# 'echo',\r
+# 'exec',\r
+# 'flastmod',\r
+# 'fsize',\r
+# 'include'\r
+# ) {\r
+# $$DATA =~ s/\#\s*$_/\&\#35\;$_/ig\r
+# }\r
+# }\r
+\r
+ return (\r
+ $FileName,\r
+ $Ext,\r
+ int($DataLength / 1024 + 1),\r
+ $ImageWidth,\r
+ $ImageHeight,\r
+ $ContentName\r
+ );\r
+}\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# Extension discernment\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+\r
+sub CheckContentExt\r
+{\r
+\r
+ my($Ext) = @_;\r
+ my $ContentName;\r
+ foreach (keys %UPLOAD_EXT_LIST) {\r
+ next unless ($_);\r
+ if($_ && $Ext =~ /^$_$/) {\r
+ $ContentName = $UPLOAD_EXT_LIST{$_};\r
+ last;\r
+ }\r
+ }\r
+ return $ContentName;\r
+\r
+}\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# Form decode\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+sub Encode\r
+{\r
+\r
+ my($value,$Trans) = @_;\r
+\r
+# my $FormCode = &jcode::getcode($value) || $FormCodeDefault;\r
+# $FormCodeDefault ||= $FormCode;\r
+#\r
+# if($Trans && $TRANS_2BYTE_CODE) {\r
+# if($FormCode ne 'euc') {\r
+# &jcode::convert($value, 'euc', $FormCode);\r
+# }\r
+# &jcode::tr(\r
+# $value,\r
+# "\xA3\xB0-\xA3\xB9\xA3\xC1-\xA3\xDA\xA3\xE1-\xA3\xFA",\r
+# '0-9A-Za-z'\r
+# );\r
+# if($CHARCODE ne 'euc') {\r
+# &jcode::convert($value,$CHARCODE,'euc');\r
+# }\r
+# } else {\r
+# if($CHARCODE ne $FormCode) {\r
+# &jcode::convert($value,$CHARCODE,$FormCode);\r
+# }\r
+# }\r
+# if($CHARCODE eq 'euc') {\r
+# &jcode::h2z_euc($value);\r
+# } elsif($CHARCODE eq 'sjis') {\r
+# &jcode::h2z_sjis($value);\r
+# }\r
+\r
+}\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# Error Msg\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+\r
+sub upload_error\r
+{\r
+\r
+ local($error_message) = $_[0];\r
+ local($error_message2) = $_[1];\r
+\r
+ print "Content-type: text/html\n\n";\r
+ print<<EOF;\r
+<HTML>\r
+<HEAD>\r
+<TITLE>Error Message</TITLE></HEAD>\r
+<BODY>\r
+<table border="1" cellspacing="10" cellpadding="10">\r
+ <TR bgcolor="#0000B0">\r
+ <TD bgcolor="#0000B0" NOWRAP><font size="-1" color="white"><B>Error Message</B></font></TD>\r
+ </TR>\r
+</table>\r
+<UL>\r
+<H4> $error_message </H4>\r
+$error_message2 <BR>\r
+</UL>\r
+</BODY>\r
+</HTML>\r
+EOF\r
+ &rm_tmp_uploaded_files; # Image Temporary deletion\r
+ exit;\r
+}\r
+\r
+##############################################################################\r
+# Summary\r
+#\r
+# Image Temporary deletion\r
+#\r
+# Parameters\r
+# Returns\r
+# Memo\r
+##############################################################################\r
+\r
+sub rm_tmp_uploaded_files\r
+{\r
+ if($img_data_exists == 1){\r
+ sleep 1;\r
+ foreach $fname_list(@NEWFNAMES) {\r
+ if(-e "$img_dir/$fname_list") {\r
+ unlink("$img_dir/$fname_list");\r
+ }\r
+ }\r
+ }\r
+\r
+}\r
+1;\r