@Ghazascanner
_2019runbot
Ghazascanner File Manager
server :Linux phosweb011 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
Current Path :
/
homepage
/
cgi-bin
/
mailplus
/
Path :
Upload File :
New :
File
Dir
/homepage/cgi-bin/mailplus/mail.cgi
#!/usr/local/bin/perl #Web Mail Plus Ver 1.06 (2009/04/07) # #Copyright(C) 2002-2009 Knight, All rights reserved. #Mail ... support@web-liberty.net #Home ... http://www.web-liberty.net/ #――――― 初期処理 ―――――――――――――――――――――――― package main; use strict; use lib qw(./lib); use webliberty::Basis; use webliberty::Parser; use webliberty::String; use webliberty::File; use webliberty::Host; use webliberty::Skin; use webliberty::Sendmail; require './init.cgi'; #――――― メイン処理 ――――――――――――――――――――――― my $init = &init::get_init; my $basis_ins = new webliberty::Basis; my $parser_ins = new webliberty::Parser(jcode => $init->{jcode_mode}); my $agent; if ($init->{mobile_mode} and $ENV{'HTTP_USER_AGENT'} =~ /(DoCoMo|SoftBank|Vodafone|J-PHONE|KDDI-|UP\.Browser|DDIPOCKET|WILLCOM)/i) { require Jcode; $agent = 'mobile'; } if ($parser_ins->get_query('system_mode') eq 'preview') { ✓ &preview; } elsif ($parser_ins->get_query('system_mode') eq 'send') { ✓ &complete; } else { &form; } exit; #――――― サブルーチン ―――――――――――――――――――――― ### 入力画面 sub form { my $method; if ($ENV{'HTTP_USER_AGENT'} =~ /(J-PHONE|KDDI-|UP\.Browser)/i) { $method = 'get'; } else { $method = 'post'; } my $skin_ins = new webliberty::Skin; if ($agent eq 'mobile') { $skin_ins->parse_skin($init->{skin_mobile_form}); } else { $skin_ins->parse_skin($init->{skin_form}); } $skin_ins->replace_skin( INFO_METHOD => $method, INFO_BACK => $init->{back_url} ); if ($agent eq 'mobile') { my($data, $length) = &get_mobile_data($skin_ins->get_data('_all')); print "Content-Type: text/html; charset=Shift_JIS\n"; if ($ENV{'HTTP_USER_AGENT'} =~ /KDDI-|UP\.Browser/i) { print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n\n"; } else { print "Content-Length: $length\n\n"; } print $data; } else { print $basis_ins->header; print $skin_ins->get_data('_all'); } } ### 入力内容チェック sub check { my($subject, $name, $mail); if ($agent eq 'mobile') { $subject = Jcode->new($parser_ins->get_query('system_subject'), 'sjis')->utf8; $name = Jcode->new($parser_ins->get_query('system_name'), 'sjis')->utf8; $mail = Jcode->new($parser_ins->get_query('system_mail'), 'sjis')->utf8; } else { $subject = $parser_ins->get_query('system_subject'); $name = $parser_ins->get_query('system_name'); $mail = $parser_ins->get_query('system_mail'); } my $subject_ins = new webliberty::String($subject); my $name_ins = new webliberty::String($name); my $mail_ins = new webliberty::String($mail); my @error_message; if ($init->{need_subject} and !$subject_ins->get_string) { push(@error_message, "$init->{label_subject}が入力されていません。"); } if ($init->{need_name} and !$name_ins->get_string) { push(@error_message, "$init->{label_name}が入力されていません。"); } if ($init->{need_mail} and !$mail_ins->get_string) { push(@error_message, "$init->{label_mail}が入力されていません。"); } if ($subject_ins->check_length > $init->{max_subject} * 2) { push(@error_message, "$init->{label_subject}の長さは全角$init->{max_subject}文字までにしてください。"); } if ($name_ins->check_length > $init->{max_name} * 2) { push(@error_message, "$init->{label_name}の長さは全角$init->{max_name}文字までにしてください。"); } if ($mail_ins->get_string and ($mail_ins->get_string =~ /[^\w\.\@\d\+\-\_]/ or $mail_ins->get_string !~ /(.+)\@(.+)\.(.+)/)) { push(@error_message, "$init->{label_mail}の入力内容が正しくありません。"); } my @query = $parser_ins->get_datalist; my @file = $parser_ins->get_filelist; my %file; foreach (@query) { if ($_ !~ /^input_\w+/) { next; } my $label = $parser_ins->get_query("label_$_") ? $parser_ins->get_query("label_$_") : $_; if ($agent eq 'mobile') { $label = Jcode->new($label, 'sjis')->utf8; } my $refuse = $parser_ins->get_query("refuse_$_"); if ($parser_ins->get_query("need_$_") and !$parser_ins->get_query($_)) { push(@error_message, "$labelが入力されていません。"); } if ($parser_ins->get_query("coincide_$_") and $parser_ins->get_query($_) ne $parser_ins->get_query("coincide_$_")) { push(@error_message, "$labelの入力内容が不正です。"); } if ($parser_ins->get_query("refuse_$_") and $parser_ins->get_query($_) =~ /$refuse/) { push(@error_message, "$labelの入力内容が不正です。"); } my $string_ins = new webliberty::String($parser_ins->get_query($_)); if ($_ =~ /\w+_mail$/) { if ($string_ins->get_string and ($string_ins->get_string =~ /[^\w\.\@\d\+\-\_]/ or $string_ins->get_string !~ /(.+)\@(.+)\.(.+)/)) { push(@error_message, "$labelの入力内容が正しくありません。"); } elsif ($string_ins->check_length > 100) { push(@error_message, "$labelの長さは100文字までにしてください。"); } } elsif ($_ =~ /\w+_url$/) { if ($string_ins->get_string and ($string_ins->get_string !~ /^(http:\/\/|https:\/\/|ftp:\/\/)/)) { push(@error_message, "$labelの入力内容が正しくありません。"); } elsif ($string_ins->check_length > 255) { push(@error_message, "$labelの長さは255文字までにしてください。"); } } elsif ($_ =~ /\w+_line$/) { if ($string_ins->check_length > $init->{max_line} * 2) { push(@error_message, "$labelの長さは全角$init->{max_line}文字までにしてください。"); } } elsif ($_ =~ /\w+_text$/) { if ($string_ins->check_length > $init->{max_text} * 2) { push(@error_message, "$labelの長さは全角$init->{max_text}文字までにしてください。"); } } elsif ($_ =~ /\w+_number$/) { if ($string_ins->get_string =~ /[^\d]/) { push(@error_message, "$labelは半角の数値を入力してください。"); } } if (${$init->{ng_word}}[0]) { foreach (@{$init->{ng_word}}) { if ($_ and $string_ins->get_string =~ /$_/) { push(@error_message, "$labelに含まれている「$_」は使用禁止ワードに設定されています。"); } } } } foreach (@query) { if ($_ !~ /^confirm_(\w+)/) { next; } my $label; if ($parser_ins->get_query("label_$1")) { $label = $parser_ins->get_query("label_$1"); if ($agent eq 'mobile') { $label = Jcode->new($label, 'sjis')->utf8; } } else { if ($1 eq 'system_subject') { $label = $init->{label_subject}; } elsif ($1 eq 'system_name') { $label = $init->{label_name}; } elsif ($1 eq 'system_mail') { $label = $init->{label_mail}; } else { $label = $1; } } if ($parser_ins->get_query("confirm_$1") ne $parser_ins->get_query("$1")) { push(@error_message, "$labelが確認用の値と一致しません。"); } } foreach (@file) { my $file_ins = new webliberty::File($parser_ins->get_filename("$_")); my $file_name = $file_ins->get_name . '.' . $file_ins->get_ext; if ($file{$file_name}) { push(@error_message, '添付ファイルの名前は別々のものを指定してください。'); } else { $file{$file_name} = 1; } if ($init->{file_limit}) { my $flag = 0; if (${$init->{file_list}}{'gif'} and $file_ins->get_ext eq 'gif') { $flag = 1; } if (${$init->{file_list}}{'jpg'} and ($file_ins->get_ext eq 'jpeg' or $file_ins->get_ext eq 'jpg' or $file_ins->get_ext eq 'jpe')) { $flag = 1; } if (${$init->{file_list}}{'png'} and $file_ins->get_ext eq 'png') { $flag = 1; } if (${$init->{file_list}}{'mid'} and ($file_ins->get_ext eq 'midi' or $file_ins->get_ext eq 'mid')) { $flag = 1; } if (${$init->{file_list}}{'mp3'} and $file_ins->get_ext eq 'mp3') { $flag = 1; } if (${$init->{file_list}}{'lzh'} and $file_ins->get_ext eq 'lzh') { $flag = 1; } if (${$init->{file_list}}{'zip'} and $file_ins->get_ext eq 'zip') { $flag = 1; } if (${$init->{file_list}}{'htm'} and ($file_ins->get_ext eq 'html' or $file_ins->get_ext eq 'htm')) { $flag = 1; } if (${$init->{file_list}}{'txt'} and $file_ins->get_ext eq 'txt') { $flag = 1; } if (${$init->{file_list}}{'pdf'} and $file_ins->get_ext eq 'pdf') { $flag = 1; } if (${$init->{file_list}}{'doc'} and $file_ins->get_ext eq 'doc') { $flag = 1; } if (${$init->{file_list}}{'xls'} and $file_ins->get_ext eq 'xls') { $flag = 1; } if (${$init->{file_list}}{'ppt'} and $file_ins->get_ext eq 'ppt') { $flag = 1; } if (${$init->{file_list}}{'ram'} and $file_ins->get_ext eq 'ram') { $flag = 1; } if (${$init->{file_list}}{'mpg'} and $file_ins->get_ext eq 'mpg') { $flag = 1; } if (!$flag) { my $file_list; $file_list .= ${$init->{file_list}}{'gif'} ? '、<em>GIF</em>' : ''; $file_list .= ${$init->{file_list}}{'jpg'} ? '、<em>JPEG</em>' : ''; $file_list .= ${$init->{file_list}}{'png'} ? '、<em>PNG</em>' : ''; $file_list .= ${$init->{file_list}}{'mid'} ? '、<em>MIDI</em>' : ''; $file_list .= ${$init->{file_list}}{'mp3'} ? '、<em>MP3</em>' : ''; $file_list .= ${$init->{file_list}}{'lzh'} ? '、<em>LHA</em>' : ''; $file_list .= ${$init->{file_list}}{'zip'} ? '、<em>ZIP</em>' : ''; $file_list .= ${$init->{file_list}}{'htm'} ? '、<em>HTML</em>' : ''; $file_list .= ${$init->{file_list}}{'txt'} ? '、<em>TEXT</em>' : ''; $file_list .= ${$init->{file_list}}{'pdf'} ? '、<em>PDF</em>' : ''; $file_list .= ${$init->{file_list}}{'doc'} ? '、<em>Word</em>' : ''; $file_list .= ${$init->{file_list}}{'xls'} ? '、<em>Excel</em>' : ''; $file_list .= ${$init->{file_list}}{'ppt'} ? '、<em>PowerPoint</em>' : ''; $file_list .= ${$init->{file_list}}{'ram'} ? '、<em>RAM</em>' : ''; $file_list .= ${$init->{file_list}}{'mpg'} ? '、<em>MPEG</em>' : ''; push(@error_message, "アップロードできるファイル形式は$file_listです。"); } } if ($parser_ins->get_filesize("$_") > $init->{file_size} * 1024) { push(@error_message, "アップロードできるファイルの容量は$init->{file_size}KBまでです。"); } if (!$init->{file_jcode} and $file_ins->get_name =~ /[^\w\d\-\_]/) { push(@error_message, "添付ファイルの名前は半角英数字で指定してください。"); } } #ホストチェック my $host_ins = new webliberty::Host; if (${$init->{refuse_host}}[0]) { foreach (@{$init->{refuse_host}}) { if ($_ and $host_ins->get_host =~ /$_/i) { push(@error_message, $host_ins->get_host . "からの送信は禁止されています。"); } } } #連続送信チェック if ($init->{wait_time} and $parser_ins->get_query('system_mode') eq 'send') { open(FH, $init->{info_file}) or $basis_ins->error("Read Error : $init->{info_file}"); while (<FH>) { chomp; my($time, $host) = split(/\t/); if (time - $time < $init->{wait_time} and $host_ins->get_host eq $host) { push(@error_message, "連続投稿は$init->{wait_time}秒以上時間をあけてください。"); } } close(FH); } #エラー表示 if ($error_message[0]) { if ($init->{flash_mode} and $parser_ins->get_query('system_flash')) { print "Content-Type: text/plain; charset=utf-8\n\n"; print "system_info=error&system_message=$error_message[0]"; } else { my $skin_ins = new webliberty::Skin; if ($agent eq 'mobile') { $skin_ins->parse_skin($init->{skin_mobile_error}); } else { $skin_ins->parse_skin($init->{skin_error}); } my $html; $html .= $skin_ins->get_data('error_head'); foreach (@error_message) { $html .= $skin_ins->get_replace_data( 'error', INFO_ERROR => $_ ); } $html .= $skin_ins->get_data('error_foot'); if ($agent eq 'mobile') { my($data, $length) = &get_mobile_data($html); print "Content-Type: text/html; charset=Shift_JIS\n"; if ($ENV{'HTTP_USER_AGENT'} =~ /KDDI-|UP\.Browser/i) { print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n\n"; } else { print "Content-Length: $length\n\n"; } print $data; } else { print $basis_ins->header; print $html; } } exit; } return; } ### プレビュー sub preview { my $id = time; my $method; if ($ENV{'HTTP_USER_AGENT'} =~ /(J-PHONE|KDDI-|UP\.Browser)/i) { $method = 'get'; } else { $method = 'post'; } my $skin_ins = new webliberty::Skin; if ($agent eq 'mobile') { $skin_ins->parse_skin($init->{skin_mobile_preview}); } else { $skin_ins->parse_skin($init->{skin_preview}); } $skin_ins->replace_skin( INFO_METHOD => $method, INFO_BACK => $init->{back_url}, INFO_COPY => $parser_ins->get_query('system_copy') ? '送信する' : '送信しない', FORM_ID => $id, FORM_COPY => $parser_ins->get_query('system_copy') ); my @query = $parser_ins->get_datalist; my @file = $parser_ins->get_filelist; #添付ファイルチェック my %files; foreach (@file) { $files{$_} = 1; } #プレビュー内容作成 my($preview_list, $form_list); foreach (@query) { if ($_ !~ /^system_\w+/ and $_ !~ /^input_\w+/ and $_ !~ /^label_\w+/ and $_ !~ /^need_\w+/ and $_ !~ /^coincide_\w+/ and $_ !~ /^refuse_\w+/ and $_ !~ /^join_\w+/) { next; } if ($_ eq 'system_mode' or $_ eq 'system_flash' or $_ eq 'system_id' or $_ eq 'system_copy') { next; } my $label; if ($parser_ins->get_query("label_$_")) { $label = $parser_ins->get_query("label_$_"); if ($agent eq 'mobile') { $label = Jcode->new($label, 'sjis')->utf8; } } else { if ($_ eq 'system_subject') { $label = $init->{label_subject}; } elsif ($_ eq 'system_name') { $label = $init->{label_name}; } elsif ($_ eq 'system_mail') { $label = $init->{label_mail}; } else { $label = $_; } } my $string; if ($agent eq 'mobile') { $string = Jcode->new($parser_ins->get_query($_), 'sjis')->utf8; } else { $string = $parser_ins->get_query($_); } my $string_ins = new webliberty::String($string); if ($parser_ins->get_query("join_$_")) { my $join = $parser_ins->get_query("join_$_"); if ($agent eq 'mobile') { $join = Jcode->new($join, 'sjis')->utf8; } $string_ins->replace_string('\n+', $join); } if ($files{$_}) { my $file_ins = new webliberty::File($parser_ins->get_filename($_)); my $file_name = $file_ins->get_name . '.' . $file_ins->get_ext; if ($init->{file_mode}) { if (!-e "$init->{file_dir}$id/") { mkdir("$init->{file_dir}$id/", 0705) or $basis_ins->error("Make Error : $init->{file_dir}$id/"); } open(FH, ">$init->{file_dir}$id/$file_name") or $basis_ins->error("Write Error : $init->{file_dir}$id/$file_name"); binmode(FH); print FH $parser_ins->get_filedata($_); close(FH); } $string_ins->set_string($file_name); $form_list .= "<input type=\"hidden\" name=\"system_$_\" value=\"$init->{file_dir}$id/" . $string_ins->create_plain . "\" />"; } else { if ($_ =~ /\w+_text$/) { $string_ins->create_text; } elsif ($_ =~ /\w+_number$/) { $string_ins->create_number; } elsif ($_ =~ /\w+_line$/) { $string_ins->create_line; } else { $string_ins->create_text; } } if ($_ =~ /^system_\w+/ or $_ =~ /^input_\w+/) { $preview_list .= $skin_ins->get_replace_data( 'preview', PREVIEW_KEY => $label, PREVIEW_VALUE => $string_ins->get_string ); } $form_list .= "<input type=\"hidden\" name=\"$_\" value=\"" . $string_ins->create_plain . "\" />"; } my $html; $html .= $skin_ins->get_replace_data( 'preview_head', FORM_LIST => $form_list ); $html .= $preview_list; $html .= $skin_ins->get_replace_data( 'preview_foot', FORM_LIST => $form_list ); #プレビュー画面 if ($agent eq 'mobile') { my($data, $length) = &get_mobile_data($html); print "Content-Type: text/html; charset=Shift_JIS\n"; if ($ENV{'HTTP_USER_AGENT'} =~ /KDDI-|UP\.Browser/i) { print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n\n"; } else { print "Content-Length: $length\n\n"; } print $data; } else { print $basis_ins->header; print $html; } return; } ### 送信完了 sub complete { my($id, $subject, $name, $mail, $copy); if ($agent eq 'mobile') { $id = Jcode->new($parser_ins->get_query('system_id'), 'sjis')->utf8; $subject = Jcode->new($parser_ins->get_query('system_subject'), 'sjis')->utf8; $name = Jcode->new($parser_ins->get_query('system_name'), 'sjis')->utf8; $mail = Jcode->new($parser_ins->get_query('system_mail'), 'sjis')->utf8; $copy = Jcode->new($parser_ins->get_query('system_copy'), 'sjis')->utf8; } else { $id = $parser_ins->get_query('system_id'); $subject = $parser_ins->get_query('system_subject'); $name = $parser_ins->get_query('system_name'); $mail = $parser_ins->get_query('system_mail'); $copy = $parser_ins->get_query('system_copy'); } my $id_ins = new webliberty::String($id); my $subject_ins = new webliberty::String($subject); my $name_ins = new webliberty::String($name); my $mail_ins = new webliberty::String($mail); my $copy_ins = new webliberty::String($copy); my $host_ins = new webliberty::Host; if (!$id_ins->get_string) { $id_ins->set_string(time); } if ($copy_ins->get_string) { push(@{$init->{mailto_address}}, $mail_ins->create_line); } my @query = $parser_ins->get_datalist; my @file = $parser_ins->get_filelist; #添付ファイル取得 my %files; my @files; if ($file[0]) { foreach (@file) { $files{$_} = 1; } } else { if ($init->{file_mode}) { foreach (@query) { if ($_ !~ /^system_\w+/) { next; } if ($_ eq 'system_mode' or $_ eq 'system_flash' or $_ eq 'system_id' or $_ eq 'system_subject' or $_ eq 'system_name' or $_ eq 'system_mail' or $_ eq 'system_copy') { next; } push(@files, $parser_ins->get_query($_)); } } } #メール本文作成 my $mail_body; foreach (@query) { if ($_ !~ /^system_\w+/ and $_ !~ /^input_\w+/ and $_ !~ /^label_\w+/ and $_ !~ /^need_\w+/ and $_ !~ /^coincide_\w+/ and $_ !~ /^refuse_\w+/ and $_ !~ /^join_\w+/) { next; } if ($_ =~ /^system_\w+/ and ($_ ne 'system_subject' and $_ ne 'system_name' and $_ ne 'system_mail')) { next; } my $label; if ($parser_ins->get_query("label_$_")) { $label = $parser_ins->get_query("label_$_"); if ($agent eq 'mobile') { $label = Jcode->new($label, 'sjis')->utf8; } } else { if ($_ eq 'system_subject') { $label = $init->{label_subject}; } elsif ($_ eq 'system_name') { $label = $init->{label_name}; } elsif ($_ eq 'system_mail') { $label = $init->{label_mail}; } else { $label = $_; } } my $string; if ($agent eq 'mobile') { $string = Jcode->new($parser_ins->get_query($_), 'sjis')->utf8; } else { $string = $parser_ins->get_query($_); } my $string_ins = new webliberty::String($string); if ($parser_ins->get_query("join_$_")) { my $join = $parser_ins->get_query("join_$_"); if ($agent eq 'mobile') { $join = Jcode->new($join, 'sjis')->utf8; } $string_ins->replace_string('\n+', $join); } if ($files{$_}) { my $file_ins = new webliberty::File($parser_ins->get_filename($_)); my $file_name = $file_ins->get_name . '.' . $file_ins->get_ext; if ($init->{file_mode}) { if (!-e $init->{file_dir} . $id_ins->get_string . '/') { mkdir($init->{file_dir} . $id_ins->get_string . '/', 0705) or $basis_ins->error("Make Error : $init->{file_dir}" . $id_ins->get_string . '/'); } open(FH, ">$init->{file_dir}" . $id_ins->get_string . '/' . $file_name) or $basis_ins->error("Write Error : $init->{file_dir}" . $id_ins->get_string . '/' . $file_name); binmode(FH); print FH $parser_ins->get_filedata($_); close(FH); } $string_ins->set_string($file_name); push(@files, $init->{file_dir} . $id_ins->get_string . '/' . $file_name); } else { if ($_ =~ /\w+_text$/) { $string_ins->create_text; } elsif ($_ =~ /\w+_number$/) { $string_ins->create_number; } elsif ($_ =~ /\w+_line$/) { $string_ins->create_line; } else { $string_ins->create_text; } } if ($_ =~ /^system_\w+/ or $_ =~ /^input_\w+/) { if ($string_ins->get_string =~ /<br \/>/) { $mail_body .= "$label : \n" . $string_ins->get_string . "\n\n"; } else { $mail_body .= "$label : " . $string_ins->get_string . "\n"; } } } #メール送信 my $sendmail_ins = new webliberty::Sendmail($init->{sendmail_path}); foreach (@{$init->{mailto_address}}) { if (!$_) { next; } my($send_from, $name, $message); if ($_ eq $mail_ins->create_line) { $send_from = $init->{mail_from}; $name = ''; $message = $mail_body; } else { $send_from = $mail_ins->get_string; $name = $name_ins->create_line; $message = "$mail_body\nHost : " . $host_ins->get_host . "\n"; } my $flag = $sendmail_ins->sendmail( send_to => $_, send_from => $send_from, subject => $subject_ins->create_line, name => $name, message => $message, files => join("\n", @files) ); if (!$flag) { $basis_ins->error('メールの送信に失敗しました。'); } } #自動返信メール送信 if ($init->{reply_mode}) { my $message_ins = new webliberty::String($init->{reply_message}); $message_ins->replace_string('\${SYSTEM_SUBJECT}', $subject_ins->get_string); $message_ins->replace_string('\${SYSTEM_NAME}', $name_ins->get_string); $message_ins->replace_string('\${SYSTEM_MAIL}', $mail_ins->get_string); my $flag = $sendmail_ins->sendmail( send_to => $mail_ins->get_string, send_from => $init->{reply_address}, subject => $init->{reply_subject}, name => $init->{reply_name}, message => $message_ins->get_string ); if (!$flag) { $basis_ins->error('メールの送信に失敗しました。'); } } #一時ファイル削除 if ($init->{file_mode}) { opendir(DIR, $init->{file_dir}) or $basis_ins->error("Read Error : $init->{file_dir}"); my @dirs = sort { $a <=> $b } grep { m/\d+/g } readdir(DIR); close(DIR); foreach my $dir (@dirs) { if ($id_ins->get_string ne $dir and time - $dir < $init->{file_time}) { next; } if (opendir(DIR, "$init->{file_dir}$dir/")) { my @files = readdir(DIR); close(DIR); foreach (@files) { unlink("$init->{file_dir}$dir/$_"); } } } foreach my $dir (@dirs) { rmdir("$init->{file_dir}$dir/"); } } #送信情報記録 if ($init->{wait_time}) { my $data = time . "\t" . $host_ins->get_host . "\n"; open(FH, $init->{info_file}) or $basis_ins->error("Read Error : $init->{info_file}"); while (<FH>) { chomp; my($time, $host) = split(/\t/); if (time - $time > $init->{wait_time}) { last; } else { $data .= "$_\n"; } } close(FH); open(FH, ">$init->{info_file}") or $basis_ins->error("Write Error : $init->{info_file}"); print FH $data; close(FH); } my $skin_ins; if (!$init->{flash_mode} or !$parser_ins->get_query('system_flash')) { #送信完了画面 my $method; if ($ENV{'HTTP_USER_AGENT'} =~ /(J-PHONE|KDDI-|UP\.Browser)/i) { $method = 'get'; } else { $method = 'post'; } $skin_ins = new webliberty::Skin; if ($agent eq 'mobile') { $skin_ins->parse_skin($init->{skin_mobile_complete}); } else { $skin_ins->parse_skin($init->{skin_complete}); } $skin_ins->replace_skin( INFO_METHOD => $method, INFO_BACK => $init->{back_url} ); } if ($init->{flash_mode} and $parser_ins->get_query('system_flash')) { print "Content-Type: text/plain; charset=utf-8\n\n"; print "system_info=complete"; } elsif ($agent eq 'mobile') { my($data, $length) = &get_mobile_data($skin_ins->get_data('_all')); print "Content-Type: text/html; charset=Shift_JIS\n"; if ($ENV{'HTTP_USER_AGENT'} =~ /KDDI-|UP\.Browser/i) { print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n\n"; } else { print "Content-Length: $length\n\n"; } print $data; } else { print $basis_ins->header; print $skin_ins->get_data('_all'); } return; } ### 携帯用データ作成 sub get_mobile_data { my($data) = @_; $data =~ s/\xEF\xBD\x9E/\xE3\x80\x9C/g; $data = Jcode->new($data, 'utf8')->sjis; return($data, length($data) + ($data =~ s/\n/\n/g)); }