![]() |
Sun ONE Portal Server, Secure Remote Access 6.0 管理者ガイド |
第5章 リライタの設定
リライタは Web ページの内容を走査し、Web ページに埋め込まれたすべての URLをリライトします。
リライタの概要
安全な環境では、ユーザーが家からイントラネットページにアクセスしようとすると、直接アクセスできないことがあります。 ただし、認証を受けた後、エンドユーザーはリライタを使用してイントラネットを参照できるようになります。このときリンクやリンクのページ上のURL が正しく参照されるようになります。 リライタはユーザーが表示する Web ページのコンテンツを走査し、そのページの URL を識別します。
リライタが機能するためには次の操作が必要です。
Portal Server 管理コンソールを使用して、さまざまな URL をリライトするためのルールを定義します。 これらのルールのコレクションは、ルールセットと呼ばれます。 相対 URL の絶対 URL への拡張
リライタは相対 URL を絶対 URL に拡張します。 例えば、ユーザーが次のサイトにアクセスしようとするとき、
<a href="http://yahoo.com/mypage.html">
ここでhttp://yahoo.com/test/ はページのベース URL です。
ゲートウェイ以外のシナリオでは、URL スクレイパープロバイダがこの機能を処理します。 URL Scraper プロバイダについての詳細は、Sun ONE Portal Server 管理者ガイドの第 7 章「リライタの管理」を参照してください。
ゲートウェイ URL を既存の URL の前に指定
ユーザーがゲートウェイを通じてイントラネットの Web ページにアクセスしようとするとき、リライタでゲートウェイ URL を既存の URL の前につける必要があります。 例えば、mymachine で html ページにアクセスするときは、次のように入力します。
<a href="http://mymachine.intranet.com/mypage.html>"
リライタは次のようにゲートウェイを参照する接頭辞を URL に指定します。
<a href="https://gateway.company.com/http://mymachine.intranet.com/ mypage.html>"
ユーザーがこのアンカーに関連するリンクをクリックすると、ブラウザがゲートウェイに照会を行います。 ゲートウェイは、mymachine.intranet.com から mypage.html のコンテンツをフェッチします。
ゲートウェイはいくつかのルールを使用して、フェッチされた Web ページのリライトする要素を判断します。
対象読者
このガイドは、組織の要求に応じて、リライタを設定しイントラネットのコンテンツをリライトする必要のある管理者を対象にしています。
注 このガイドは Sun ONE Portal Server 管理者ガイド の第 7 章「リライタの管理」と併せて読むようにしてください。
またコマンド行ユーティリティでリライタデータを管理する場合は、Sun ONE Portal Server 管理者ガイド の第 12 章「コマンド行ユーティリティ」も参照してください。
必要なルールを記述して、リライタを期待どおりに機能させる要件は次のとおりです。
サポートされる URL と例外
このセクションでは、リライタでリライトされる URL の種類を説明します。 またリライタが処理しない例外もとりあげます。
サポートされる URL
RFC-1738 に指定されるすべての標準 URL、およびリライタによって HTTP か HTTPS がリライトされたすべての標準 URL。
標準 URL
プロトコルに HTTP か HTTPS を使用したすべての URL が認識されます。 大文字、小文字の区別はしません。 例えば、hTtP、HTtp、および httP はすべて有効です。 サンプル URL を次にリストします。
http://www.w3.org:8000/imaginary/test
http://www.myu.edu/org/admin/people#andy
http://info.my.org/AboutUs/Index/Phonebook?dobbins
http://www.w3.org/RDB/EMP?where%20name%3Ddobbins
http://info.my.org/AboutUs/Phonebook 標準以外の URL
リライタは標準以外の基本的な URL のリライトをサポートします。
標準以外の URL を標準形式に変換するための情報は、URL が表示されるページのベース URL から取り出されます。 これには次の情報が含まれます。
バックスラッシュは、絶対 URL ではなく相対 URL に含まれる場合のみサポートされます。 例えば、http://abc.sesta.com\index.html はリライトされますが、http:\\abc.sesta.com はリライトされません。
例外
次の URL はリライトされません。
リライタルールとルールセットの定義
リライタは Web ページに表示されるさまざまな要素の URL 部分を修正するように設計されています。 Web ページのどの部分をリライトするか、またどのようにリライトするかをリライタで決定するためのルールを個別に記述する必要があります。 必要なルールの種類、および正確な構文は、次のセクションで説明します。
さまざまなカテゴリとサブカテゴリのルールセットは XML 形式で保存され、ルールセットと呼ばれます。
管理コンソールの Portal Server 設定の「リライタ (Rewriter)」セクションで、ルールセットと管理ルールを作成する必要があります。
Secure Remote Access には、次の各要素をリライトするためのルールセットがあらかじめパッケージされています。 これらのルールは XML 形式で Portal Server に格納されています。 ルールセットには、次のものがあります。
InstallDir/SUNWps/export/DefaultGatewayruleset.xml
InstallDir/SUNWps/export/Genericruleset.xml
詳細については、「パッケージ内のルールセット」のセクションを参照してください。
Web ページのコンテンツの種類に基づいて、複数のルールを定義する必要があります。 例えば、HTML コンテンツをリライトするのに必要なルールは、JavaScript コンテンツをリライトするためのルールと異なります。
リライタによりページがパースされている間、ルールが特定のステートメントに一致するまで、ルールセットのルールがページの各ステートメントに順番に適用されます。
コンテンツに基づき、リライタのルールは大きく次のカテゴリに分けられます。
HTML コンテンツのルール
注 WML は HTML に似ているため、HTML ルールは WML コンテンツにも適用されます。
パッケージ内のルールセット
Secure Remote Access には、Web ページの要素をリライトするためのルールセットがあらかじめパッケージされています。 これらのルールは XML 形式で格納されています。 ルールセットには、次のものがあります。
InstallDir/SUNWps/export/DefaultGatewayruleset.xml
InstallDir/SUNWps/export/Genericruleset.xml
これらのルールセットは、共通に使用する URL 命名規則と参照技術を使用した Web ページのリライトに便利です。
さらに、これらのルールセットにはゲートウェイの正しい機能に必要なルールと、NetMail、Netlet、NetFile などのアプリケーションが収められています。
注 カスタマイズを行う場合、汎用ルールセットのルールに必要なルールを追加して新しいルールセットを作成します。
パッケージ内のルールセットの復元
デフォルトゲートウェイルールセットまたは汎用ルールセットを間違って削除した場合、次のように復元することができます。
$ rwadmin store --runasdn "username" --password "password" InstallDir/SUNWps/export/DefaultGatewayruleset.xml
$ rwadmin store --runasdn "username" --password "password" InstallDir/SUNWps/export/Genericruleset.xml
ここでusernameとpasswordはamadminに指定されるものと同じです。
注 インストール時にパッケージされているデフォルトゲートウェイルールセットまたは汎用ルールセットが復元されます。 これらのルールセットをカスタマイズした場合、変更は復元されません。
ルールセットの作成とルールの定義
ルールセットの作成についての詳細は、Sun ONE Portal Server 管理者ガイドの第 7 章、「Sun ONE Portal Server リライタ」を参照してください。
新しいルールセットを作成した後、必要なルールを定義する必要があります。 ルールを記述する場合は次の点に注意してください。
すべてのルールは<ruleset> </ruleset>タグで括る必要があります。
ルールセットの<HTMLRules> </HTMLRules>セクションに、HTML コンテンツのリライトに必要なすべてのルールを指定します。
ルールセットの<JSRules> </JSRules>セクションに、JavaScript コンテンツのリライトに必要なすべてのルールを指定します。
ルールセットの<XMLRules> </XMLRules>セクションに、XML コンテンツのリライトに必要なすべてのルールを指定します。
イントラネットページで、リライトの必要のある URL を特定し、ルールセットの適切なセクション (HTML、JSRules、またはXMLRules) に必要なルールを指定します。
必要なドメインにルールセットを割り当てます。 詳細については、「ルールセットのドメインへの割当て」 を参照してください。
InstallDir/SUNWps/bin/gateway -n gateway profile name start
ゲートウェイサービスのリライタの設定
ゲートウェイサービスの「すべての URL をリライト」チェックボックスと「ドメインとサブドメインのプロキシ」リストにより、リライタの動作が決定します。
「ドメインとサブドメインのプロキシ」リストは、リライトする URL をゲートウェイに伝えます。 指定されたドメインとサブドメインのホストの参照のみが、リライタの候補になります。 「すべての URL をリライト」オプションを有効にすると、「ドメインとサブドメインのプロキシ」リストのエントリが上書きされます。
プロキシ管理についての詳細は、第2章 「ゲートウェイの管理」を参照してください。
すべての URL のリライト
ゲートウェイサービスで「すべての URL をリライト」オプションを有効にすると、「ドメインとサブドメインのプロキシ」リストのエントリをチェックせずに、リライタはすべての URL をリライトします。 「ドメインとサブドメインのプロキシ」リストのエントリは無視されます。
ゲートウェイのすべての URL のリライトを有効にする手順
iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。
「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。
「ゲートウェイ」ページが表示されます。
編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。
「ゲートウェイプロファイルを編集」ページが表示されます。
「すべての URL をリライト」チェックボックスを選択して、ゲートウェイによるすべての URL のリライトを有効にします。
ページの上または下で「保存」をクリックし、変更内容を記録します。
変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n gateway profile name start
ルールセットのドメインへの割当て
特定のドメインが使用する特定のルールセットを指定できます。 特定のページがフェッチされるドメインに応じて、対応するルールセットが使用されます。
指定されたルールセットには関連するルールしか含まれないため、特定のルールセットを割り当てると処理速度が速くなります。 すべてのドメインに共通のルールセットを割り当てると、リライタがそのルールセットのすべてのルールを処理するための時間は、特定のページにルールの一部を割り当てた場合に比べて相当長くなります。
iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server設定」の「リライタ」に、必要なルールセットを作成します。 詳細については、Sun ONE Portal Server 管理者ガイドを参照してください。
デフォルトではドメインベースのルールセットリストに次の2つのエントリが追加されます。
default domain|default_gateway_ruleset
デフォルトドメインのすべてのページに対して、デフォルトゲートウェイのルールセットが適用されます。 他のすべてのページには、汎用ルールセットが適用されます。 デフォルトのゲートウェイルールセットと汎用ルールセットはパッケージ内のルールセットです。 詳細については、「パッケージ内のルールセット」を参照してください。
注 デスクトップに表示されるすべてのコンテンツについて、コンテンツがフェッチされる場所にかかわらず、デフォルトドメインのルールセットが使用されます。
例えば、URL yahoo.com のコンテンツを集めるようにデスクトップを設定すると仮定します。 Portal Server は sesta.com 内にあります。 sesta.com のルールセットがフェッチされたコンテンツに適用されます。
注 ルールセットを指定するドメインは、「ドメインとサブドメインのプロキシ」リストに表示されていなければなりません。
ドメインにルールセットを割り当てる手順
iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。
「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。
「ゲートウェイ」ページが表示されます。
編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。
「ゲートウェイプロファイルを編集」ページが表示されます。
「ドメインベースのルールセット」フィールドに、必要なドメインまたはホスト名およびルールセットを入力し、「追加」をクリックします。「ドメインベースのルールセット」リストにエントリが追加されます。
ドメインまたはホスト名とルールセットは次の形式で指定します。
ドメイン名|ルールセット名
例
ページの上または下で「保存」をクリックし、変更内容を記録します。
変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n gateway profile name start
MIMEマッピングの指定
リライタでは、コンテンツタイプ、すなわち HTML、JAVASCRIPT、XML、WML に基づいて Web ページをパースするために4つのパーサが使用されます。 共通の MIME タイプは、デフォルトではこれらのパーサに関連付けられています。 ゲートウェイサービスの MIME マッピングフィールドで、これらのパーサに新しい MIME タイプを関連付けることができます。 これによって、リライタ機能が他の MIME タイプに拡張されます。
複数のエントリはセミコロン (;) またはカンマ (,) で区切ります。
ヒント MIME マッピングリストから不要なパーサを削除すると、処理速度が向上します。 例えば、特定のイントラネットのコンテンツにJavaScript が含まれないことが確実な場合は、MIME マッピングリストから JavaScript エントリを削除できます。
MIME マッピングを指定する手順
iPlanet Directory Server Access Management Edition の管理コンソールに administrator としてログインします。
「SRAP 設定 (SRAP Configuration)」の「ゲートウェイ」の横の矢印をクリックします。
「ゲートウェイ」ページが表示されます。
編集する属性が含まれるゲートウェイプロファイルの横の「編集」をクリックします。
「ゲートウェイプロファイルを編集」ページが表示されます。
「MIME マッピング」フィールドにスクロールし、編集ボックスに必要な MIME タイプを追加します。 セミコロンまたはカンマを使用し、複数のエントリを区切ります。
エントリは HTML=text/html;text/htm の形式で指定します。
「追加」をクリックし、必要なエントリをリストに追加します。
ページの上または下で「保存」をクリックし、変更内容を記録します。
変更を有効にするために、次のコマンドを入力してゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n gateway profile name start
ルールでのパターンマッチングの使用
valuePatterns を使用すると、パターンマッチングを実行し、リライトが必要なステートメントの特定の部分を識別できます。
ルールの一部として valuePatterns を指定すると、一致したパターンに続くすべてのコンテンツがリライトされます。
<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|"]/>
source は、フォームが表示される UTML ページの URL です。
field は値をリライトする必要があるフォームのフィールドです。
valuePatterns はリライトする必要がある field 値の一部を示します。 0|1234| に続くすべてのコンテンツがリライトされます。
valuePatterns でのワイルドカードの使用
* 文字を使用して、リライトのパターンマッチングを実行できます。
valuePatterns フィールドに * を単独で指定することはできません。 * はあらゆる項目への一致を示すため、valuePattern に続くものはありません。したがってリライタは他にリライトするものがありません。 * は *abc などの他の文字列と一緒に使用できます。 この場合、*abc に続くすべてのコンテンツがリライトされます。
注 * はルールのどのフィールドでも、ワイルドカードとして使用できます。 ただしルールのすべてのフィールドに * を使用することはできません。 すべてのフィールドに * が含まれていると、ルールは無視されます。 エラーメッセージは表示されません。
* や ** は区切り文字と一緒に使用できます。区切り文字はオリジナルのステートメントに表示されて複数のフィールドを区切ります。 1 文字のワイルドカード (*) はリライトされないフィールドに一致し、2 文字のワイルドカード (**) はリライトが必要なフィールドに一致します。
表 5-1に * ワイルドカードの使い方の例を示します。 表は 3 つの列で構成されています。 最初の列にはリライトされるサンプルステートメントを、 2 番目の例には valuePatterns のサンプル値を、 3 番目の例にはリライト内容の説明をそれぞれ示します。
HTML コンテンツのルール
Web ページの HTML コンテンツは、さらに属性、JavaScript トークン、フォーム、アプレットに分類できます。 これに従って、HTML コンテンツのルールは次のように分類されます。
HTML コンテンツの属性ルール
このルールは値をリライトする必要のあるタグの属性を特定します。 これらのタグには次のものがあります。
リライタはゲートウェイ URL に接頭辞を指定して、これらの値を修正します。
構文
<Attribute name="attributename" [tag="*" valuePatterns=""]/>
valuePatterns は属性と一致する可能性のあるパターンを指定します。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
例
ページのベース URL が次の場所に属していると仮定します。
http://mymachine.intranet.com/mypage.html ページコンテンツ
<a href="http://mymachine.intranet.com/mypage.html> ルール
<Attribute name="href"/>
<Attribute name="href" tag="a"/> 出力
<a href=gateway URL/http://mymachine.intranet.com/mypage.html> 説明
リライトされる URL はすでに絶対URL であるため、ゲートウェイ URL のみがこの URL に接頭辞として付けられます。
HTML コンテンツの JavaScript トークンルール
値に JavaScript が含まれ、この JavaScript を JavaScript パーサで解析し、リライト内容を判断する必要のある HTML 属性。
大半の場合、デフォルトのゲートウェイルールセットで指定されるルールで、JavaScript トークンの URL を十分にリライトできます。
構文
<JSToken>token name</JSToken>
token name は、変換する必要のある JavaScript を値に持つ属性です。
例
ページのベース URL が次の場所に属していると仮定します。 ページコンテンツ
http://abc.sesta.com/focus.html
<Form>
<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','focus');return;"> ルール
<JSToken>onClick</JSToken> 出力
<Function type="URL" name="Check" paramPatterns="y,"/>
<Form>
<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway URL/http://abc.sesta.com/focus.html','focus');return;">
説明
指定されたページコンテンツをリライトするには、2 つのルールが必要です。 最初のルールは onClick JavaScript トークンを特定します。 2 番目のルールは、リライトが必要な check 関数のパラメータを特定します。 この場合、paramPatterns に値 y が指定されているため、最初のパラメータのみがリライトされます。
ゲートウェイ URL と JavaScript トークンが表示されるベース URL が、必要なパラメータの前に指定されます。
HTML コンテンツのフォームルール
ユーザーが参照する HTML ページにはフォームが含まれていることがあります。 いくつかのフォームの要素は値として URL をとることがあります。
構文
<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|"]/>
Form sourceはフォームが表示される HTML ページの URL です。
field は値をリライトする必要があるフォームのフィールドです。
valuePatterns はリライトする必要がある field 値の一部を示します。 valuePatterns に続くすべてのコンテンツがリライトされます。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
例
ページのベース URL が次の場所に属していると仮定します。
http://test.siroe.com/testcases/html/form.html ページコンテンツ
ページ URI を form.html とし、サーバーの root ディレクトリに格納されていると仮定します。
<form name=form1 method=POST action="http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 value="0|1234|/test.html"> ルール
<Form source="*/form.html" name="form1" field="abc1" valuePatterns="0|1234|"/> 出力
<FORM name=form1 method=POST action="gateway URL://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 value="0|1234|gateway URL/http://test.siroe.com/test.html"> 説明
action タグは定義済みのいくつかの HTML 属性ルールを使用してリライトされます。
フォーム value は出力に示されるようにリライトされます。 指定されたvaluePatterns が検索され、valuePatterns に続くすべてのコンテンツはゲートウェイ URL と、フォームが表示されるページのベース URL を先頭に付けてリライトされます。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
HTML コンテンツのアプレットルール
単一の Web ページに複数のアプレットが含まれていることや、各アプレットに多くのパラメータが指定されていることがあります。 アプレットの URL のリライタルールには、次の構文に説明するようにパターンマッチング情報を含める必要があります。
リライタはルールに指定された値をアプレットの内容と照合し、必要に応じて URLを修正します。 この置換はサーバーで実行され、ユーザーが特定の Web ページを参照しているときには行われません。
値の一部にワイルドカード (*) も使用できます。 例えば、パラメータ名が * であれば、リライタはアプレットでパラメータ名を比較しません。
構文
<Applet source="*/somehtml.jsp" code="classname.class" param="parametername" [valuePatterns="*"] />
valuePatterns はリライトで照合されるパターンです。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html ページコンテンツ
<applet codebase=appletcode code=RewriteURLinApplet.class archive=/test.jar>
<param name=Test1 value="/index.html"> ルール
<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*"/> 出力
<APPLET codebase=gateway URL://abc.siroe.com/casestudy/test/HTML/applet/appletcode code=RewriteURLinApplet.class archive=/test.jar>
<param name=Test1 value="gateway URL://abc.siroe.com/index.html"> 説明
デフォルトのゲートウェイルールセットに <Attribute name="codebase"/> が定義されているため、codebase=appletcode はリライトされます。
名前が Test で始まるすべてのパラメータがリライトされます。 アプレットコードが表示されるページのベース URL、およびゲートウェイ URL が value フィールドの前に指定されます。
JavaScript コンテンツのルール
JavaScript はさまざまな場所に URL を格納します。 リライタは JavaScript を直接パースできないため、URL の部分を判断できません。 JavaScript プロセッサで URL の解釈をできるようにするために、一部のルールを記述する必要があります。
URL を含む JavaScript 要素は次のように分類されます。
JavaScript の変数
JavaScript 変数はさらに 5 つのカテゴリに分類されます。
JavaScript の URL 変数
URL 変数の右側には URL 文字列が表示されます。
構文
<Variable type="URL">variablename</Variable>
variablename には変数名を指定します。 variablename の値がリライトされます。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.siroe.com/tmp/page.html ページコンテンツ
<script LANGUAGE="Javascript">
var imgsrc="http://srap.sesta.com/tmp/tmp.jpg"; ルール
<Variable type="URL">imgsrc</Variable> 出力
var imgsrc="gateway URL://abc.siroe.com/tmp/tmp.jpg";
var imgsrc="gateway URL://srap.sesta.com/tmp/tmp.jpg"; 説明
タイプが URL で名前に imgsrc が含まれるすべての変数がリライトされます。 出力の最初の行では、ゲートウェイ URL と変数が表示されるページのベース URLが先頭に指定されます。 2 行目にはすでに絶対パスが指定されているため、ゲートウェイ URL のみが接頭辞として付けられます。
JavaScript の EXPRESSION 変数
式変数の右側には式が表示されます。 この式の結果が URL です。 リライタは、このような式をサーバーで評価できないため、HTML ページに JavaScript 関数(psSRAPRewriter_convert_expression) を追加します。 この関数はパラメータに式をとり、クライアントブラウザで要求される URL に対して式を評価します。
ステートメントに含まれる URL が単一の URL か EXPRESSION URL か明らかでないときは、両方のシナリオを処理する EXPRESSION ルールを使用することをお勧めします。
構文
<Variable type="EXPRESSION">y1</Variable>
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.siroe.com/dir1/dir2/page.html ページコンテンツ
<script LANGUAGE="Javascript">
var expvar="../../images/graphics"+".gif";
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
var expvar="/images/graphics"+".gif"; ルール
<Variable type="EXPRESSION">expvar</Variable> 出力
var expvar=psSRAPRewriter_convert_expression("../../images/graphics"+". gif");
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
var expvar=psSRAPRewriter_convert_expression("/images/graphics"+".gif") ; 説明
関数 psSRAPRewriter_convert_expression が、式変数 expvar の右側の部分に先行して指定されます。 この関数は式を処理し、実行時にコンテンツをリライトします。
JavaScript の DHTML 変数
これらは HTML コンテンツを保持する JavaScript 変数です。
構文
<Variable type="DHTML">y1</Variable>
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/graphics/set1/graphics/jsscript/JSVAR/page.htm l ページコンテンツ
<script LANGUAGE="Javascript">
var dhtmlVar="<a href=../../images/test.html>"
var dhtmlVar="<a href=/images/test.html>"
var dhtmlVar="<a href=images/test.html>" ルール
<Variable type="DHTML">dhtmlVar</Variable>
<Attribute name="href" tag="a"/> 出力
//DHTML Var
var dhtmlVar="<a href=gateway URL://abc.sesta.com/graphics/set1/graphics/images/test.html>"
var dhtmlVar="<a href=gateway URL://abc.sesta.com/images/test.html>"
var dhtmlVar="<a href=gateway URL://abc.sesta.com/graphics/set1/graphics/jscript/JSVAR/images/tes t.html>" 説明
JavaScript パーサは dhtmlVar の値を HTML コンテンツとして読み取ります。 HTML ルールがページに適用されると、2 番目のルール(Attribute name="href")が適用され、URL がリライトされます。
JavaScript の DJS (Dynamic JavaScript) 変数
これらは JavaScript コンテンツを保持する JavaScript 変数です。
構文
<Variable type="DJS">y1</Variable>
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html ページコンテンツ
//DJS Var
var dJSVar="var dJSimgsrc='/tmp/tmp.jpg';"
var dJSVar="var dJSimgsrc='../tmp/tmp.jpg';"
var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp.jpg';" ルール
<Variable type="DJS">dJSVar</Variable>
<Variable type="URL">dJSimgsrc</Variable> 出力
//DJS Var - need 2 rules
var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/tmp/tmp.jpg';"
var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg';"
var dJSVar="var dJSimgsrc='gateway URL://abc.sesta.com/tmp/tmp.jpg';" 説明
ここでは 2 つのルールが要求されます。 最初のルールはDynamic JavaScript 変数 dJSVar を検索します。 この変数の値は、再びタイプ URL の JavaScript になります。 2 番目のルールが適用されて、この JavaScript 変数の値がリライトされます。
JavaScript のシステム変数
ユーザーが宣言する変数ではありませんが、JavaScript 標準の一部として使用できます。 例えば window.location.pathname のようになります。
構文
<Variable type="SYSTEM">variable.name</Variable>
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.siroe.com/dir1/page.html ページコンテンツ
<script LANGUAGE="Javascript">
alert(window.location.pathname); ルール
<Variable type="SYSTEM">window.location.pathname</Variable> 出力
</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
alert(psSRAPRewriter_convert_pathname(window.location.pathname)); 説明
リライタはルールで指定されたシステム変数を検索し、psSRAPRewriter_convert_pathname 関数を前に指定します。 この関数は実行時にシステム変数を処理し、処理後の URL をリライトします。
JavaScript の関数パラメータ
関数パラメータは 4 つのカテゴリに分類されます。
JavaScript の URL パラメータ
URL を直接含む文字列パラメータです。
構文
<Function type="URL" name="test" paramPatterns="y,y," />
paramPatterns は関数内でリライトが必要なパラメータを指定します。
y - y の部分はリライトの必要があるパラメータを示します。 例えば、構文で最初と 2 番目のパラメータをリライトする必要がありますが、3 番目のパラメータをリライトされません。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html ページコンテンツ
<script language="JavaScript">
alert(one + "##" + two + "##" +three);
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500); ルール
<Function type="URL" name="test" paramPatterns="y,y,"/>
<Function type="URL" name="window.open" paramPatterns="y,,,"/> 出力
<SCRIPT language="JavaScript">
function test(one,two,three) {
alert(one + "##" + two + "##" +three);
test("gateway URL://abc.sesta.com/test.html","gateway URL://abc.sesta.com/test/rewriter/test1/jscript/test.html","123");
window.open("gateway URL://abc.sesta.com/index.html","gen",width=500,height=500); 説明
最初のルールは、関数 test の最初の 2 つのパラメータをリライトする必要があることを示します。 したがって test 関数の最初の 2 つのパラメータがリライトされます。 2 番目のルールは、window.open 関数の最初のパラメータをリライトする必要があることを特定します。 window.open 関数内の URL に、ゲートウェイ URL と関数パラメータが含まれるページのベース URL が先頭に付けられます。
JavaScript の EXPRESSION パラメータ
これらは評価後に URL になる関数内の変数です。
構文
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>
y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/dir1/dir2/page.html ページコンテンツ
<script language="JavaScript">
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">TEST</a>"); ルール
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> 出力
function jstest2(){
var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2 ()));
document.write("<a HREF="+test1+">TEST</a>"); 説明
このルールは、jstest1 関数の最初のパラメータをリライトする必要があることを示します。 サンプルページのコンテンツでは、最初のパラメータは実行時にのみ評価される式です。 リライタはこの式の前にpsSRAPRewriter_convert_expression 関数を付けます。 式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力をリライトします。
注 上記の例では、変数 test1 を JavaScript 変数ルールの一部として指定する必要がありません。 jstest1 の関数ルールはリライトの際に注意が必要です。
JavaScript の DHTML パラメータ
HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。
構文
<Function type="DHTML" name="name" paramPatterns="y"/>
y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。
例
ページのベース URL が次の場所に属していると仮定します。
http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html ページコンテンツ
<script>
document.write('<a href="/index.html">write</a><BR>')
document.writeln('<a href="index.html">writeln</a><BR>')
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>") ルール
<Function type="DHTML" name="document.write" paramPatterns="y"/>
<Function type="DHTML" name="document.writeln" paramPatterns="y"/> 出力
<SCRIPT>
document.write('<a href="gateway URL://xyz.siroe.com/index.html">write</a><BR>')
document.writeln('<a href="gateway URL://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/index.html"> writeln</a><BR>')
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>") 説明
最初のルールは、関数 document.write の最初のパラメータをリライトする必要があることを示します。 2 番目のルールは、関数 document.writeln の最初のパラメータをリライトする必要があることを指定します。 3 番目のルールは、名前に href を含むすべての属性をリライトする必要があることを指定する簡単な HTML ルールです。 この例では、DHTML パラメータルールは関数内のリライトの必要があるパラメータを特定します。 この場合、HTML 属性ルールが適用され、特定されたパラメータが実際にリライトされます。
JavaScript の DJS パラメータ
Dynamic JavaScript パラメータは、必要に応じて出力をリライトするために 2 つのルールを必要とします。
構文
<Function type="DJS" name="name" paramPatterns="y"/>
y - y の部分はリライトの必要がある関数パラメータを示します。 上記の構文では、最初のパラメータのみがリライトされます。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/page.html ページコンテンツ
<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location='http://abc.sesta.com'")); ルール
<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable type="URL">top.location</Variable> 出力
<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location='gateway URL://abc.sesta.com'")); 説明
最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定します。 JavaScript 内で、変数 top.location もリライトする必要があります。 この変数は 2 番目のルールを使用してリライトされます。
XML コンテンツのルール
Web ページには、URL を含む XML コンテンツが含まれていることがあります。 リライトが必要な XML コンテンツは、2 つのカテゴリに分類されます。
XML のタグテキスト
リライタは、TAG 名に基づいて XML コンテンツを変換します。
構文
<TagText tag="attribute" attributePatterns="name=src"/>
name=src ここで src は属性の名前を指定します。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html ページコンテンツ
<xml><attribute name="src">test.html</attribute></xml>
<xml><attribute>abc.html</attribute></xml> ルール
<TagText tag="attribute" attributePatterns="name=src"/> 出力
<xml><attribute name="src">gateway URL://abc.sesta.com/test/rewriter/test1/xml/test.html</attribute></ xml>
<xml><attribute>abc.html</attribute></xml> 説明
ページコンテンツの最初の行には、名前 src を含む属性が指定されているため、指定されたルールに基づいてリライトされます。 ページコンテンツの 2 行目には、名前 src を含む属性が指定されていないため、リライトは行われません。
XML の属性
XML 属性のルールは、HTML の属性ルールに類似しています。 "HTML コンテンツの属性ルール" を参照してください。
構文
<Attributes>
<Attribute name="href" [tag="abc" valuePatterns="123|45|*"]/>
</Attributes>
valuePatterns はリライトする必要がある文字列の部分を示します。 valuePatterns に続くすべてのコンテンツがリライトされます。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
例
ページのベース URL が次の場所に属していると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html ページコンテンツ
<xml><baseroot href="/root.html"/></xml>
<xml><img href="image.html"/></xml>
<xml><string href="1234|substring.html"/></xml>
<xml><check href="1234|string.html"/></xml> ルール
<Attribute name="href"tag="check" valuePatterns="1234|"/> 出力
<xml><baseroot href="/root.html"/></xml>
<xml><img href="image.html"/></xml>
<xml><string href="1234|substring.html"/></xml>
<xml><check href="1234|gateway URL://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml> 説明
上記の例では、4 行目のみがルールに指定されたすべての条件に合致するためリライトされます。
valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
スタイルシートのカスケード
HTML ページのカスケードスタイルシートも変換されます。 この変換に定義されるルールはありません。これは URL が CSS の url() 関数にのみ表示されるためです。
クライアント側のリライト
JavaScript の変数と関数パラメータの値は、サーバー側で判断できません。 この値は、実行時に必要に応じてクライアント側で判断しリライトする必要があります。 リライタはこのような変数を、変数の前にラッパー関数を付けて処理します。
psSRAPRewriter_convert_expression
この関数は JavaScript の EXPRESSION 変数と EXPRESSION 関数に追加されます。 この関数はパラメータに式をとり、クライアントブランザで要求される URL に対して式を評価します。
psSRAPRewriter_convert_pathname
この関数は、JavaScript 標準の一部として使用できるシステム変数に使用されます。 リライタはルールで指定されたシステム変数を検索し、psSRAPRewriter_convert_pathname 関数を前に指定します。 この関数は実行時にシステム変数を処理し、処理後の URL をリライトします。
サンプルルールセット
このセクションでは、サンプルルールセットを示します。 ケーススタディでは、リライタがこれらのルールを解釈する方法を示します。
<?xml version="1.0" encoding="ISO-8859-1"?>
Rules for integrating a mail client with the gateway.
<!DOCTYPE ruleset SYSTEM "jar://rewriter.jar/resources/ruleset.dtd">
<ruleset type="GROUPED" id="owa">
<Attribute name="action" />
<Attribute name="background" />
<Attribute name="codebase" />
<Attribute name="href" />
<Attribute name="src" />
<Attribute name="lowsrc" />
<Attribute name="imagePath" />
<Attribute name="viewClass" />
<Attribute name="emptyURL" />
<Attribute name="draftsURL" />
<Attribute name="folderURL" />
<Attribute name="prevMonthImage" />
<Attribute name="nextMonthImage" />
<Attribute name="style" />
<Attribute name="content" tag="meta" />
</HTMLRules>
<!-- Rules for Rewriting JavaScript variables in URLs -->
<Variable type="URL"> _fr.location </Variable>
<Variable type="URL"> g_szUserBase </Variable>
<Variable type="URL"> g_szPublicFolderUrl </Variable>
<Variable type="URL"> g_szExWebDir </Variable>
<Variable type="URL"> g_szViewClassURL </Variable>
<Variable type="URL"> g_szVirtualRoot </Variable>
<Variable type="URL"> g_szBaseURL </Variable>
<Variable type="URL"> g_szURL </Variable>
<Function type="EXPRESSION" name="NavigateTo" paramPatterns="y"/>
</JSRules>
<Attribute name="xmlns"/>
<Attribute name="href" tag="a"/>
<TagText tag="baseroot" />
<TagText tag="prop2" />
<TagText tag="prop1" />
<TagText tag="img" />
<TagText tag="xsl:attribute"
attributePatterns="name=src" />
</XMLRules>
ケーススタディ
このセクションでは、サンプルメールクライアントのソース HTML ページを説明します。 このケーススタディでは、予測されるシナリオおよびルールのすべてについては扱いません。 イントラネットページにルールを適用するために使用するサンプルルールセットのみ説明します。
想定
このケーススタディは次のような想定で行います。
サンプルページ 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://abc.siroe.com/mailclient/destin/?Cmd=navbar -->
<META http-equiv=Content-Type content="text/html; CHARSET=utf-8">
<META http-equiv=Pragma content=no-cache>
<META http-equiv=Expires content=0><!--Copyright (c) 2000 Microsoft Corporation. All rights reserved.--><!--CURRENT FILE== "IE5" "WIN32" navbar -->
BEHAVIOR: url(http://abc.siroe.com/mailweb/controls/dropmenu.htc)
<LINK href="destin_files/navbar.css" type=text/css rel=stylesheet>
var g_szUserBase= "http://abc.siroe.com/mailclient/destin"+"/";
var g_szVirtualRoot= "http://abc.siroe.com/mailweb";
var g_szImagePath= g_szVirtualRoot + "/img/";
<SCRIPT src="/destin_files/navbar.js"></SCRIPT>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY oncontextmenu=return(event.ctrlKey); onselectstart=return(false);
id=outbar_mainbody style="BACKGROUND-COLOR: appworkspace" leftMargin=0
<TABLE class=nbTableMain id=nbTableMain style="HEIGHT: 100%" cellSpacing=0
cols=1 cellPadding=0 rows="2">
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
src="/destin_files/logo-ie5.gif" border=0></DIV></TD></TR>
<TABLE class=nbTable cellSpacing=0 cols=1 cellPadding=0 rows="4">
<TD class=nbFlybar id=show_navbar onkeydown=flybar_keydown()
onclick=ToggleTab(this.id) tabIndex=0 noWrap>
<DIV class=treeOFLOW>Shortcuts</DIV></TD></TR>
<TD id=idOutbarpane style="TEXT-ALIGN: center" vAlign=top><A
href="http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&am p;Page=1"
target=viewer alt="Go to inbox"><IMG class=nbImage alt="Go to inbox"
src="destin_files/navbar-inbox.gif"></A>
<DIV class=nbLabel>Inbox</DIV><BR><A id=calendar
href="http://abc.siroe.com/mailclient/destin/Calendar/?Cmd=contents "
target=viewer alt="Go to calendar"><IMG class=nbImage
alt="Go to calendar" src="destin_files/navbar-calendar.gif"></A>
<DIV class=nbLabel>Calendar</DIV><BR><A id=contacts
href="http://abc.siroe.com/mailclient/destin/Contacts/?Cmd=contents "
target=viewer alt="Go to contacts"><IMG class=nbImage
alt="Go to contacts" src="destin_files/navbar-contacts.gif"></A>
<DIV class=nbLabel>Contacts</DIV><BR><A id=options
href="http://abc.siroe.com/mailclient/destin/?Cmd=options"
target=viewer alt="Go to options"><IMG class=nbImage
alt="Go to options" src="destin_files/navbar-options.gif"></A>
<DIV class=nbLabel>Options</DIV></TD></TR>
<TD class=nbFlybar id=show_folders onkeydown=flybar_keydown()
onclick=ToggleTab(this.id) tabIndex=0 noWrap>
<DIV class=treeOFLOW>Folders</DIV></TD></TR>
<TD class=nbTreeProgress id=treeProgress style="DISPLAY: none"
vAlign=top noWrap><SPAN id=idLoading
style="OVERFLOW: hidden">Loading...</SPAN>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> 説明
表 5-2    サンプルルールセットとケーススタディのマッピング
ページコンテンツ
適用されるルール
リライタの出力
説明 var g_szVirtualRoot="http: //abc.siroe.com/mailwe b";
サンプルルールセットの JSRules セクション:
<Variable type="URL"> g_szVirtualRoot </Variable>
var g_szVirtualRoot= "http://gateway.sesta. com/http://abc.siroe.c om/mailweb";
g_szVirtualRoot は単一の URL を値に持つ変数です。
このルールは、タイプ URL の変数g_szVirtualRoot を検索するようにリライタに伝えます。 このような変数が Web ページに存在する場合、リライタはこれを絶対 URL に変換し、ゲートウェイ URL を接頭辞として付けます。 src="/destin_files/log o-ie5.gif"
サンプルルールセットの HTMLRules セクション: src="http://gateway.se sta.com/http://abc.sir oe.com/destin_files/lo go-ie5.gif
href="http://abc.siroe .com/mailclient/destin /Inbox/?Cmd=contents&a mp;Page=1"
サンプルルールセットの HTMLRules セクション:
href="http://gateway.sesta.com/http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&Page=1"
リライタのルールの記述
リライタが正しく機能するように、イントラネットページのすべての条件に合う総合的なルールセットを記述する必要があります。 次のリストの一般的な手順に従ってルールを記述してください。
コンテンツのリライトが必要な HTML ページを含むディレクトリを特定します。
これらのディレクトリで、リライトが必要なページを特定します。
各ページでリライトが必要な URL を特定します。 「http」および「/」を検索すると、ほとんどの URL を簡単に見つけることができます。
URL のコンテンツタイプ、すなわち HTML、JavaScript、XML のいずれかを特定します。 各コンテンツタイプ、詳細な分類、および各 URL タイプのルール構文については、次のセクションを参照してください。
これらの各 URL をリライトするのに必要なルールを記述するには、iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で必要なルールセットを編集します。
注 ルールを記述する場合、ルールの順序に注意してください。 ルールはルールセットに表れる順番で、ページ内のステートメントに適用されます。 特定のルール、および「*」を含む一般のルールを適用する場合は、特定のルールを最初に適用し、次に一般のルールを適用するようにしてください。 この方法をとらないと、特定のルールを適用する前でも、一般のルールがすべてのステートメントに適用されます。
サンプルの操作
このセクションでは、リライトが必要なコンテンツを含む簡単な HTML ページについて説明します。 また、各サンプル HTML ページのコンテンツのリライトに必要なルールと、リライトされた HTML ページについても説明します。
これらのすべてのサンプルページは、portal server URL/rewriter ディレクトリ内にあります。 ルールを適用する前にページ内を参照し、リライトされゲートウェイを通じて出力されたファイルを確認し、ルールがどのように機能しているかを確認します。 一部のサンプルでは、ルールがすでにデフォルトのゲートウェイルールセットの一部に含まれています。 また別のサンプルでは、デフォルトのゲートウェイルールセットにルールを指定する必要があります。 これは該当箇所で説明されています。
注 ステートメントの中で太字で表示している部分は、リライトされたことを示します。
HTML
JavaScript 変数
JavaScript 関数
XML
フォームのサンプル
このサンプルは次の場所からアクセスできます。
portal server URL/rewriter/HTML/forms/formrule.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていない場合、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
このサンプルで指定されたルールを、default_gateway_Ruleset の「HTML 属性をリライトするためのルール」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_Ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<form name="form1" method="Post" action="http://abc.sesta.com/casestudy/html/form.html">
<input type="hidden" name="name1" value="0|1234|/test.html">
<input type="hidden" name="name3" value="../../html/test.html">
<form name="form2" method="Post" action="http://abc.sesta.com/testcases/html/form.html"><br>
<input type="hidden" name="name1" value="0|1234|../../html/test.html"></form> ルール
<Form source="*" name="form1" field="name1" valuePatterns="0|1234|"/> リライト後の HTML ページ
<HTML>
<FORM name=form1 method=POST action="gateway URL://abc.sesta.com/casestudy/html/form.html">
// デフォルトのゲートウェイルールセットの HTML ルールの一部として <Attribute name="action"/> が定義されているため、この URL がリライトされます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞に付ける必要があります。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。
<input type=hidden name=name1 value="0|1234|gateway URL/portal server URL/test.html">
// ここではフォーム名は form1、フィールド名は name1 です。 これはルールに指定されたフォーム名とフィールド名に一致します。 ルールはこのステートメントの value に一致する valuePatterns を 0|1234| と宣言します。 したがって valuePattern の後の URL がリライトされます。 Portal Server URL ゲートウェイ URL が前に指定されます。 valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
<input type=hidden name=name3 value="../../html/test.html">
//name はルールに指定される field 名に一致しないため、この URL はリライトされません。
<FORM name=form2 method=POST action="gateway URL://abc.sesta.com/casestudy/html/form.html"><BR>
// <Attribute name="action"/> はデフォルトルールセットの HTML ルールの一部として定義されているため、この URL はリライトされます。 この URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞として指定する必要があります。
<input type=hidden name=name1 value="0|1234|../../html/test.html">
// フォーム名がルールに指定される名前に一致しないため、この URL はリライトされません。 HTML 属性のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/HTML/attrib/attribrule.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに host1.siroe.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
このサンプルに指定されたルールをデフォルトのゲートウェイルールセットに追加する必要はありません。このルールは「HTML 属性をリライトするためのルール (Rules for Rewriting HTML Attributes)」セクションにすでに定義されています。
リライト前の HTML
<html>
1.a href <a href="http://abc.sesta.com/images/logo.gif">http://..</a>
2 href <a href="https://host1.siroe.com">https://..</a>
3 href <a href="../images/logo.gif">../images/</a>
4 href <a href="images/logo.gif">images/..</a> <br><br>
5 href <a href="../../images/logo.gif">../../images/</a> <br><br> ルール
<Attribute name="href"/> リライト後の HTML
<html>
1 a href <a href="gateway URL/http://abc.sesta.com/images/logo.gif">http://..</a> <br>
// <Attrib name="href"/> ルールがすでにデフォルトのゲートウェイルールセットに定義されているため、この URL はリライトされます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞に付けます。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。
2 href <a href="gateway URL/https://host1.siroe.com">https://..</a>
// この場合も、ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに host1.siroe.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定されるためゲートウェイ URL が接頭辞として付けられません。
3 href <a href="gateway URL/portal server URL/rewriter/HTML/images/logo.gif">../images/</a>
// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。 指定されたサンプル構造の HTML ディレクトリに images というディレクトリがないため、このリンクは機能しません。
4 href <a href="gateway URL/portal server URL/rewriter/HTML/attrib/images/logo.gif">images/..</a> <br><br>
// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。
5 href <a href="gateway URL/portal server URL/rewriter/images/logo.gif">../../images/</a> <br><br>
// 相対パスが指定されているため、必要なサブディレクトリの後にゲートウェイ URL と Portal Server URL が接頭辞として指定されます。 指定されたサンプル構造の rewriter ディレクトリに images というディレクトリがないため、このリンクは機能しません。 アプレットのサンプル
アプレットコードを参照するページのベース URL は次のとおりです。
portal server URL/rewriter/HTML/applet/rule1.html
RewriteURLinApplet.class ファイルは、次の場所にあります。
portal server URL/rewriter/HTML/applet/appletcode
このサンプルで指定されたルールを、default_gateway_Rulesetの「HTML 属性をリライトするためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML
<html>
<applet codebase=appletcode code=RewriteURLinApplet.class archive=/test>
<param name=Test1 value="/index.html">
<param name=Test2 value="../index.html">
<param name=Test3 value="../../index.html"> ルール
<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*" /> リライト後の HTML
<HTML>
<APPLET codebase=gateway URL/portal server URL/rewriter/HTML/applet/appletcode=RewriteURLinApplet.class archive=/test>
// <Attrib name="codebase"/> ルールがすでにデフォルトのゲートウェイルールセットの一部として存在するため、この URL はリライトされます。 ゲートウェイと Portal Server URL が appletcode ディレクトリのパスの前に接頭辞として指定されます。
<param name=Test1 value="gateway URL/portal server URL/index.html">
// ページのベース URL が rule1.html で、パラメータ名がルールに指定されたパラメータ Test* に一致するため、この URL はリライトされます。 index.html は root レベルに指定されているため、ゲートウェイと Portal Server の URL が直接前に付けられます。
<param name=Test2 value="gateway URL/portal server URL/rewriter/HTML/index.html">
// ページのベース URL が rule1.html 、パラメータ名がルールに指定された パラメータ Test* に一致するため、この URL はリライトされます。 必要に応じてパスが前に付けられます。
<param name=Test3 value="gateway URL/portal server URL/rewriter/index.html">
// ページのベース URL が rule1.html、パラメータ名がルールに指定された パラメータ Test* に一致するため、この URL はリライトされます。 必要に応じてパスが前に付けられます。 HTML JavaScript トークンのサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/HTML/jstokens/JStokens.html
このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML
<html>
<script language="javascript">
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('/indexblur.html','blur');return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('/indexblur.html','blur');return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('/focus.html','focus');return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check('/focus.html','focus');return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','blur');return;"> ルール
<JSToken>onClick</JSToken>
<Function type="URL" name="Check" paramPatterns="y"/>
注 <Function type="URL" name="Check" paramPatterns="y"/>はJavaScript関数ルールです。 JavaScript関数のサンプルで詳しく説明しています。
リライト後の HTML
<html>
<script language="javascript">
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('gateway URL/portal server URL/indexblur.html','blur');return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('gateway URL/portal server URL/indexblur.html','blur');return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('gateway URL/portal server URL/focus.html','focus');return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check('gateway URL/portal server URL/focus.html','focus');return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway URL/portal server URL/focus.html','blur');return;">
// このサンプルではすべてのステートメントがリライトされます。 それぞれ、ゲートウェイと Portal Server の URL が前に付いています。 これはデフォルトのゲートウェイルールセットに onAbort、onBlur、onFocus、onChange、および onClick のルールが定義されているためです。 リライタは JavaScript トークンを検出し、後の処理のために JavaScript 関数ルールに渡します。 サンプルの 2 番目のルールは、リライトするパラメータをリライタに伝えます。 JavaScript URL 変数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/variables/url/js_urls.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
このサンプルで指定されたルールを、default_gateway_rulesetの「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
<title>JavaScript Variable test page</title>
<script LANGUAGE="Javascript">
var imgsrc="../../tmp/tmp.jpg";
var imgsrc="http://abc.sesta.com/tmp/tmp.jpg";
var imgsrc="../../../tmp/tmp.jpg"; ルール
<Variable type="URL">imgsrc</Variable> リライト後の HTML ページ
<html>
<title>JavaScript Variable test page</title>
<script LANGUAGE="Javascript">
var imgsrc="gateway URL/portal server URL/tmp/tmp.jpg";
var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/url/tmp/tmp.jpg";
var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/tmp/tmp.jpg";
var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/tmp/tmp.jpg";
var imgsrc="gateway URL/http://abc.sesta.com/tmp/tmp.jpg";
var imgsrc="gateway URL/portal server URL/rewriter/tmp/tmp.jpg";
var imgsrc="gateway URL/portal server URL/rewriter/JavaScript/variables/url/tmp/tmp.jpg";
// 上記のすべての URL は、ルールで指定された URL タイプ、imgsrc という名前を持つ JavaScript 変数です。 したがってこれらの URL はゲートウェイと Portal Serverの URL の後に付けられます。 必要に応じて、Portal Server URL の後のパスが前に付きます。
<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/url/images/logo.gif">
// 「HTML属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。 JavaScript EXPRESSION 変数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/variables/expr/expr.html
(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
ルールを追加した場合、次のコマンドでゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
<title>JavaScript EXPRESSION Variables Test Page</title>
<script LANGUAGE="Javascript">
var expvar = expvar1 + expvar2;
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
var expvar="/images/logo"+".gif";
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
Testing JavaScript EXPRESSION variables ルール
<Variable type="EXPRESSION">expvar</Variable> リライト後の HTML ページ
<html>
<title>JavaScript EXPRESSION Variables Test Page</title>
// Rewriter appends the wrapper function psSRAPRewriter_convert_expression here
<script LANGUAGE="Javascript">
var expvar =psSRAPRewriter_convert_expression( expvar1 + expvar2);
// リライタはこのステートメントの右側を JavaScript EXPRESSION 変数と認識します。 リライタはサーバー側でこの式の値を解決することができません。 したがって psSRAPRewriter_convert_expression か数が式の前に付けられます。 式はクライアント側で評価され、必要に応じてリライトされます。
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
// 前のステートメントのリライト後の値 expvar は、この式の値に到達するために使用されます。 結果は有効な URL ( サンプルのこの位置にグラフィックが配置される) であるため、リンクが機能します。
var expvar="gateway URL/portal server URL/images/logo"+".gif";
// リライタは expvar の右側を文字列式として認識します。 これはサーバー側で解決できるため、直接リライトされます。
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
// 前のステートメントのリライト後の値 expvar は、この式の値に到達するために使用されます。 結果は有効な URL ではない (最終的な位置にグラフィックが配置されない) ため、リンクが機能しません。
Testing JavaScript EXPRESSION variables JavaScript DHTML 変数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/variables/dhtml/dhtml.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
(まだ追加していない場合) このサンプルで指定されたルールを、default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
ルールを追加した場合、次のコマンドでゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
<title>JavaScript DHTML Variable Test Page</title>
<script LANGUAGE="Javascript">
var dhtmlVar="<a href=../../images/test.html>"
var dhtmlVar="<a href=/../images/test.html>"
var dhtmlVar="<a href=/images/test.html>"
var dhtmlVar="<a href=images/test.html>"
var dhtmlVar="<a href=http://abc.sesta.com/images/test.html>"
var dhtmlVar="<img src=http://abc.sesta.com/images/test.html>"
<img src="images/logo.gif">IMAGE ルール
<Variable type="DHTML">dhtmlVar</Variable> リライト後の HTML ページ
<html>
<title>JavaScript DHTML Variable Test Page</title>
<script LANGUAGE="Javascript">
var dhtmlVar="<a href=gateway URL/portal server URL/rewriter/JavaScript/images/test.html>"
// JavaScript DHTML ルールは dhtmlVar の右側をダイナミック HTML コンテンツとして識別します。 このためデフォルトのゲートウェイルールセットの HTML ルールが適用されます。 ダイナミック HTML には href 属性が含まれています。 デフォルトゲートウェイルールセットは、ルール <Attribute name="href"/> を定義します。 したがって href 属性の値がリライトされます。 ただしURL は絶対 URL ではありません。 このため相対 URL はページのベース URL、および必要なサブディレクトリに置き換えられます。 この後、 URL はゲートウェイ URL の後に表示され、最終的なリライト出力が引き出されます。
var dhtmlVar="<a href=gateway URL/portal server URL/../images/test.html>"
// ページのベース URL が追加され、またゲートウェイ URL が前に付いているため、最終的な URL は機能しません。 これは最初の URL /../images/test.html が正確ではないためです。
var dhtmlVar="<a href=gateway URL/portal server URL/images/test.html>"
// ここでも、JavaScript DHTML ルールは右側をダイナミック HTML コンテンツとして識別し、それを HTML ルールに渡します。 デフォルトのゲートウェイルールセットのHTML ルール<Attribute name="href"/> が適用され、ステートメントが次のようにリライトされます。 ゲートウェイ URL と Portal Server URL が前に指定されます。
var dhtmlVar="<a href=gateway URL/portal server URL/rewriter/JavaScript/variables/dhtml/images/test.html>"
var dhtmlVar="<a href=gateway URL/http://abc.sesta.com/images/test.html>"
var dhtmlVar="<img src=gateway URL/http://abc.sesta.com/images/test.html>"
// JavaScript DHTML ルールは右側のダイナミック HTML コンテンツを識別し、ステートメントを HTML ルールに渡します。 デフォルトゲートウェイルールセットの <Attribute name="src"/> ルールが適用されます。 URL はすでに絶対 URL であるため、ゲートウェイ URL のみを接頭辞として指定する必要があります。 ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義され、この URL がリライトされることを確認してください。
<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/dhtml/images/logo.gif">
// 「HTML 属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。 JavaScript DJS 変数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/variables/djs/djs.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
(まだ追加していない場合) このサンプルで指定された 2 つのルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
<title>Dynamic JavaScript Variable Test Page</title>
<script LANGUAGE="Javascript">
var dJSVar="var dJSimgsrc='/tmp/tmp/jpg';"
var dJSVar="var dJSimgsrc='../../../tmp/tmp/jpg';"
var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp/jpg';"
Testing Dynamic JavaScript Variables ルール
<Variable type="DJS">dJSVar</Variable>
<Variable type="URL">dJSimgsrc</Variable> リライト後の HTML ページ
<html>
<title>Dynamic JavaScript Variable Test Page</title>
<script LANGUAGE="Javascript">
var dJSVar="var dJSimgsrc='gateway URL/portal server URL/tmp/tmp/jpg';"
var dJSVar="var dJSimgsrc='gateway URL/portal server URL/rewriter/tmp/tmp/jpg';"
var dJSVar="var dJSimgsrc='gateway URL/http://abc.sesta.com/tmp/tmp/jpg';"
// 上記のステートメントはすべてゲートウェイ URL と Portal ServerURL を使ってリライトされます。 適宜、必要なパスが前に付けられます。 最初のルールは、 dJSVar の右側をダイナミック JavaScript 変数と識別します。 これは 2 番目のルールに渡され、2 番目のルールが dJSimgsrc の右側をタイプ URL の JavaScript 変数と識別します。 したがってステートメントが次のようにリライトされます。
Testing Dynamic JavaScript Variables
<img src="gateway URL/portal server URL/rewriter/JavaScript/variables/djs/images/logo.gif">
// 「HTML 属性のリライトのためのルール (Rules for Rewriting HTML Attributes)」セクションのデフォルトゲートウェイルールセットに、ルール <Attribute name="src"/> が定義されているため、この行はリライトされます。 JavaScript SYSTEM 変数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/variables/system/system.html
(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
<title>JavaScript SYSTEM Variables Test Page</title>
<script LANGUAGE="Javascript">
alert(window.location.pathname);
//document.write("<A HREF="+window.location.pathname+">SYSTEM</A><P>")
Testing JavaScript SYSTEM Variables
This page displays the path where the current page is located when it is loaded. ルール
<Variable type="SYSTEM">window.location.pathname</Variable> リライト後の HTML
<html>
<title>JavaScript SYSTEM Variables Test Page</title>
function psSRAPRewriter_convert_pathname(aPSPath)
var lPSPath = aPSPath.substr( aPSPath.indexOf( "/",
aPSPath.lastIndexOf("://") + 3 ) );
}//psSRAPRewriter_convert_pathname()
<script LANGUAGE="Javascript">
alert(psSRAPRewriter_convert_pathname(window.location.pathname));
// リライタは window.location.pathname を JavaScript の SYSTEM 変数として識別します。 この変数の値はサーバー側で決定することができません。 このため、リライタはこの変数の前に psSRAPRewriter_convert_pathname 関数を付けます。 このラッパー関数は、クライアント側で変数の値を判断し、必要に応じてリライトします。
Testing JavaScript SYSTEM Variables
This page displays the path where the current page is located when it is loaded. JavaScript URL 関数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/functions/url/url.html
(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
JavaScript URL Function Test Page
<script language="JavaScript">
alert(one + "##" + two + "##" +three);
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500); ルール
<Function type="URL" name="test" paramPatterns="y,y"/>
<Function type="URL" name="window.open" paramPatterns="y"/> リライト後の HTML ページ
<html>
JavaScript URL Function Test Page
<script language="JavaScript">
alert(one + "##" + two + "##" +three);
test("/test.html","../test.html","123");
window.open("gateway URL/portal server URL/index.html","gen",width=500,height=500); JavaScript EXPRESSION 関数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/functions/expr/expr.html
(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
JavaScript EXPRESSION Function Test Page
<script language="JavaScript">
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">Test</a>"); ルール
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> リライト後の HTML ページ
<html>
JavaScript EXPRESSION Function Test Page
// various functions including psSRAPRewriter_convert_expression appear here.
<script language="JavaScript">
var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2 ()));
// このルールは、関数jstest1のタイプ EXPRESSION の最初のパラメータをリライトする必要があることを指定します。 この式の値は /test/images/test.html です。 これは Portal Server とゲートウェイの URL の後に付けられます。
document.write("<a HREF="+test1+">Test</a>"); JavaScript DHTML 関数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/functions/dhtml/dhtml.html
(まだ追加していない場合)このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
Testing JavaScript DHTML Functions
document.write('<a href="/index.html">write</a><BR>')
document.writeln('<a href="index.html">writeln</a><BR>')
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
Testing document.write and document.writeln ルール
<Function type="DHTML" name=" document.write" paramPatterns="y"/>
<Function type="DHTML" name=" document.writeln" paramPatterns="y"/> リライト後の HTML ページ
<html>
Testing JavaScript DHTML Functions
document.write('<a href="gateway URL/portal server URL/index.html">write</a><BR>')
// 最初のルールは、DHTML JavaScript 関数 document.write の最初のパラメータをリライトする必要があることを示します。 リライタは最初のパラメータが単なる HTML ステートメントであると識別します。 デフォルトゲートウェイルールセットの HTML ルールセクションには、ステートメントのリライトを指定するルール <Attribute name="href" /> が含まれています。
document.writeln('<a href="gateway URL/portal server URL/rewriter/JavaScript/functions/dhtml/index.html">writeln</a><BR> ')
// 2 番目のルールは、DHTML JavaScript 関数 document.writeln の最初のパラメータをリライトする必要があることを示します。 リライタは最初のパラメータが簡単な HTML のステートメントであると識別します。 デフォルトゲートウェイルールセットの HTMLRules セクションには、ステートメントのリライトを指定するルール<Attribute name="href" /> が含まれています。
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
// DHTML ルールは関数 document.write と document.writeln を検出しますが、上記のステートメントはリライトされません。 これは最初のパラメータが HTML ではないためです。 パラメータは任意の文字列になり、リライタはこれをどのようにリライトするかを指示されていません。
Testing document.write and document.writeln JavaScript DJS 関数のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/JavaScript/functions/djs/djs.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。 これが定義されていないと、直接の接続が想定され、ゲートウェイ URL が接頭辞として付けられません。
(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「JavaScript ソースをリライトするためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML ページ
<html>
Test for JavaScript DJS Functions
menu.addItem(new NavBarMenuItem("All Available
Information","JavaScript:top.location='http://abc.sesta.com'"));
//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com")); ルール
<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable type="URL">top.location</Variable> リライト後の HTML ページ
<html>
Testing JavaScript DJS Functions
menu.addItem(new NavBarMenuItem("All Available Information","javaScript:top.location='gateway URl/http://abc.sesta.com'"));
// abc.sesta.com はゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストのエントリです。 したがってリライタはこの URL をリライトする必要があります。 ただし、これは絶対 URL ではないため、Portal Server の URL を前に付ける必要がありません。 DJS ルールは、DJS 関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定します。 ただし、2 番目のパラメータは関数が今度も JavaScript 変数である場合のパラメータです。 2 番目のルールは、この変数の値をリライトする場合に要求されます。 2番目のルールは、JavaScript 変数 top.location の値をリライトする必要があることを指定します。 これらのすべての条件に適合するため、URL がリライトされます。
//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));
// DJS ルールは、関数 NavBarMenuItem の 2 番目のパラメータをリライトする必要があることを指定しますが、このステートメントではリライトは行われません。 これはリライタが 2 番目のパラメータを HTML と認識しないためです。 XML 属性のサンプル
このサンプルには次の場所からアクセスできます。
portal server URL/rewriter/XML/attrib.html
(まだ追加していない場合) このサンプルで指定されたルールを、 default_gateway_ruleset の「XML ソースをリライトするためのルール (Rules for Rewriting XML Source)」セクションに追加します。 iPlanet Directory Server Access Management Edition 管理コンソールの「Portal Server 設定」の「リライタ」で default_gateway_ruleset を編集します。
InstallDir/SUNWps/bin/gateway -n profilename start
リライト前の HTML
<html>
<string href="1234|substring.html"/>
<check href="1234|string.html"/> ルール
<Attribute name="href" tag="check" valuePatterns="1234|"/> リライト後の HTML
<html>
<xml><baseroot href="/root.html"/></xml>
<xml><img href="image.html"/></xml>
<xml><string href="1234|substring.html"/></xml>
<xml><check href="1234|gateway URL/portal server URL/rewriter/XML/string.html"/></xml>
// このステートメントはルールで指定された条件に一致するため、リライトされます。 attribute name は href、tag は check、および valuePatterns は 1234 です。 valuePatterns の後の文字列はリライトされます。 valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
ルールセット DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % jEXPRESSION ユEXPRESSIONユ>
<!ENTITY % rulesetElements ユ(HTMLRules | JSRules | XMLRules)? ユ>
<!ENTITY % htmlElements ユ(Form | Applet | Attribute | JSToken)*ユ>
<!ENTITY % jsElements ユ(Variable | Function)*ユ>
<!ENTITY % xmlElements ユ(Attribute | TagText)*ユ>
<!ELEMENT ruleset (%rulesetElements;,%rulesetElements;,%rulesetElements;)>
type (%gtype; | %stype;) "GROUPED"
The following constraints are not represented in DTD, but are handled programatically
1. ID should alway be in lower case.
2. In a Rules, all mandatory attributes cannot be "*".
3. Only one instance of the below elements is allowed. They can be in any order.
<!ELEMENT HTMLRules (%htmlElements;)>
type (%gtype; | %stype;) "GROUPED"
<!ELEMENT JSRules (%jsElements;)>
type (%gtype; | %stype;) "GROUPED"
type (%jURL; | %jEXPRESSION; | %jDHTML; | %jDJS; | %jSYSTEM;) "URL"
type (%jURL; | %jEXPRESSION; | %jDHTML; | %jDJS;) "URL"
<!ELEMENT XMLRules (%xmlElements;)>
type (%gtype; | %stype;) "GROUPED"
注 * をルールに使用できます。 ただしすべての必須属性に * を指定することはできません。 このようなルールは無視され、エラーメッセージも表示されません。
リライタデバッグ情報の有効化
リライタデバッグを有効にするには、次の手順に従います。
ゲートウェイマシンに root としてログインし、次のファイルを編集します。
InstallDir/SUNWam/lib/AMConfig.properties
デバッグレベルを設定します。
com.iplanet.services.debug.level=
デバッグレベルは次のとおりです。
error - 重要なエラーのみがデバッグファイルにロギングされます。 このようなエラーが発生すると、通常、リライタは機能を停止します。
warning - 警告メッセージがロギングされます。
message - すべてのデバッグメッセージがロギングされます。
off - デバッグメッセージがロギングされません。
AMConfig.properties ファイルの次のプロパティに、デバッグファイルのディレクトリを指定します。
com.iplanet.services.debug.directory=/var/opt/SUNWam/debug
ここで /var/opt/SUNWam/debug はデフォルトのデバッグディレクトリです。
デバッグディレクトリのアクセス権を次のように変更します。
chmod -fR 777 debug directory
変更を有効にするためにゲートウェイを再起動します。
InstallDir/SUNWps/bin/gateway -n profilename start
デバッグファイル
次のデバッグファイルが使用できます。
/var/opt/SUNWam/debug/psSRAPRewriter.profilename
/var/opt/SUNWam/debug/psSRAPRewriter_errors.profilename
/var/opt/SUNWam/debug/psSRAPRewriter_warning.profilename
警告メッセージのログを収めています。 これは警告にすぎません。リライタの機能に重大な影響はありません。
/var/opt/SUNWam/debug/psSRAPRewriter_recordPage.profilename
リライトされたページについての情報、すなわちページ URI、ページに適用されたルールセット、リライトされたコンテンツ、およびオリジナルのコンテンツを収めています。 パースに関連した警告メッセージもこのファイルに表示されます。
/var/opt/SUNWam/debug/psSRAPRewriter_recordURI.profilename
リライトされたページの URI に関する情報、すなわちページ URI、オリジナル URI、絶対 URI、ゲートウェイの接頭辞が付いた絶対 URI を収めています。
SP4 のルールのマッピング
次の表は、Sun ONE Portal Server, Secure Remote Access 6.0 のリライタルールと、Sun ONE Portal Server の以前の基礎セットを示しています。
表 5-3    SP4 のルールのマッピング
リライタ6.0 DTD 要素
リライタ 3.0 リストボックス名
前へ 目次 索引 次へ
Copyright 2002 Sun Microsystems, Inc. All rights reserved.
最終更新日 2002 年 9 月 26 日