うちでは.htpasswdで独自のアクセス制御を勝手に追加してやってるのですが pukiwiki.ini.phpの以下の内容の制御を最終的に使用しています。
///////////////////////////////////////////////// // 閲覧認証フラグ // 0:不要 // 1:必要 $read_auth = 1; ///////////////////////////////////////////////// // 閲覧認証対象パターン定義 $read_auth_pages = array( '/ひきこもるほげ/' => 'hoge', '/(ネタバレ|ねたばれ)/' => 'foo,bar,hoge', );
しかし、現状のままですと、編集画面の雛形読み込みで 内容が丸見えになってしまいますTT
以下のような変更を提案してみます。
html.php 147行目付近
if($load_template_func and $b_template) { $_pages = get_existpages(); $pages = array(); foreach($_pages as $_page) { if ($_page == $whatsnew or preg_match("/$non_list/",$_page)) { continue; } > if(!check_readable($_page,false,false)) { > continue; } $s_page = htmlspecialchars($_page); $pages[$_page] = " <option value=\"$s_page\">$s_page</option>"; } ksort($pages); $s_pages = join("\n",$pages); $template = <<<EOD <select name="template_page"> <option value="">-- $_btn_template --</option> $s_pages </select> <input type="submit" name="template" value="$_btn_load" accesskey="r" /> <br /> EOD;
12c12 < global $vars, $_title_edit; --- > global $vars, $_title_edit, $load_template_func; 18c18 < if (isset($vars['preview']) or isset($vars['template'])) { --- > if (isset($vars['preview']) || ($load_template_func && isset($vars['template']))) {
--- func.1.46.php Mon Jul 04 00:09:27 2005 +++ func.php Mon Jul 25 12:31:15 2005 @@ -107,7 +107,7 @@ if (! preg_match($rule_pattrn, $page, $matches)) continue; $template_page = preg_replace($rule_pattrn, $template, $page); - if (! is_page($template_page)) continue; + if (! is_page($template_page) || ! check_readable($_page, FALSE, FALSE)) continue; $body = join('', get_source($template_page)); --- html.1.41.php Mon Jul 04 23:14:10 2005 +++ html.php Mon Jul 25 12:28:46 2005 @@ -174,7 +174,7 @@ $pages = array(); $non_list_pattern = '/' . $non_list . '/'; foreach(get_existpages() as $_page) { - if ($_page == $whatsnew || preg_match($non_list_pattern, $_page)) + if ($_page == $whatsnew || preg_match($non_list_pattern, $_page) || ! check_readable($_page, FALSE, FALSE)) continue; $s_page = htmlspecialchars($_page); $pages[$_page] = ' <option value="' . $s_page . '">' . --- edit.inc.1.36.php Thu Jun 30 21:52:57 2005 +++ edit.inc.php Mon Jul 25 12:23:28 2005 @@ -41,7 +41,7 @@ $page = isset($vars['page']) ? $vars['page'] : ''; // Loading template - if (isset($vars['template_page']) && is_page($vars['template_page'])) { + if (isset($vars['template_page']) && is_page($vars['template_page']) && check_readable($vars['template_page'], FALSE, FALSE)) { $vars['msg'] = join('', get_source($vars['template_page'])); --- template.inc.1.21.php Sun Feb 27 17:06:48 2005 +++ template.inc.php Mon Jul 25 12:37:12 2005 @@ -14,7 +14,7 @@ global $_err_template_already, $_err_template_invalid, $_msg_template_force; if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); - if (! isset($vars['refer']) || ! is_page($vars['refer'])) + if (! isset($vars['refer']) || ! is_page($vars['refer']) || ! check_readable($_page, FALSE, FALSE)) return FALSE; $lines = get_source($vars['refer']);