RealNetworks 企業ロゴ

RealSystem iQ Server 8 Web ベース管理アプリケーション RealSystem Administrator の開発

目次

はじめに

Server 8 の設定ファイル

Server 8 のレジストリ

adminfs プラグイン

特殊な URL

RealSystem Administrator のカスタマイズ

付録 A - Sandbox の使用 : 2 つ目の RealSystem Administrator ディレクトリを開発用に追加する

付録 B - RealSystem Administrator 開発者向けのその他のリソース

用語集

はじめに

RealSystem Administrator は、RealSystem Server 8 のための Web ベースの管理用アプリケーションで、RealServer G2 および RealServer 7.0 の古いバージョンにも使用できます。このホワイト ペーパーには、RealSystem Administrator のスクリプトの詳細が記述されています。 このホワイトペーパーは、Administrator を拡張してカスタム プラグインを管理する必要のある開発者を対象としており、HTML と JavaScript について十分な知識があることを前提としています。

本書の前半では、Server 8 と RealSystem Administrator の主要なアーキテクチャ コンポーネントの概要について説明します。この中で、設定ファイルやサーバー レジストリなどが説明されています。 後半では、Administrator のファイル システム プラグイン(adminfs プラグインと呼びます)の機能の詳細について説明します。この機能を使用して、サーバー レジストリの設定データを設定および取得できます。 まとめとして、付録 A では RealSystem Administrator の拡張例について説明し、付録 B ではその他の開発者向けリソースについて紹介します。

Server 8 のアーキテクチャ

Server 8 は、高い拡張性およびサードパーティーのソリューションとの相互運用性を実現できるアーキテクチャに基づいて設計されました。 高い拡張性を実現するには、COM ベースのプラグイン アーキテクチャを使用します。 RealSystem Software Development Kit(SDK)を使用することにより、開発者は、サーバーを監視、ロギング、フィルタリング、および拡張するためのカスタム Server 8 プラグインを作成できます。 Server 8 の設定ファイルおよびレジストリの高い拡張性と、adminfs プラグインが実現するサーバーサイドのスクリプト機能により、カスタム プラグインを簡単に管理できます。

次の図に、Server 8 と RealSystem Administrator コンポーネント間の通信フローの概要を示します。

システム概要

Server 8 の設定ファイル

Server 8 の設定ファイルは XML ベースのファイルで、サーバーのすべての操作パラメータ、たとえばマウント ポイント、ディレクトリ、その他のプロパティを定義します。 デフォルトの設定ファイル(rmserver.cfg)は、RealServer ディレクトリにインストールされます。 Server 8 は、起動時に設定ファイルをサーバー レジストリにロードします。サーバー レジストリに格納されたプロパティは、サーバー、プラグイン、および RealSystem Administrator Web アプリケーションから使用できるようになります。 Administrator を使用して変更した内容は、この設定ファイルに書き込まれます。

次に、設定ファイルの例を示します。ここでは、設定ファイルの階層構造と、開発者が固有のカスタム プラグインを使用して設定ファイルに独自のセクションを自由に追加している様子が示されています。 設定ファイルに対するカスタマイズは、サーバーを再起動した後で自動的に Server 8 のレジストリに反映されます。 設定ファイルの構文と内容は、RealSystem iQ Server 8 アドミニストレーション ガイド で詳細に説明されています。このガイドは、 http://service.real.com/help/library/guides/server8/realsrvr.htm で参照できます。

<!--            M Y   C O N F I G   S E C T I O N          -->
<!--            ---------------------------------          -->
<List Name="MyPropertyList">
  <Var Protocol="TCP"/>
  	<Var Timeout="30"/>
</List>

Server 8 のレジストリ

サーバーのレジストリは、名前/値の組(プロパティ)のリストからなる階層構造を持ち、文字列、バッファ、整数値のデータ タイプを格納できます。 プロパティは、リストとサブリストの形に整理されています。 レジストリの各リストは、プライベートなネーム・スペースのように扱われます。つまり、プロパティとリスト名は、あるリスト内では一意である必要がありますが、別のリスト内で同じプロパティとリスト名を使用してもかまいません。

階層的な XML

実行時は、レジストリに設定情報、サーバー統計情報、およびシステム状態が格納されます。 RealSystem Administrator Web ページは、特定のサーバーサイド JavaScript 関数と HTML タグを使用して、読み取り専用でレジストリにアクセスできます。 Web ページのフィールドに入力されたデータは、adminfs プラグインが認識する専用の URL を介してオンザフライに送信され、サーバーのレジストリまたは設定ファイル、あるいはその両方に書き込まれます。 「オンザフライ」とは、Server 8 の動作中でも変更内容が即座に反映されることを意味します。 この場合、Server 8 を再起動する必要はありません。

レジストリ パスの構文

レジストリのリストとプロパティは、プロパティ パスで識別します。プロパティ パスでは、サブリスト間のパス区切り文字として "." を使用します。 前述した例の中の My Config Section では、この記号を使用して MyPropertyList の中の Protocol プロパティを次のように指定しています。

MyPropertyList.Protocol

このパスの記述方法は SDK のレジストリ、adminfs プラグインがサポートする JavaScript 拡張、および Administrator 専用 URL を使用する際に適用されます。 パス区切り文字として "." を使用するので、リスト名には "." を使用できません。また、プロパティ名は大文字と小文字が区別されます。

主要レジストリ リスト

サーバー レジストリは、複数の主要なサブリストに分割されます。詳細を次の表に示します。 考え方として、サーバー レジストリと Windows のシステム レジストリは関連していないことを理解することは重要です。このサーバー レジストリは、Server 8 特有のものです。

config 設定ファイルのプロパティがここに格納されます。

例 : "config.PNAPort"

