Sun Java System Portal Server Secure Remote Access 7.2 관리 설명서

4장 Rewriter 작업

Secure Remote Access의 Rewriter 구성 요소를 사용하면 사용자가 인트라넷 웹 페이지를 분석하여 게이트웨이를 통해 해당 웹 페이지에 액세스할 수 있습니다.

이 장에서는 다음 주제를 다룹니다.

Rewriter 소개

SRA(Secure Remote Access)의 Rewriter 구성 요소를 통해 최종 사용자가 게이트웨이를 가리키도록 웹 페이지의 URI(Uniform Resource Identifier)를 수정하여 인트라넷을 찾아볼 수 있습니다. URI는 등록된 이름 공간에서 이름을 캡슐화하고 여기에 이름 공간으로 레이블을 설정하는 방법을 정의합니다. URI의 가장 일반적인 유형으로는 URL(Uniform Resource Locator)이 있습니다. Rewriter는 HTTP 또는 HTTPS만 지원합니다. 이러한 지원은 프로토콜에서 대소문자를 구분하지 않고 이루어집니다. Rewriter는 상대 URL의 일부인 경우에만 백슬래시를 지원합니다.


예 4–1 URL 다시 쓰기

http://abc.sesta.com\\index.html이 다시 작성됩니다.

다시 작성되지 않는 URL: http:\\\\abc.sesta.com. http:/abc.com


문자 집합 암호화

HTTP 표준에 따르면 HTTP 헤더 또는 HTML 메타 태그에서 웹 페이지에 사용할 문자 집합을 지정해야 합니다. 하지만 이 정보를 사용할 수 없는 경우도 있습니다. 데이터의 암호화를 설정하고 만든 사람의 의도에 맞게 데이터를 표시하려면 문자 집합을 알아야 합니다.

문자 집합을 검색하려면 SUNWjchdt 패키지를 Java Enterprise System Accessory CD에서 설치하십시오. 이 제품이 설치되면 Rewriter에서 필요한 경우 이를 검색하여 사용합니다.


주 –

이 제품을 사용하면 성능이 저하될 수 있기 때문에 필요한 경우에만 설치해야 합니다. 설치, 구성 및 사용에 관한 자세한 내용은 jcharset_readme.txt를 참조하십시오.


Rewriter 사용 시나리오

사용자가 게이트웨이를 통해 인트라넷 웹 페이지에 액세스하려고 할 때 Rewriter가 웹 페이지를 사용할 수 있도록 해줍니다. Rewriter는 URLScraper 및 게이트웨이에서 사용됩니다.

URLScraper

URL Scraper 공급자는 구성된 URI에서 컨텐트를 가져오며, 이러한 URI를 브라우저로 보내기 전에 모든 상대 URI를 절대 URI로 확장합니다.

예를 들어 다음과 같이 사이트에 액세스하는 경우

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

Rewriter는 이것을 다음으로 변환합니다.

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

여기서 http://yahoo.com/test/는 페이지의 기본 URL입니다.

URLScraper 공급자에 대한 자세한 내용은 Sun Java System Portal Server 관리 설명서를 참조하십시오.

게이트웨이

게이트웨이는 인터넷 포털에서 컨텐트를 가져옵니다. 게이트웨이에서 컨텐트를 브라우저로 보내기 전에 게이트웨이 URI를 기존 URI 앞에 추가하므로 브라우저의 후속 URI 요청이 해당 게이트웨이에 도달할 수 있습니다.

예를 들어, 다음과 같은 인터넷 컴퓨터의 HTML 페이지에 액세스하려고 하는 사용자에 대해

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

Rewriter는 이 URL에 다음과 같이 게이트웨이에 대한 참조를 갖는 URL 이름을 접두어로 붙입니다.

<a href="https://gateway.company.com/http://mymachine.intranet.com/ mypage.html>"

사용자가 이 앵커와 관련된 링크를 누르면 브라우저가 게이트웨이에 접속합니다. 게이트웨이는 mymachine.intranet.com에서 mypage.html의 컨텐트를 가져옵니다.

게이트웨이는 가져온 웹 페이지에서 다시 작성할 요소를 결정하기 위해 몇 가지 규칙을 사용합니다.

규칙 집합 작성

규칙 집합 정의에 대한 자세한 내용은 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

이 절에는 예제 규칙 집합이 들어 있습니다. 140페이지의 "사례 연구"를 통해 Rewriter에서 이러한 규칙을 해석하는 방식을 살펴볼 수 있습니다.

<?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>

규칙 작성을 위한 절차

규칙을 작성하는 일반적인 절차는 다음과 같습니다.

규칙 집합 관련 지침

