'484d5122aa27da355d3fe57ba657b567', 'user2' => md5('password'), ); // 引用を許可するページ名のパターン定義 $export_auth_pages = array( '/export\/.*/' => 'user1,user2', // "export/"から始まるページ名 //'/.*/' => 'user1', ); ///////////////////////////////////////////////// function plugin_export_action() { global $export_auth,$export_auth_pages; global $vars; $mutime = $vars['mutime']; $page = $vars['page']; $pass = $vars['userpass']; $typehtml = isset($vars['type'])? $vars['type'] : NULL; if($pass == '') { exit; } $src = ''; // 合致したパターンで定義されたユーザのリスト $user_list = array(); foreach($export_auth_pages as $key=>$val) { if (preg_match($key,$page)) { $user_list = array_merge($user_list,explode(',',$val)); } } if (count($user_list) == 0) { // 一致しなかったので引用を許可しない exit; } $pass_list = array(); foreach($user_list as $user) { // パスワードを配列にまとめていく array_push($pass_list,$export_auth[$user]); } if(in_array($pass,$pass_list)) { // パスワード一致 if (!is_page($page) || !check_readable($page,false,false)) { $src = "''$page'' is not found."; } else { // パスワードからユーザ名を推測する $username = array_search($pass,$export_auth); $hash = md5("$username:$mutime"); $convdat = get_source($page); if($typehtml=="'html'") { // ループしないように、importプラグインを外す。 $convdat = array_diff($convdat,preg_grep('/^#import/i',$convdat)); // HTML形式に変換する $convdat = convert_html($convdat); } else { $convdat = join('',$convdat); } $src = "//#export($hash)\n" . $convdat; } header('Content-Length: ' . count($src)); header('Content-Type: text/plain'); print $src; } exit; } ?>