configdefaults 設定ファイルでプロパティが指定されていない場合に使用される、設定プロパティのデフォルト値。

例 : "configdefaults.PNAPort"

license サーバーのライセンス ディレクトリで検出された有効なライセンス ファイルの内容を反映します。

例 : "license.License0.General.ClientConnections"

headers

現在実行中の Administrator ページの HTTP ヘッダーを反映します。

例 : "headers.User-Agent"

server

さまざまなシステム状態情報を反映します。

例 : "server.version"

レジストリ ビューワー

Server 8 には、レジストリ ビューワーと呼ばれる便利なツールがあります。 このツールを使用して、マシンのレジストリを検索し、特定のデータ タイプを見つけることができます。 次の URL を使用すると、ビューワーにアクセスできます。 http://yourserver:adminport/admin/regview.html.

レジストリ ビューワー

adminfs プラグイン

adminfs は Administration File System プラグインを表します。 このプラグイン(Windows システムでは admi3260.dll、UNIX システムでは adminfs.so.6.0 という名前のファイル)は、Server 8 が /admin/ マウント ポイントと admin ポートを使用して URL に対するリクエストを実行するために使用します。 adminfs プラグインは、配信するページに記述されたサーバーサイドの JavaScript と特定のタグを実行します。 また、さまざまな仮想 URL に応答することで、クライアントに次の機能を提供します。

サーバーサイド JavaScript

adminfs プラグインは、Netscape の JavaScript のコア言語バージョン 1.4 に基づいて、JavaScript 実行時エンジンをホストします。 adminfs は Netscape のサーバーサイド JavaScript エクステンションはサポートしませんが、独自のエクステンションを追加して Server 8 のレジストリへのアクセスと HTTP クライアントへの出力の送信を実行します。 以下に、これらの機能について詳しく説明します。

<SERVER> タグと RMAOutput

Server 8 で JavaScript を実行するには、<SERVER language="JavaScript"></SERVER> タグでスクリプト ステートメントを囲みます。 adminfs プラグインを使用する場合、<SERVER> タグに "language" 属性をすべて小文字で記述する必要があります。 これは、RealServer バージョン 7.0 およびそれ以前に適用されます。 その出力を HTTP クライアントに送信するための関数として、adminfs では RMAOutput() が提供されています。 次のリンクをクリックすると、adminfs スタイルで記述されたサーバーサイドのスクリプトの簡単な例を示すページに移動します。

簡単なサーバーサイドの Javascript の例

サーバーサイド JavaScript のエラー処理

サーバーサイド JavaScript で構文または実行時のエラーが発生した場合、エラー メッセージは、HTML のコメント形式で HTML ドキュメントに挿入されます。 エラー メッセージを表示するには、ブラウザの[ソースの表示]機能を使用します。 ページが正しく表示されないか、または正しく機能しない場合は、必ずソース コードを表示して、サーバー サイドのエラーがないかを確認する必要があります。 また、クライアントサイドのスクリプトはサーバーサイドのスクリプトに依存しており、実際のエラーがサーバーサイドのスクリプトで発生している場合でも、ブラウザにはクライアントサイドのエラーが表示される場合があります。 疑問が生じた場合は、必ずブラウザの[ソースの表示]機能を使用してトラブルシューティングしてください。

サーバーサイドの JavaScript エラーを意図的に発生させるサンプル
エラー メッセージのソースを表示するサンプル

RMA JavaScript エクステンション

前述した RMAOutput 以外に、adminfs プラグインには Server 8 のレジストリにアクセスするための関数が用意されています。 次の表は、adminfs がエクスポートするサーバーサイド JavaScript 関数の全リストです。

RMAOutput( s )
パラメータをクライアントに送信します。パラメータは現在の HTTP の出力に挿入されます。

Netscape のサーバーサイド エクステンションの write()、または Internet Information Server の ASP(Active Server Pages)の Response.write() メソッドに類似しています。

例 :

RMAOutput( "Hello World" );

RMAGetFirstProperty(listPath)

listPath パラメータで表されるリストの先頭のプロパティへの絶対プロパティ パスをレジストリから返します。 指定されたリストが空である、見つからない、またはリストではなくプロパティである場合は、NULL を返します。 リストの内容を順番に参照するには、次に示す RMAGetNextProperty() とともに使用します。 警告: RMAGetFirstProperty と RMAGetNextProperty の呼び出しはグローバルなリスト列挙子を共有するため、使用する際は注意が必要です。

例 :

RMAGetFirstProperty("config.MyPropertyList")

は "config.MyPropertyList.Protocol" を返します。

RMAGetNextProperty()

最後に呼び出された RMAGetFirstProperty() で指定されたリストの次のプロパティの絶対プロパティ パスを返します。 すでにリストの最後に到達している場合、または最後に呼び出された RMAGetFirstProperty() が NULL を返していた場合は、NULL を返します。

例 :

RMAGetNextProperty()

は "config.MyPropertyList.Timeout" を返します。

RMAGetNthProperty( listPath, listIndex );

listPath で指定されるリストの listIndex 番目のプロパティの絶対プロパティ パスを返します。 リストまたはリスト項目が存在しない場合、NULL を返します。 この関数はグローバルな列挙子を使用しないので、ライブラリ コードで列挙子を使用する場合に便利です。

RMAGetPropertyValue( propPath )

propPath で指定されるプロパティの値を返します。 プロパティが存在しない場合、または propPath がプロパティではなくリストである場合、NULL を返します。

例 :

RMAGetPropertyValue("config.MyPropertyList.Protocol")

は "TCP" を返します。

次の例で、RAM レジストリ関数の使用方法を示します。 リンクをクリックすると、実際のソース コードが表示されます。

サーバーサイド JavaScript の例