규칙 집합을 작성하는 경우 다음 사항을 주의하십시오.

규칙 집합의 루트 요소 정의

규칙 집합의 루트 요소에는 두 가지 속성이 있습니다.

재귀적 기능 사용

Rewriter에서는 재귀적 기능을 사용하여 대응되는 문자열 패턴의 끝까지에서 같은 패턴을 검색합니다.

예를 들어 Rewriter에서 다음 문자열을 구문 분석하는 경우

<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=**"/>;

Rewriter는 대응되는 문자열 패턴에서 끝까지 같은 패턴을 찾기 때문에 다음과 같은 출력을 얻게 됩니다.

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

언어 기반 규칙 정의

규칙은 다음 언어를 바탕으로 합니다.

HTML 컨텐트에 대한 규칙

웹 페이지의 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이 다음과 같다고 가정합니다.

http://mymachine.intranet.com/mypage.html

페이지 컨텐트

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

규칙

<Attribute name="href"/>
or
<Attribute name="href" tag="a"/>

결과

<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>

설명

다시 작성될 URL은 이미 절대 URL이므로 URL의 접두어로는 게이트웨이 URL만 사용됩니다.

DJS 속성 예제

페이지의 기본 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>

설명

지정된 페이지 컨텐트를 다시 쓰기 위해 두 가지 규칙이 필요합니다. 첫 번째 규칙은 onClick JavaScript 토큰을 확인합니다. 두 번째 규칙은 다시 작성되어야 하는 check 함수의 매개 변수를 확인합니다. 이 경우에는 paramPatterns가 첫 번째 매개 변수 자리에 y 값을 갖기 때문에 첫 번째 매개 변수만 다시 작성됩니다.

게이트웨이 URL과 JavaScript 토큰이 나타나는 페이지의 기본 URL이 필요한 매개 변수 앞에 덧붙여집니다.

HTML 컨텐트에 대한 폼 규칙

사용자가 찾아보는 HTML 페이지에는 폼이 있을 수 있습니다. 일부 폼 요소는 URL을 값으로 취할 수 있습니다.

이 절은 다음으로 세분됩니다.

폼 규칙 구문

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

여기서

name은 폼의 이름입니다(필수).

field는 값을 다시 작성해야 하는 폼의 필드입니다(필수).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 이 폼 정의가 있는 html 페이지의 URL입니다(옵션, 기본값 *, 모든 페이지를 의미).

폼 규칙 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://test.siroe.com/testcases/html/form.html

페이지 컨텐트

페이지 URI가 form.html이고 서버의 루트 디렉토리에 있다고 가정합니다.

<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 컨텐트에 대한 애플릿 규칙

단일 웹 페이지에 많은 애플릿이 있을 수 있고 각 애플릿에는 많은 매개 변수가 있을 수 있습니다. Rewriter는 규칙에 지정된 값을 애플릿의 HTML 정의에 대응시키고 애플릿 매개 변수 정의의 일부로 존재하는 URL 값을 수정합니다. 이러한 교체는 사용자가 특정 웹 페이지를 찾아볼 때가 아니라 서버에서 이루어집니다. 이 규칙은 HTML 컨텐트의 개체 태그 및 애플릿 모두에서 매개 변수를 찾아 다시 작성합니다.

이 절은 다음으로 세분됩니다.

애플릿 규칙 구문

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

여기서

code는 애플릿 또는 개체 클래스의 이름입니다(필수).

param은 값을 다시 작성해야 하는 매개 변수의 이름입니다(필수).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 애플릿 정의가 있는 페이지의 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>

설명

<Attribute name="codebase"/>default_gateway_ruleset에서 정의된 규칙이므로 codebase 속성은 다시 작성됩니다.

이름이 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 뒤에 텍스트가 없습니다. 따라서 Rewriter가 다시 작성할 텍스트가 없습니다. *를 *abc와 같이 다른 문자열과 연결하여 사용해야 합니다. 이 경우에 *abc 이후의 모든 컨텐트가 다시 작성됩니다.


주 –

별표(*)는 규칙의 어떤 필드에서나 와일드카드로 사용할 수 있습니다. 그러나 규칙의 모든 필드에 *를 포함시킬 수는 없습니다. 모든 필드에 *가 있으면 규칙이 무시됩니다. 오류 메시지는 표시되지 않습니다.


원본 명령문에서 여러 필드를 구별하기 위해 표시되는 구분 문자(세미콜론 또는 쉼표)와 함께 * 또는 **를 사용할 수 있습니다. 하나의 별표(*)는 다시 작성되지 않을 모든 필드와 매칭되며 두 개의 별표(**)는 다시 작성해야 하는 모든 필드와 매칭됩니다.

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 = "*|*|**|*|**|*|"

