-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinc-error.cgi
142 lines (129 loc) · 5.97 KB
/
inc-error.cgi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
use utf8;
# エラー分析と安全な終了 2005/03/30 由來
my($msg)=@_;
die($msg) if $ERROR_REENTRY; # ループ防止
$ERROR_REENTRY=1;
@_=(gmtime(time()+60*60*9))[5,4,3,2,1,0];
$_[0]+=1900; $_[1]++;
my $nowtime=sprintf("%d/%02d/%02d %02d:%02d:%02d",@_);
open(OUT,">>:encoding(UTF-8)","$DATA_DIR/$ERROR_COUNT_FILE$FILE_EXT");
print OUT "1";
close(OUT);
my $er_m=l("分析できませんでした。");
$msg=~s/&/&/g;
$msg=~s/"/"/g;
$msg=~s/</</g;
$msg=~s/>/>/g;
$msg=~s/\n/<br>/g;
if ($msg =~ /at\s(\S+)\sline/) {
$er_s=$1;
$er_sm="";
$er_sm="<br>".l('このファイルを特に改変していない場合は別なファイルにエラーがあります。') if ($msg =~ /func/);
$er_sm="<br>".l('これは「<b>inc-item-data.cgi</b>」を修正することにより解決します。') if ($msg =~ /data\/item/);
}
if ($msg =~ /line\s(\d+)[,\.]/) {
$er_l=$1;
}
if ($msg =~ /syntax\serror/ || $msg =~ /Scalar\sfound/ || $msg =~ /Array\sfound/) {
$er_m=l("文法ミスです。「\"」「'」「;」「}」などのつけ忘れであることが多いです。");
}
if ($msg =~ /Unrecognized\scharacter/) {
$er_m=l("処理できない文字が含まれています。間違えて全角文字を使ってしまったか,<br>全角文字を「\"」や「'」などでくくるのを忘れていることが多いです。");
}
if ($msg =~ /Illegal\sdivision\sby\szero/) {
$er_m=l("ゼロで割る計算をさせています。<br>ある変数で割るときには,その変数がゼロになる場合は計算を回避してください。");
}
if ($msg =~ /Can't\sfind\sstring\sterminator/) {
$er_m=l("文字列が「\"」や「'」などで閉じられていません。");
}
if ($msg =~ /Unmatched\sright/) {
$er_m=l("文法ミスです。「}」や「)」などが余計に多いようです。");
}
if ($msg =~ /Missing\sright/) {
$er_m=l("文法ミスです。「}」や「)」などをつけ忘れているようです。");
}
if ($msg =~ /not\sdefined\sfunction/) {
$er_m=l("サブルーチンの名称にミスがあるようです。<br>原因としては,バージョンアップのミス,アイテムデータのイベント関連のミスなどが考えられます。");
}
if ($msg =~ /Can't\slocate/) {
$er_m=l("ファイルが存在しません。イベントやアイテムデータを削除したためかもしれません。");
}
PrintErr();
my $error_count=(-s "$DATA_DIR/$ERROR_COUNT_FILE$FILE_EXT");
if ($error_count > 9)
{
mkdir("$DATA_DIR/lock",$DIR_PERMISSION) unless (-d "$DATA_DIR/lock")
}
UnLock() if $LOCKED; #ロック解除
CoUnLock() if $COLOCKED;
exit(-1);
1;
sub PrintErr
{
print "Cache-Control: no-cache, no-store\n";
print "Pragma: no-cache\n";
print "Content-type: text/html; charset=utf-8\n\n";
print <<"STR";
<HTML><HEAD>
<Style Type="text/css">
<!--
A:link { font-weight: bold; text-decoration:none}
A:visited{ font-weight: bold; text-decoration:none}
A:hover { font-weight: bold; text-decoration:underline;}
BODY,TR,TD,TH { font-family:"MS UI Gothic"; font-size:11pt; }
SPAN { font-family:"Comic Sans MS"; font-size:16pt; color:#664499 ;}
input,input.button{color:#000000;background-color:#FFFFFF;border:1 #5f5f8c solid}
-->
</Style>
<TITLE>$HTML_TITLE:${\l('エラー')}</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#6050cc" VLINK="#6050cc" ALINK="#FF0000">
<center><br><SPAN>Sorry, An Error is Detected.</SPAN><br><br>
<TABLE cellspacing="0" cellpadding="0"><TBODY><TR><TD bgcolor="#6B6599">
<TABLE cellspacing="1" cellpadding="0" border="0" width="700"><TBODY><TR><TD bgcolor="#FFFFFF" align="center">
<br>${\l('エラーが発見されたため,実行が中止されました。')}<br><br>
${\l('プレイ中の方にはご不便をおかけしますが,解決までしばらくお待ちください。')}<br>
${\l('なかなか解決しない場合は,お手数ですが<a href="mailto:%1">管理人までご連絡</a>ください。',$ADMIN_EMAIL)}<br><br>
<A HREF=\"$HOME_PAGE\" TARGET=_top>[${\l('ホームに戻る')}]</A>
<br><div align="right"><small>
<A HREF="http://akimono.org//">${\l('商人物語')}</A></small></div>
</TD></TR></TBODY></TABLE>
</TD></TR></TBODY></TABLE>
<br><TABLE cellspacing="0" cellpadding="1" border="0">
<TBODY><TR vAlign=center align=middle><TD bgcolor="#6B6599">
<TABLE cellspacing="0" cellpadding="5" width="700" border="0">
<TBODY><TR><TD width="80" bgcolor="#ABA5FF" align="center">
<FONT color="#FFFFFF"><small>for Admin</small></FONT></TD>
<TD align="center" bgcolor="#DBD5FF">${\l('以下のアドバイスに従ってエラーを解決してください。')} …
<A HREF="http://akimono.org/">[${\l('エラー相談')}]</A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<br><TABLE cellspacing="0" cellpadding="5" width="700" border="0">
<TR><TD width="80" bgcolor="#ABA5FF" align="center">
<FONT color="#FFFFFF"><small>${\l('エラー状況')}</small></FONT></TD>
<td bgcolor="#DBD5FF">${\l('%1 の実行により発生。',$MYNAME)}<small>($nowtime)</small></tr>
<TR><TD width="80" bgcolor="#ABA5FF" align="center">
<FONT color="#FFFFFF"><small>${\l('エラー原因')}</small></FONT></TD>
<td bgcolor="#DBD5FF">${\l('「<b>%1</b>」の %2行目付近に原因があるようです。',$er_s,$er_l)}$er_sm</tr>
<TR><TD width="80" bgcolor="#ABA5FF" align="center">
<FONT color="#FFFFFF"><small>${\l('エラー分析')}</small></FONT></TD>
<td bgcolor="#DBD5FF">$er_m</tr>
<TR><TD width="80" bgcolor="#ABA5FF" align="center">
<FONT color="#FFFFFF"><small>Error Data</small></FONT></TD>
<td bgcolor="#DBD5FF"><small>$msg</small></tr></table>
</CENTER><br><div align="right">
<FORM ACTION="admin.cgi" METHOD="POST"><INPUT TYPE=PASSWORD size=6 NAME=admin>
<INPUT TYPE=SUBMIT VALUE="Admin"></FORM></div>
</body></html>
STR
my $txt= <<"STR";
${\l('%1 の実行により発生。',$MYNAME)}($nowtime)
${\l('「%1」の %2行目付近に原因があるようです。',$er_s,$er_l)}$er_sm
$er_m
$msg
STR
my $ErrFile = $DATA_DIR."/error.log";
open(OUT,">:encoding(UTF-8)","$ErrFile");
print OUT $txt;
close(OUT);
chmod (0666,$ErrFile);
}