特殊なサーバーサイド タグ

adminfs プラグインは、サーバーサイド アクションを実行する 5 個の特殊タグを認識します。 その中の 1 つは、現在のファイルに別のファイルを取り込む機能を持ちます。その他のタグは、クライアントに送られる HTML にレジストリのプロパティの値を挿入するための「構文的ショート カット」を提供します。 特殊タグを次に示し、詳しく説明します。

Include タグ

<!--#INCLUDE file="file name" -->

このタグを使用して、現在のファイルに別のファイルをインクルード(取り込み)します。 インクルードが再帰的に行われることがないように注意してください。再帰的なインクルードが発生すると、RealServer がクラッシュする可能性があります。 これは、作成するページに、定型的な HTML やサーバーサイドのスクリプト ライブラリをインクルードする場合に、便利なタグです。 インクルード ファイルは、そのロケーションに関係なく、現在のマウント ポイントからの相対パスで指定する必要があります。

例 :

admin マウント ポイントの基本パスは、C:\RealServer\RealAdministrator です。
作成したカスタム ページ C:\RealServer\RealAdministrator\custom\mypage.html
に、ファイル C:\RealServer\RealAdministrator\custom\include\include.html をインクルードします。
このとき、Include タグは、<--INCLUDE file="custom\include\include.html" --> と記述します。

前述したように、adminfs プラグインが Include タグを実行中にエラーが発生した場合、クライアントに送信される HTML ファイルに HTML コメント形式でエラー メッセージが挿入されます。

Include タグの使用例

プロパティ値タグ

<!--$(レジストリのプロパティ パス)-->

ページをクライアントに送信する前に、adminfs はこのタグを、引用したレジストリのプロパティの値で置き換えます。

例 :

<!--$(server.ClientCount)-->

上に示したプロパティ タグは、次のサーバーサイド JavaScript と機能的に等価です。

<SERVER language="Javascript">RMAOutput(RMAGetPropertyValue("server.ClientCount"));</SERVER>

<!--#(レジストリのプロパティ パス)-->

adminfs は、引用されたレジストリのプロパティの値を HTML 出力に挿入します。 プロパティ タグは HTML コメントのまま残ります。 注意 : クライアント サイドの <SCRIPT> タグの内側では、HTML コメントは構文エラーになるので、このタグを使用しないでください。

<!--^(レジストリのプロパティ名)-->

<!--$()--> タグと同じように、このタグは引用されたレジストリのプロパティの値で置き換えられます。 さらに、プロパティ値にバックスラッシュが含まれる場合、そのバックスラッシュはエスケープされます。 これは、クライアント サイドの JavaScript 変数を初期化するときに便利です。

例 :

<SCRIPT>

// example use of escape tag
var logPath = "<!--^(config.LogPath)-->";

</SCRIPT>

このタグにより、logPath 変数が
"C:\\Program Files\\Real\\RealServer\\Logs\\rmaccess.log"
として初期化されます(デフォルトのインストレーション ディレクトリを使用する Windows NT 上の Server 8 の場合)。 バックスラッシュがエスケープされない場合は、それ自身がエスケープ文字として解釈されます。

<!--%(レジストリのプロパティ名)-->

<!--#()--> タグと同じように、このタグは HTTP 出力にプロパティ値を挿入し、HTML コメントとして残ります。 <!--^()--> タグと同じように、プロパティ値に含まれるバックスラッシュはエスケープされます。 警告: クライアント サイドの <SCRIPT> タグの内側では、HTML コメントは構文エラーになるので、このタグを使用しないでください。

プロパティ タグの使用例

HTTP ヘッダー

その他のサーバーサイド スクリプトの実行時情報の重要なソースとして、"server"、"headers"、および "parameters" レジストリ リストがあります。 ヘッダー リストは、クライアントから送信される HTTP ヘッダーを反映します。 各ヘッダーは、同じ名前のリストに含まれるプロパティとして表されます。 たとえば、"headers.Accept"、"headers.Cookie"、"headers.User-Agent" のように表されます。 RMAGetFirstProperty/RMAGetNextProperty 関数を使用したスクリプトの例に、ヘッダー リストを列挙する方法が示されています。

パラメータ リストは、問い合わせ文字列パラメータへの便利なアクセス方法です。名前と値の組は、パラメータ リスト内のプロパティとして表されます。

例 :

ページ "query_string.html" が URL

http://server:admin_port/admin/query_string.html?color=blue&size=large

を使用して要求された場合、パラメータ リストは次のようになります(ただし、この URL の実行中のみ。これは、ヘッダーとパラメータ リストは現在処理中の URL だけを反映するためです)。

parameters.color = "blue"
parameters.size  = "large"

特殊な URL を介したレジストリの修正

adminfs プラグインは、サーバーサイド スクリプトを経由した通常の CGI 機能をサポートしないので、Server 8 設定ファイルまたは実行中の状態の変更は、特殊な「仮想」 URL を使用して実現する必要があります。 仮想 URL は、/admin/ マウント ポイントの下にある実際のファイルには対応していませんが、adminfs が内部的に認識して処理します。 設定変更は仮想 URL の問い合わせ文字列部分を使用して指定します。これについては、後で詳しく説明します。

設定用 URL

servvar.set.html

この URL は、サーバー レジストリと設定ファイルの両方を修正します。 この URL は、サーバーを再起動しなくても修正できるプロパティに対してのみ使用します。 プロパティをオンザフライで修正できない場合、エラーが生成されます。 プロパティがオンザフライに変更可能かどうかを判断するには、プラグイン開発者に問い合わせてください。 プロパティの変更が有効になるためにサーバーの再起動が必要な場合は、次に説明する configvar.set.html を含む URL を使用します。

configvar.set.html