dir2, dir4url1이 다시 작성됩니다. 다시 작성해야 하는 마지막 필드는 **를 사용하여 나타내지 않아도 됩니다.

JavaScript 컨텐트에 대한 규칙

JavaScript에는 다양한 위치에 URL이 있을 수 있습니다. Rewriter는 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이 다음과 같다고 가정합니다.

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이 앞에 덧붙습니다. 두 번째 라인에는 이미 절대 경로가 있기 때문에 게이트웨이 URL만 덧붙습니다. 세 번째 var imagsrc2는 그 값이 문자열이 아니라 다른 JavaScript 값이기 때문에 다시 작성되지 않습니다.

EXPRESSION 변수

Expression 변수에는 오른쪽에 표현식이 있습니다. 이 표현식의 결과는 URL입니다. Rewriter는 서버에서 이러한 표현식을 평가할 수 없기 때문에 HTML 페이지에 JavaScript 함수(psSRAPRewriter_convert_expression)를 추가합니다. 이 함수는 표현식을 하나의 매개 변수로 받아들여 클라이언트 브라우저에서 필요한 URL로 평가합니다.

명령문에 단순 URL이 있는지 EXPRESSION URL이 있는지 잘 모르는 경우에는 두 시나리오를 모두 처리할 수 있는 EXPRESSION 규칙을 사용하십시오.

이 절은 다음으로 세분됩니다.

EXPRESSION 변수 구문

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

여기서

variableName은 그 값이 표현식인 JavaScript 변수의 이름입니다(필수).

type은 JavaScript 변수의 유형입니다(옵션, 기본값은 EXPRESSION).

source는 페이지의 URI입니다(옵션, 기본값 *, 모든 소스를 의미)

EXPRESSION 변수 예제

페이지의 기본 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"/>
or
<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_expressionexpvar 표현식 변수의 오른쪽에 덧붙여집니다. 이 함수는 표현식을 처리하고 런타임에 컨텐트를 다시 작성합니다. 세 번째 라인에서 값이 단순 URL로 다시 작성됩니다.

DHTML(Dynamic HTML) 변수

이것은 HTML 컨텐트를 포함한 JavaScript 변수입니다.

이 절은 다음으로 세분됩니다.

DHTML 구문

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

여기서

variableName은 DHTML 컨텐트가 있는 JavaScript 변수의 이름입니다(필수).

type은 변수의 유형입니다(필수, 이 값은 DHTML이어야 함).

source는 페이지의 URL입니다(옵션, 기본값은 *, 모든 페이지를 의미).

DHTML 예제

페이지의 기본 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"/>
or
<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 구문 분석기가 href 속성 규칙이 대응된 HTML 규칙을 적용하기 때문에 URL이 다시 작성됩니다.

DJS(Dynamic JavaScript) 변수

이것은 JavaScript 컨텐트를 포함한 JavaScript 변수입니다.

이 절은 다음으로 세분됩니다.

DJS 구문

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

여기서

variable은 그 값이 javascript인 JavaScript 변수입니다.

DJS 예제

페이지의 기본 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;"

설명

여기에 두 가지 규칙이 필요합니다. 첫 번째 규칙은 동적 JavaScript 변수 dJSVar을 찾습니다. 이 변수의 값은 다시 URL 유형의 JavaScript입니다. 이 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에 있습니다. 이러한 시스템 변수 규칙을 수정하지 마십시오.

type은 시스템 유형 값을 지정합니다(필수이며 값은 DJS임).

source는 이 페이지의 URI입니다(옵션, 기본값 *는 모든 페이지를 의미).

SYSTEM 변수 예제

페이지의 기본 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>

설명

Rewriter가 규칙에 대응되는 시스템 변수를 찾으면 psSRAPRewriter_convert_system 함수가 접두어로 사용됩니다. 이 함수는 런타임 때 시스템 변수를 처리하고 그에 따라 얻어지는 URL을 다시 씁니다.

함수의 인수

그 값을 다시 작성해야 하는 함수 매개 변수는 4가지 범주로 분류됩니다.

일반 구문

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

여기서

name은 JavaScript 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 이 매개 변수에 필요한 값의 종류를 지정합니다(옵션, 기본값은 EXPRESSION 유형).

source는 페이지의 소스 URI입니다(옵션, 기본값은 *, 모든 페이지를 의미).

URL 매개 변수

함수는 이 매개 변수를 문자열로 취하며 이 문자열은 URL로 취급할 수 있습니다.

이 절은 다음으로 세분됩니다.

URL 매개 변수 구문

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

여기서

