Sun Java System Portal Server Secure Remote Access 7.2 管理ガイド

第 4 章 リライタの操作

Secure Remote Access のリライタコンポーネントは、Web ページを解析して、ユーザーがゲートウェイ経由でイントラネット Web ページにアクセスできるようにします。

この章の内容は次のとおりです。

リライタの概要

Secure Remote Access のリライタコンポーネントを使用すると、エンドユーザーは Web ページの URI (Uniform Resource Identifier) 参照をゲートウェイをポイントするように変更することによって、イントラネットをブラウズすることができます。URI は、登録されている名前空間にネームをカプセル化し、それに名前空間のラベルを付ける方法を定義します。もっとも一般的な URI は URL (Uniform Resource Locator) です。リライタは HTTP または HTTPS だけをサポートします。このサポートは、プロトコルでの大文字の使用に影響されません。リライタは、相対 URL の一部として使用される場合にだけバックスラッシュをサポートします。


例 4–1 URL の書き換え

http://abc.sesta.com\\index.html は書き換えられます。

書き換えられない URL は http:\\\\abc.sesta.comhttp:/abc.com などです。


文字セットのエンコーディング

HTTP の規格では、HTTP ヘッダーまたは HTML メタタグに Web ページの文字セットを指定する必要があります。ただし、この情報が指定されていないこともあります。文字セットがわからない場合には、データのエンコーディングが設定されず、作成者が意図したようにデータが表示されません。

文字セットを検出するには、Java Enterprise System アクセサリ CD から SUNWjchdt パッケージをインストールします。この製品は、インストールするとリライタによって検出され、必要に応じて使用されます。


注 –

この製品を使用すると、パフォーマンスに影響することがあるため、必要な場合にだけインストールしてください。インストール、設定、および使用法については、jcharset_readme.txt を参照してください。


リライタの使用例

ユーザーがゲートウェイを通じてイントラネット Web ページにアクセスしようとするときに、Web ページはリライタによって使用可能となります。リライタは、URL スクレーパーとゲートウェイによって使用されます。

URL スクレーパー

URL スクレーパープロバイダは、設定されている URI からコンテンツを取得します。それらの URI をブラウザに送信する前に、すべての相対 URI を絶対 URI に展開します。

たとえば、ユーザーが次のサイトにアクセスするとします。

<a href="../mypage.html">

リライタはこれを次のように変換します。

<a href="http://yahoo.com/mypage.html">

http://yahoo.com/test/ はページのベース URL です。

URL スクレーパープロバイダの詳細については、『Sun Java System Portal Server 管理ガイド』を参照してください。

ゲートウェイ

ゲートウェイは、インターネットポータルからコンテンツを取得します。そのコンテンツをブラウザに送信する前に、既存の URI の前にゲートウェイ URI プレフィックスを追加します。これにより、そのブラウザからの以後の URI 要求はゲートウェイに向けられます。

たとえば、インターネット上のマシンにある次の 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 ページの書き換える要素を判断します。

ルールセットの記述

ルールセットの定義の詳細については、『Portal Server 管理ガイド』を参照してください。新しいルールセットを作成したら、必要なルールを定義する必要があります。

この節の内容は、次のとおりです。

パブリックインタフェース (ルールセット DTD)

ルールセット DTD の例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<!--
The following constraints are not represented in DTD, but taken care of programmatically
    1. In a Rule, All Mandatory attributes cannot be "*".
    2. Only one instance of the below elements is allowed, but in any order.
    1)HTMLRules
    2)JSRules
    3)XMLRules
    3. ID should always be in lower case.
-->
<!ENTITY % eURL ’URL’>
<!ENTITY % eEXPRESSION ’EXPRESSION’>
<!ENTITY % eDHTML ’DHTML’>
<!ENTITY % eDJS ’DJS’>
<!ENTITY % eSYSTEM ’SYSTEM’>

<!ENTITY % ruleSetElements ’(HTMLRules | JSRules | XMLRules)?’>
<!ENTITY % htmlElements ’(Form | Applet | Attribute)*’>
<!ENTITY % jsElements ’(Variable | Function)*’>
<!ENTITY % xmlElements ’(Attribute | TagText)*’>

<!ELEMENT RuleSet (%ruleSetElements;,%ruleSetElements;,%ruleSetElements;)>
<!ATTLIST RuleSet
    id ID #REQUIRED
    extends CDATA "none"
>

<!-- Rules for identifying rules in HTML content -->
<!ELEMENT HTMLRules (%htmlElements;)>
<!ELEMENT Form EMPTY>
<!ATTLIST Form
    name CDATA #REQUIRED
    field CDATA #REQUIRED
    valuePatterns CDATA ""
    source CDATA "*"
>

<!ELEMENT Applet EMPTY>
<!ATTLIST Applet
    code CDATA #REQUIRED
    param CDATA "*"
    valuePatterns CDATA ""
    source CDATA "*"
>

<!-- Rules for identifying rules in JS content -->
<!ELEMENT JSRules (%jsElements;)>
<!ELEMENT Variable EMPTY>
<!ATTLIST Variable
    name CDATA #REQUIRED
    type (%eURL; | %eEXPRESSION; | %eDHTML; | %eDJS; | %eSYSTEM;) "EXPRESSION"
    source CDATA "*"
>

<!ELEMENT Function EMPTY>
<!ATTLIST Function
    name CDATA #REQUIRED
    paramPatterns CDATA #REQUIRED
    type (%eURL; | %eEXPRESSION; | %eDHTML; | %eDJS;) "EXPRESSION"
    source CDATA "*"
>

<!-- Rules for identifying rules in XML content -->
<!ELEMENT XMLRules (%xmlElements;)>
<!ELEMENT TagText EMPTY>
<!ATTLIST TagText
    tag CDATA #REQUIRED
    attributePatterns CDATA ""
    source CDATA "*"
>

<!ELEMENT Attribute EMPTY>
<!ATTLIST Attribute
    name CDATA #REQUIRED
    tag CDATA "*"
    valuePatterns CDATA ""
    type (%eURL; | %eDHTML; | %eDJS; ) "URL"
    source CDATA "*"
>

注 –

ルールの値の一部としてアスタリスク (*) を使用できます。ただし、必須属性の値を * だけにすることはできません。このようなルールは無視されますが、メッセージは RuleSetInfo ログファイルに記録されます。このログファイルについては、「デバッグファイル名」を参照してください。


XML DTD の例

ここでは、ルールセットの例を示します。リライタがこれらのルールをどのように解釈するかについては、135 ページの「ケーススタディー」を参照してください。

<?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">
<HTMLRules>
<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>
<JSRules>
<!-- Rules for Rewriting JavaScript variables in URLs -->
<Variable name="URL"> _fr.location </Variable>
<Variable name="URL"> g_szUserBase </Variable>
<Variable name="URL"> g_szPublicFolderUrl </Variable>
<Variable name="URL"> g_szExWebDir </Variable>
<Variable name="URL"> g_szViewClassURL </Variable>
<Variable name="URL"> g_szVirtualRoot </Variable>
<Variable name="URL"> g_szBaseURL </Variable>
<Variable name="URL"> g_szURL </Variable>
<Function name="EXPRESSION" name="NavigateTo" paramPatterns="y"/>
</JSRules>
<XMLRules>
<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>
</RuleSet>

ルールの記述手順

次に、ルールを記述するための一般的な手順を示します。

ルールセットのガイドライン

ルールセットを作成する場合は、次の点に注意してください。

ルールセットのルート要素の定義

ルールセットのルート要素には、次の 2 つの属性があります。

再帰機能の使用

リライタは、再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。

たとえば、リライタが次の文字列を解析する場合を考えます。

<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>

次のルールがあるとします。

<Attribute name="href" valuePatterns="*src=**"/>

このルールは、最初に見つかったパターンだけを次のように書き換えます。

<a href="src=http://jane.sun.com/abc.jpg>

次のように再帰オプションを使用した場合を考えます。

<Attribute name="href" valuePatterns="REC:*src=**"/>;

リライタは再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。この出力は次のようになります。

<a href="src=http://jane.sun.com/abc.jpg,src=http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>

言語ベースのルールの定義

ルールは、次の言語に基づきます。

