#!/usr/local/bin/perl # サーバーの環境に合わせて変更して下さい。 require './ore_config.cgi'; # ore_.plのパス #-----------------------------------------------------------# # 罪と罰++ 二律背反 # # 管理者機能 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# $ver = 'v1.1'; # バージョン情報は書き換え不可 #--- [注意事項] --------------------------------------------# # 1.このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# # 以下処理 基本的にこれ以下はいじらないように。 &get_time; # 日時取得 &decode; # フォームデコード &axs_check; # アクセスチェック &usr_del if($mode eq 'usr_del'); # キャラ削除 &usr_regist if($mode eq 'usr_regist'); # キャラデータ変更 &usr_regist2 if($mode eq 'usr_regist2'); # キャラデータ変更2 &cdat_regist if($mode eq 'cdat_regist'); # 国データ変更 &cdat_regist2 if($mode eq 'cdat_regist2'); # 国データ変更2 &rd_usrdata if($mode eq 'rd_usrdata'); # $usrdata内ファイル全削除 &rd_backdata if($mode eq 'rd_backdata'); # $backdata内ファイル全削除 &cdata_reset if($mode eq 'cdata_reset'); # 国パラメータ初期化 &restore_all_usr if($mode eq 'restore_all_usr');# 全参加者ログ一括復旧(バックアップデータ差し替え) &restore_person if($mode eq 'restore_person'); # 個別全参加者ログ復旧(バックアップデータ差し替え) &restore_cdat if($mode eq 'restore_cdat'); # 国ログ復旧(バックアップデータ差し替え) &usr_list; # キャラリスト表示 exit; #------------------------------------------------------------------------------- # キャラリスト表示 sub usr_list{ &admin_head; if($comment){ print <<"EOM";
$comment

EOM } print <
ソート データ\表\示

EOM if($in{'list_view'}){ print < 削除 ログイン 編集 名前 I D パスワード 性別 レベル 所属 HP MP UA UD LR AG 所持金 階級 行動 最終ログイン IPアドレス ホスト名 ブラウザ EOM # 参加者データファイル一覧取得 &usrdata_read; # 参加者データ一括読み込み foreach (0 .. $#usrfile) { open(IN,"$usrdata$usrfile[$_]") || &error("Can't open $usrfile[$_]"); @line = ; close(IN); push(@dat,$line[0]); push(@dat2,$line[1]); } local(@usr_data); foreach (0 .. $#dat){ %DAT = ''; my @prats = split(/,/,$dat[$_]); foreach (0 .. $#prats){ my ($key,$v) = split(/;/,$prats[$_]); $DAT{$key} = $v; } my @y1 = split(/<>/,$dat2[$_]); $in{'list_view'}=0 if($in{'list_view'}==-5); if($in{'list_view'} eq $DAT{'camp'} || $in{'list_view'} eq -1){ $id = $DAT{'id'}; # ハッシュ読み込み &hash_data; push(@usr_data,"$nm<>$id<>$pw<>$sei<>$lv<>$camp<>$max_hp<>$max_mp<>$ua<>$ud<>$lr<>$gold<>$rank<>$sogo<>$y1[0]<>$y1[1]<>$y1[2]<>$y1[3]<>$la<>$ag<>$type<>"); } } @usr_data = @{&csvsort('<>',$in{'list_sort'},@usr_data)}; foreach(0 .. $#usr_data){ my @y2 = split(/<>/,$usr_data[$_]); $y2_0 = (!$y2[13]) ? "$y2[0]" : "$y2[0] [$sogo_p[$y2[13]]]" ; $y2[14] ="" if($y2[14] =~ /date/); $y2[20] = "待機中" if(!$y2[20]); print <<"EOM"; $y2_0 $y2[1] $y2[2] $seibetu[$y2[3]] $y2[4] $cmp[$y2[5]] $y2[6] $y2[7] $y2[8] $y2[9] $y2[10] $y2[19] $y2[11] $cl[$y2[12]] $y2[20] $y2[14] $y2[15] $y2[16] $y2[17] EOM } } print <<"EOM";

キャラ削除        国データ編集        国データリセット        Warning!! ディレクトリ/データ全削除
                    

キャラログ個別復旧      全キャラログ復旧      国ログ復旧
ID 日時     
日時     
日時

EOM &admin_end; exit; } # 個別参加者ログ復旧(バックアップデータ差し替え) sub restore_person{ &error("パスワードが違います!") if($in{'administrator'} ne $admin_pass); # ファイルロック(rename式) $lock = &lock if $lock_check; open(IN,"$in{'restore_date'}") || &error("Open Error : $in{'restore_date'}",1); my @tdat = ; close(IN); $in{'restore_usr'} =~ s/\.cgi//g; foreach (0 .. $#tdat){ %R = ''; my @prats = split(/,/,$tdat[$_]); foreach $prats (@prats){ my($y,$x) = split(/;/,$prats); $R{$y} = $x; if($in{'restore_usr'} eq $R{'id'}){ open (OUT,">$usrdata$R{'id'}\.cgi") || &error("open error:$usrdata$R{'id'}\.cgi",1); print OUT $tdat[$_]; close(OUT) or die "Can't close : $!"; } } } &unlock($lock) if $lock_check; $comment ="$in{'restore_date'}から$usrdata$in{'restore_usr'}\.cgiを復旧完了"; } # 全参加者ログ一括復旧(バックアップデータ差し替え) sub restore_all_usr{ &error("パスワードが違います!") if($in{'administrator'} ne $admin_pass); # ファイルロック(rename式) $lock = &lock if $lock_check; open(IN,"$in{'restore_date'}") || &error("Open Error : $in{'restore_date'}",1); my @tdat = ; close(IN); foreach (0 .. $#tdat){ %R = ''; my @prats = split(/,/,$tdat[$_]); foreach $prats (@prats){ my($y,$x) = split(/;/,$prats); $R{$y} = $x; } open (OUT,">$usrdata$R{'id'}\.cgi") || &error("open error:$usrdata$R{'id'}\.cgi",1); print OUT $tdat[$_]; close(OUT) or die "Can't close : $!"; } &unlock($lock) if $lock_check; $comment ="$in{'restore_date'}に含まれる全キャラ復旧完了"; } # 国ログ復旧(バックアップデータ差し替え) sub restore_cdat{ # ファイルロック(rename式) $lock = &lock if $lock_check; open (IN,"$histfile") || &error("Open error : $histfile"); my @hist_dat = ; close(IN) or die "Can't close : $!"; foreach(0 .. $#hist_dat){ my @y1 = split(/,/,$hist_dat[$_]); $y1[42] =~ s/date;//g; print qq|