name은 URL 유형의 매개 변수를 갖는 함수 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 함수의 유형입니다(필수, 이 값은 URL이어야 함).

source는 이 함수 호출을 갖는 페이지의 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 이름의 함수에 있는 처음 두 매개 변수를 다시 작성해야 한다고 지정합니다. 따라서 test 함수의 처음 두 매개 변수는 다시 작성됩니다. 두 번째 규칙은window.open 함수의 처음 매개 변수를 다시 작성해야 한다고 지정합니다. window.open 함수 내의 URL에는 이 함수 매개 변수를 포함한 페이지의 기본 URL과 게이트웨이 URL이 앞에 덧붙여집니다.

EXPRESSION 매개 변수

이 매개 변수는 표현식 값을 취하며 평가 결과는 URL이 됩니다.

이 절은 다음으로 세분됩니다.

EXPRESSION 매개 변수 구문

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

여기서

name은 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 값 EXPRESSION을 지정합니다(옵션).

source는 이 함수가 호출되는 페이지의 URI입니다.

EXPRESSION 매개 변수 예제

페이지의 기본 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"/>
or
<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>

설명

이 규칙은 jstest1 함수의 첫 번째 매개 변수를 EXPRESSION 함수 매개 변수로 취급하여 다시 써야 한다는 것을 지정합니다. 예제 페이지 컨텐트에서 첫 번째 매개 변수는 런타임 때만 평가되는 표현식입니다. Rewriter는 이 표현식에 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. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

DHTML 매개 변수 예제

페이지의 기본 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 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 두 번째 규칙은 document.writeln 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 세 번째 규칙은 href 이름의 모든 속성을 다시 작성해야 한다고 지정하는 단순 HTML 규칙입니다. 이 예에서, DHTML 매개 변수 규칙이 함수에서 다시 작성해야 하는 매개 변수를 확인합니다. 그런 다음 HTML 속성 규칙이 적용되어 실제로 확인된 매개 변수가 다시 작성됩니다.

DJS 매개 변수

그 값이 JavaScript인 함수 매개 변수입니다.

이 절은 다음으로 세분됩니다.

DJS 매개 변수 구문

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

여기서

name은 하나의 매개 변수가 DJS인 함수의 이름입니다(필수).

paramPatterns는 위 함수에서 어떤 매개 변수가 DJS인지를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 DJS입니다(필수).

source는 페이지의 URI입니다(옵션, 기본값은 *, 모든 URI를 의미).

DJS 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

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

페이지 컨텐트

<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\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 함수의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. JavaScript 내에서 top.location 변수도 다시 작성해야 합니다. 이 변수는 두 번째 규칙을 사용하여 다시 작성됩니다.

XML 컨텐트에 대한 규칙

웹 페이지에 XML 컨텐트가 있을 수 있으며 여기에는 다시 URL이 있을 수 있습니다. 다시 작성해야 하는 XML 컨텐트는 두 범주로 구분됩니다.

태그 텍스트

이 규칙은 태그 요소의 PCDATA 또는 CDATA를 다시 작성하기 위한 것입니다.

이 절은 다음으로 세분됩니다.

태그 텍스트 구문

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

여기서

tagName은 태그의 이름입니다.

attributePatterns는 이 태그에 대한 속성 및 그 값의 패턴입니다(옵션, 이 태그에 속성이 전혀 없다는 것을 의미).

source는 이 xml 파일의 URI입니다(옵션, 기본값은 *, 모든 xml 페이지를 의미).

태그 텍스트 예제

페이지의 기본 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>

설명

페이지 컨텐트의 첫 번째 행에는 속성 예제가 있습니다. 페이지 컨텐트의 두 번째 행에 name이라는 속성이 없는데 name 속성의 값이 src여야 하기 때문에 다시 작성하는 작업은 수행되지 않습니다. 이것도 다시 작성하려면 <TagText tag="attribute"/>가 있어야 합니다.

속성

XML 속성의 규칙은 HTML에 대한 속성 규칙과 유사합니다. XML의 속성 규칙이 대소문자를 구분하는 반면 HTML 속성은 그렇지 않다는 차이점이 있습니다. 이는 근본적으로 HTML에는 없지만 XML에는 있는 대소문자 구분 특성 때문입니다.

Rewriter는 속성 이름을 바탕으로 속성 값을 변환합니다.

이 절은 다음으로 세분됩니다.

속성 구문

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

여기서

attributeName은 속성의 이름입니다(필수).

tag는 이 속성이 있는 태그의 이름입니다(옵션, 기본값은 *, 모든 태그를 의미).

valuePatterns에 대해서는 규칙에 패턴 매칭 사용을 참조하십시오.