HTML コンテンツのルール

Web ページの HTML コンテンツは、さらに属性、フォーム、およびアプレットに分類されます。これに従って、HTML コンテンツのルールは次のように分類されます。

HTML コンテンツの属性ルール

このルールは値を書き換える必要のあるタグの属性を特定します。属性値には、簡易 URL、JavaScript、DHTML コンテンツがあります。次に例を示します。

この節では、次の項目について説明します。

属性ルールの構文

<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>

各表記の意味は次のとおりです。

attributeName は属性名です (必須)。

tag は、この属性が属するタグです (省略可能、デフォルト * は任意のタグを意味する)。

valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。

source は、この属性が定義されているページの URI を指定します (省略可能、デフォルト * は任意のページを意味する)。

type は関数のタイプを指定します (省略可能)。これには次の値があります。

URL : 簡易 URL (デフォルト値)

DHMTL : DHTML コンテンツ。この種類のコンテンツは、標準の HTML コンテンツに見られ、Microsoft の HTC 形式のファイルで使用されます。

DJS : JavaScript コンテンツ。onClick や onMouseover など、すべての HTML イベントハンドラには、HTML 属性に JavaScript が組み込まれています。

属性ルールの例

ページのベース URL が次の 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/myhome.html>

説明

書き換えられる URL はすでに絶対 URL であるため、ゲートウェイ URL だけがこの URL にプレフィックスとして追加されます。

DJS 属性の例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/focus.html

ページコンテンツ:

<Form>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">

</Form>

ルール

<Attribute name="onClick" type="DJS"/>
<Function type="URL" name="Check" paramPatterns="y,"/>

出力

<Form>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q
gateway-URL
/http://abc.sesta.com/focus.html\q,\qfocus\q);return;">

</Form>

説明

指定されたページコンテンツを書き換えるには、2 つのルールが必要です。最初のルールは onClick JavaScript トークンを特定します。2 番目のルールは、書き換えが必要な check 関数のパラメータを特定します。この場合、paramPatterns に値 y が指定されているため、最初のパラメータだけが書き換えられます。

ゲートウェイ URL と JavaScript トークンが表示されるベース URL が、必要なパラメータの前に指定されます。

HTML コンテンツのフォームルール

ユーザーが参照する HTML ページにはフォームが含まれていることがあります。一部のフォーム要素は、値として URL をとることがあります。

この節は、次の項目から構成されています。

フォームルールの構文

<Form name="form1" field="visit" [valuePatterns="" source="*"]/>

各表記の意味は次のとおりです。

name はフォーム名です (必須)。

field は値を書き換える必要があるフォームのフィールドです (必須)。

valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。

source は、このフォーム定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。

フォームルールの例

ページのベース URL が次の 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>

form1 の一部である abc1 という隠しフィールドの値に含まれる /text.html を書き換えるとします。この場合、次のルールが必要です。

ルール

<Form source="*/form.html" name="form1" 
field="abc1" valuePatterns="0|1234|"/>
<Attribute name="action"/>

出力

<FORM name="form1" 
method="POST" action="gateway-URL/
http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 
value="0|1234|gateway-URL/
http://test.siroe.com/test.html">
</FORM>

説明

action タグは定義済みのいくつかの HTML 属性ルールを使用して書き換えられます。

入力タグ属性値の value は、出力に示されるように書き換えられます。指定された valuePatterns が検索され、一致した valuePatterns に続くすべてのコンテンツは、先頭にゲートウェイ URL とページのベース URL を追加する方法で書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。

HTML コンテンツのアプレットルール

単一の Web ページに複数のアプレットが含まれていたり、各アプレットに多くのパラメータが指定されていることがあります。リライタは、ルールに指定されている値とアプレットの HTML 定義を一致させ、アプレットのパラメータ定義の一部として含まれる URL の値を変更します。この置換はサーバーで実行され、ユーザーが特定の Web ページを参照しているときには行われません。このルールは、HTML コンテンツのアプレットタグとオブジェクトタグの両方のパラメータを識別し、それを書き換えます。

この節は、次の項目から構成されています。

アプレットルールの構文

<Applet code="ApplicationClassName/ObjectID
" param="parametername" [valuePatterns="" source="*"] />

各表記の意味は次のとおりです。

code はアプレットクラスまたはオブジェクトクラスの名前です (必須)。

param は値を書き換える必要のあるパラメータの名前です (必須)。

valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。

source は、アプレット定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。

アプレットルールの例

ページのベース URL が次の 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>

ルール

<Applet source="*/rule1.html" code=
"RewriteURLin*.class" param="Test*"/>

出力

<APPLET codebase="gateway-URL
/http://abc.siroe.com/casestudy/test/HTML/
applet/appletcode" code="RewriteURLinApplet.class"
 archive="/test.jar"><param name="Test1" value="
gateway-URL/http:
//abc.siroe.com/index.html">
</APPLET>

説明

default_gateway_ruleset<Attribute name="codebase"/> が定義されているため、codebase attribute は書き換えられます。

名前が Test で始まるすべてのパラメータが書き換えられます。アプレットコードが表示されるページのベース URL、およびゲートウェイ URL が、param タグの value 属性の値の前に追加されます。

ルールでのパターンマッチングの使用

valuePatterns フィールドを使用してパターンマッチングを実行し、書き換えが必要な文の特定部分を識別することができます。

ルールの一部として valuePatterns を指定すると、一致したパターンに続くすべてのコンテンツが書き換えられます。

次のフォーム例のルールを考えます。

<Form source="*/source.html
" name="form1" field="visit
" [valuePatterns="0|1234|"]/>

各表記の意味は次のとおりです。

source は、フォームが表示される HTML ページの URL です。

name はフォーム名です。

field は値を書き換える必要があるフォームのフィールドです。

valuePatterns は、書き換えが必要な部分文字列を示します。valuePatterns のあとに表示されるすべてのコンテンツは書き換えられます (省略可能、デフォルト "" は値全体の書き換えが必要であることを示す)。

valuePatterns への特殊文字の指定

\ (円記号) でエスケープすることにより、特殊文字を指定できます。次に例を示します。

<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text"]/>

valuePatterns でのワイルドカードの使用

ワイルドカードのアスタリスク (*) を使用して、書き換えのパターンマッチングを実行できます。

valuePatterns フィールドに * だけを指定することはできません。* はすべてのテキストとの一致を示すため、valuePattern に続くテキストがなくなります。したがって、リライタが書き換えるテキストもなくなります。* は *abc のように、ほかの文字列と組み合わせて使用する必要があります。この場合、*abc に続くすべてのコンテンツが書き換えられます。


注 –

アスタリスク (*) はルールのどのフィールドでも、ワイルドカードとして使用できます。ただし、ルールのすべてのフィールドに * を使用することはできません。すべてのフィールドに * が含まれている場合、ルールは無視されます。エラーメッセージは表示されません。


* や ** は、セミコロンやコンマなどの区切り文字と一緒に使用できます。区切り文字は、元の文に含まれる複数のフィールドを区切ります。1 個のアスタリスク (*) は書き換えられないフィールドと一致し、2 個のアスタリスク (**) は書き換えが必要なフィールドと一致します。

「valuePatterns でのワイルドカードの使用」は、* ワイルドカードの使用例を示しています。

表 4–1 * ワイルドカードの使用例

URL 

valuePatterns 

説明 

url1, url2, url3, url4

valuePatterns = "**, *, **, *"

** が書き換えられる部分を表すため、url1url3 が書き換えられます。

XYZABChttp://host1.sesta.com/dir1.html

valuePatterns = "*ABC"

http://host1.sesta.com/dir1.html の部分だけが書き換えられます。*ABC のあとのすべてを書き換える必要があります。

"0|dir1|dir2|dir3|dir4|test|url1

valuePatterns = "*|*|**|*|**|*|"

dir2dir4、および url1 が書き換えられます。書き換えが必要な最後のフィールドは、** を使用して指定する必要はありません。

JavaScript コンテンツのルール

JavaScript はさまざまな場所に URL を含んでいます。リライタは JavaScript を直接解析できないため、URL 部分を特定できません。JavaScript プロセッサで URL を識別、解釈できるようにするために、特別なルールセットを記述する必要があります。

