【system.pl】

更新 新規 編集 設定 一覧
#------------------------------------------------------------------------------#
# 機能名 : 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

■キーワード検索


KeyWiki Ver 0.6.9
(c) 2004 Ryota