source는 이 XML 페이지의 URI입니다(옵션, 기본값은 *, 모든 XML 페이지를 의미).

속성 예제

페이지의 기본 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>

설명

위의 예에서 네 번째 라인만 규칙에 지정된 모든 조건을 만족하기 때문에 이 라인만 다시 작성됩니다. 규칙에 패턴 매칭 사용을 참조하십시오.

CSS(Cascading Style Sheet)에 대한 규칙

HTML 페이지에서 CSS(CSS2 포함)가 변환됩니다. URL이 CSS의 가져오기 구문과 url() 함수에만 있기 때문에 이 변환에 대해 정의된 규칙은 없습니다.

WML에 대한 규칙

WML은 HTML과 유사하므로 WML 컨텐트에 HTML 규칙이 적용됩니다.WML 컨텐트에 일반 규칙 집합을 사용하십시오. HTML 컨텐트에 대한 규칙을 참조하십시오.

재귀적 기능 사용

Rewriter에서는 재귀적 기능을 사용하여 대응되는 문자열 패턴의 끝까지에서 같은 패턴을 검색합니다.

예를 들어 Rewriter에서 다음 문자열을 구문 분석하는 경우

<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=**"/>;

Rewriter는 대응되는 문자열 패턴에서 끝까지 같은 패턴을 찾기 때문에 다음과 같은 출력을 얻게 됩니다.

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

디버그 로그를 사용한 문제 해결

Rewriter 문제를 해결하려면 디버깅 로그를 사용해야 합니다.

디버깅 메시지는 다음과 같이 분류됩니다.

Rewriter 디버깅 수준 설정

ProcedureRewriter 디버깅 수준을 설정하려면

  1. 게이트웨이 컴퓨터에 루트로 로그인하여 다음 파일을 편집합니다.


    gateway-install-root/SUNWam/config/AMConfig-instance-name.properties
  2. 디버깅 수준을 설정합니다.


    com.iplanet.services.debug.level=

    디버깅 수준은 다음과 같습니다.

    오류 - 디버그 파일에 심각한 오류만 기록됩니다. 이런 오류가 발생하면 보통 Rewriter가 중지됩니다.

    경고 - 경고 메시지가 기록됩니다.

    메시지 - 모든 디버그 메시지가 기록됩니다.

    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>
    

디버깅 파일 이름

디버그 수준이 메시지로 설정된 경우 디버그에서 파일 집합이 생성됩니다. 디버깅 파일 이름에는 Rewriter 파일과 해당 파일에 포함된 정보가 나와 있습니다.

표 4–2 Rewriter 디버깅 파일

파일 이름 

정보 

RuleSetInfo 

다시 쓰기에 사용된 모든 규칙 집합이 이 파일에 기록됩니다. 

Original Pages 

페이지 URI, resolveURI(페이지 URI와 다른 경우), 컨텐트 MIME, 페이지에 적용된 규칙 집합, 구문 분석기 MIMIE 및 원본 컨텐트가 들어 있습니다. 

구문 분석과 관련된 특정 오류/경고/메시지도 이 파일에 들어 있습니다. 

메시지 모드에서는 전체 컨텐트가 기록됩니다. 경고 및 오류 모드에서는 다시 쓰는 동안 발생한 예외만 기록됩니다. 

Rewritten Pages 

페이지 URI, resolveURI(페이지 URI와 다른 경우), 컨텐트 MIME, 페이지에 적용된 규칙 집합, 구문 분석기 MIMIE 및 재작성된 컨텐트가 들어 있습니다. 

이 파일은 디버그 모드가 메시지로 설정되었을 때 채워집니다. 

Unaffected Pages 

수정되지 않은 페이지 목록을 포함합니다. 

URIInfo Pages 

발견되어 변환된 URL이 들어 있습니다. 컨텐트가 원본 데이터와 동일하게 유지되는 모든 페이지의 세부 사항이 이 파일에 기록됩니다. 

세부적으로 기록되는 내용: 페이지 URI, MIME 및 인코딩 데이터, 재작성에 사용된 rulesetID 그리고 구문 분석기 MIME 

위의 파일 이외에도 Rewriter는 위 파일에서 포착하지 않은 디버그 메시지의 파일을 생성합니다. 이 파일 이름은 두 부분으로 구성됩니다. 첫 번째 부분은 pwRewriter 또는 psSRARewriter이고 두 번째 부분은 portal 또는 gateway-profile-name을 사용하는 확장 부분입니다.

디버깅 파일은 포털 또는 게이트웨이에 표시됩니다. 이 파일은 AMConfig-instance-name .properties 파일에 표시된 디렉토리에 있습니다.

Rewriter 구성 요소는 다음 파일 집합을 생성하여 디버깅을 지원합니다.