この URL は設定ファイルのみを修正します。 設定ファイルへの変更が有効になるには、サーバーを再起動する必要があります。

特殊な URL の使用

前述したリストの記述方法を使用して、リストとプロパティを追加または削除したり、プロパティ値を修正することができます。

実際の問い合わせ文字列の例

?config.RTSPPort=4400 設定プロパティ RTSPPort の値を 4400 に設定します。 プロパティが存在しない場合は、作成されます。
?config.MyList.MyProp=SomeValue リスト MyList の設定プロパティ MyProp の値を 'SomeValue' に設定します。 リストとプロパティが存在しない場合は、両方とも作成されます。
?config.MyList.MyProp= 値が ("=" の後に) 記述されていない場合、設定プロパティ MyProp はリスト MyList から削除されます。
?config.MyList= リスト MyList が削除されます。

RealSystem Administrator での設定変更に使用した問い合わせ文字列を参照するには、変更内容を送信した後に[Configuration Results]ページを表示します。 Internet Explorer を使用している場合は[File]>[Properties]メニュー コマンドを使用し、Navigator を使用している場合は[View]>[Page Info]メニュー コマンドを使用して、ソース コードを表示します。

設定用 URL のパラメータ規則の概要

  1. "?config.MyEmptyProperty=" のように、値を指定しないでプロパティを追加することはできません。これは、そのような構文は、プロパティとリストの削除に使用することになっているためです。 空文字列 ("") を値としてプロパティを作成する方法はありません。

  2. 少なくとも 1 つのプロパティを追加しないと、リストを追加することはできません。 "?config.MyList.MyEmptyList=" と記述すると、"MyEmptyList" が削除されます。

    別の言い方をすれば、規則 1 と 2 は、空値を割り当てることによりプロパティまたはサブリストが削除されることを示しています。

  3. すべての中間パスはプロパティ リストとして解釈され、指定されたプロパティ リストが存在しない場合はレジストリ内に作成されます。 名前/値の組は順番に処理されるので、問い合わせ文字列の先頭に近い位置でリストをクリアし、同じ問い合わせ文字列の後方で同一または別のプロパティと値を使ってリストを再作成することができます。 そのような順序で記述された例を次に示します。
    ?config.MyList.MySubList=&config.MyList.MySubList.MyProp1=Value1&config.MyList.MySubList.MyProp2=Value2

  4. JavaScript を使用して問い合わせ文字列を構築する場合、URL エンコードの標準規則が適用されます。 プロパティ パスとプロパティ値を URL エンコードする必要があります。 例 :
    <SCRIPT>
    var myPropertyPath = "config.MyList.MyProperty" ;
    var myPropertyValue = "Some Value";
    var myQueryString = "?" + escape( myPropertyPath ) + "=" + escape( myPropertyValue );
    </SCRIPT>
    

応答ページのパラメータ

設定用 URL は、問い合わせ文字列の中で "respage" と呼ばれるパラメータを探します。 このパラメータの値は、RealSystem Administrator マウント ポイントの下にあるページへの相対 URL である必要があります。 adminfs プラグインは、作業完了後に、ブラウザにこのページを返します。 通常このページは、ブラウザの新規ウィンドウに変更結果を表示するために使用します。 例外は servvar.restart URL で、これはサーバーを再起動する直前にクライアントに応答ページを送信します。

問い合わせ文字列の例

http://<yourserver:adminport>/admin/servvar.set.html?respage=showresults.html&config.RTSPPort=4040

Administrator は、config_results_ie.nc.html (Internet Explorer クライアント用) と config_results_nav.nc.html (Netscape クライアント用) の 2 ページを、ほとんどの設定 URL の respage パラメータとして使用します。 注意 : カスタム Administrator Web ページの開発中は、config_results_XX.nc.html ページを使用して結果を表示してください。このページは、カスタム プロパティを含む任意の設定変更で使用できます。

設定変更結果の表示

adminfs プラグインによりレジストリまたは設定ファイルを更新する場合、特殊レジストリ セクションに、"result" と呼ばれるエントリーが、変更された設定プロパティごとに作成されます。

結果リストのプロパティを次に示します。"PROPNAME" は、修正されたプロパティの絶対プロパティ パスのプレースホルダーです。たとえば、"config.FSMounts.RealSystem Content.BasePath" のように指定します。

result.PROPNAME.action 行われた修正のタイプ。"Set" または "Delete" のいずれかです。
result.PROPNAME.oldval プロパティの古い値。 プロパティが新規に作成された場合は、空文字列になります。
result.PROPNAME.newval (修正が正常に行われた場合の) プロパティの新しい値。 プロパティが削除された場合は、空文字列になります。
result.PROPNAME.success "Succeeded" または "Failed" のいずれか。
result.PROPNAME.info (修正が異常終了した場合)エラー メッセージ。

次の例により、設定 URL の実行によってレジストリが変更される様子を知ることができます。

  1. この例では、プロトコルとタイムアウトに関する変数の値が変更されます。
  2. 変更前のレジストリの抜粋

  3. この変更を適用するための URL は http://realserver:adminport/admin/servvar.set.html?config.MyPropertyList.Protocol=TCP&config.MyPropertyList.Timeout=45&respage=config_results_nav.nc.html です。
  4. 変更後のレジストリを次に示します。
  5. 変更前のレジストリの抜粋

  6. 変更内容は、"result" と呼ばれるサーバーのレジストリの特殊セクションに入力されます。 次に、これらの変更が完全に反映された図を示します。
  7. レジストリの結果

  8. 次に示すスクリーンショットに、実際に受信した結果ページ(respage)を示します。ここでは、変更が正常に適用されたことが示されています。

設定変更の成功

設定異常の対処

