diston

INDEX

distonとは?

diston は WEBDAVサーバへの操作を複数のサーバのファイルシステムに拡散する ISAPI Filter/Extension です。

以下のようなことが可能です。

動作環境
IIS 5.1, 6.0, 7.0, 7.5 and later(ただし、バージョンにより一部制限あり)
パッケージ内容
bin/diston.dll
ISAPI Filter/Extension 本体(ハイブリッドDLL)
bin/diston.setting
設定ファイル
bin/log
ログディレクトリ
install/iis6.vbs
IIS 5.1および 6.0 用のインストールスクリプト
install/iis7.vbs
IIS 7.0以降用のインストールスクリプト
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
各環境に共通の準備
IISの設定の準備
  1. Distonを使用したいサイトのサイトIDとサイト名を確認しておく。
  2. C:\Inetpub\diston など、インストール先にしたいディレクトリに bin の中身をコピーする。
  3. Administrators権限でコマンドプロンプトを開いて、install に CD(移動)する。
アクセス権限の設定
  • DLLインストール先ディレクトリに「Network Service」等の「読み取りと実行」権限を付与する。(IIS6.0のとき)
  • DLLインストール先ディレクトリに「IIS AppPool\[Application ID]」等の「読み取りと実行」権限を付与する。(IIS7.0以降のとき)
  • DLLインストール先ディレクトリに基本認証等に使用するユーザーの「読み取りと実行」権限を付与する。
  • logディレクトリに「Network Service」等の「変更」権限を付与する。(IIS6.0のとき)
  • logディレクトリに「IIS AppPool\[Application ID]」等の「変更」権限を付与する。(IIS7.0以降のとき)
  • logディレクトリに 基本認証等に使用するユーザーの「変更」権限を付与する。
  • サイトのルートディレクトリに「Network Service」等の「変更」権限を付与する。(IIS6.0のとき)
  • サイトのルートディレクトリに「IIS AppPool\[Application ID]」等の「変更」権限を付与する。(IIS7.0以降のとき)
  • サイトのルートディレクトリに基本認証等に使用するユーザーの「変更」権限を付与する。
  • target(ファイルの配布先)に指定するパスに基本認証等に使用するユーザーの「変更」権限を付与する。
IIS 5.1 および IIS6.0 の場合
ISAPI Extension として設定する場合(IIS 5.1 では使用できません
  1. IISを設定する

    下記のコマンドを発行します。

    CScript iis6.vbs /T:E /N:[サイトID] /P:[diston.dll の絶対パス]

    例) CScript iis6.vbs /T:E /N:"100" /P:"C:\Inetpub\diston\diston.dll"

ISAPI Filter として設定する場合
  1. IISを設定する

    下記のコマンドを発行します。

    CScript iis6.vbs /T:F /N:[サイトID] /P:[diston.dll の絶対パス]

    例) CScript iis6.vbs /T:F /N:"100" /P:"C:\Inetpub\diston\diston.dll"

  2. ディレクトリのアクセス権限を追加する
    • target に指定するパスに「Authenticated Users」等の「変更」権限を付与する。
IIS7.0以降の場合
ISAPI Extension として設定する場合
  1. IISを設定する

    下記のコマンドを発行します。

    CScript iis7.vbs /T:E /N:[サイト名] /P:[diston.dll の絶対パス]

    例) CScript iis7.vbs /T:E /N:"Default Site" /P:"C:\Inetpub\diston\diston.dll"

ISAPI Filter として設定する場合
  1. IISを設定する

    下記のコマンドを発行します。

    CScript iis7.vbs /T:F /N:[サイト名] /P:[diston.dll の絶対パス]

    例) CScript iis7.vbs /T:F /N:"Default Site" /P:"C:\Inetpub\diston\diston.dll"

  2. ディレクトリのアクセス権限を追加する
    • target に指定するパスに「Authenticated Users」等の「変更」権限を付与する。
設定リファレンス
<setting/>

diston設定のルート要素。

属性
[なし]
子要素
  • <pathlist/> 設定ファイル内で繰り返し参照可能なパスリスト。
  • <destination/> リリース先の定義。
  • <logger/> ログの設定。
<pathlist/>

サーバの一覧やディレクトリの一覧など、設定ファイル内で繰り返し参照するリストの定義。複数指定可能。

属性
name
このリストの名前。targetlist からの参照時に使用。必ず指定する。
子要素
  • <path/> リストに含まれるパス。
<pathlist/> - <path/>

pathlist の内容。複数指定可能。

下記のようなパス、もしくはその一部を設定。
\\192.168.0.1
\\host.domain
\some\dir
C:\some\dir
属性
[なし]
子要素
[なし]
<destination/>

リリース先の定義。複数指定可能。

サイトのルートディレクトリ内に name属性と同名のディレクトリがあると、
そのディレクトリへの操作が各<target/>に拡散されます。