prefix_RuleSetInfo.extension

prefix_OrginalPages.extension

prefix_RewrittenPages.extension

prefix_UnaffectedPages.extension

prefix_URIInfo.extension

여기서

prefix는 URLScraper 사용 로그의 경우 psRewriter이고 게이트웨이 사용 로그의 경우 psSRAPRewriter입니다.

extension은 URLScraper 사용의 경우 portal이고 게이트웨이 사용의 경우 gateway-profile-name입니다.

예를 들어, 게이트웨이에서 Rewriter가 페이지를 변환하는데 사용되고 기본 게이트웨이 프로필이 사용되는 경우 디버깅이 다음 파일을 만듭니다.

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>

<Attrib name="href"/> 규칙이 default_gateway_ruleset에 이미 정의되었기 때문에 이 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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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이 접두어로 사용됩니다. 이것은 onAbort, onBlur, onFocus, onChangeonClick에 대한 규칙이 default_gateway_ruleset 파일에 정의되었기 때문입니다. Rewriter는 JavaScript 토큰을 검색한 다음 추가 처리를 할 수 있도록 JavaScript 함수 규칙으로 전달합니다. 샘플의 두 번째 규칙은 Rewriter에 다시 작성할 매개 변수를 알려줍니다.

</body>
<br>

Rewriting ends

</html>

HTML 폼 예제

Procedure폼 예제를 사용하려면

  1. 다음 위치에서 예제에 액세스합니다.

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

  2. 게이트웨이 서비스에서 [도메인 및 하위 도메인의 프록시] 목록에 abc.sesta.com이 정의되어 있어야 합니다.

    정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.

  3. 이 예제에 지정된 규칙을 "HTML 속성 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.

  4. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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">

<Attribute name="action"/>default_gateway_ruleset에서 HTML 규칙의 일부로 정의되었기 때문에 이 URL은 다시 작성됩니다. URL이 이미 절대 경로이므로 접두어로 게이트웨이 URL만 사용하면 됩니다. 게이트웨이 서비스에서 [도메인 및 하위 도메인의 프록시] 목록에 abc.sesta.com이 정의되어 있어야 합니다. 그렇게 하지 않으면 직접 연결이 가정되기 때문에 게이트웨이 URL이 접두어로 사용되지 않습니다.

<input type=hidden name=name1 value=
"0|1234|gateway URL/portal-server-URL/test.html">

// 여기서 폼 이름은 form1이고 필드 이름은 name1입니다. 이것은 규칙에서 지정된 폼 이름 및 필드 이름과 일치합니다. 규칙에 valuePatterns0|1234|로 나와 있으며 이 구문의 value와 일치합니다. 따라서 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만 사용하면 됩니다.

<input type=hidden name=name1 value="0|1234|../../html/test.html">

// 폼 이름이 규칙에서 지정한 이름과 일치하지 않기 때문에 이 URL은 다시 작성되지 않습니다.

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

HTML 애플릿 예제

Procedure애플릿 예제를 사용하려면

  1. 애플릿 클래스 파일을 얻습니다. RewriteURLinApplet.class 파일은 다음 위치에 있습니다.

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

    애플릿 코드가 있는 페이지의 기본 URL은 다음과 같습니다.

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

  2. 이 예제에 지정된 규칙을 "HTML 속성 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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이 루트 수준에 있도록 지정되었기 때문에 게이트웨이 및 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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.

  4. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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 변수입니다. 따라서 게이트웨이 및 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">

// <Attribute name="src"/>라는 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 행은 다시 작성됩니다.

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

JavaScript EXPRESSION 변수 예제

ProcedureJavaScript Expression 변수 예제를 사용하려면

  1. 이 예제는 다음에서 액세스할 수 있습니다.

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

  2. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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 variables
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>
// Rewriter appends the wrapper function 
psSRAPRewriter_convert_expression here
</SCRIPT>
<script LANGUAGE="Javascript">
<!--
//Expression variables
var expvar1="images";
var expvar2="/logo.gif";
var expvar =psSRAPRewriter_convert_expression( expvar1 + expvar2);

// Rewriter는 이 명령문의 오른쪽을 JavaScript EXPRESSION 변수인 것으로 인식합니다. Rewriter는 서버 쪽에서 이 표현식의 값을 결정할 수 없습니다. 따라서, psSRAPRewriter_convert_expression 함수가 표현식 앞에 덧붙습니다. 이 표현식은 클라이언트 쪽에서 평가되어 필요에 따라 다시 작성됩니다.

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

