# GMR for Keitai sub routine # ver 0.5 sub header_i{ print "Content-type: text/html\n\n"; print "$topic\n"; } sub footer_i{ print ""; } sub list_i{ &get_cookie; if(!open(IN,"$datafile")){&error_message('datafile error','data file access failed.');} @all=; close IN; $sort=16; $mode=r; &sort_table; $count=0; $pagenow=1; foreach $i (@all){ ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$i); $count++; if($count==15){$count=0;$pagenow++;} if($pagenow==$page){ $date=substr($time,0,8); $diary=""; $diaryfile="$diarydir$name.$diaryletter"; if(-e "$diaryfile"){ if((-M $diaryfile)<1){ $diary.="UP!"; } print "$date:$name"; print " $diary
"; } else{ print "$date:$name
"; } } } $page++; print "
Next"; print "
ListTop"; print <<"EOM";
Login : name pass
新規
EOM if($reg_mode==0){print "";} print ""; print "
"; } sub prof_i{ print "Profile: $name
"; if(!open(IN,"$datafile")){&error_message('datafile error2098','data file access failed.');} @all=; close IN; $match=""; foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name){ $match=$i; } } if($match eq ""){&header; &error_message('id/pass error','access failed.');} ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$match); if($class_edit==0){ $class =~ s/<//g; } print "$no/[$class]
"; print "$racelist[$race]($facetypename[$etc[0]])/$relmlistl[$relm]/$point/rank $mrank
"; if(($anon ne "on") || ($anon_mode != 1 )){ if($lev[$mainjob]<10){ $main_level="0$lev[$mainjob]"; } else { $main_level=$lev[$mainjob]; } if($supportjob <99){ $mod_level=int($lev[$mainjob]/2); if($mod_level==0){$mod_level=1;} if($mod_level>$lev[$supportjob]){$mod_level=$lev[$supportjob];} if($mod_level<10){ $mod_level="0$mod_level"; } print "$joblist[$mainjob]$main_level/$joblist[$supportjob]$mod_level
"; } else { print "
$joblist[$mainjob]$main_level
"; } print "ジョブレベル
"; for ($j=0;$j<$job_max;$j++){ print "$joblist[$j]:$lev[$j]
"; } print "合成
"; for ($j=0;$j<$prod_max;$j++){ print "$prodlist[$j]:$prod[$j]
"; } } print "コメント[$comment]
"; if($prof ne "off"){ print "ハンドル[$handle]
"; print "POLハンドル[$polhn]
"; print "e-mail[$mail]
"; print "ホームページ[$home]
"; print "コメント
$comment2"; } else { print "
プロフィール非公開"; } print "
ListTop"; } sub diary_i{ print "$name 's diary
"; if(!open(IN,"$datafile")){&error_message('datafile error2098','data file access failed.');} @all=; close IN; $match=""; foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name){ $match=$i; } } if($match eq ""){&header; &error_message('id/pass error','access failed.');} ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$match); $diaryfile="$diarydir$name.$diaryletter"; if($diarybg ne ""){$dbg=" bgcolor=$diarybg";} if (!open(DB,"$diaryfile")) { print "$name さんの日記はありません。"; } elsif($prof ne "off"){ @lines = ; close(DB); $pagenow=1; foreach $i (@lines){ ($no,$today2,$title,$body,$imgexist,$res)=split(/\t/,$i); if($pagenow==$page){ print "●$title/$today2($no)
"; if($imgexist ne ""){print "[PC画像あり]
";} if ($FORM{'all'} ne "true") { @diarylines = split(/
/,$body); if ($#diarylines > 8) { $body = join("
", @diarylines[0..8])."(略
[全文を読む]"; } } print "$body"; if($res ne ""){print "
$res
";} if($diaryres){ print "
名前
"; } } $pagenow++; } $page++; print "
Next"; print "
DiaryTop"; print "
ListTop"; } else { print "$name さんの日記は非公開になっています。"; } } sub res_diary_i{ if($body eq ""){&header;&error_message('本文がありません','');} if($name eq ""){&header;&error_message('名前がありません','');} $diaryfile="$diarydir$name2.$diaryletter"; &dirlock; if (!open(DB,"$diaryfile")) { &header; print "
$name さんの日記はありません。
"; } else { @lines = ; close(DB); foreach $i(@lines){ ($r_no,$r_today,$r_title,$r_body,$r_img,$r_res)=split(/\t/,$i); if($no !=$r_no){ push(@out,$i); } else { $r_res =~ s/\n//g; $body =~ s/
//g; $r_res.="$name > $body ($today2)
"; $r_body =~ s/\n//g; #旧バージョン対策 push(@out,"$r_no\t$r_today\t$r_title\t$r_body\t$r_img\t$r_res\t\n"); } } if (!open(OUT,">$diaryfile")) {&header; &error_message('filesystem error','access failed.');} print OUT @out; close(OUT); if(!open(IN,"$datafile")){&error_message('datafile error2480','data file access failed.');} @all=; close IN; @out=(); foreach $i(@all){ ($no,$r_name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$i); if($r_name eq $name2){ push(@out,"$no\t$r_name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t\n"); } else { push(@out,$i); } } if(!open(OUT,">$datafile")){&header; &error_message('datafile error2494','data file access failed.');} print OUT @out; close OUT; rmdir($lockdir); } $name=$name2; } sub new_regist_i{ if(($g_pass ne $reg_pass && $reg_mode==0)){&error_message('illegal login','password is not correct.');} if($mode eq "regist"){ &new_regist_regist_i; } else { &new_regist_normal_i; } } sub new_regist_regist_i{ if(!open(IN,"$datafile")){&error_message('datafile error1791','data file access failed.');} @all=; close IN; if( !($pass =~ /^[A-Za-z0-9_]+$/) ){ &error_message('そのパスワードは登録に利用できません。','パスワードは半角英数字で登録してください。'); } if( !($name =~ /^[A-Za-z0-9_]+$/) ){ &error_message('その名前は使えません。','名前は半角英数字で登録してください。'); } if($mainjob == $supportjob){&error_message('main/job error','メインとサポートは同一のジョブにはできません');} $min_no=0; foreach $i (@all){ ($r_no,$r_user,$dummy)=split(/\t/,$i); if($r_user eq $name){&error_message('already registed',"'$name' has already registed.");} } $no=$#all+2; if($no<10){$no="0$no";} if($no<100){$no="0$no";} push(@all,"$no\t$name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t\n"); &dirlock; if(!open(OUT,">$datafile")){&error_message('datafile error1819','data file access failed.');} print OUT @all; close OUT; rmdir($lockdir); print "新規メンバー'$name'($no)の登録を完了しました。"; print "
ListTop"; } sub new_regist_normal_i{ print <<"EOM"; 必要事項を入力してください。
name
pass
anon mode
EOM print "Race
"; print "Realm
"; print "FaceType"; print "Main
"; print "Sup
"; for($i=0;$i<$job_max;$i++){ print "$joblist[$i]
"; } for($i=0;$i<$prod_max;$i++){ print "$prodlist[$i]
"; } print "point
"; print "rank
"; print "comment
"; print "profile 公開
"; print "ハンドル
"; print "POL内ハンドル
"; print "e-mail
"; print "url
"; $comment2 =~ s/
/\r/g; print "prof comment
"; print "
"; } sub login_i { if(!open(IN,"$datafile")){&header; &error_message('datafile error/system','data file access failed.');} @all=; close IN; $match=""; foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name && $pass eq $r_pass){ $match=$i; } } if($match eq ""){&header; &error_message('id/pass error','access failed.');} if ($mode ne "modify"){ &login_enter_i; } else { &login_modify_i; } } sub login_enter_i { ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$match); print "MemberList Top
"; print "No. $no : '$name' 修正
"; if($class_edit){ print "class
"; } else { print "
"; } print "anon mode(レベル表\示を隠します)
"; print "Race
"; print "Realm
"; print "FaceType"; print "Main Job
"; print "Support Job
"; for($i=0;$i<$job_max;$i++){ print "$joblist[$i]
\n"; } for($i=0;$i<$prod_max;$i++){ print "$prodlist[$i]
\n"; } print "個人ポイント(リージョン情報参照)
"; print "ミッションランク
"; print "comment(リストに表\示されます)
"; print "
"; print "profile&日記公開スイッチ(on:公開)
"; print "ハンドル
"; print "POL内ハンドル
"; print "e-mail
"; print "homepage url
"; print ""; print ""; $comment2 =~ s/
/\r/g; print "プロフィール用コメント
"; print "
"; print "
"; print "
"; print "新しい日記を書く
"; #print "
"; #print "日記を修正・削除する記事番号
"; } sub login_modify_i{ if($mainjob == $supportjob){&header; &error_message('main/job error','メインとサポートは同一のジョブにはできません');} &dirlock; if(!open(IN,"$datafile")){&error_message('datafile error2034','data file access failed.');} @all=; close IN; $etc[2]=$ietc; @out=(); foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name && $pass eq $r_pass){ push(@out,"$r_no\t$name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t\n"); } else { push(@out,$i); } } if(!open(OUT,">$datafile")){&header; &error_message('datafile error2048','data file access failed.');} print OUT @out; close OUT; rmdir($lockdir); print "修正終了"; print "
ListTop"; } sub write_diary_i{ $diaryfile="$diarydir$name.$diaryletter"; if(!open(IN,"$datafile")){&header; &error_message('datafile error2249','data file access failed.');} @all=; close IN; $match=""; foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name && $pass eq $r_pass){ $match=$i; } } if($match eq ""){&header; &error_message('id/pass error','access failed.');} if ($mode eq "write"){ if($body eq ""){&header;&error_message('本文がありません','');} if (!open(DB,"$diaryfile")) { @lines=(); } @lines = ; close(DB); ($maxno,$dummy1,$dummy2,$dummy3)=split(/\t/,$lines[0]); $maxno++; $fnt=""; if($imgexist){$fnt="$name$maxno.$fileexst";} @lines=reverse(@lines); push(@lines,"$maxno\t$today2\t$title\t$body\t$fnt\t\t\n"); @lines=reverse(@lines); @out=(); $count=0; foreach $i(@lines){ if($count<$diarymax){ push(@out,$i); $count++; } } if (!open(OUT,">$diaryfile")) {&header; &error_message('filesystem error','access failed.');} print OUT @out; close(OUT); if(!open(IN,"$datafile")){&error_message('datafile error2315','data file access failed.');} @all=; close IN; @out=(); foreach $i(@all){ ($no,$r_name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15])=split(/\t/,$i); if($r_name eq $name){ push(@out,"$no\t$r_name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t\n"); } else { push(@out,$i); } } if(!open(OUT,">$datafile")){&header; &error_message('datafile error2329','data file access failed.');} print OUT @out; close OUT; print "日記を書き込みました。
"; print "
ListTop"; } else { print "新規日記
"; print "
\ntitle

body

"; print"
"; } } 1;