URL を含む JavaScript 要素は次のように分類されます。

変数

変数の汎用構文は次のとおりです。

<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>

JavaScript の変数は、その値の種類に応じてさらに次の 5 つのカテゴリに分類されます。

URL 変数

この変数の値は、URL として扱うことができる単純文字列です。

この節は、次の項目から構成されています。

URL 変数の構文

<Variable name="variableName" type="URL" [source="*"]>

各表記の意味は次のとおりです。

variableName は変数名です。variableName の値が書き換えられます (必須)。

type は URL 変数です (必須、値は URL でなければならない)。

source は、この JavaScript 変数が含まれるページの URI です (省略可能、デフォルト * は任意のページを意味する)。

URL 変数の例

ベース URL が次の URL であると仮定します。

http://abc.siroe.com/tmp/page.html

ページコンテンツ

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc1="/tmp/tmp.jpg";
var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

ルール

<Variable name="imgsrc*" type="URL"/>

出力

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc="gateway-URL/http://abc.siroe.com/tmp/tmp.jpg";
var imgsrc="gateway-URL/http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

説明

タイプが URL で、名前が imgsrc から始まるすべての変数が書き換えられます。出力の最初の行では、ゲートウェイ URL と変数が表示されるページのベース URL が先頭に指定されます。2 行目にはすでに絶対パスが指定されているため、ゲートウェイ URL のみがプレフィックスとして追加されます。3 番目の変数 imagsrc2 は、値が文字列ではなく別の JavaScript 値であるため書き換えられません。

EXPRESSION 変数

EXPRESSION 変数の右側には式が指定されます。この式の結果は URL です。リライタは、このような式をサーバーで評価できないため、HTML ページに JavaScript 関数 (psSRAPRewriter_convert_expression) を追加します。この関数はパラメータとして式をとり、クライアントブラウザで要求される URL に対して式を評価します。

文に含まれる URL が単一の URL であるか EXPRESSION URL であるかが明らかでないときは、どちらの場合にも適用できる EXPRESSION ルールを使用してください。

この節は、次の項目から構成されています。

EXPRESSION 変数の構文

<Variable name="variableName" [type="EXPRESSION" source="*"]/>

各表記の意味は次のとおりです。

variableName は、値として式を持つ JavaScript 変数の名前です (必須)。

type は JavaScript 変数のタイプです (省略可能、デフォルト値は EXPRESSION)。

source はページの URI です (省略可能、デフォルト * は任意のソースを意味する)。

EXPRESSION 変数の例

ページのベース URL が次の URL であると仮定します。

http://abc.siroe.com/dir1/dir2/page.html

ページコンテンツ

<script LANGUAGE="Javascript">
<!--
//Expression variables
var expvar= getURIPreFix() + "../../images/graphics"+".gif";
document.write("<A HREF="+expvar+">Link to XYZ content</A><P>")
var expvar="../../images/graphics"+".gif";
//-->
</SCRIPT>

ルール

<Variable name="expvar" type="EXPRESSION"/>
または
<Variable name="expvar"/>

出力

var expvar=psSRAPRewriter_convert_expression(getURIPreFix()
 + "../../images/graphics"+".gif");document.write("<a href="+expvar+">>
Link to XYZ content</A><P>")var expvar="gateway-URL/http://abc.siroe.com/images/graphics"+".gif";

説明

関数 psSRAPRewriter_convert_expression が、式変数 expvar の最初の行の右側の部分に先行して指定されます。この関数は、実行時に式を処理し、コンテンツを書き換えます。3 行目では、値が簡易 URL に書き換えられます。

DHTML (ダイナミック HTML) 変数

これは HTML コンテンツを含む JavaScript 変数です。

この節は、次の項目から構成されています。

DHTML 変数の構文

<Variable name="variableName" type="DHTML" [source="*"]/>

各表記の意味は次のとおりです。

variableName は DHTML コンテンツを持つ JavaScript 変数の名前です (必須)。

type は変数のタイプです (必須、値は DHTML である必要がある)。

source はページの URL です (省略可能、デフォルト * は任意のページを意味する)。

DHTML 変数の例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/graphics/set1/
graphics/jsscript/JSVAR/page.html

ページコンテンツ

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=../../images/test.html>"
var dhtmlVar="<a href=/images/test.html>"
var dhtmlVar="<a href=images/test.html>"
//-->
</SCRIPT>

ルール

<Variable name="dhtmlVar" type="DHTML"/>
<Attribute name="href"/>
または
<Attribute name="href" tag="a"/>

出力

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=gateway-URL
/http://abc.sesta.com/graphics/
set1/graphics/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http
://abc.sesta.com/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http://abc.sesta.com/graphics/set1/
graphics/jscript/JSVAR/images/test.html>"
//--></SCRIPT>

説明

JavaScript パーサーは dhtmlVar の値を HTML コンテンツとして読み取り、HTML パーサー経由でそのコンテンツを送信します。HTML パーサーは HTML ルールを適用するため、href 属性ルールとの一致によって URL が書き換えられます。

DJS (ダイナミック JavaScript) 変数

これは JavaScript コンテンツを含む JavaScript 変数です。

この節は、次の項目から構成されています。

DJS 変数の構文

<Variable name="variableName" type="DJS" [source="*"]/>

各表記の意味は次のとおりです。

variable は JavaScript を値として持つ JavaScript 変数の名前です。

DJS 変数の例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html

ページコンテンツ

//DJS Var
var dJSVar="var dJSimgsrc=\q/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\q../tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=
\qhttp://abc.sesta.com/tmp/tmp.jpg\q;"

ルール

<Variable name="DJS">dJSVar/>
<Variable name="URL">dJSimgsrc/>

出力

//DJS Var - need 2 rules
var dJSVar="var dJSimgsrc=\qgateway-URL
/http://abc.sesta.com/tmp/tmp.jpg\q;"var dJSVar="var dJSimgsrc=\q
gateway-URL/http
://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\qgateway-URL/
http://abc.sesta.com/tmp/tmp.jpg\q;"

説明

ここでは、2 つのルールが必要です。最初のルールはダイナミック JavaScript 変数 dJSVar を検索します。この変数の値は、同じくタイプが URL の JavaScript になります。次に 2 番目のルールが適用され、この JavaScript 変数の値が書き換えられます。

SYSTEM 変数

これらは、使用によって宣言されない変数であり、サポートは限定されます。これらの変数は JavaScript 標準の一部として利用可能です。たとえば、window.location.pathname などがあります。

この節は、次の項目から構成されています。

SYSTEM 変数の構文

<Variable name="variableName" type="SYSTEM" [source="*"]/>

各表記の意味は次のとおりです。

variableName は、JavaScript のシステム変数です (必須)。値は document.URL、document.domain、location、doument.location、location.pathname、location.href、location.protocol、location.hostname、location.host、および location.port のいずれかのパターンと一致する必要があります。これは、すべて generic_ruleset に含まれます。これらのシステム var ルールを変更しないでください。

type には、システムタイプの値を指定します (必須、値は DJS)。

source はそのページの URL です (省略可能、デフォルト * は任意のページを意味する)。

SYSTEM 変数の例

ページのベース URL が次の URL であると仮定します。

http://abc.siroe.com/dir1/page.html

ページコンテンツ

<script LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(window.location.pathname);
//-->
</SCRIPT>

ルール

<Variable name="window.location.pathname" type="SYSTEM"/>

出力

</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(psSRAPRewriter_convert_pathname(window.location.pathname));
//-->
</SCRIPT>

説明

リライタは、ルールと一致するシステム変数を検索し、プレフィックスとして psSRAPRewriter_convert_system 関数を追加します。この関数は、実行時にシステム変数を処理し、処理後の URL を書き換えます。

関数の引数

値の書き換えが必要な関数パラメータは、次の 4 つのカテゴリに分類されます。

汎用構文

<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source="*"]/>

各表記の意味は次のとおりです。

name は JavaScript 関数の名前です (必須)。

paramPatterns は、書き換えが必要なパラメータを指定します (必須)。

y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。

type はこのパラメータが必要とする値の種類を指定します (省略可能、デフォルトは EXPRESSION タイプ)。