// 이전 구문에서 다시 작성된 expvar 값이 이 표현식의 값에 도달하기 위해 사용됩니다. 결과가 유효한 URL이기 때문에(그래픽이 샘플의 이 위치에) 링크가 제대로 작동합니다.

var expvar="gateway URL/portal-server-URL/images/logo"+".gif";

// Rewriter는 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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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이 사용되어 최종적으로 다시 작성된 결과가 유도됩니다.

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"/>가 적용되며 명령문이 다음과 같이 다시 작성됩니다. Portal Server URL과 게이트웨이 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이 정의되어 있어야 합니다.

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

// <Attribute name="src"/>라는 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 행은 다시 작성됩니다.

<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. 이 예제에 지정된 두 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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;"

// 위의 모든 구문은 게이트웨이 및 Portal Server URL로 다시 작성됩니다. 필요한 경로가 적합하게 앞에 덧붙여집니다. 첫 번째 규칙은 dJSVar의 오른쪽을 동적 JavaScript 변수로 인식합니다. 그런 다음 dJSimgsrc의 오른쪽을 URL 유형의 JavaScript 변수로 인식하는 두 번째 규칙으로 전달됩니다. 규칙에 따라 다시 작성됩니다.

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

// <Attribute name="src"/>라는 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 행은 다시 작성됩니다.

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

JavaScript SYSTEM 변수 예제

ProcedureJavaScript System 변수 예제를 사용하려면

  1. 이 예제는 다음에서 액세스할 수 있습니다.

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

  2. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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 Var
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 Var
alert(psSRAPRewriter_convert_system
(window.location, window.location.pathname,”window.location”));

// Rewriter는 window.location.pathname을 JavaScript SYSTEM 변수로 인식합니다. 이 변수의 값은 서버 쪽에서 결정할 수 없습니다. 따라서 Rewriter는 변수 앞에 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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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 Expressions 함수 예제를 사용하려면

  1. 이 예제는 다음에서 액세스할 수 있습니다.

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

  2. 이 예제에 지정된 규칙을 JavaScript 소스 재작성을 위한 규칙 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).

  3. Portal Server 관리 콘솔을 사용하여 Rewriter 서비스의 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>
<!--
// various functions including psSRAPRewriter_
convert_expression appear here.//-->
</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()));

// 규칙이 EXPRESSION 유형인 jstest1 함수의 첫 번째 매개 변수를 다시 써야 한다고 규정합니다. 이 표현식의 값은 /test/images/test.html입니다. 이 앞에 게이트웨이 및 Portal Server 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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. Rewriter는 첫 번째 매개 변수를 단순 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)

// 두 번째 규칙은 DHTML JavaScript 함수 document.writeln의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. Rewriter는 첫 번째 매개 변수를 단순 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이 아니기 때문입니다. 이것은 어떤 문자열도 될 수 있으며 Rewriter는 이를 다시 작성하는 방법을 알지 못합니다.

//-->
</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. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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은 게이트웨이 서비스에서 [도메인 및 하위 도메인의 프록시] 목록에 있는 항목입니다. 따라서 Rewriter는 이 URL을 다시 작성해야 합니다. 그러나 이 값은 절대 URL이기 때문에 접두어로 Portal Server URL을 사용할 필요가 없습니다. DJS 규칙은 DJS 함수 NavBarMenuItem의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 하지만 두 번째 매개 변수 역시 JavaScript 변수입니다. 이 변수의 값을 다시 쓰기 위해 두 번째 규칙이 필요합니다. 두 번째 규칙은 JavaScript 변수 top.location의 값을 다시 써야 한다고 지정합니다. 모든 조건이 충족되면 URL이 다시 작성됩니다.

//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));

// DJS 규칙에서 함수 NavBarMenuItem의 두 번째 매개 변수를 다시 써야 한다고 지정하고 있지만 이 구문에서는 다시 쓰지 않습니다. Rewriter가 두 번째 매개 변수를 단순 HTML로 인식하지 않기 때문입니다.

</script>
</html>

XML 속성 예제

ProcedureXML 속성 예제를 사용하려면

  1. 이 예제는 다음에서 액세스할 수 있습니다.

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

  2. 이 예제에 지정된 규칙을 "XML 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).

  3. Portal Server 관리 콘솔에 있는 Portal Server 구성의 Rewriter 서비스에서 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 namehref이고 tagcheck이고 valuePatterns1234이며, 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 예제 규칙 집합과 사례 연구 사이의 매핑

페이지 컨텐트 

적용 규칙 

Rewriter 결과 

설명 

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

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

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

g_szVirtualRoot는 그 값이 단순 URL인 변수입니다.

