PowerCMS ブログ

2013年04月02日

フォームやコメントCGIの設置場所をカスタマイズする

セキュリティ等の観点からPowerCMSのmt-contactform.cgi (フォーム処理CGI)、mt-members.cgi (会員サイト系CGI)といったCGIアプリケーションを管理用CGI (mt.cgi)とは別の場所に設置したいといったケースがあると思います(mtディレクトリへのアクセスをIPアドレスで制限したいといった場合)。同様に mt-search.cgiや mt-comments.cgi の設置場所を変更したいケースもあるかと思います。

この時、ライブラリを複数設置して対応することもできますが、バージョンアップやカスタマイズの手間等を考えると、同じファイル群を複数設置するのは後々面倒です。

mt-contactform.cgi の設置場所とファイル名のカスタマイズ

MTのパスが /cgi-bin/mt/ だった場合(管理用スクリプトは /cgi-bin/mt/mt.cgi)、/cgi-bin/entry/contact.cgi にフォーム用のCGIを設置するために必要なカスタマイズは以下の通りです。

カスタマイズ前 ( /cgi-bin/mt/mt-contactform.cgi )

#!/usr/bin/perl -w

use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use lib 'addons/ContactForm.pack/lib';

use MT::Bootstrap App => 'MT::App::ContactForm';

カスタマイズ後 ( /cgi-bin/entry/contact.cgi )

$ENV{MT_HOME}へ指定する/path/to/cgi-bin/mtは環境にあわせて変更してください。

#!/usr/bin/perl -w

use strict;

BEGIN {
    $ENV{MT_HOME}   = '/path/to/cgi-bin/mt';
}

use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/extlib" : 'extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/lib" : 'addons/PowerCMS.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/extlib" : 'addons/PowerCMS.pack/extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/lib" : 'addons/ContactForm.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/extlib" : 'addons/ContactForm.pack/extlib';

use MT::Bootstrap App => 'MT::App::ContactForm';

この段階で、/cgi-bin/entry/contact.cgi へデータをポストして、確認画面が正しく表示されることを確認してください。

環境変数の追加

以下の2つの環境変数を mt-config.cgi に追記して、フォームのページを再構築すればカスタマイズは完了です。

ContactFormScript contact.cgi
ContactFormCGIPath /cgi-bin/entry/

mt-comments.cgi の設置場所とファイル名のカスタマイズ

フォーム機能以外のCGIの場合(例:コメントの場合)、CGIのパスを変更するためには mt-config.cgi をコピーして mt-config-comments.cgi とし、mt-commets.cgi を /cgi-bin/comment/comments.cgiに設置、comments.cgi で以下のようにします。


...
BEGIN {
    $ENV{MT_HOME}   = '/path/to/cgi-bin/mt';
    $ENV{MT_CONFIG} = '/path/to/cgi-bin/my/mt-config-comments.cgi';
}

use lib '../mt/lib';
use lib '../mt/extlib';
...

環境変数の追加

mt-config-comments.cgi で以下の環境設定を記述してサイトを再構築すればOKです。

CGIPath /cgi-bin/comment/
CommentScript comments.cgi
カテゴリー
技術情報設定・管理画面カスタマイズ

ページの先頭へ