source はページのソース URI です (省略可能、デフォルト * は任意のページを意味する)。

URL パラメータ

関数は、このパラメータを文字列としてとり、この文字列は URL として扱うことができます。

この節は、次の項目から構成されています。

URL パラメータの構文

<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>

各表記の意味は次のとおりです。

name は、パラメータのタイプが URL である関数の名前です (必須)。

paramPatterns は、書き換えが必要なパラメータを指定します (必須)。

y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。

type は関数のタイプです (必須、値は URL である必要がある)。

source は、この関数の呼び出しが含まれるページの URL です (省略可能、デフォルト * は任意の URL を意味する)。

URL パラメータの例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html

ページコンテンツ

<script language="JavaScript">
<!--
function test(one,two,three){
alert(one + "##" + two + "##" +three);
}
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

ルール

<Function name="URL" name="test" paramPatterns="y,y,"/>
<Function name="URL" name="window.open" paramPatterns="y,,,"/>

出力

<SCRIPT language="JavaScript">
<!--
function test(one,two,three) {
alert(one + "##" + two + "##" +three);
}
test("gateway-URL/http://abc.sesta.com/test.html","
gateway-URL/http://abc.sesta.com/test/rewriter/
test1/jscript/test.html","123");window.open("gateway-URL/
http://abc.sesta.com/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

説明

最初のルールは、関数 test の最初の 2 つのパラメータを書き換える必要があることを示します。したがって、test 関数の最初の 2 つのパラメータが書き換えられます。2 番目のルールは、window.open 関数の最初のパラメータを書き換える必要があることを示します。window.open 関数内の URL の先頭に、ゲートウェイ URL と、関数パラメータが含まれるページのベース URL が追加されます。

EXPRESSION パラメータ

このパラメータは、値として式をとり、この式の評価結果が URL となります。

この節は、次の項目から構成されています。

EXPRESSION パラメータの構文

<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>

各表記の意味は次のとおりです。

name は関数名です (必須)。

paramPatterns は、書き換えが必要なパラメータを指定します (必須)。

y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。

type は、式の値のタイプを指定します (省略可能)。

source は、この関数を呼び出すページの URI です。

EXPRESSION パラメータの例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/dir1/dir2/page.html

ページコンテンツ

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

ルール

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>
または
<Function name="jstest1" paramPatterns="y"/>

出力

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2()));
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

説明

このルールは、これが EXPRESSION 関数のパラメータであると見なすことによって、jstest1 関数の最初のパラメータを書き換える必要があることを示します。ページコンテンツの例では、最初のパラメータは実行時にだけ評価される式です。リライタはこの式の先頭に psSRAPRewriter_convert_expression 関数を追加します。式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力を書き換えます。


注 –

上の例では、JavaScript 変数ルールの一部として、変数 test1 は必要ありません。書き換えは、jstest1 の関数ルールによって行われます。


DHTML パラメータ

これは、値が HTML の関数パラメータです。

HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。

この節は、次の項目から構成されています。

DHTML パラメータの構文

<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>

各表記の意味は次のとおりです。

name は関数名です。

paramPatterns は、書き換えが必要なパラメータを指定します (必須)。

y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。

DHTML パラメータの例

ページのベース URL が次の URL であると仮定します。

http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html

ページコンテンツ

