開発日記

XSS脆弱性およびバグの修理 -- ぱんだ

3/11,3/12分も含まれます。

関連ページキャッシュの修正 -- ぱんだ

最初は簡単な処理だったんですが、いろいろな条件を追加していくうちにえらいことになってしまいました。 :)

BugTrack/255の修正が含まれます。

  • cvs:link.php(v1.4:r1.1)
  • cvs:link_db.php(v1.4:r1.1)
  • cvs:pukiwiki.php(v1.4:r1.23)

    関連ページキャッシュ機構のうち、ファイルベースおよびDBベースの操作に関連するサブルーチンをそれぞれlink.php,link_db.phpに独立させました。
    pukiwiki.php内で、init.phpの読み込み後(DBを使うかファイルベースを使うかを決定)に link.phpかlink_db.phpのどちらかをrequrieするようにしてあります。

  • cvs:file.php(v1.4:r1.15)

    上記2モジュールへサブルーチンの移動を行いました。

  • cvs:func.php(v1.4:r1.29)

    do_search()ルーチンに引数$non_formatを追加(というか、1.3.xにはあったので復活と言うべきか)しました。

  • cvs:make_link.php(v1.4:r1.25)

    リンクがWikiNameによるものなのかAutoLinkによるものなのかを区別する必要が生じたため、Link_autoクラスをLink_autolinkクラスとLink_wikinameクラスに分けました。その他のLink_xxxxクラスも名前を変更しています。

注意:キャッシュの形式が変わっています。 http://.../pukiwiki.php?plugin=linksを開いて、キャッシュを作りなおしてください。

キャッシュ更新手順

ページ更新/削除時

  • 「ページ更新前にそのページがどのページを参照していたか」を取得(CACHE_DIR/*.rel)(A)
  • 更新後のページソースから他ページへのリンクを列挙(B)
  • (B - A)、すなわち更新後に追加されたリンク、および(A - B)すなわち更新後に削除されたリンクについて、
    • リンク先ページの「このページがどのページから参照されているか」(CACHE_DIR/*.ref)を更新
      • 更新の結果、リンク先ページが「AutoLinkによってしか参照されていない」削除済みページとなった場合、AutoLink元ページに対して、自ページのrelキャッシュからの削除を要求(BugTrack/255)
    • 更新ページの「このページがどのページを参照しているか」(CACHE_DIR/*.rel)を更新

ページ追加時

AutoLinkが有効な場合、新規ページの追加にあたって、「そのページを参照するページ」を全文検索で取得する処理を組み込みました。

ページ数が多いほど、また、新規作成されたページ名が含まれるページが多いほど、「ページの更新」をクリックしてから待たされる時間が長くなります。

なお、WikiNameやBracketNameについては、参照元データが発生した時点で、参照先データも(ページの有無にかかわらず)作成されるようになっています。

  • 「ページ更新時」と同様の処理。ただし、(A)は空の配列
  • ページ名が、AutoLinkの対象文字列となりうる場合
    • 追加されたページ名を全ページから単純検索(do_search(,,$non_format)
    • 検索の結果、追加されたページ名を含むページについて、「ページ更新時」の処理を実行

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-03-14 (金) 00:06:28
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.183 sec.

OSDN