Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

V.S.A. III

[Secure-SBM:026] サービスの閉塞処理

こんにちは,五十嵐です.データベースのバックアップの処理を追加しますが,その前に,サービスの閉塞処理を行います.いわゆる 「メンテナンス画面」の表示です.表示を変えるだけなら簡単ですが,データベースにアクセスしないようにする必要があるため,いままで作ってきたコントローラにすこしずつ処理を追加する必要があります.

現在利用している PostgreSQL (フリー版)には閉塞にする処理が無いようですので,アプリケーションの閉塞を行います.

サービスを停止するためにファイルを作成します.このロックファイルの中には,セッション ID を格納しておきます.同じセッション ID をもつブラウザのみがサービスを開始できます.(セッション ID のセキュリティについては別途)

"service_disable" と "service_enable" というアクションを用意して,閉塞処理と閉塞解除処理を行います.
sub service_disable : Local {
    my ( $self, $c ) = @_; 

    if( _makeLockfile( @_ ) ){
        $c->log->debug('Success: make ' . $c->config->{lockoutfile});
    }else{
        $c->stash->{resultmessage} = 'Cannot make lockfile';
    }   
    $c->stash->{lockout} = 1;
    $c->logout;
    $c->forward('index');
}

sub service_enable : Local {
    my ( $self, $c ) = @_; 

    if( _deleteLockfile( @_ ) ){
        $c->log->debug('Success: delete ' . $c->config->{lockoutfile});
        undef $c->stash->{lockout};
    }else{
        $c->stash->{resultmessage} = 'Cannot delete lockfile';
    }   
    $c->forward('index');
}


"$c->stash->{lockout}" を 1 に設定することで,メニューを一掃するようにします.

ロックファイルを作ることで,他のユーザがアクセスした場合に Root::auto でチェックします.

sub auto : Private {
    my ( $self, $c ) = @_; 

    if( my $sessionid = SecureSBMLib::_isServiceLocked( @_ ) ){

        $c->stash->{lockout} = 1;

        if( $c->controller eq $c->controller('Noauth::Mentenance') ){
            return 1;
        }

        if ( $c->sessionid eq $sessionid ) { 
            if( $c->controller eq $c->controller('Admin::ServiceCtl') ){
                return 1;
            }
        }

        $c->res->redirect( $c->uri_for('/mentenance') );
        return 0;

    }else{

...


"Noauth::Mentenance" は「メンテナンス中」を表示するページですので,無条件でチェックを抜けます."Admin::ServiceCtl" はサービス閉塞の解除を行うページですので,セッション ID を確認して,auto を抜けます.それ以外ではデータベースのバックアップを取り扱うコントローラ "Admin::DBMentenance" を追加予定ですが,これについては,次回にします.他のページにアクセスした場合には「メンテナンス中」を表示します.

auto アクションがあるおかげで,チェックが簡単に済みました.次回はデータベースのバックアップ処理です.

2007/07/05 記

参考:


Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク オープンソース

 

カテゴリ:SBM , 開発日記

タグ:

いかちょー (2007-07-25 11:21) | コメント(0)| トラックバック(22)

トラックバック(22)

トラックバックURL:

コメント

コメントを投稿

名前

電子メール

URL

ログイン情報を記憶

コメント

プロフィール

いかちょー

いかちょーこと五十嵐智です。
情報セキュリティ分野に興味があります。
一応、CISSP ホルダー。

SF者です。どうぞよろしく。

プロフィール詳細 (Google プロフィール)

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source