一般に、configvar.set.html を使用して行われる設定変更は、プロパティ パスの構文が正しく、"config." で始まっていれば、正常に終了します。 しかし、servvar.set.html を使用して行われる設定変更は、プロパティがオンザフライに変更できるように設計されていない場合、または不正なパスなどの無効データに弱い場合に、異常終了する可能性があります。 対処方針については、元のプラグイン開発者に問い合わせてください。

Administrator の結果ページに servvar.set.html を使用した設定エラーが存在する場合、configvar.set.html を使用して変更内容を再送信するオプションが使用可能になります。このオプションを使用すると、変更内容は設定ファイルにのみ保存されます。 その後サーバーを再起動することで、設定ファイルが再ロードされ、変更内容が有効になります。

構成エラーのスクリーンショット

注意 : RealSystem Administrator は、オンザフライに変更できるように RealServer に事前にプログラムされている設定プロパティにのみ、servvar.set.html を使用します。 Administrator を使用している場合、設定エラーが発生することはほとんどありません。

その他のサーバー関連の URL

データを修正するためのサーバー関連 URL は、これまで説明した URL 以外に、まだ 2 つあります。

servvar.restart.html

サーバーの再起動が行われます。 サーバーの再起動が行われる前に、Administrator に応答ページが送信されます。 UNIX システムの場合、サーバーのコントローラ プロセスに SIGUSR2 コマンドを送信することにより同じように動作させることができます。

servvar.reconfig.html

サーバーは、設定ファイルを再ロードします。 servvar.set URL を使用したオンザフライの設定が異常終了した項目は、この server.reconfig URL を使用した設定も異常終了します。 UNIX システムの場合、サーバーのコントローラ プロセスに SIGHUP コマンドを送信することにより同じように動作させることができます。

認証用 URL

Administrator の Security セクションのアクセス制御、認証、商取引、およびデータベースでは、独自の特定の URL を使用してデータを設定します。 次の表に、特定の URL を示します。

auth.addtime 既存の許可に、表示時間を追加します。
auth.adduser ユーザーをレルムに追加します。
auth.changedate 既存の許可の有効期限を変更します。
auth.changeuserpass ユーザーのパスワードを変更します。
auth.grantuser 認証されたコンテンツへのアクセスをユーザーに許可し、関連するデータベースにこの変更を書き込みます。
auth.removetime 既存の許可から表示時間を削除します。
auth.removeuser ユーザーをレルムから削除します。
auth.revokeuser ユーザーの認証されたコンテンツへのアクセスを取り消し、関連するデータベースにこの変更を書き込みます。
auth.revokealluser 認証されたコンテンツへのすべてのアクセス権限を取り消し、関連するデータベースにこの変更を書き込みます。

RealSystem Administrator のカスタマイズ

このセクションでは、独自の設定ページを作成して、それを Administrator Web サイトに統合する方法について説明します。

RealSystem Administrator Web サイト

Administrator Web サイトは、HTML ページ、スタイル シート、JavaScript ファイル、およびイメージの集合であり、それらは RealServer/RealAdministrator ディレクトリに置かれています。 Administrator は、RealServer のインストール後に自動的に起動されるよう設計されています。 インストール中に、サーバーはユーザー名とパスワードの入力を要求し、さらに Administrator へのアクセス専用のポート番号をランダムに割り当てます。 これにより、認証されたユーザーだけが Administrator にアクセスできることが保証されます。

Administrator がリクエストの処理に使用するマウント ポイントは /admin です。 http://yourserver:adminport/admin/index.html を使用して Administrator を起動できます。また、http://localhost:adminport/admin/index.html の「localhost」をマシン名に置き換えた URL も同じように使用できます。

Administrator Web サイトは、フレームセット(index.html)として整理されています。 トップ フレーム(header.html)には、監視しているサーバーの名前または IP アドレスが反映され、システム アラートを示すアイコンが表示されます。[変更の保留]アイコンは、変更内容を適用するにはサーバーを再起動する必要があることを意味します。[サーバーの再起動]アイコンは、サーバーを再起動する必要があることを示します。[ページの再ロード]アイコンは特定のページを再ロードする簡単な方法です。

左側の目次フレーム(toc.html)は Administrator の設定セクションを起動します。また、Java ベースのモニター、レポート パッケージへのリンク、サーバーが動作中であることを確認するためのサンプル クリップ、および詳細なドキュメントとその他の技術サポート リソースも表示します。 ライセンスが与えられている機能を確認できる情報を表示するリンクもあります。 その他に、Virtual Account Manager へのリンクがあります。これは、サーバーのアップグレードを補助するツールです。

Administrator のスナップショット

すべての機能が有効なサーバーでは[設定]セクションに次のような行程が表示されます。
  • 一般設定
  • ブロードキャスティング
  • スプリット
  • マルチキャスティング
  • キャッシュ
  • セキュリティ
  • 広告
  • ソース表示
  • ライセンス グループ

フレームの右側には、最初は Welcome ページ(welcome.html)が表示され、[クイック スタート]セクションへのリンクが表示されます。このセクションには Server 8 が正常にメディアをストリーミングしていることを確認するための一連の作業が含まれます。 サーバーを設定する際に、Welcome ページは使用する機能に応じたページに切り替わります。 たとえば[一般設定]セクションの[ポート]をクリックした場合、Welcome ページ(welcome.html)は[ポート]ページ(config_ports.html)により置き換わります。

Administrator フレームショット

カスタマイズの例

ここまででシステムとコーディングの実践の概要について説明したので、次は Administrator を使用して独自のページを作成し、格納する作業について説明します。 以降の例では、少数のカスタム プロパティを管理するページを作成していると仮定します。 例で使用するプロパティを、設定ファイルから抜粋して次に示します。