属性
name
このリリース先の名前。必ず指定する。
continue_on_fail
true のとき、途中で問題が発生しても残りのtargetで処理を続ける。デフォルトはOFF。
子要素
  • <target/> リリース先のパス。
  • <targetlist/> リリース先のパスのリスト。
  • <permission/> 権限の設定。
<destination/> - <target/>

リリース先のパス。ローカルパスもしくはWindows共有のパスを指定。複数指定可能。

属性
path
下記のようなパスを設定。
\\192.168.0.1\Inetpub\wwwroot
\\host.domain\Inetpub\wwwroot
C:\Inetpub1\wwwroot
子要素
[なし]
<destination/> - <targetlist/>

リリース先のパスのリスト。pathlist を参照して target に展開される。複数指定可能。

属性
pathlist
参照する pathlist の名前。必ず指定する。
prefix
pathlist 内の全ての path の前に付与される文字列。オプション。
suffix
pathlist 内の全ての path の後に付与される文字列。オプション。
子要素
[なし]
<destination/> - <permission/>

権限の設定。この要素がなければ全許可。

属性
mkcol
true のとき MKCOLメソッド を許可。デフォルトは不許可。
copy
true のとき COPYメソッドを許可。デフォルトは不許可。
move
true のとき MOVEメソッドを許可。デフォルトは不許可。
put
true のとき PUTメソッドを許可。デフォルトは不許可。
delete
true のとき DELETEメソッドを許可。デフォルトは不許可。
子要素
[なし]
<logger/>

ログの設定。この要素がなければログ機能はOFF。

属性
src
ログの保存先。サンプルのdiston.settingを参照。
checkpath
ログを取得するWeb APIのパス。
"/check/server" など。
checkenc
ログを取得するWeb APIで Content-Typeヘッダに付加する charset。
"Shift_JIS" など。
expires
ログの有効期限(時間/hour)。デフォルトは0。
指定した時間を経過したログエントリはアプリケーションプール起動時に削除されます。
0を指定すると有効期限が無限になります。
子要素
[なし]
Web APIリファレンス

処理結果のログをXML形式で出力することができます。
設定ファイルの <logger/> 要素の checkpath属性 で指定したパスが APIのURLになります。

例えば、checkpath に "check/server" と指定した場合、
http://some.host/check/server が Web APIのURLになります。

結果は Content-Type: text/xml で出力されます。

checkenc が指定されていると
Content-Type: text/xml;charset=[checkenc] のように ヘッダ内に文字コード指定を出力できます。
クライアント側で文字化け等が発生した場合に使用できます。

command=log ログの取得

distonの処理結果を取得します。
ex) http://some.host/check/server?command=log&ps=100&dn=dest1

また、下記のクエリ文字列を抽出パラメータとして使用できます。

ps
取得する最大件数。新しいものから出力されます。(最大10,000件)
dn
<destination/> 要素の name属性 で絞り込み。
dp
<destination/> 要素の name属性 以降のパスで絞り込み。
ss
1 のとき、成功した結果も出力。デフォルトは失敗した結果のみ出力。
se
1 のとき、現在のクライアント以外からの操作結果も出力。デフォルトは現在のクライアントからの操作結果のみ出力。
tf
この日付からのログを出力。
YYYY-MM-DD hh:mm:ss の形式で指定。
tt
この日付までのログを出力。
YYYY-MM-DD hh:mm:ss の形式で指定。
command=dirs ディレクトリの取得

distonの対象になっているディレクトリの一覧を取得します。
ex) http://some.host/check/server?command=dirs

command=clientip クライアントIPアドレスの取得

サーバーが認識している、現在のクライアントのIPアドレスを取得します。
ex) http://some.host/check/server?command=clientip

更新履歴
2011/01/14
  • Version: 1.1.0.5
2011/03/31
  • Version: 1.2.0.0
  • ログの保存に SQLite を使用するように変更。 Microsoft Access(Jet) と テキストログは廃止。
  • ログ取得のための Web API 機能を追加。
2011/04/27
  • Version: 1.2.0.1(セキュリティ対応)
  • Web API から1リクエストで取得可能なログ件数を 10,000件に制限。
    パラメータ ps が指定されていないときは0件、10,000を超えるときは 10,000件までを返します。
  • Web API のパラメータ dn および dp で SQLのLIKE句ワイルドカードを使用不可に。
2012/08/06
  • Version: 1.2.1.0
  • ログの自動削除
    設定ファイルでログの有効期限を指定することにより、
    アプリケーションプールの再起動時に古いログエントリを自動削除する機能を追加。
  • ISAPI Filter 版の権限偽装(impersonation)対応
    ISAPI Filter 版でのコピー処理をリクエストユーザーの権限 で実行するように。
    これまではサーバーやアプリケーションプールの プロセスを起動したユーザーの権限で実行されていた。
2013/04/18
  • Version: 1.2.2.0
  • 特定の条件下で ISAPI Filter 版がリクエスト毎に落ちる不具合を修正。