www.pudn.com > sangoku_26_zh_tw.rar > admin.cgi
#!/usr/bin/perl
#################################################################
# 【免責事項】 #
# 這個腳本是免費軟體。使用了這個腳本的任何損失作者不承擔一切 #
# 的責任。有關設定的問題對支援公告版提出。或直接由於郵件說明 #
# 問題。 #
#################################################################
require 'jcode.pl';
require './ini_file/index.ini';
require 'suport.pl';
if($MENTE) { &ERR2("系統維護中。請稍後再試。"); }
&DECODE;
if(!$ADMIN_SET) { &ERR2("使用管理工具與設定。"); }
$adminid = "admin";
$adminpass = "admin";
if($mode eq 'CHANGE') { &CHANGE; }
elsif($mode eq 'MENTE') { &MENTE; }
elsif($mode eq 'MENTE2') { &MENTE2; }
elsif($mode eq 'CHANGE2') { &CHANGE2; }
elsif($mode eq 'BBS') { &BBS; }
elsif($mode eq 'DEL') { &DEL; }
elsif($mode eq 'DEL2') { &DEL2; }
elsif($mode eq 'DEL_LIST') { &DEL_LIST; }
elsif($mode eq 'ALL_DEL') { &ALL_DEL; }
elsif($mode eq 'INIT_DATA') { &INIT_DATA; }
else{⊤}
#_/_/_/_/_/_/_/_/_/#
#_/ MAIN畫面 _/#
#_/_/_/_/_/_/_/_/_/#
sub TOP {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 請返回首頁 $num ");}
&HEADER;
print <<"EOM";
管理工具首頁
管理員 專用留言板
↓↓↓以下屬於管理員留言板↓↓↓
EOM
open(IN,"$ADMIN_BBS");
@A_BBS = ;
close(IN);
# 管理者筆記
print "";
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ MENTE畫面 _/#
#_/_/_/_/_/_/_/_/_/#
sub MENTE {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
$dir="./charalog/main";
opendir(dirlist,"$dir");
$i=0;
while($file = readdir(dirlist)){
if($file =~ /\.cgi/i){
$datames = "檢索:$dir/$file
\n";
if(!open(page,"$dir/$file")){
$datames .= "$dir/$file 沒找到。
\n";
return 1;
}
@page = ;
close(page);
$list[$i]="$file";
($eid,$epass,$ename,$echara,$estr,$eint,$elea,$echa,$esol,$egat,$econ,$egold,$erice,$ecex,$eclass,$earm,$ebook,$ebank,$esub1,$esub2,$epos,$emes,$ehost,$edate,$email,$eos) = split(/<>/,$page[0]);
if("$in{'serch'}" ne ""){
if("$ename" =~ "$in{'serch'}"){
$human_data[$i]="$ehost<>$ename<>$eid<>";
}else{
next;
}
}else{
if($in{'no'} eq "2"){
$human_data[$i]="$ename<>$ehost<>$eid<>";
}elsif($in{'no'} eq "3"){
$human_data[$i]="$eid<>$ehost<>$ename<>";
}else{
$human_data[$i]="$ehost<>$ename<>$eid<>";
}
}
push(@newlist,"@page
");
$i++;
}
}
closedir(dirlist);
@human_data = sort @human_data;
$tt = time - (60 * 60 * 24 * 34);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime($tt);
$year += 1900;
$mon++;
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$daytime = sprintf("%4d\/%02d\/%02d\/(%s) %02d:%02d:%02d", $year,$mon,$mday,$ww,$hour,$min,$sec);
&HEADER;
print <<"EOM";
刪除雙重帳號
•雙重註冊嫌疑犯強制刪除(勿用此項目~指定的是全部帳號都刪除)。
如出現以下紅色訊息,就是雙重註冊嫌疑犯
$mess
帳號管理工具
•帳號名稱 跟 資料庫的檔案名稱相同 請勿隨意更改帳號 避免資料庫錯亂。
• 角色名隨時更新。帳號
對照上方排列
帳號 角色名稱 註冊IP
EOM
open(IN,"$ADMIN_LIST");
@A_LOG = ;
close(IN);
print "@A_LOG";
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/_/_/#
#_/ DEL LIST畫面 _/#
#_/_/_/_/_/_/_/_/_/_/_/#
sub DEL_LIST {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
$tt = time - (60 * 60 * 24 * 34);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime($tt);
$year += 1900;
$mon++;
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$daytime = sprintf("%4d\/%02d\/%02d\/(%s) %02d:%02d:%02d", $year,$mon,$mday,$ww,$hour,$min,$sec);
$dir="./charalog/main";
opendir(dirlist,"$dir");
$i=0;
while($file = readdir(dirlist)){
if($file =~ /\.cgi/i){
$datames = "檢索:$dir/$file
\n";
if(!open(page,"$dir/$file")){
$datames .= "$dir/$file 沒找到。
\n";
return 1;
}
@page = ;
close(page);
$list[$i]="$file";
($eid,$epass,$ename,$echara,$estr,$eint,$elea,$echa,$esol,$egat,$econ,$egold,$erice,$ecex,$eclass,$earm,$ebook,$ebank,$esub1,$esub2,$epos,$emes,$ehost,$edate,$email,$eos) = split(/<>/,$page[0]);
if($edate < $tt){
$i++;
($sec2,$min2,$hour2,$mday2,$mon2,$year2,$wday2,$yday2) = localtime($edate);
$mon2++;
$last_login = "$mon2月$mday2日$hour2時$min2分";
$LIST .= "| $ename | $eid | $email | $last_login |
";
}
}
}
closedir(dirlist);
@human_data = sort @human_data;
$a = "ss";
$dir="./charalog/main";
unlink("$dir/$a\.cgi");
&HEADER;
print <<"EOM";
刪除多重帳號&或帳號全部刪掉
刪除文件
>>刪掉以上的人。合適嗎
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 文件刪除 _/#
#_/_/_/_/_/_/_/_/_/#
sub ALL_DEL {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("輸入帳號跟密碼錯誤 $num ");}
$tt = time - (60 * 60 * 24 * 34);
$dir="./charalog/main";
opendir(dirlist,"$dir");
$i=0;
while($file = readdir(dirlist)){
if($file =~ /\.cgi/i){
$datames = "檢索:$dir/$file
\n";
if(!open(page,"$dir/$file")){
$datames .= "$dir/$file 沒找到。
\n";
}
@page = ;
close(page);
$list[$i]="$file";
($eid,$epass,$ename,$eurl,$echara,$esex,$ehp,$emaxhp,$emp,$emaxmp,$eele,$estr,$evit,$eint,$emen,$eagi,$ecom,$egold,$e_ex,$ecex,$eunit,$econ,$earm,$epro,$eacc,$esub1,$esub2,$etac,$esta,$epos,$emes,$ehost,$edate,$esyo,$eclass,$etotal,$ekati) = split(/<>/,$page[0]);
if($edate < $tt){
$dir2="./charalog/main";
unlink("$dir2/$eid\.cgi");
$dir2="./charalog/bank";
unlink("$dir2/$eid\.cgi");
$dir2="./charalog/arm";
unlink("$dir2/$eid\.cgi");
$dir2="./charalog/item";
unlink("$dir2/$eid\.cgi");
$dir2="./charalog/chara_max";
unlink("$dir2/$eid\.cgi");
$dir2="./charalog/map";
unlink("$dir2/$eid\.cgi");
$i++;
}
}
}
closedir(dirlist);
&HOST_NAME;
&TIME_DATA;
unshift(@S_MOVE,"\[刪除\] 刪掉了34日以後登入的沒有的帳號(或是刪除全部帳號)。($mday日$hour時$min分)
\n");
splice(@S_MOVE,20);
open(OUT,">$MAP_LOG_LIST") or &ERR2('紀錄 不能寫上新的數據。');
print OUT @S_MOVE;
close(OUT);
&HEADER;
print <<"EOM";
刪掉了所有帳號(刪掉 共$i名)。
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ WRITE畫面 _/#
#_/_/_/_/_/_/_/_/_/#
sub BBS {
&TIME_DATA;
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
open(IN,"$ADMIN_BBS");
@AD_DATA = ;
close(IN);
if($in{'message'} eq "") { &ERR2("消息沒有被寫上。"); }
$bbs_num = @AD_DATA;
if($bbs_num > 40) { pop(@AD_DATA); }
unshift(@AD_DATA,"$in{'message'} $in{'name'} ($mday日$hour時$min分)
\n");
open(OUT,">$ADMIN_BBS");
print OUT @AD_DATA;
close(OUT);
&HEADER;
print <<"EOM";
發言完成。
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 編輯畫面 _/#
#_/_/_/_/_/_/_/_/_/#
sub CHANGE {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
$dir="./charalog/main";
if(!open(page,"$dir/$in{'fileno'}")){
$datames .= "$dir/$file 沒找到。
\n";
return 1;
}
@page = ;
close(page);
($eid,$epass,$ename,$echara,$estr,$eint,$elea,$echa,$esol,$egat,$econ,$egold,$erice,$ecex,$eclass,$earm,$ebook,$ebank,$esub1,$esub2,$epos,$emes,$ehost,$edate,$email,$eos) = split(/<>/,$page[0]);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime($edate);
$year += 1900;
$mon++;
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$daytime = sprintf("%4d\/%02d\/%02d\/(%s) %02d:%02d:%02d", $year,$mon,$mday,$ww,$hour,$min,$sec);
&HEADER;
print <<"EOM";
管理各欄位解釋:
| 帳號 | 會員所申請的登錄名稱 |
密碼 | 會員所申請的登錄密碼 |
角色 | 遊戲人物的名稱 |
圖像 | 遊戲人物的圖片編號 |
| 武力 | 設定該角色武力值 |
智力 | 設定該角色智力值 |
統率 | 設定該角色統率值 |
人望 | 設定該角色人望值 |
| 兵數 | 設定該角色帶兵量 |
訓練 | 設定該角色兵種訓練度 |
國編 | 設定該角色所屬國家 |
金錢 | 該角色擁有多少金錢 |
| 米糧 | 設定該角色擁有多少米 |
貢獻 | 設定該角色為國貢獻度 |
官值 | 設定該角色官位經驗 |
武器 | 該角色擁有武器編號 |
| 書籍 | 該角色擁有書籍編號 |
忠誠 | 設定該角色為國忠誠度 |
輔助1 | 未定義 |
輔助2 | 未定義 |
| 目前都市 | 該武將所在城市 |
消息 | 未查詢 |
註IP | 該角色註冊IP |
更新日時 | 該角色更新次數 |
| 信箱 | 該帳號註冊信箱 |
認證 | 角色認證 |
| 無 |
| 無 |
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 編輯畫面 _/#
#_/_/_/_/_/_/_/_/_/#
sub CHANGE2 {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
$dir="./charalog/main";
$newdata = "$in{'eid'}<>$in{'epass'}<>$in{'ename'}<>$in{'echara'}<>$in{'estr'}<>$in{'eint'}<>$in{'elea'}<>$in{'echa'}<>$in{'esol'}<>$in{'egat'}<>$in{'econ'}<>$in{'egold'}<>$in{'erice'}<>$in{'ecex'}<>$in{'eclass'}<>$in{'earm'}<>$in{'ebook'}<>$in{'ebank'}<>$in{'esub1'}<>$in{'esub2'}<>$in{'epos'}<>$in{'emes'}<>$in{'ehost'}<>$in{'edate'}<>$in{'email'}<>$in{'eos'}<>\n";
open(page,">$dir/$in{'fileno'}");
print page $newdata;
close(page);
&HOST_NAME;
&ADMIN_LOG("$in{'ename'} $dir/$in{'fileno'}最後更新記錄。登錄IP位置「$host」");
&HEADER;
print <<"EOM";
$in{'ename'}的文件紀錄$dir/$in{'fileno'}已經更新。
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 文件刪掉 _/#
#_/_/_/_/_/_/_/_/_/#
sub DEL {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
&HOST_NAME;
open(IN,"./charalog/main/$in{'filename'}") or &ERR2('不能刪掉文件。');
@CN_DATA = ;
close(IN);
($kid,$kpass,$kname) = split(/<>/,$CN_DATA[0]);
$dir2="./charalog/main";
unlink("$dir2/$in{'filename'}");
$dir2="./charalog/log";
unlink("$dir2/$in{'filename'}");
$dir2="./charalog/command";
unlink("$dir2/$in{'filename'}");
&ADMIN_LOG("管理員將$kname該帳號已經刪除。「管理員執行紀錄 IP $host」 ");
open(IN,"$MAP_LOG_LIST");
@S_MOVE = ;
close(IN);
&TIME_DATA;
open(IN,"$DEF_LIST");
@DEF_LIST = ;
close(IN);
@NEW_DEF_LIST_DEL=();
foreach(@DEF_LIST){
($tid,$tname,$ttown_id,$ttown_flg,$tcon) = split(/<>/);
if("$tid" eq "$kid"){
}else{
push(@NEW_DEF_LIST_DEL,"$_");
}
}
open(OUT,">$DEF_LIST");
print OUT @NEW_DEF_LIST_DEL;
close(OUT);
unshift(@S_MOVE,"\[刪除\] $kname 被刪除。管理員執行紀錄 IP($mday日$hour時$min分)
\n");
splice(@S_MOVE,20);
open(OUT,">$MAP_LOG_LIST") or &ERR2('新的數據不能寫上紀錄。');
print OUT @S_MOVE;
close(OUT);
&HEADER;
print <<"EOM";
$kname 已經刪除。
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 文件刪除 _/#
#_/_/_/_/_/_/_/_/_/#
sub DEL2 {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
&HOST_NAME;
open(IN,"./charalog/main/$in{'filename'}") or &ERR2('不能刪除文件。');
@CN_DATA = ;
close(IN);
($kid,$kpass,$kname) = split(/<>/,$CN_DATA[0]);
$dir2="./charalog/main";
unlink("$dir2/$in{'filename'}");
$dir2="./charalog/log";
unlink("$dir2/$in{'filename'}");
$dir2="./charalog/command";
unlink("$dir2/$in{'filename'}");
&ADMIN_LOG("$kname 已經刪除。「$host」 ");
open(IN,"$DEF_LIST");
@DEF_LIST = ;
close(IN);
@NEW_DEF_LIST_DEL=();
foreach(@DEF_LIST){
($tid,$tname,$ttown_id,$ttown_flg,$tcon) = split(/<>/);
if("$tid" eq "$kid"){
}else{
push(@NEW_DEF_LIST_DEL,"$_");
}
}
open(OUT,">$DEF_LIST");
print OUT @NEW_DEF_LIST_DEL;
close(OUT);
&HEADER;
print <<"EOM";
$kname 已經刪除。
EOM
&FOOTER;
exit;
}
#_/_/_/_/_/_/_/_/_/#
#_/ 管理者紀錄 _/#
#_/_/_/_/_/_/_/_/_/#
sub ADMIN_LOG {
open(IN,"$ADMIN_LIST");
@A_LOG = ;
close(IN);
&TIME_DATA;
unshift(@A_LOG,"$_[0]($mday日$hour時$min分)
\n");
splice(@A_LOG,20);
open(OUT,">$ADMIN_LIST") or &ERR2('新的數據不能寫上紀錄。');
print OUT @A_LOG;
close(OUT);
}
#_/_/_/_/_/_/_/_/_/#
#_/ 初期化 _/#
#_/_/_/_/_/_/_/_/_/#
sub INIT_DATA {
if($in{'id'} ne "$adminid" || $in{'pass'} ne "$adminpass"){
&ERR2("帳號、密碼錯誤 $num ");}
require "reset.cgi";
&RESET_MODE;
&HOST_NAME;
&ADMIN_LOG("遊戲資料已經全部格式化。[$host]");
&HEADER;
print <<"EOM";
遊戲資料已經全部格式化。
EOM
&FOOTER;
exit;
}
1;