<List Name="MyPropertyList">
   <Var Protocol="TCP"/>
   <Var Timeout="30"/>
</List>

例を実行したり、修正するためには、サーバーの RealSystem Administrator ディレクトリにこれらのファイルをコピーする必要があります。 また、ブラウザ経由で RealSystem Administrator にアクセスするための Admin ユーザー名とパスワードが必要です。 RealSystem Administrator ディレクトリでファイルを作成、編集するための別の方法として、練習バージョン用に Administrator の 2 つ目のマウント ポイント "sandbox" を設定します。 マウント ポイントを追加するための手順は、付録 Aに詳しく説明されています。

サンプル 1 は、現在のプロパティ値を表示し、servvar.set.html 設定用 URL を使用してそれらを修正できる簡単なページです。 プロパティ値は、前述の <!--$()--> プロパティ タグを使用して取得します。 このページは、Administrator フレームセットとサポートする JavaScript ライブラリを使わずに使用できるように設計されています。

サンプル 2 の機能はサンプル 1 と同じですが、RMAGetPropertyValue() 関数を使用してレジストリ値を取得します。 また、サンプル 2 は、Administrator の一部として出荷される JavaScript ライブラリを使用します。

RealSystem Administrator の目次

前述したように、Administrator の目次ファイルの名前は toc.html です。 これは、Administrator フレームセットの左側のソース ページです。 このページのソース コードを構成する主要エレメントを次に示します。

  • TOCEntry。クライアントに送信する HTML ページに目次の各リンクを挿入する方法を定義します。
  • 目次の見出しを展開したり折りたたむためのクライアントサイドの DHTML 関数。
  • Administrator フレームセットのメイン(右側)フレームを初期化、制御するためのクライアントサイド関数。

目次に見出しやリンクを追加するには、ソース ファイルの希望する場所に TOCEntry オブジェクトを作成します。 TOCEntry クラスの動作について理解することも重要ですが、作業手順だけを知りたい場合は、次のセクションを飛ばして、「ページに RealSystem Administrator の目次を追加する」に進んでください。

TOCEntry クラス コンストラクタ


function TOCEntry(title, url, parent, key)
title 目次でこのエントリーに対して表示されるリンク テキスト
url エントリーに関連付けられたページの URL。URL を持たない目次の見出しの場合は、空文字列 ("") を使用します。 目次ページに挿入されるリンク エレメントの HREF 属性では、url パラメータを使用します。 目次のリンクをクリックしたときのデフォルトのターゲット ウィンドウは、Administrator フレームセットのメイン(右側)フレームです。 別のブラウザ ウィンドウをターゲットにするには、JavaScript URL を使用します。
parent オプション。 このエントリーの親見出し (別の TOCEntry オブジェクトへのリファレンス)。 このパラメータが省略されるか、NULL に設定されている場合、エントリーはルート レベルの見出しであるとみなされます。 ルート レベル エントリーはインデントされず、常に表示されます。
key オプション。 このエントリーを目次に挿入するために 0 以外の値である必要があるレジストリ プロパティへの絶対パス。 このパラメータが省略されるか、NULL に設定されている場合、エントリーは挿入されます。 主に、現在サーバーがライセンスを持っていない機能を設定ページからフィルタリングするために使用します。

次に toc.html の一部を抜粋します。ここでは見出し「View Source 」と、見出しを展開したときにその下に表示される 3 つのリンクが定義されています。

// *** ViewSource *** 
/* 
The following statement creates a new TOCEntry object and saves a (temporary) 
reference to it. This entry is a TOC heading and has no page associated with 
it so the URL parameter is an empty string. Since this heading is a ‘child’ 
of the "Config" heading, a reference to the config TOCEntry object 
is passed as the parent parameter. A key parameter is not passed in since the 
View Source feature is available on all Servers, and is not controlled by the 
Server license.
*/ 
tmpParent = new TOCEntry( "View Source", "", config ); 

//The next three statements create TOC links as children of the ViewSource heading.
new TOCEntry( "Source Access", "config_viewsrc.html", tmpParent);
new TOCEntry( "Content Access", "config_content_browsing.html", tmpParent );
new TOCEntry( "Browse Content Now", "Javascript:launchHome('browse_content.html')", tmpParent );
/* 
Normally the target window for the URL parameter is assumed to be the 
Administrator’s main or right-hand frame. However, there can be exceptions: since the "Browse Content Now" page 
is designed to be displayed in a separate browser window, the URL to this link 
is a JavaScript function that will open the ‘browse-content.html’ page in a new 
window.
*/
目次フレームにページを追加する

作成した設定ページを目次フレームに追加するには、新しい見出しまたは既存の見出しのどちらの下に表示するか、また、新しい見出しまたはリンクを挿入する位置を決める必要があります。 次の例では、サンプルの設定ページに新しい見出しとリンクを 1 つずつ作成し、それらを「View Source」リンクの直後に挿入します。

toc.html を開き、[View Source]セクションを探します。 次のコードを[Browse Content Now]TOCEntry 行の直後に挿入します。

/* create a subheading in the TOC for the sample pages */ 
tmpParent = new TOCEntry( "Sample Config Pages", "", config );
/* create the links to the sample pages under the new subheading */
new TOCEntry( "Sample 1", "config_sample1.html", tmpParent);
new TOCEntry( "Sample 2", "config_sample2.html", tmpParent);

まとめ

ここまでで、設定ファイルやレジストリにデータを設定するために使用する特殊 URL などの RealSystem Administrator と Server 8 の連携処理や、独自の設定ページを Administrator のフレームセットに追加する方法について、概略を説明しました。

最後のヒント : HTML コードを実装するにあたって、Internet Explorer と Navigator の違いについて注意してください。RealSystem Administrator はそれぞれのブラウザの 4.0 以降で動作するように設計されています。

