#------------------------------------------------------------------------------#
# 機能名 : system.pl
# 機能概要 : システム共通関数群
# 作成者 : Ryota Sasabe
# 作成履歴 : Ver0.01 2004.08.04 新規作成
#------------------------------------------------------------------------------#
sub init {
my (%option) = @_;
my ($SaveDir);
#□システム共通情報
$SiteName = 'サイト名'; # サイト名称
$BaseURL = "
http://$ENV{'HTTP_HOST'}"; # ホストURL
$FileURL = '
http://www2.j-phone.coco.jp'; # ファイル設置URL
$BaseDir = $ENV{'DOCUMENT_ROOT'}; # ルートディレクトリ
$SendMail = '/usr/sbin/sendmail'; # sendmailパス
$HtmlMojiCode = 'sjis'; # html文字コード
$HtmlCharset = 'Shift-JIS'; # html文字セット
%AdminUserNo = ('gm1' => '1'); # 管理者
%StaffUserNo = ('gm1' => '1'); # スタッフ
#□ディレクトリ定数
$SaveDir = "$BaseDir/cgi-files";
$USRMAS = "$SaveDir/user/dat_master"; # ユーザーマスター
$USRGID = "$SaveDir/user/dat_getgid"; # No,G-ID変換
$USRGNO = "$SaveDir/user/dat_getno"; # G-ID,No変換
$USRTMP = "$SaveDir/user/dat_temporary"; # ユーザー仮登録情報
$USRINF = "$SaveDir/user/dat_userinfo"; # ユーザー設定情報
$USRMSG = "$SaveDir/user/dat_usermessage"; # ユーザーメッセージ情報
$USRDLH = "$SaveDir/user/dat_userdlhistory"; # 着メロDL履歴情報
$USRMBX = "$SaveDir/user/dat_messagebox"; # メッセージボックス
$USRMBI = "$SaveDir/user/dat_messageboxinfo"; # ユーザーメッセージボックス情報
$USRCNT = "$SaveDir/user/dat_count"; # カウント情報
$USRREG = "$SaveDir/user/dat_register"; # ユーザー登録簿
$UPLFIN = "$BaseDir/uploader/dat_fileinfo"; # アップロードファイル情報
$UPLCNT = "$BaseDir/uploader/dat_count"; # アップロードファイルカウント
$UPLMSG = "$BaseDir/uploader/dat_usermessage"; # アップロードファイルメッセージ情報
#□ライブラリ読込み
require "$BaseDir/cgi-bin/lib/util.pl"; # 引数処理
require "$BaseDir/cgi-bin/lib/jcode.pl"; # 日本語処理
require "$BaseDir/cgi-bin/lib/common2.pl"; # 共通サブルーチン
#□引数設定
unless ($option{'not_input'}) {
&parseInput();
foreach $name (keys %in) {
&jcode::convert(\$in{$name}, 'euc', 'sjis'); # 文字コード(SJIS→EUC)
$in{$name} =~ s/\r?\n/\n/g; # 改行コード(LF)
}
}
#□ブラウザ&リソース情報設定
%browser = &get_browser();
%resource = &read_infofile("$BaseDir/cgi-files/resource.dat");
#□ホストURL調整
# $BaseURL = "
http://10.2.3.108" if $ENV{'HTTP_HOST'} =~ /localhost/;
}
sub get_html_style {
my $case = shift;
my (%html);
if ($case =~ /^(black)$/) {
$html{'BodyBgColor'} = '#000022';
$html{'BodyTextColor'} = '#EEFFFF';
$html{'BodyLinkColor'} = '#AADDFF';
$html{'BodyHrColor'} = '#AAAAAA';
$html{'BodyBgImage'} = '1';
$html{'BodyBgImageUrl'} = "$FileURL/img/bgblack.jpg";
$html{'StyleFontWeight'} = 'bold';
$html{'StylesheetUrl'} = '$BaseURL/css/black.css';
} elsif ($case =~ /^(white)$/) {
$html{'BodyBgColor'} = '#FAFAFF';
$html{'BodyTextColor'} = '#0055CC';
$html{'BodyLinkColor'} = '#000080';
$html{'BodyHrColor'} = '#AAAAFF';
$html{'BodyBgImage'} = '1';
$html{'BodyBgImageUrl'} = "$FileURL/img/bgwhite.jpg";
$html{'StyleFontWeight'} = 'bold';
$html{'StylesheetUrl'} = '$BaseURL/css/white.css';
} elsif ($case =~ /(
KeyWiki)/) {
$html{'BodyBgColor'} = '#E8E8FF';
$html{'BodyTextColor'} = '#002244';
$html{'BodyLinkColor'} = '#2222BB';
$html{'BodyHrColor'} = '#BBBBFF';
$html{'StyleFontWeight'} = 'solid';
$html{'StylesheetUrl'} = "$BaseURL/css/keywiki.css";
} else { # default
%html = &get_html_style('black');
}
return %html;
}
sub error {
my ($errmsg) = @_;
my ($filepath) = "$BaseDir/cgi-files/log/error".substr(&get_localtime(), 0, 8).".dat";
my (%html) = &get_html_style('KeyWiki');;
my ($HTML);
$HTML = "Content-type: text/html\n\n";
$HTML .= &get_html_header('エラー', %html);
$HTML .= "<hr color='$html{'BodyHrColor'}'>";
$HTML .= "$errmsg<br>";
if (open(OUT, ">> $filepath")) {
print OUT &join_record(&get_localtime(), $errmsg, $ENV{'HTTP_REFERER'}, $ENV{"HTTP_USER_AGENT"}, $ENV{"REMOTE_ADDR"});
close(OUT);
} else {
$HTML .= "エラーログファイルの作成に失敗しました。<br>$filepath";
}
$HTML .= &get_html_footer('', %html);
print &convert_jcode(\$HTML, 'sjis', 'euc');
exit;
}
sub check_gid {
my ($G_ID) = @_;
my ($logfilepath) = "$BaseDir/cgi-files/log/check_gid.dat";
my ($ip, $browser);
my ($Count);
unless ($G_ID =~ /^G[0-9]{11}$/) {
&error("G-IDのフォーマットが違います。正しいG-IDを入力してください<br>[$G_ID]");
}
foreach ( &read_file($logfilepath, 'no_error') ){
($ip, $browser) = &split_record($_);
if ($ip.$browser eq $ENV{"REMOTE_ADDR"}.$ENV{"HTTP_USER_AGENT"}) {
$Count++;
}
if ($Count >= 10) {
&error("間違えすぎです");
}
}
unless (-e "$USRGNO/$G_ID.dat") {
my ($record) = &join_record($ENV{"REMOTE_ADDR"},$ENV{"HTTP_USER_AGENT"});
&cycle_file($logfilepath, $record, 100);
&error("入力されたG-IDは存在しません。入力した値に誤りが無いかご確認ください。<br>[$G_ID]");
}
my ($UserNo) = &read_file("$USRGNO/$G_ID.dat");
if ($UserNo =~ /停止/) {
&error("このG-IDは不正な利用を行った事が発覚したため管理側で利用を停止しています。<br>[$G_ID]");
} elsif ($UserNo =~ /削除/) {
&error("このG-IDは登録を抹消しました。<br>[$G_ID]");
}
return $UserNo;
}
sub show_gid_input_form {
my ($ScriptName ,%html) = @_;
my ($HTML);
$HTML = "Content-type: text/html\n\n";
$HTML .= &get_html_header('G-ID認証', %html);
$HTML .= "<hr color='$html{'BodyHrColor'}'>";
$HTML .= "<form action='$ScriptName' method='post'>";
$HTML .= "■G-ID<br>";
$HTML .= "<input type='text' name='G_ID' maxlength='12' size='16'>";
foreach $name (keys %in) {
$HTML .= "<input type='hidden' name='$name' value='$in{$name}'>" if $in{$name};
}
$HTML .= "<input type='submit' value='送信'>";
$HTML .= "</form>";
$HTML .= &get_html_footer($ScriptName, %html);
print &convert_jcode(\$HTML, 'sjis', 'euc');
exit;
}
sub get_html_header {
my ($title, %html) = @_;
my (@html);
my ($background) = "background='$html{'BodyBgImageUrl'}'" if $html{'BodyBgImage'};
my (@title) = split(/ - /, $title);
push(@html, "<html lang='ja'>");
push(@html, " <head>");
push(@html, " <meta http-equiv='Content-Type' content='text/html; charset=$HtmlCharset'>");
push(@html, " <title>".join(' - ', @title)."</title>");
push(@html, " <link rel='stylesheet' type='text/css' href='$html{'StylesheetUrl'}'>") if $html{'StylesheetUrl'};
push(@html, " </head>");
push(@html, " <body text='$html{'BodyTextColor'}' bgcolor='$html{'BodyBgColor'}' link='$html{'BodyLinkColor'}' vlink='$html{'BodyLinkColor'}' alink='$html{'BodyLinkColor'}' $background>");
push(@html, " <h1>【$title[0]】</h1>");
return join("\n", @html);
}
sub get_html_footer {
my ($case, %html) = @_;
my (@html);
push(@html, " <hr color='$html{'BodyHrColor'}'>");
push(@html, " <div align='right'>");
if($case eq 'KeyWiki'){
push(@html, " <a href='
keywiki.cgi?key=KeyWiki'>KeyWiki</a> Ver 0.6.9<br>");
push(@html, " (c) 2004 <a href='
$SupportMail'>Ryota</a><br>");
# push(@html, "html_update = ".&get_formattime(&get_lastupdatetime("$SaveDir/html/$in{'Case'}-$in_keycd{'KEY_WD'}.html"))."<br>";
}
push(@html, " </div>");
# foreach $name (keys %in) {
# push(@html, "$name = $in{$name}<br>");
# }
# foreach $name (keys %info) {
# push(@html, "$name = $info{$name}<br>");
# }
# push(@html, "Referer = $ENV{'HTTP_REFERER'}";
# foreach $key (keys %ENV){
# push(@html, "$key: $ENV{$key}<br>");
# }
push(@html, " </body>");
push(@html, "</html>");
return join("\n", @html);
}
sub get_userinfo {
my $UserNo = shift;
my $filepath = "$BaseDir/cgi-files/user/info/$UserNo.dat";
&recreate_userinfo($UserNo) unless -f $filepath;
return &read_infofile($filepath);
}
sub recreate_userinfo {
my $UserNo = shift;
my $Record;
&create_directory("$BaseDir/cgi-files/user/info");
$Record = &read_file("$USRMAS/$UserNo.dat");
($info{'UserNo'},$info{'UserName'},$info{'UserMailAddress'}) = &split_record($Record);
$Record = &read_file("$USRINF/$UserNo.dat",'no_error');
($info{'NotifyMail'},$info{'NotifyMailAddress'},$info{'HomepageName'},$info{'HomepageUrl'}) = &split_record($Record);
$Record = &read_file("$USRMSG/$UserNo.dat",'no_error');
($info{'MessageBoxHeaderText'},$info{'MessageBoxFooterText'},$info{'ChakumeloKansouThanksText'},$info{'ChakumeloIntroduceText'}) = &split_record($Record);
$Record = &read_file("$USRMBI/$UserNo.dat",'no_error');
($info{'MessageBoxTitle'},$info{'BodyBgColor'},$info{'BodyTextColor'},$info{'BodyLinkColor'},$info{'BodyHrColor'},$info{'BodyTitleColor'},$info{'BodyBgImageUrl'}) = &split_record($Record);
$Record = &read_file("$USRCNT/dlpoint/$UserNo.dat",'no_error');
($info{'G-Point'}) = &split_record($Record);
&write_infofile("$BaseDir/cgi-files/user/info/$UserNo.dat",%info);
}
return 1;
更新者:
りょうた 2005-01-07 (金) 17:37:45
作成者:
りょうた 2004-09-03 (金) 18:24:01