改造/ログイン・パスワード認証
FreeStyleWikiにあってFreeStyleWiki Liteに無い機能は色々あるが、中でも一番無くて困るだろうものが、ページ作成編集のログイン(パスワード等認証)機能ではと。
Wikiの元々の基本姿勢はオープンなシステムを利用して共同で作り上げていくというものであって、その意味から誰でも編集出来るようにしてあるのは間違いではないのだけれど、しかし、個人的なサイト運営にWikiを利用したい場合にはそれでは困る事もある。
そこでFreeStyleWikiにはログイン機能があり、設定によって編集の権限を変える事が出来るのだが、FreeStyleWiki Liteにその機能はなく、ページ作成編集を一切制限する事は出来ない。
現状FreeStyleWiki Liteで編集を制限するには改造を施すしかなく、既にある改造方法やIOの改造方法を以下で紹介する。
諸氏によるCGI改造
FSWikiオフィシャルページに以下の投稿がされている。これらを適用する事でページ作成編集を制限する事が可能。
新規ページ作成、編集を隠す方法
認証を使わなくとも、ようは自分以外にページ作成や編集への行き方を分からなくすれば大抵の場合問題ないのではと思う。
つまり、
- 編集用CGI(edit.cgi)の名前を変える
- メニューから新規ページ作成や編集のリンクを外す
これだけで編集用CGIのURLを知らない者は編集不可能となる。ただこの場合、自分がページ作成や編集をしたい際はブックマークを利用する等となり、多少面倒かもしれない (なので専用のCGIを用意してみた・詳しくは下で)。
改造方法
- edit.cgiの名前を任意の名前に変える (例:edit777.cgi)
- 「setup.pl」のスクリプトを改造する
- 下のような行があるはずなので、変えた名前に設定する
$EDIT_SCRIPT = 'edit.cgi';
から、例えば下のように
$EDIT_SCRIPT = 'edit777.cgi';
- 「common.pl」のスクリプトを改造する
- 下のような行があるはず
#------------------------------------------------------------------------------- # ヘッダを表示 #------------------------------------------------------------------------------- sub print_header { 〜中略〜 print " <a href=\"$EDIT_SCRIPT?a=new\">新規</a>\n"; if($show==1){ print " <a href=\"$EDIT_SCRIPT?a=edit&p=".&Util::url_encode($in{"p"})."\">編集</a>\n"; }
- これを下のように書き換える (二行の行頭に「#」を付けコメントアウトする)
#------------------------------------------------------------------------------- # ヘッダを表示 #------------------------------------------------------------------------------- sub print_header { 〜中略〜 # print " <a href=\"$EDIT_SCRIPT?a=new\">新規</a>\n"; if($show==1){ # print " <a href=\"$EDIT_SCRIPT?a=edit&p=".&Util::url_encode($in{"p"})."\">編集</a>\n"; }
- 隠すまではこれだけで出来るのだが、設置者自身も作成編集リンクを利用出来なくなり少し不便になってしまう。そこで、全ページのリストを出力し、新規ページ作成リンク、ページ編集リンクもあわせて表示する「editlist.cgi」を用意したので、これを導入し「editlist.cgi」をブックマークしておけば、多少不便さはなくなるかもしれない。
- ダウンロード editlist.cgi.zip
- サンプル
- editlist.cgiの設置方法は他cgiと一緒
- 始めの「#!/usr/local/bin/perl」は自分のサーバにあわせる
- wiki.cgi等と同じディレクトリにアップロードし、パーミッションを設定する
- ブラウザでこのCGIにアクセスしてちゃんと動くようならCGIをブックマークしておき、ページ作成や編集したい時はブックマークからCGIにアクセスして行うようにする
- クエリー(URL)の指定で表示方法を変える事も可能。「editlist.cgi?」の後に以下の指定を追加出来る。「&」で繋いで組み合わせての指定も可能
- max=表示件数 (表示する件数を指定・省略時全件)
- sort=ソート方法 (並び順を指定・省略かtimeは更新日時順、nameは名前順)
- p=指定ページ名 (表示するページを指定・指定した文字がタイトルに含まれるページのみ表示・漢字等はURLエンコードされたもので指定)
- サンプル1(更新順10件) http://ana.na.coocan.jp/fswl/editlist.cgi?max=10
- サンプル2(名前順) http://ana.na.coocan.jp/fswl/editlist.cgi?sort=name
- サンプル3(ページ名に改造の文字がある) http://ana.na.coocan.jp/fswl/editlist.cgi?p=%B2%FE%C2%A4
IOによる改造
パスワードによる制限はIO自身も以前必要性を感じて独自で改造し作りました。出来れば公開、提供したいところですが、当分は時間なくて無理かもと(^^;)。とりあえず作った機能だけ紹介しておきます。
- 任意ページの閲覧制限
- setup.plで設定したページを表示する際にパスワードを求め、パスワードがあっている場合のみページを表示する。setup.plでのページ設定はページ名の一部でも可能で(例えばページ名にpassという文字が入っているページは全てパスワード必要にも出来る)、ページ毎に違うパスワード設定可能(パスワードはテキストファイルの形で専用のディレクトリに保存)
- 任意ページの編集制限
- setup.plで設定したページ、もしくは新規ページ作成時にタイトル最後に「_pw」を付けたページを編集保存する際にパスワードを求め、パスワードがあっている場合のみページを保存出来る。setup.plでのページ設定はページ名の一部でも可能で(例えばページ名にpassという文字が入っているページは全てパスワード必要にも出来る)、ページ毎に違うパスワード設定可能(パスワードはテキストファイルの形で専用のディレクトリに保存)。新規ページ作成時にタイトル最後に「_pw」を付けた場合は最初の保存時に任意のパスワード設定出来る
これ以外にも、ページ名にsetup.plで設定した任意文字を含ませる事でリストに表示させない隠しページ化させられる機能、スパム制限をオンにする事で一時的に編集を制限する機能、IP、ホスト、リファラによる制限機能なんかも自分のFSWikiLiteでは作って加えてあります。