以下に示す付録では、その他の開発に関するガイドラインについて説明します。 付録 A では、"sandbox" と呼ばれる演習用のディレクトリを作成する手順を説明します。付録 B では、その他のリソースとして、JavaScript リソース、SDK の場所、開発者向けフォーラムについて紹介します。 最後に、見慣れない用語について定義した簡単な用語集があります。

付録 A - sandbox : admin ファイル用の作業ディレクトリの設定

Administrator をカスタマイズする場合、インストール時に作成された RealSystem Administrator のディレクトリは修正しないでください。 その代わりに、"sandbox" と呼ばれるディレクトリを作成します。このディレクトリを作成することで、カスタマイズ作業がシステムに危険を及ぼす心配がなくなります。 また、変更した内容を、元のディレクトリと比較することができます。 また、本書に付属するサンプルをこの sandbox ディレクトリにコピーすることを推奨します。

Sandbox の設定

  1. sandbox ディレクトリを開発用 RealServer と同じマシン上の任意のディレクトリに作成します。ただし、そのディレクトリを読み書きする権限を持っている必要があります。 以降の手順と例の中では、ここで作成した sandbox ディレクトリのパスを <YOUR SANDBOX PATH> として参照します。
  2. RealServer/RealSystem Administrator ディレクトリから、サブディレクトリを除くすべてのファイルを <YOUR SANDBOX> にコピーします。
  3. RealServer 設定ファイルのコピーを作成し、その名前を sandbox.cfg にします。
  4. テキスト エディタで sandbox.cfg を開き、<List Name="FSMount"> タグの内側に、次に示すコードを追加します。
  5. <!-- Local File System; HTML -->
    <List Name="RealSystem Administrator HTML - sandbox">
       <Var ShortName="pn-local"/>
       <Var MountPoint="/sandbox/html/"/>
       <Var BasePath="<YOUR SANDBOX PATH>"/>
    </List>
    <!-- Local File System; IMAGES; use the install directory via the /sandbox/ mountpoint -->
    <List Name="RealSystem Administrator IMAGES - sandbox">
       <Var ShortName="pn-local"/>
       <Var BasePath="<REAL SERVER PATH>\RealAdministrator\images"/>
       <Var MountPoint="/sandbox/images/"/>
    </List>
    <!-- Local File System; DOCS; use the install directory via the /sandbox/ mountpoint -->
    <List Name="RealSystem Administrator DOCS - sandbox">
       <Var ShortName="pn-local"/>
       <Var MountPoint="/sandbox/Docs/"/>
       <Var BasePath="<REAL SERVER PATH>\RealAdministrator\Docs"/>
    </List>
    <!-- XML Tag Handler File System -->
    <List Name="Real System Administrator SSI - sandbox">
       <Var ShortName="pn-xmltag"/>
       <Var MountPoint="/sandbox/includes/"/>
       <Var BaseMountPoint="/sandbox/html/"/>
        <List Name="TagHandlers">
           <Var h1="pn-includer"/>
           <Var h2="pn-vsrctaghdlr"/>
        </List>
    </List>
    <!-- Admin File System -->
    <List Name="RealSystem Administrator Files - sandbox">
       <Var ShortName="pn-admin"/>
       <Var MountPoint="/sandbox/"/>
       <Var BaseMountPoint="/sandbox/includes/"/>
       <Var Realm="<REAL SERVER MACHINE NAME>.AdminRealm"/>
    </List>
    
  6. 次の行を "HTTPDeliverable" リストに追加します。
  7. <VAR Path_99="/sandbox"/>
  8. <YOUR SANDBOX PATH> を sandbox ディレクトリへの絶対パスで置き換えます。
  9. <REAL SERVER PATH> を Server 8 をインストールしたディレクトリへの絶対パスで置き換えます。
  10. <REAL SERVER MACHINE NAME> をサーバー マシンの名前で置き換えます。デフォルトの "RealSystem Administrator Files" リストの Realm プロパティと同じ値を使用してください。
  11. Windows NT にインストールした RealServer のデフォルト設定、sandbox ディレクトリとして C:\sandbox、およびマシン名として "ra_dev" を使用した場合、設定ファイルは次のようになります。

    <List Name ="HTTPDeliverable"> 
        <VAR Path_99="/sandbox"/> 
    <|  |  |  > 
    
    <List Name ="FSMount"> 
    <!-- Local File System; HTML --> 
        <List Name="RealSystem Administrator HTML - sandbox"> 
            <Var ShortName="pn-local"/> 
            <Var MountPoint="/sandbox/html/"/> 
            <Var BasePath="C:\sandbox"/> 
        </List> 
        <!-- Local File System; IMAGES; use the install directory via the /sandbox/ mountpoint --> 
        <List Name="RealSystem Administrator IMAGES - sandbox">
            <Var ShortName="pn-local"/> 
            <Var BasePath="C:\Program Files\Real\RealServer\RealAdministrator\images"/> 
            <Var MountPoint="/sandbox/images/"/> 
        </List> 
        <!-- Local File System; DOCS; use the install directory via the /sandbox/ mountpoint --> 
        <List Name="RealSystem Administrator DOCS - sandbox">
            <Var ShortName="pn-local"/> 
            <Var MountPoint="/sandbox/Docs/"/>
            <Var BasePath="C:\Program Files\Real\RealServer\RealAdministrator\Docs"/> 
        </List> 
        <!-- XML Tag Handler File System -->
        <List Name="Real System Administrator SSI - sandbox">
            <Var ShortName="pn-xmltag"/>
            <Var MountPoint="/sandbox/includes/"/>
            <Var BaseMountPoint="/sandbox/html/"/>
            <List Name="TagHandlers">
                <Var h1="pn-includer"/>
                <Var h2="pn-vsrctaghdlr"/>
            </List> 
        </List> 
        <!-- Admin File System -->
        <List Name="RealSystem Administrator Files - sandbox">
            <Var ShortName="pn-admin"/>
            <Var MountPoint="/sandbox/"/>
            <Var BaseMountPoint="/sandbox/includes/"/>
            <Var Realm="ra_dev.AdminRealm"/> 
        </List> 
    <|  |  | >
    

    注意 : イメージを追加または修正する予定がある場合、RealSystem Administrator の images サブディレクトリを sandbox ディレクトリの下に配置することもできます。 インストール ディレクトリから sandbox ディレクトリに /images サブディレクトリをコピーし、次に "RealSystem Administrator IMAGES - sandbox" リストの基本パス プロパティを、<YOUR SANDBOX PATH>/images のパスを指すように修正します。

  12. Server 8 を sandbox.cfg ファイルを使用して再起動します。 注意 : RealSystem Administrator で変更した内容は、sandbox.cfg ファイルに保存されます。
  13. RealServer の Bin ディレクトリに移動し、コマンド行で次のコマンドを実行して、RealServer を再起動します。

    Windows システムの場合 : rmserver ..\sandbox.cfg

    UNIX システムの場合 : Bin/rrmserver sandbox.cfg

  14. /sandbox/ マウント ポイントを使用して、sandbox ディレクトリの下にコピーし、修正したバージョンの RealSystem Administrator にアクセスします。 たとえば、次のように指定します。 http://<yourserver:adminport>/sandbox/index.html