<script>
<!--
document.write(\q<a href="/index.html">write</a><BR>\q)
document.writeln(\q<a href="index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

ルール

<Function name="DHTML" name="document.write" paramPatterns="y"/>
<Function name="DHTML" name="document.writeln" paramPatterns="y"/>
<Attribute name="href"/>

出力

<SCRIPT>
<!--
document.write(\q<a href="gateway-URL/
http://xyz.siroe.com/index.html">write</a><BR>\q)
document.writeln(\q<a href="gateway-URL/
http://xyz.siroe.com/test/rewriter/test1/
jscript/JSFUNC/index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

説明

最初のルールは、関数 document.write の最初のパラメータを書き換える必要があることを示します。2 番目のルールは、関数 document.writeln の最初のパラメータを書き換える必要があることを指定します。3 番目のルールは、名前に href を含むすべての属性を書き換える必要があることを指定する簡単な HTML ルールです。この例では、DHTML パラメータルールは関数内の書き換えの必要があるパラメータを特定します。この場合、HTML 属性ルールが適用され、特定されたパラメータが実際に書き換えられます。

DJS パラメータ

これは、値が JavaScript の関数パラメータです。

この節は、次の項目から構成されています。

DJS パラメータの構文

<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>

各表記の意味は次のとおりです。

name は、1 つのパラメータが DJS である関数の名前です (必須)。

paramPatterns は、上の関数のどのパラメータが DJS であるかを指定します (必須)。

y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。

type は DJS です (必須)。

source はページの URI です (省略可能、デフォルト * は任意の URI を意味する)。

DJS パラメータの例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/page.html

ページコンテンツ

<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.co
m\q"));
</script>

ルール

<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable name="URL">top.location</Variable>

出力

<script>
menu.addItem(new NavBarMenuItem("All Available Information",
"JavaScript:top.location=\qgateway-URL/
http://abc.sesta.com\q"));
</script>

説明

最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定します。JavaScript 内で、変数 top.location も書き換える必要があります。この変数は 2 番目のルールを使用して書き換えられます。

XML コンテンツのルール

Web ページには、URL を含む XML コンテンツが含まれていることがあります。書き換えが必要な XML コンテンツは、2 つのカテゴリに分類されます。

タグテキスト

このルールは、タグ要素の PCDATA または CDATA を書き換えるためのものです。

この節は、次の項目から構成されています。

タグテキストの構文

<TagText tag="tagName" 
[attributePatterns="attribute_patterns_for_ this_tag" source="*"]/>

各表記の意味は次のとおりです。

tag はタグ名です。

attributePatterns はこのタグの属性と属性値パターンです (省略可能、省略した場合はこのタグは属性を一切持たない)。

source はこの XML ファイルの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。

タグテキストの例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/test/rewriter/test1/xml/page.html

ページコンテンツ

<xml>
<Attribute name="src">test.html</attribute>
<attribute>abc.html</attribute>
</xml>

ルール

<TagText tag="attribute" attributePatterns="name=src"/>

出力

<xml>
<Attribute name="src">gateway-URL/
http://abc.sesta.com/test/rewriter/test1/
xml/test.html</attribute><attribute>abc.html</attribute>
</xml>

説明

ページコンテンツの最初の行には 「属性の例」が含まれます。ページコンテンツの 2 行目には、名前が name で値が src の属性が含まれず、書き換えは行われません。これを書き換えるには、<TagText tag="attribute"/> も必要です。

属性

XML 属性のルールは、HTML の属性ルールに似ています。違いは、XML の属性ルールでは大文字と小文字が区別され、HTML の属性ルールでは区別されないことです。これは、XML では大文字と小文字が区別され、HTML では区別されないためです。

リライタは、属性名に基づいて属性値を変換します。

この節は、次の項目から構成されています。

属性の構文

<Attribute name="attributeName " [tag="*" type="URL" valuePatterns="*" source="*"]/>

各表記の意味は次のとおりです。

attributeName は属性名です (必須)。

tag は、この属性が含まれるタグの名前です (省略可能、デフォルト * は任意のタグを意味する)。

valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。

source は XML ページの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。

属性の例

ページのベース URL が次の URL であると仮定します。

http://abc.sesta.com/test/rewriter/test1/xml/page.html

ページコンテンツ

<xml>
<baseroot href="/root.html"/>
<img href="image.html"/>
<string href="1234|substring.html"/>
<check href="1234|string.html"/>
</xml>

ルール

<Attribute name="href"tag="check" valuePatterns="1234|"/>

出力

<xml>
<baseroot href="/root.html"/><img href="image.html"/>
<string href="1234|substring.html"/><check href="1234|
gateway-URL
/http://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml>

説明

前述した例では、4 行目だけがルールに指定されたすべての条件と一致するため、書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。

カスケードスタイルシートのルール

HTML ページのカスケードスタイルシート (CSS2 も含まれる) も変換されます。この変換のために定義されるルールはありません。これは、URL が CSS の url() 関数とインポート構文にだけ表示されるためです。

WML のルール

WML は HTML に似ているため、WML コンテンツには HTML ルールが適用されま す。WML コンテンツの汎用ルールセットを使用してください。「HTML コンテンツのルール」を参照してください。

再帰機能の使用

リライタは、再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。

たとえば、リライタが次の文字列を解析する場合を考えます。

<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>

次のルールがあるとします。

<Attribute name="href" valuePatterns="*src=**"/>

このルールは、最初に見つかったパターンだけを次のように書き換えます。

<a href="src=http://jane.sun.com/abc.jpg>

一方、次のように再帰オプションを使用した場合を考えます。

<Attribute name="href" valuePatterns="REC:*src=**"/>;

リライタは再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。この出力は次のようになります。

<a href="src=http://jane.sun.com/abc.jpg,src= http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>

デバッグログを使用したトラブルシューティング

リライタに関する問題の原因を特定するには、デバッグログを有効にする必要があります。

デバッグメッセージは、次のように分類されます。

リライタのデバッグレベルの設定

Procedureリライタのデバッグレベルを設定する

  1. ゲートウェイマシンに root としてログインし、次のファイルを編集します。


    gateway-install-root/SUNWam/config/AMConfig-instance-name.properties
  2. デバッグレベルを設定します。


    com.iplanet.services.debug.level=

    次のデバッグレベルがあります。

    error : 重要なエラーだけがログとしてデバッグファイルに記録されます。このようなエラーが発生すると、通常、リライタは機能を停止します。

    warning : 警告メッセージがログに記録されます。

    message : すべてのデバッグメッセージがログに記録されます。

    off : デバッグメッセージはログに記録されません。

  3. AMConfig-instance-name.properties ファイルの次のプロパティーに、デバッグファイルのディレクトリを指定します。


    com.iplanet.services.debug.directory=/var/opt/SUNWam/debug

    この /var/opt/SUNWam/debug は、デフォルトのデバッグディレクトリです。

  4. 端末ウィンドウからゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

デバッグファイル名

デバッグレベルを「message」に設定すると、複数のファイルが生成されます。「デバッグファイル名」はリライタのデバッグファイルとその内容を示しています。

表 4–2 リライタのデバッグファイル

ファイル名 

説明 

RuleSetInfo 

書き換えに使用されたすべてのルールは、このファイルに記録されます。 

Original Pages 

ページの URI、解決された URI (ページ URI と異なる場合)、コンテンツの MIME、ページに適用されたルールセット、パーサー MIME、および元のコンテンツが記録されます。 

このファイルには、解析に関連する具体的な error/warning/message も記録されます。 

message モードでは、すべてのコンテンツが記録されます。warning モードと error モードでは、書き換え時に発生した例外だけが記録されます。 

Rewritten Pages 

ページの URI、解決された URI (ページ URI と異なる場合)、コンテンツの MIME、ページに適用されたルールセット、パーサー MIME、および書き換えられたコンテンツが記録されます。 

この情報は、デバッグモードを message に設定した場合にだけ記録されます。 

Unaffected Pages 

このファイルには、変更されなかったページのリストが含まれます。 

URIInfo Pages 

検出され、変換された URL が記録されます。コンテンツが元のデータと同じ状態で残された、すべてのページの詳細が記録されます。 

記録される詳細情報はページの URI、MIME、符号化データ、書き換え時に適用されたルールセットの ID、およびパーサー MIME です。 

これらのファイルのほかに、リライタはこれらのファイルに記録されないデバッグメッセージを記録するファイルを生成します。このファイルの名前は 2 つの部分から構成されます。最初の部分は pwRewriter または psSRARewriter で、2 番目の部分は portal または gateway-profile-name を使用した拡張子です。

デバッグファイルは、ポータルまたはゲートウェイに表示されます。これらのファイルは、AMConfig-instance-name.properties ファイルに指定されているディレクトリに格納されます。

リライタコンポーネントは、デバッグ用に次のファイルを生成します。

prefix_RuleSetInfo.extension

prefix_OrginalPages.extension

prefix_RewrittenPages.extension

prefix_UnaffectedPages.extension

prefix_URIInfo.extension

各表記の意味は次のとおりです。

prefix は、URL スクレーパーを使用した場合は psRewriter、ゲートウェイを使用した場合は psSRAPRewriter です。

extension は、URL スクレーパーを使用した場合は portal、ゲートウェイを使用した場合は gateway-profile-name です。

たとえば、ページの変換にゲートウェイ上のリライタとデフォルトのゲートウェイプロファイルを使用した場合は、次のデバッグファイルが生成されます。

psSRAPRewriter_RuleSetInfo.default

psSRAPRewriter_OriginalPages.default

psSRAPRewriter_RewrittenPages.default

psSRAPRewriter_UnaffectedPages.default

psSRAPRewriter_URIInfo.default

psSRAPRewriter.default

サンプルの操作

この節では、次の点を説明します。

これらのサンプルページは、portal-server-URL/rewriter ディレクトリ内にあります。ルールを適用する前にページの内容を参照し、その後、書き換えられてゲートウェイを通じて出力されたファイルを参照することで、ルールがどのように機能しているかを理解することができます。一部のサンプルでは、ルールはすでに default_gateway_ruleset の一部として含まれています。一部のサンプルでは、ルールを default_gateway_ruleset に含めなければならない場合があります。これについては、該当箇所で説明します。


注 –

太字で表示されている文は、書き換えられたことを示します。


次のサンプルが用意されています。

HTML

JavaScript

関数

XML

HTML コンテンツのサンプル

HTML 属性のサンプル

ProcedureHTML 属性のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL/rewriter/HTML/attrib/attribute.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.comhost1.siroe.com が定義されていることを確認してください。

    これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

    このサンプルに指定されているルールはすでに default_gateway_ruleset に定義されているので、追加の必要はありません。

書き換え前の HTML

<html>
Rewriting starts
<head>
<title>TEST PAGE () </title>
</head>
ID-htmlattr.1
<br><br>
1.a href <a href="http://abc.sesta.com/images/logo.gif">http://..</a>
<br><br>
2. href <a href="https://host1.siroe.com">https://..</a>
<br><br>
3. href <a href="../images/logo.gif">../images/</a>
<br><br>
4. href <a href="images/logo.gif">images/..</a> <br><br>
5. href <a href="../../images/logo.gif">../../images/</a> <br><br>
Rewriting ends
</html>

ルール

<Attribute name="href"/>

書き換え後の HTML

<html>
Rewriting starts
<head>
<title>TEST PAGE () </title>
</head>
ID-htmlattr.1
<br><br>
1. a href <a href="gateway-URL/http://abc.sesta.com/images/logo.gif">http://..</a> <br>

default_gateway_ruleset<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 がプレフィックスとして追加されません。

<br><br>
3. href <a href="gateway-URL/portal-server-URL/rewriter/HTML/images/logo.gif">../images/</a>

// 相対パスが指定されているため、必要なサブディレクトリとともにゲートウェイ URL と portal-server-URL がプレフィックスとして追加されます。用意されたサンプル構造で、HTML ディレクトリの下の images という名前のディレクトリが指定されないため、このリンクは機能しません。

<br><br>
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 という名前のディレクトリが指定されないため、このリンクは機能しません。

Rewriting ends</html>

HTML ダイナミック JavaScript トークンのサンプル

ここでは、HTML JavaScript トークンのサンプルの使用について説明します。

ProcedureHTML JavaScript トークンのサンプルを使用するには

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/HTML/jstokens/JStokens.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. 端末ウィンドウからゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML

<html>
<head>
Rewriting starts
<script language="javascript">
function Check(test,ind){
if (ind == \qblur\q)
{alert("testing onBlur")}
if (ind == \qfocus\q)
{alert("testing onFocus")}
}
</SCRIPT>
</head>
<body>
<form>
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check
(\q/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check
(\q/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check
(\q/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check
(\q/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check
(\q/focus.html\q,\qblur\q);return;">
<br><br>
</form>
</body>
Rewriting ends
</html>

ルール

<Attribute name="onClick" type="DJS"/>
<Function type="URL" name="Check" paramPatterns="y"/>

注 –

<Function name="URL" name="Check" paramPatterns="y"/> は JavaScript 関数ルールです。JavaScript 関数のサンプルで詳しく説明します。


書き換え後の HTML

<html>
<head>
Rewriting starts
<script language="javascript">
function Check(test,ind){
if (ind == \qblur\q)
{alert("testing onBlur")}
if (ind == \qfocus\q)
{alert("testing onFocus")}
}
</SCRIPT>
</head>
<body>
<form>
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check
(\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check
(\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qblur\q);return;">

// このサンプルではすべての文が書き換えられます。それぞれ、ゲートウェイと Portal Server の URL が先頭に追加されます。これは、default_gateway_ruleset ファイルに onAbortonBluronFocusonChange、および onClick のルールが定義されているためです。リライタは JavaScript トークンを検出し、あとの処理のために JavaScript 関数ルールに渡します。サンプルの 2 番目のルールは、書き換えるパラメータをリライタに伝えます。

</body>
<br>

Rewriting ends

</html>

HTML フォームのサンプル

Procedureフォームのサンプルを使用する

  1. 次の場所にあるサンプルフォームにアクセスします。

    portal-server-URL/rewriter/HTML/forms/formrule.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。

    これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

  3. このサンプルで指定されているルールを、default_gateway_ruleset の「HTML 属性を書き換えるためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。

  4. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  5. 端末ウィンドウからゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
RW_START
<p>
<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>
RW_END </p>
</body>
</html>

ルール

<Form source="*" name="form1" field="name1" valuePatterns="0|1234|"/>

書き換え後の HTML ページ

<HTML>
<HEAD>
RW_START
</HEAD>
<BODY>
<P>
<FORM name=form1  method=POST action="gateway-URL/http://abc.sesta.com/casestudy/html/form.html">

default_gateway_ruleset 内の 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 に一致する valuePatterns0|1234| と宣言します。したがって、valuePattern のあとの URL が書き換えられます。Portal Server の URL とゲートウェイの URL が先頭に追加されます。valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

<input type=hidden name=name3 value="../../html/test.html">

name はルールに指定される field 名と一致しないため、この URL は書き換えられません。

</FORM>
<FORM name=form2 method=POST action=
"gateway-URL/http://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 は書き換えられません。

</FORM>
</BODY>
RW_END
</HTML>

HTML アプレットのサンプル

Procedureアプレットのサンプルを使用する

  1. アプレットの class ファイルを入手します。RewriteURLinApplet.class ファイルは、次の場所にあります。

    portal-server-URL/rewriter/HTML/applet/appletcode

    アプレットコードを参照するページのベース URL は次のとおりです。

    portal-server-URL/rewriter/HTML/applet/rule1.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「HTML 属性を書き換えるためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML

<html>
Rewriting starts
<br>
<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>
Rewriting ends
</html>

ルール

<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*" />

書き換え後の HTML

<HTML>
Rewriting starts
<BR>
<APPLET codebase=gateway-URL/portal-server-URL
/rewriter/HTML/applet/appletcode=RewriteURLinApplet.class archive=/test>

<Attribute name="codebase"/> ルールがすでに default_gateway_ruleset ファイルの一部として存在するため、この 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 は書き換えられます。必要に応じて、パスがプレフィックスとして追加されます。

</APPLET>
Rewriting ends
</HTML>

JavaScript コンテンツのサンプル

JavaScript URL 変数のサンプル

ProcedureJavaScript の URL 変数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/variables/url/js_urls.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。

    これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

  3. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。

  4. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  5. ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
Rewriting starts
<head>
<title>JavaScript Variable test page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc="/tmp/tmp.jpg";
var imgsrc="./tmp/tmp.jpg";
var imgsrc="../tmp/tmp.jpg";
var imgsrc="../../tmp/tmp.jpg";
var imgsrc="http://abc.sesta.com/tmp/tmp.jpg";
var imgsrc="../../../tmp/tmp.jpg";
var imgsrc="tmp/tmp.jpg";
//-->
</SCRIPT>
<br>
Testing JavaScript variables!
<br>
<img src="images/logo.gif">
<br>
Image
</body>
<br>
Rewriting ends
</html>

ルール

<Variable name="imgsrc" type="URL"/>

書き換え後の HTML ページ

<html>
Rewriting starts
<head>
<title>JavaScript Variable test page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//URL Variables
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 のあとにパスが追加されます。

//-->
</SCRIPT>
<br>
Testing JavaScript variables!
<br>
<img src="gateway URL/portal-server-URL/rewriter
/JavaScript/variables/url/images/logo.gif">

default_gateway_ruleset<Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。

<br>
Image
</body>
<br>
Rewriting ends
</html>

JavaScript EXPRESSION 変数のサンプル

ProcedureJavaScript の EXPRESSION 変数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/variables/expr/expr.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<head>
<title>JavaScript EXPRESSION Variables Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//Expression 変数
var expvar1="images";
var expvar2="/logo.gif";
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>")
//-->
</SCRIPT>
Testing JavaScript EXPRESSION variables
</body>
</html>

ルール

<Variable type="EXPRESSION" name="expvar"/>

書き換え後の HTML ページ

<html>
<head>
<title>JavaScript EXPRESSION Variables Test Page</title>
</head>
<body>
<SCRIPT>
// リライタは、ラッパー関数 psSRAPRewriter_convert_expression をここに追加します。
</SCRIPT>
<script LANGUAGE="Javascript">
<!--
//Expression 変数
var expvar1="images";
var expvar2="/logo.gif";
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 ではない (最終的な位置にグラフィックが配置されない) ため、リンクは機能しません。

//-->
</SCRIPT>
Testing JavaScript EXPRESSION variables
</body>
</html>

JavaScript DHTML 変数のサンプル

ProcedureJavaScript の DHTML 変数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/variables/dhtml/dhtml.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

  3. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<head>
<title>JavaScript DHTML Variable Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//DHTML Var
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>"
//-->
</SCRIPT>
<br><br>
Testing DHTML Variables
<br><br>
<img src="images/logo.gif">IMAGE
</body>
</html>

ルール

<Variable name="DHTML">dhtmlVar</Variable>

書き換え後の HTML ページ

<html>
<head>
<title>JavaScript DHTML Variable Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=gateway-URL/portal-server-URL
/rewriter/JavaScript/images/test.html>"

// JavaScript DHTML ルールは dhtmlVar の右側をダイナミック HTML コンテンツとして識別します。このため、default_gateway_ruleset ファイル内の HTML ルールが適用されます。ダイナミック HTML には href 属性が含まれています。default_gateway_ruleset には、<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 ルールに渡します。default_gateway_ruleset の 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 ルールに渡します。default_gateway_ruleset 内の <Attribute name="src"/> ルールが適用されます。URL はすでに絶対 URL であるため、ゲートウェイ URL だけをプレフィックスとして追加する必要があります。ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義され、この URL が書き換えられることを確認してください。

//-->
</SCRIPT>
<br><br>
Testing DHTML Variables
<br><br>
<img src="gateway-URL/portal-server-URL/
rewriter/JavaScript/variables/dhtml/images/logo.gif">

default_gateway_ruleset<Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。

<br><br>
Image
</body>
</html>

JavaScript DJS 変数のサンプル

ProcedureJavaScript の DJS 変数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/variables/djs/djs.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

  3. このサンプルで指定される 2 つのルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<head>
<title>Dynamic JavaScript Variable Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
var dJSVar="var dJSimgsrc=\q/tmp/tmp/jpg\q;"
var dJSVar="var dJSimgsrc=\q../../../tmp/tmp/jpg\q;"
var dJSVar="var dJSimgsrc=\qhttp://abc.sesta.com/tmp/tmp/jpg\q;"
//-->
</SCRIPT>
<br>
Testing Dynamic JavaScript Variables
<br>
<img src="images/logo.gif">
<br>
Image
</body>
</html>

ルール

<Variable name="dJSVar" type="DJS"/>
<Variable name="dJSimgsrc“ type=URL"/>

書き換え後の HTML ページ

<html>
<head>
<title>Dynamic JavaScript Variable Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
var dJSVar="var dJSimgsrc=\qgateway-URL
/portal-server-URL/tmp/tmp/jpg\q;"
var dJSVar="var dJSimgsrc=\qgateway-URL
/portal-server-URL/rewriter/tmp/tmp/jpg\q;"
var dJSVar="var dJSimgsrc=\qgateway-URL
/http://abc.sesta.com/tmp/tmp/jpg\q;"

// 上のすべての文は、ゲートウェイ URL と Portal Server URL で書き換えられます。必要に応じて適切なパスがプレフィックスとして追加されます。最初のルールは、dJSVar の右側をダイナミック JavaScript 変数として識別します。これは 2 番目のルールに渡され、2 番目のルールは dJSimgsrc の右側をタイプ URL の JavaScript 変数として識別します。これにより、文は次のように書き換えられます。

//-->
</SCRIPT>
<br>
Testing Dynamic JavaScript Variables
<br>
<img src="gateway-URL/portal-server-URL
/rewriter/JavaScript/variables/djs/images/logo.gif">

default_gateway_ruleset<Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。

<br>
Image
</body>
</html>

JavaScript SYSTEM 変数のサンプル

ProcedureJavaScript の SYSTEM 変数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/variables/system/system.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<head>
<title>JavaScript SYSTEM Variables Test Page</title>
</head>
<body>
<script LANGUAGE="Javascript">
<!--
//SYSTEM 変数
alert(window.location.pathname);
//document.write
("<A HREF="+window.location.pathname+">SYSTEM</A><P>")
//-->
</SCRIPT>
Testing JavaScript SYSTEM Variables
<br>
This page displays the path where 
the current page is located when loaded.
</body>
</html>

ルール

<Variable name="window.location.pathname" type="SYSTEM"/>

書き換え後の HTML

<html>
<head>
<title>JavaScript SYSTEM Variables Test Page</title>
</head>
<body>
<SCRIPT>
convertsystem function definition...
</SCRIPT>
<script LANGUAGE="Javascript">
<!--
//SYSTEM 変数
alert(psSRAPRewriter_convert_system
(window.location, window.location.pathname,"window.location"));

// リライタは window.location.pathname を JavaScript の SYSTEM 変数として識別します。この変数の値はサーバー側で決定することができません。このため、リライタはこの変数の前に psSRAPRewriter_convert_pathname 関数を追加します。このラッパー関数は、クライアント側で変数の値を判断し、必要に応じて書き換えます。

//-->
</SCRIPT>
Testing JavaScript SYSTEM Variables
<br>
This page displays the path where
the current page is located when loaded.
</body>
</html>

JavaScript URL 関数のサンプル

ProcedureJavaScript の URL 関数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/functions/url/url.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  3. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<body>
JavaScript URL Function Test Page
<br>
<script language="JavaScript">
<!--
function test(one,two,three)
{
alert(one + "##" + two + "##" +three);
}
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500);
//-->
</SCRIPT>
</body>
</html>

ルール

<Function type="URL" name="test" paramPatterns="y,y"/>
<Function type="URL" name="window.open" paramPatterns="y"/>

書き換え後の HTML ページ

<html>
<body>
JavaScript URL Function Test Page
<br>
<script language="JavaScript">
<!--
function test(one,two,three)
{
alert(one + "##" + two + "##" +three);
}
test("/test.html","../test.html","123");
window.open("gateway-URL/portal-server-URL
/index.html","gen",width=500,height=500);
//-->
</SCRIPT>
</body>
</html>

JavaScript EXPRESSION 関数のサンプル

ProcedureJavaScript の EXPRESS 関数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    <portal-install-location>/SUNWportal/samples/rewriter

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。

  3. Portal Server 管理コンソールを使用して、リライタサービスの default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<body>
JavaScript EXPRESSION Function Test Page
<br><br><br>
<script language="JavaScript">
<!--
function jstest2()
{
return ".html";
}
function jstest1(one)
{
return one;
}
var dir="/images/test"
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">Test</a>");
alert(test1);
//-->
</SCRIPT>
</body>
</html>

ルール

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>

書き換え後の HTML ページ

<html>
<body>
JavaScript EXPRESSION Function Test Page
<br><br><br>
<script>
<!--
// ここには、psSRAPRewriter_convert_expression を含むさまざまな関数が表示されます。//-->
</SCRIPT>
<script language="JavaScript">
<!--
function jstest2()
{
return ".html";
}
function jstest1(one)
{
return one;
}
var dir="/images/test"
var test1=jstest1(psSRAPRewriter_convert_
expression(dir+"/test"+jstest2()));

// このルールは、関数 jstest1 のタイプ EXPRESSION の最初のパラメータを書き換える必要があることを指定します。この式の値は /test/images/test.html です。この値の前に、Portal Server URL とゲートウェイ URL がプレフィックスとして追加されます。

document.write("<a HREF="+test1+">Test</a>");
alert(test1);
//-->
</SCRIPT>
</body>
</html>

JavaScript DHTML 関数のサンプル

ProcedureJavaScript の DHTML 関数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/functions/dhtml/dhtml.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
<head>
Testing JavaScript DHTML Functions
<br>
<br>
<script>
<!--
document.write(\q<a href="/index.html">write</a><BR>\q)
document.writeln(\q<a href="index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>
</head>
<body BGCOLOR=white>
<br><br>
Testing document.write and document.writeln
</body>
</html>

ルール

<Function type="DHTML" name=" document.write" paramPatterns="y"/>
<Function type="DHTML" name=" document.writeln" paramPatterns="y"/>

書き換え後の HTML ページ

<html>
<head>
Testing JavaScript DHTML Functions
<br>
<br>
<script>
<!--
document.write(\q<a href="gateway-URL
/portal-server-URL/index.html">write</a><BR>\q)

// 最初のルールは、DHTML JavaScript 関数 document.write の最初のパラメータを書き換える必要があることを示します。リライタは、最初のパラメータが単純な HTML 文であることを識別します。default_gateway_ruleset の HTML ルールのセクションには <Attribute name="href" /> ルールが定義されており、書き換えが必要な文はこのルールによって決定されます。

document.writeln(\q<a href="gateway-URL
/portal-server-URL/rewriter/JavaScript/functions/dhtml/index.html">writeln</a><BR>\q)

// 2 番目のルールは、DHTML JavaScript 関数 document.writeln の最初のパラメータを書き換える必要があることを示します。リライタは、最初のパラメータが単純な HTML 文であることを識別します。default_gateway_ruleset の HTML ルールのセクションには <Attribute name="href" /> ルールが定義されており、書き換えが必要な文はこのルールによって決定されます。

document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")

// DHTML ルールは関数 document.writedocument.writeln を検出しますが、上の文は書き換えられません。これは最初のパラメータが HTML ではないためです。パラメータは任意の文字列となり、リライタはこれをどのように書き換えるかを指示されていません。

//-->
</SCRIPT>
</head>
<body BGCOLOR=white>
<br><br>
Testing document.write and document.writeln
</body>
</html>

JavaScript DJS 関数のサンプル

ProcedureJavaScript の DJS 関数のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/JavaScript/functions/djs/djs.html

  2. ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。

    これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。

  3. このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の HTML ページ

<html>
Test for JavaScript DJS Functions
<br>
<script>
menu.addItem(new NavBarMenuItem("All Available
Information","JavaScript:top.location=\qhttp://abc.sesta.com\q"));
//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));
</script>
</html>

ルール

<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable type="URL" name="top.location"/>

書き換え後の HTML ページ

<html>
Testing JavaScript DJS Functions
<br>
<script>
menu.addItem(new NavBarMenuItem
("All Available Information","javaScript:top.location=
\qgateway-URL/http://abc.sesta.com\q"));

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 と認識しないためです。

</script>
</html>

XML 属性のサンプル

ProcedureXML 属性のサンプルを使用する

  1. このサンプルには次の場所からアクセスできます。

    portal-server-URL /rewriter/XML/attrib.html

  2. このサンプルで指定されているルールを、default_gateway_ruleset の「XML ソースを書き換えるためのルール (Rules for Rewriting XML Source)」セクションに追加します (まだ追加していない場合)。

  3. Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。

  4. ゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

書き換え前の XML

<html>
RW_START
<body>
<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>
</body>
RW_END
</html>

ルール

<Attribute name="href" tag="check" valuePatterns="1234|"/>

書き換え後の HTML

<html>
Rewriting starts
<br>
<br>
<body>
<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 namehreftagcheckvaluePatterns1234 です。valuePatterns よりもあとの文字列は書き換えられます。valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。

</body>
Rewriting ends
</html>

ケーススタディー

ここでは、メールクライアントのソース HTML ページの例について説明します。このケーススタディーでは、考えられるすべての例やルールについて説明することはできません。これはあくまでも、イントラネットページにルールを適用するために使用するルールセットの例です。

前提条件

このケーススタディーは、次のような前提で行います。

ページ例 1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://abc.siroe.com/mailclient/destin/?Cmd=navbar -->
<HTML XMLNS:WM><HEAD>
<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 -->
<STYLE>WM\\:DROPMENU {
BEHAVIOR: url(http://abc.siroe.com/mailweb/controls/dropmenu.htc)
}
</STYLE>
<LINK href="destin_files/navbar.css" type=text/css rel=stylesheet>
<SCRIPT language=javascript>
var g_szUserBase= "http://abc.siroe.com/mailclient/destin"+"/";
var g_szFolder= ".";
var g_szVirtualRoot= "http://abc.siroe.com/mailweb";
var g_szImagePath= g_szVirtualRoot + "/img/";
</SCRIPT>
<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
topMargin=0 scroll=no>
<TABLE class=nbTableMain id=nbTableMain style="HEIGHT: 100%" cellSpacing=0
cols=1 cellPadding=0 rows="2">
<TBODY>
<TR>
<TD class=treeBrand>
<DIV class=treeOFLOW><IMG
style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
src="/destin_files/logo-ie5.gif" border=0></DIV></TD></TR>
<TR height="100%">
<TD>
<TABLE class=nbTable cellSpacing=0 cols=1 cellPadding=0 rows="4">
<TBODY>
<TR>
<TD class=nbFlybar id=show_navbar onkeydown=flybar_keydown()
onclick=ToggleTab(this.id) tabIndex=0 noWrap>
<DIV class=treeOFLOW>Shortcuts</DIV></TD></TR>
<TR style="HEIGHT: 100%">
<TD id=idOutbarpane style="TEXT-ALIGN: center" vAlign=top><A
id=inbox
href="http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&amp;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>
<TR style="HEIGHT: 1.5em">
<TD class=nbFlybar id=show_folders onkeydown=flybar_keydown()
onclick=ToggleTab(this.id) tabIndex=0 noWrap>
<DIV class=treeOFLOW>Folders</DIV></TD></TR>
<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>
</BODY></HTML>

説明

「説明」は、サンプルルールセットとケーススタディーの間のマッピングを示しています。

表 4–3 サンプルルールセットとケーススタディーのマッピング

ページコンテンツ 

適用されるルール 

リライタの出力 

説明 

var g_szVirtualRoot=
"http://abc.siroe.com/m
ailweb";

<Variable name="URL"> g_szVirtualRoot </Variable> 

var g_szVirtualRoot= 
"http://gateway.sesta.com
/http://abc.siroe.com/mai
lweb";

g_szVirtualRoot は単一の URL を値に持つ変数です。

このルールは、タイプ URL の変数 g_szVirtualRoot を検索するようにリライタに指示します。このような変数が Web ページに存在する場合、リライタはこれを絶対 URL に変換し、ゲートウェイ URL をプレフィックスとして追加します。

src="/destin_files/
logo-ie5.gif"

<Attribute name="src" /> 

src="http://gateway.sesta.
com/
http://abc.siroe.com/
destin_files/logo-ie5.gif

src は属性名であり、タグまたは valuePattern は付加されません。 

このルールは、src という名前の属性をすべて検索し、その属性の値を書き換えるようにリライタに指示します。

href="http://abc.siroe.
com

/mailclient/destin/Inbo
x/
?Cmd=contents&amp;Page=
1"

<Attribute name="href"/>

href="http://gateway.sest
a.com/
http://abc.siroe.com
/mailclient/destin/
Inbox/?Cmd=contents&amp;P
age=1"

href は属性名であり、タグまたは valuePattern は付加されません。 

このルールは、href という名前の属性をすべて検索し、その属性の値を書き換えるようにリライタに指示します。


注 –

ルールセットを適用する優先順位は、ホスト名 - サブドメイン - ドメインです。

たとえば、「ドメインベースのルールセット」リストに次のエントリを指定していると仮定します。

sesta.com|ruleset1
eng.sesta.com|ruleset2
host1.eng.sesta.com|ruleset3

ruleset3host1 のすべてのページに適用されます。

ruleset2 は、host1 から取得されたページを除く eng サブドメインのすべてのページに適用されます。

ruleset1 は、eng サブドメインおよび host1 から取得されたページを除く、sesta.com ドメインのすべてのページに適用されます。


  1. 「保存」をクリックして終了します。

  2. 端末ウィンドウからゲートウェイを再起動します。


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

Outlook Web Access 用のルールセット

Secure Remote Access サーバーでは、Sun Java System Web Server および IBM アプリケーションサーバー上で、Outlook Web Access (OWA) から MS Exchange 2000 SP3 インストールおよび MS Exchange 2003 にアクセスする機能がサポートされます。

ProcedureOWA のルールセットを設定する

  1. Portal Server 管理コンソールに管理者としてログインします。

  2. 「Secure Remote Access」タブを選択し、属性を設定するゲートウェイプロファイルを選択します。

  3. 「URI をルールセットにマップ」フィールドで、Exchange 2000 がインストールされているサーバー名を入力し、それに続けて Exchange 2000 Service Pack 4 OWA ルールセットを入力します。

    次に例を示します。


    exchange.domain.com|exchange_2000sp3_owa_ruleset.

パブリックフォルダの使用

Exchange 側では、パブリックフォルダは NTLM 認証を使用するように設定されています。これは、HTTP 基本認証を使用するように変更する必要があります。

この変更を行うには、Exchange サーバーで「コントロールパネル」 > 「管理ツール」の順に選択し、「インターネットインフォメーションサービス」を開きます。

「既定の Web サイト」の下に、パブリックフォルダに関する「パブリック」というタブがあります。タブを右クリックし、プロパティーを選択します。「ディレクトリセキュリティー」タブをクリックします。「匿名アクセスと認証」コントロールパネルで「編集」を選択します。「基本認証」チェックボックスのみを選択し、ほかのすべてのチェックボックスの選択を解除します。

6.x と 3.0 のルールセットのマッピング

次の表は、Secure Remote Access サーバーのリライタルールと従来のリリースの Portal Server 製品とのマッピングを示しています。

表 4–4 SP3 のルールのマッピング

リライタ 6.0 の DTD 要素 

リライタ 3.0 リストボックス名 

HTML コンテンツのルール

 

Attribute: URL 

HTML 属性の書き換え 

Attribute: DJS 

JavaScript を含む HTML 属性の書き換え 

Form 

フォーム入力タグリストの書き換え 

アプレット 

アプレット/オブジェクトパラメータ値リストの書き換え 

JavaScript コンテンツのルール

 

Variable: URL 

URL タイプの JavaScript 変数の書き換え 

Variable: EXPRESSION 

JavaScript 変数関数の書き換え 

Variable: DHTML 

HTML タイプの JavaScript 変数の書き換え 

Variable: DJS 

JavaScript タイプの JavaScript 変数の書き換え 

Variable: SYSTEM 

JavaScript システム変数の書き換え 

Function: URL 

JavaScript 関数パラメータの書き換え 

Function: EXPRESSION 

JavaScript 関数パラメータ関数の書き換え 

Function: DHTML 

HTML タイプの JavaScript 関数パラメータの書き換え 

Function: DJS 

JavaScript タイプの JavaScript 関数パラメータの書き換え 

XML コンテンツのルール

 

Attribute: URL 

XML ドキュメントの属性値の書き換え 

TagText 

XM1 ドキュメントのテキストデータの書き換え 

CSS コンテンツのルール

 

ルールは不要です。デフォルトでは、すべての URL が変換されます。 

 

WML コンテンツのルール

 

ルールは定義されていません。WML は HTML として処理され、HTML ルールが適用されます。 

 

WMLScript コンテンツのルール

 
   

WML スクリプトはサポートされていません。