이 규칙은 URL 유형의 변수 g_szVirtualRoot를 검색하라고 Rewriter에 지시합니다. 웹 페이지에 이런 변수가 있으면 Rewriter가 이를 절대 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인 모든 속성을 검색하고 그 속성 값을 다시 작성하도록 Rewriter에 지시합니다.

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

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

<Attribute name="href"/>

href="http://gateway.sesta.com/
http://abc.siroe.com
/mailclient/destin/
Inbox/?Cmd=contents&amp;Page=1"

href는 속성 이름이며 태그나 valuePattern이 따라붙지 않습니다. 

이 규칙은 이름이 href인 모든 속성을 검색하고 그 속성 값을 다시 작성하도록 Rewriter에 지시합니다.


주 –

규칙 집합을 적용하는 우선 순위는 hostname-subdomain-domain입니다.

예를 들어, 도메인 기반 규칙 집합 목록에 다음 항목이 있다고 가정합니다.

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

ruleset3host1의 모든 페이지에 적용됩니다.

ruleset2host1에서 가져온 페이지를 제외하고 eng 하위 도메인의 모든 페이지에 적용됩니다.

ruleset1eng 하위 도메인과 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 응용 프로그램 서버에 설치된 MS Exchange 2000 SP3과 Outlook Web Access(OWA)의 MS Exchange 2003을 지원합니다.

ProcedureOWA 규칙 집합을 구성하려면

  1. Portal Server 관리 콘솔에 관리자로 로그인합니다.

  2. [Secure Remote Access] 탭을 선택하고 속성을 설정할 게이트웨이 프로필을 선택합니다.

  3. [규칙 집합에 URI 매핑] 필드에서 Exchange 2000이 설치된 서버 이름, 그리고 이어 Exchange 2000 서비스 팩 4 OWA 규칙 집합의 이름을 입력합니다.

    예:


    exchange.domain.com|exchange_2000sp3_owa_ruleset.

공용 폴더 사용

Exchange에서 NTLM 인증을 사용하도록 공용 폴더를 구성합니다. HTTP 기본 인증을 사용하려면 이러한 구성이 필요합니다.

이를 수행하려면 Exchange 서버에서 [제어판]-->[관리 도구]를 선택한 다음 [인터넷 정보 서비스(IIS)]를 엽니다.

[기본 웹 사이트] 아래에 [공용]이라는 공용 폴더용 탭이 있습니다. 등록 정보를 마우스 오른쪽 버튼으로 눌러 선택합니다. [디렉터리 보안] 탭을 누릅니다. [익명 액세스 및 인증] 제어판에서 [편집...]을 선택합니다. 다른 옵션은 모두 선택을 취소하고 [기본 인증]만 선택합니다.

6.x 규칙 집합을 3.0과 매핑

다음 표에는 Secure Remote Access 서버 Rewriter 규칙과 이전 릴리스의 Portal Server 제품의 매핑이 정리되어 있습니다.

표 4–4 SP3의 규칙 매핑

Rewriter 6.0 DTD 요소 

Rewriter 3.0 목록 상자 이름 

HTML 컨텐트에 대한 규칙

 

속성 - URL 

Rewrite HTML 속성 

속성 - DJS 

JavaScript를 포함한 Rewrite HTML 속성 

폼 

Rewrite 폼 입력 태그 목록 

애플릿 

Rewrite 애플릿/개체 매개 변수 값 목록 

JavaScript 컨텐트에 대한 규칙

 

변수 - URL 

URL의 Rewrite JavaScript 변수 

변수 - EXPRESSION 

Rewrite JavaScript 변수 함수 

변수 - DHTML 

HTML의 Rewrite JavaScript 변수 

변수 - DJS 

JavaScript의 Rewrite JavaScript 변수 

변수 - SYSTEM 

Rewrite JavaScript 시스템 변수 

함수 - URL 

Rewrite JavaScript 함수 매개 변수 

함수 - EXPRESSION 

Rewrite JavaScript 함수 매개 변수 함수 

함수 - DHTML 

HTML의 Rewrite JavaScript 함수 매개 변수 

함수 - DJS 

JavaScript의 Rewrite JavaScript 함수 매개 변수 

XML 컨텐트에 대한 규칙

 

속성 - URL 

XML 문서의 Rewrite 속성 

TagText 

XML 문서의 Rewrite 텍스트 데이터 

CSS 컨텐트에 대한 규칙

 

규칙이 필요 없습니다. 기본적으로 모든 URL이 변환됩니다. 

 

WML 컨텐트에 대한 규칙

 

정의된 규칙이 없습니다. WML은 HTML로 취급되며 HTML 규칙이 적용됩니다. 

 

WMLScript 컨텐트에 대한 규칙

 
   

WML 스크립트에 대한 지원 없음