付録 B - その他のリソース

RealSystem Administrator の入手

RealSystem Server 8 の一部である RealSystem Administrator は、http://www.real.com/solutions/servers/index.html の RealNetworks Server ページからダウンロードできます。

RealSystem SDK

RealNetwork の COM の実装とプラグイン開発ガイドラインについては、RealSystem SDK で詳しく説明されています。RealSystem SDK には、RealPlayer、Server 8、マニュアル、およびシステムのすべてのインターフェイスを説明するサンプルが含まれます。 RealSystem SDK は、http://partners.real.com/developer.html で無料で入手できます。

JavaScript のマニュアルとリソース

Microsoft の Javascript のマニュアルとリソースを http://msdn.microsoft.com/scripting/ で入手できます。このドキュメントには、クライアントサイド スクリプト デバッガに関する説明も含まれます。

Netscape の JavaScript のマニュアルとリソースを http://developer.netscape.com/tech/javascript/index.html で入手できます。

Netscape の JavaScript のデバッガに関するマニュアルを http://developer.netscape.com/software/tools/index.html?content=/software/jsdebug.html で入手できます。

RealForum ディスカッション グループ

その他の情報入手先として、Real Forum オンライン ディスカッション グループがあります。 Real Forum listserv は、RealNetworks 製品の使用に焦点を当てた電子メールによるディスカッション グループです。 このディスカッション グループでは、ストリーミング メディア ネットワークの立案と実装や、コンテンツの作成に関する最良の方法について、開発者がメッセージを投稿し、それに対する回答を参加者全員で共有します。

ドキュメント ライブラリとテクニカル サポート

その他の RealNetwork 製品のドキュメントと、テクニカル サポートの検索機能付きナレッジ ベースは、オンラインで使用できます。

用語集


設定ファイル
rmserver.cfg という名前の XML ベースのファイル。Server 8 はその中のパラメータを読み込みます。 設定ファイルは、XML バージョン宣言タグ、オプション コメント タグ、リスト タグ、および変数タグの 4 種類のタグから構成されます。 Web ベースの Administrator を使わずに、手動で設定ファイルを編集する場合、必ず元の設定ファイルのバックアップ コピーを作成してください。

問い合わせ文字列
問い合わせ文字列はユーザーが入力したデータをサーバーに渡します。

RealPlayer
RealNetworks クライアント。Server 8 がストリーミングするマルチメディア プレゼンテーションの再生用に設計されています。

RealSystem Administrator
Administrator は Web ベースのアプリケーションで、RealServer 機能の設定とカスタマイズに使用します。

RealSystem iQ
RealAudio や RealVideo などのクリップをネットワークを介してストリーミングするためのシステム。 Server 8、Proxy 8、Player 8、および製品ツールが含まれます。

RealSystem Server 8
RealNetworks サーバー ソフトウェア。RealPlayer にマルチメディア プレゼンテーションをストリーミングするために使用します。

RealSystem ソフトウェア開発キット(SDK)
キットには、RealPlayer、Server 8、マニュアル、および RMA インターフェイスを使用したサンプルが含まれます。

応答ページ
変更結果を示すためにサーバーが表示する HTML ページ(respage.html)。

Sandbox
試験用ディレクトリ。動作中のプログラム(この場合は Server 8)とは別に設定され、テスト コードを安全に実行することができます。

URL エンコード
Server 8 で処理するために特殊な方法でエンコードされたパラメータ。

仮想 URL
サーバーがデータを設定するために内部的に使用するカスタム URL。 2 つの主要な URL として、servvar.set.html と configvar.html があります。 2 つの補助的な URL として、servvar.restart.html と servvar.reconfig.html があります。

XML
拡張可能なマーク付け言語(eXtensible Markup Language)の略。テキスト ベースの非バイナリ フォーマットで、サーバーの設定ファイルに含まれる情報とその構成の種類を記述するために使用します。 XML は、ワールド ワイド ウェブ コンソーシアム(W3C)によって承認された、公式規格です。


改訂日 : 2000 年 12 月 15 日
発行日 : 2000 年 3 月 17 日 Copyright RealNetworks, 2000. All Rights Reserved.