この章では、ユーザーのリモートデスクトップとイントラネット上のアプリケーションを実行しているサーバーとの間で、ネットレットを使用してアプリケーションを安全に実行する方法について説明します。ネットレットの設定については、第 11 章「ネットレットの設定」を参照してください。
この章で説明する内容は次のとおりです。
Sun Java System Portal Server のユーザーが、一般的なアプリケーションや企業専用のアプリケーションをリモートデスクトップで安全に実行できると便利な場合があります。プラットフォームにネットレットを設定すると、このようなアプリケーションに安全にアクセスできるようになります。
ネットレットを使用することで、インターネットなどのセキュリティーの弱いネットワークで一般的な TCP/IP サービスを安全に実行できます。TCP/IP アプリケーション (Telnet や SMTP など)、HTTP アプリケーション、同じポートを使用するすべてのアプリケーションを実行できます。
アプリケーションが TCP/IP ベースであるか同じポートを使用する場合、ネットレットを介してアプリケーションを実行できます。
ダイナミックポートは、FTP を使用する場合にだけサポートされます。Microsoft Exchange を使用する場合は、OWA (Outlook Web Access) を使用します。
ネットレットアプレットを使用する場合は、ブラウザのポップアップブロッカを無効にするようにユーザーに通知してください。
「ネットレットのコンポーネント」は、ネットレットで使用される各種コンポーネントを示しています。
これはネットレットアプレットが待機するクライアントマシン上のポートです。クライアントマシンは localhost です。
ネットレットアプレットは、リモートクライアントマシンと、Telnet、Graphon、Citrix などのイントラネットアプリケーションの間で、暗号化された TCP/IP トンネルの設定を担当します。アプレットはパケットを暗号化してゲートウェイに送信し、ゲートウェイからの応答パケットを解読してローカルアプリケーションに送信します。
スタティックルールの場合、ネットレットアプレットは、ユーザーがポータルにログインすると自動的にダウンロードされます。ダイナミックルールの場合、ダイナミックルールに対応するリンクをユーザーがクリックしたときにアプレットがダウンロードされます。スタティックルールとダイナミックルールの詳細については、「ルールのタイプ」を参照してください。
Sun Ray 環境でのネットレットの実行については、「Sun Ray 環境でのネットレットの実行」を参照してください。
ネットレットルールでは、クライアントマシンで実行する必要のあるアプリケーションが、対応する接続先ホストにマッピングされます。つまりネットレットは、ネットレットルールに定義されたポートに送信されたパケットに対してだけ動作します。これにより、セキュリティーが向上します。
管理者はネットレットの機能に対して特定のルールを設定する必要があります。これらのルールによって、使用される暗号化方式や、呼び出す URL、ダウンロードするアプレット、接続先ポート、接続先ホストなどの詳細が指定されます。クライアントマシン上のユーザーがネットレットを通じて要求を行う場合、これらのルールに基づいて接続の確立方法がすみやかに決定されます。詳細については、「ネットレットルールの定義」を参照してください。
これはネットレットの UI コンポーネントです。プロバイダを使用することで、Portal Server のデスクトップから必要なアプリケーションを設定できます。プロバイダにリンクが作成され、ユーザーはこのリンクをクリックして必要なアプリケーションを実行します。また、デスクトップネットレットプロバイダで、ダイナミックルールの接続先ホストを指定できます。「ネットレットルールの定義」を参照してください。
ゲートウェイは、リモートクライアントマシンとゲートウェイ間のセキュリティー保護されたトンネルを保証します。ネットレットプロキシの使用は任意です。インストール時にこのプロキシをインストールしない選択も可能です。ネットレットプロキシについては、「ネットレットプロキシの使用」を参照してください。
ネットレット使用時には、次の一連のイベントが行われます。
リモートユーザーが Portal Server デスクトップにログインします。
ユーザー、ロール、または組織にスタティックネットレットルールが定義されている場合は、リモートクライアントにネットレットアプレットが自動的にダウンロードされます。
ユーザー、ロール、または組織にダイナミックルールが定義されている場合は、ネットレットプロバイダに必要なアプリケーションを手動で設定する必要があります。ネットレットアプレットは、ユーザーがネットレットプロバイダのアプリケーションリンクをクリックしたときにダウンロードされます。スタティックルールとダイナミックルールの詳細については、「ネットレットルールの定義」を参照してください。
ネットレットはネットレットルールで定義されたローカルポートで待機します。
ネットレットはリモートクライアントとホストの間で、ネットレットルールで指定されたポートを使用するチャネルを確立します。
ネットレットが異なる組織間のさまざまなユーザーの要求に合わせて機能するには、次の手順を実行する必要があります。
ユーザー要件に基づいて、スタティックルールとダイナミックルールのどちらを作成するかを決定します。「ルールのタイプ」を参照してください。
Portal Server 管理コンソールから、ネットレットサービスのオプションを設定します。ネットレットの設定については、第 11 章「ネットレットの設定」を参照してください。
ルールの基準を組織、ロール、ユーザーから選択し、各レベルで必要に応じて修正します。組織、ロール、およびユーザーの詳細については、『Portal Server 管理ガイド』を参照してください。
srapNetletServlet.properties ファイルのフレームセットパラメータの値に、英語以外の言語は使用しないでください。
URL から返されたページに、リモートマシンから取得する必要があるアプレットが埋め込まれていることがあります。ただし、Java のセキュリティーによって、アプレットがそのアプレットのダウンロード元以外のホストと通信することは許可されていません。アプレットがローカルネットワークポートを使用してゲートウェイと通信できるようにするには、Access Manager 管理コンソールの「アプレットのダウンロード」フィールドを確認し、次の構文を指定する必要があります。
local-port:server-host:server-port
各表記の意味は次のとおりです。
local-port はローカルポートです。ネットレットは、アプレットから送信されるトラフィックをここで待機します。
server-host は、アプレットのダウンロード元です。
server-port は、アプレットのダウンロードに使用されるポートです。
ネットレットの設定はネットレットルールによって定義されます。このルールは、Portal Server 管理コンソールの「Secure Remote Access」設定タブを使用して設定されます。ネットレットルールは組織、ロール、またはユーザーのいずれかに対して設定できます。ネットレットルールをロールまたはユーザーに対して定義したときは、組織を選択してから目的のロールまたはユーザーを選択します。
ネットレットルールはマルチバイトエントリをサポートしません。ネットレットルールのどのフィールドにもマルチバイト文字を指定しないでください。
ネットレットルールには 64000 を超えるポート番号を指定できません。
「ネットレットルールの定義」は、ネットレットルールのフィールドを示しています。
表 6–1 ネットレットルールのフィールド
パラメータ |
説明 |
値 |
---|---|---|
ルール名 |
このネットレットルールの名前を指定します。各ルールに一意の名前を指定する必要があります。これは、特定のルールへのアクセスを定義する場合に便利です。 | |
暗号化方式 |
暗号化方式を定義するか、ユーザーが選択できる方式のリストを指定します。 |
選択した暗号化方式は、ネットレットプロバイダにリスト表示されます。ユーザーは必要な暗号化方式をリストから選択できます。 デフォルト: ネットレット管理コンソールで指定するデフォルト VM ネイティブ暗号化方式と、デフォルト Java プラグイン暗号化方式。 |
リモートアプリケーションの URL |
URL ユーザーがネットレットプロバイダのリンクをクリックしたときにブラウザで開かれる URL を指定します。ブラウザにはアプリケーションのウィンドウが表示され、ルールによって指定されたローカルポート番号で localhost に接続します。 相対 URL を指定する必要があります。 |
ネットレットルールによって呼び出されるアプリケーションへの URL。たとえば、telnet://localhost:30000 などです。 アプリケーションの呼び出しにアプレットが必要な場合は、その URL を指定します。 null : 指定した URL によってアプリケーションが起動されない、またはデスクトップで制御されない場合に設定する値。通常は Web ベース以外のアプリケーションで使用されます。 |
ダウンロードアプレットの有効化 |
このルールでアプレットのダウンロードが必要であるかどうかを指定します。 |
|
拡張セッションを有効 |
ネットレットがアクティブの場合、Portal Server セッションのアイドル時間のタイムアウトを制御します。 |
ネットレットだけがアクティブで、ほかのポータルアプリケーションがアイドル状態の場合にポータルセッションを持続する場合は、このチェックボックスにチェックマークを付けます。デフォルトでは、このオプションは選択されていません。 |
ローカルポートと宛先サーバーポートのマップ |
ローカルポート |
ネットレットが待機するクライアントのポート。 local-port の値は一意である必要があります。特定のポート番号を複数のルールに指定することはできません。 複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合です。構文については、「複数ホスト接続のスタティックルール」を参照してください。 FTP ルールでは、ローカルポートは 30021 である必要があります。 |
接続先ホスト |
ネットレットが待機するクライアントのポート。 ネットレット接続の受信者。 host : ネットレット接続を受信するホスト名。これはスタティックルールで使用されます。siroe などの簡易ホスト名、または siroe.mycompany.com などの完全修飾 DNS 形式のホスト名を指定します。次の場合に複数のホストを指定します。 local-port の値は一意である必要があります。特定のポート番号を複数のルールに指定することはできません。 複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合です。構文については、「複数ホスト接続のスタティックルール」を参照してください。 FTP ルールでは、ローカルポートは 30021 である必要があります。 指定された各ホストとの接続を確立する場合。指定された各ホストに対して、対応するクライアントと接続先ポートを指定する必要があります。構文については、「複数ホスト接続のスタティックルール」を参照してください。 指定されたホストのリストから、使用可能なホストへの接続を試みる場合。構文については、「複数ホストを選択するスタティックルール」を参照してください。 TARGET : 構文で TARGET を指定するルールはダイナミックルールです。TARGET は、デスクトップのネットレットプロバイダで、必要な接続先ホストをユーザーが 1 つ以上指定できることを示します。 1 つのルールでスタティックホストと TARGET を組み合わせることはできません。 |
|
接続先ポート |
接続先ホスト上のポート。 ホストと接続先ホストのほかに、接続先ポートを指定する必要があります。 複数の接続先ホストがある場合は、複数の接続先ポートを指定できます。複数のポートは、port1+port2+port3-port4+port5 のように指定します。 ポート番号間のプラス (+) 記号は、単一の接続先ホストに対する代替ポートを表します。 異なる接続先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入します。 この例では、ネットレットは port1、port2、および port3 を順番に使用して、指定された最初の接続先ホストへの接続を試みます。これに失敗した場合、ネットレットは port4 と port5 をこの順序で使用して 2 番目のホストへの接続を試みます。 複数のポートは、スタティックルールでのみ設定できます。 |
ゲートウェイが Portal Server からセッション通知を受け取るようにするには、次の情報を
com.iplanet.am.jassproxy.trustAllServerCerts=true
Portal Server 上の次のプロパティーファイルに追加します。
/etc/opt/SUNWam/config/AMConfig.instance-name .properties
ルールで接続先ホストがどのように指定されているかにより、ネットレットルールは 2 つのタイプに分かれます。
スタティックルールは、ルールの一部として接続先ホストを指定します。スタティックルールを作成する場合、ユーザーは必要な接続先ホストを指定することができません。次の例では、sesta は接続先ホストです。
ルール名 |
暗号化方式 |
URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
ftpstatic |
SSL_RSA_WITH_RC 4_128_MD5 |
null |
false |
true |
|
複数の接続先ホストおよびポートを設定できるのは、スタティックルールだけです。設定例については、「複数ホスト接続のスタティックルール」を参照してください。
ダイナミックルールでは、接続先ホストはルールの一部として指定されません。ユーザーはネットレットプロバイダで必要な接続先ホストを指定できます。次の例では、TARGET は接続先ホストの可変部分です。
暗号化方式に基づいて、ネットレットルールはさらに次のように分類されます。
ユーザー設定可能な暗号化ルール: このルールでは、ユーザーが選択できる暗号化方式のリストを指定できます。これらのオプション暗号化方式は、ネットレットプロバイダにリスト表示されます。ユーザーは必要な暗号化方式をリストから選択できます。次の例では、ユーザーは複数の暗号化方式を選択できます。
Portal Server ではさまざまな暗号化方式が有効になっている場合がありますが、ユーザーが選択できる暗号化方式は、ネットレットルールの一部として設定されている方式だけです。
ネットレットでサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
管理者設定暗号化方式ルール: このルールでは、暗号化方式は ネットレットルールの一部として定義されます。ユーザーは必要な暗号化方式を選択できません。次の例では、暗号化方式は SSL_RSA_WITH_RC4_128_MD5 に設定されています。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4_128_MD5 |
null |
チェックボックスにチェックマークを付ける |
チェックボックスにチェックマークを付ける |
|
ネットレットでサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
「サポートされる暗号化方式」は、ネットレットでサポートされる暗号化方式のリストを示しています。
表 6–2 サポートされる暗号化方式のリスト
暗号化方式 |
---|
ネイティブ VM 暗号化方式 |
KSSL_SSL3_RSA_WITH_3DES_EDE_CBC_SHA |
KSSL_SSL3_RSA_WITH_RC4_128_MD5 |
KSSL_SSL3_RSA_WITH_RC4_128_SHA |
KSSL_SSL3_RSA_EXPORT_WITH_RC4_40_MD5 |
KSSL_SSL3_RSA_WITH_DES_CBC_SHA |
Java プラグイン暗号化方式 |
SSL_RSA_WITH_3DES_EDE_CBC_SHA |
SSL_RSA_WITH_RC4_128_MD5 |
SSL_RSA_WITH_RC4_128_SHA |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
SSL_RSA_WITH_DES_CBC_SHA |
SSL_RSA_WITH_NULL_MD5 |
TLS_RSA_WITH_AES_128_CBC_SHA |
TLS_RSA_WITH_AES_256_CBC_SHA |
旧バージョンの Portal Server は、ネットレットルールの一部として暗号化方式をサポートしていません。暗号化方式を使用せずに既存のルールと下位互換を行うには、ルールでデフォルトの暗号化方式を指定します。暗号化方式を使用しない既存のルールは、次のとおりです。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
Telnet |
telnet://localhost:30000 |
チェックボックスにチェックマークを付けない |
チェックボックスにチェックマークを付ける |
|
これは次のように解釈されます。
これは、管理者設定ルールでデフォルトとして選択した「暗号化方式」フィールドと同じです。
ネットレットルールには 64000 を超えるポート番号を指定できません。
ここでは、ネットレットルールの例をいくつか示し、ネットレット構文がどのように機能するかについて説明します。
このルールは、クライアントマシンから sesta への Telnet 接続をサポートします。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
アプレットのダウンロード |
拡張セッション |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
null |
チェックボックスにチェックマークを付けない |
true |
|
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
null は、このアプリケーションが URL で呼び出されない、またはデスクトップから実行できないことを示します。
false は、クライアントがこのアプリケーションを実行するためにアプレットをダウンロードしないことを示します。
true は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
1111 は、ネットレットが接続先ホストからの接続要求を待機するクライアント側のポートです。
sesta は Telnet 接続の受信側ホストの名前です。
23 は接続先ホストの接続用ポート番号です。この例では、既知の Telnet ポートです。
デスクトップネットレットプロバイダにはリンクが表示されませんが、ネットレットは指定されたポート (1111) で自動的に起動して待機します。クライアントソフトウェア、この場合はポート 1111 で localhost に接続した Telnet セッションを開始するようにユーザーに指示してください。
たとえば、Telnet セッションを開始するには、クライアントは端末の UNIX コマンド行で次のコマンドを入力する必要があります。
telnet localhost 1111 |
このルールは、クライアントマシンから 2 台のマシン sesta および siroe への Telnet 接続をサポートします。
各表記の意味は次のとおりです。
23 は接続先ホストの接続用ポート番号、つまり、Telnet の予約ポートです。
1111 は、ネットレットが最初の接続先ホスト siroe からの接続要求を待機するクライアント側のポートです。
1234 は、ネットレットが 2 番目の接続先ホスト siroe からの接続要求を待機するクライアント側のポートです。
このルールの最初の 6 つのフィールドは、「基本的なスタティックルール」と同じです。2 番目の接続先ホストを識別するためのフィールドが 3 つ追加されている点が異なります。
ルールにターゲットを追加するときは、新しい接続先ホストごとに、local port、destination host、destination port の 3 つのフィールドを追加する必要があります。
各接続先ホストへの接続を、3 つのフィールドのセットを使って記述することができます。2048 未満の待機ポート番号は、UNIX ベースのリモートクライアントでは使用できません。UNIX は下位数値のポートに制約され、root でリスナーを開始する必要があるためです。
このルールは前述のルールと同様に機能します。ネットレットプロバイダはリンクを表示しませんが、ネットレットは指定された 2 つのポート (1111 と 1234) で自動的に起動して待機します。ユーザーはクライアントソフトウェア、この場合は、ホストに接続するために localhost のポート 1111 に対して Telnet セッションを、2 番目のホストに接続するには、localhost のポート 1234 に対して Telnet セッションを開始する必要があります。
このルールは、複数の代替ホストを指定する場合に使用します。ルールの最初のホストへの接続に失敗した場合、ネットレットは 2 番目に指定されたホストへの接続を試み、成功するまで指定の順に代替ホストへの接続を試みます。
各表記の意味は次のとおりです。
10491 は、ネットレットが接続先ホストからの接続要求を待機するクライアント側のポートです。
ネットレットはポート 35、ポート 26、ポート 491 の順に使用可能なポートにアクセスし、siroe との接続を確立しようと試みます。
siroe との接続が確立できない場合、ネットレットはポート 35、491 の順序で sesta への接続を試みます。
ホスト間のプラス (+) 記号は代替ホストを表します。
ポート番号間のプラス (+) 記号は、単一の接続先ホストに対する代替ポートを表します。
異なる接続先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入します。
指定された一連のホストへの接続が順次に試行されます。たとえば、siroe+sesta が指定されたルールの場合、最初に siroe への接続が試行されます。この接続に失敗すると、次に sesta への接続が試行されます。ルール内で最初にリストされたホストがアクティブネットワーク内で物理的に使用できない場合、ルール内の使用不能ホストの数が多いほど、次の使用可能ホストへの接続にかかる時間が長くなります。
このルールを使用することで、目的の接続先ホストを設定できるため、ネットレットを使用してさまざまなホストへの Telnet 接続を確立できます。
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
telnet://localhost:30000 はルールで呼び出される URL です。
false はアプレットがダウンロードされないことを示します。
true は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
30000 は、ネットレットがこのルールの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーがネットレットプロバイダを使用して接続先ホストを設定する必要があることを示します。
23 はネットレットで開かれる接続先ホストのポートです。この例では、既知の Telnet ポートです。
このルールを追加したあとに、ユーザーはネットレットを目的どおりに稼動させるためにいくつかの手順を実行しなければなりません。ユーザーはクライアント側で次の操作を実行する必要があります。
標準の Portal Server デスクトップのネットレットプロバイダセクションで、「編集」をクリックします。
新しいネットレットルールが、「新しいターゲットの追加」セクションの「ルール名」に表示されます。
ルール名を選択し、接続先ホスト名を入力します。
変更を保存します。
デスクトップに戻ります。デスクトップのネットレットプロバイダセクションに新しいリンクが表示されます。
新しいリンクをクリックします。
新しいブラウザが起動し、ネットレットルールで指定した URL が表示されます。
同じルールに複数の接続先ホストを追加する場合は、この手順を繰り返します。選択された最後のリンクのみがアクティブです。
このルールは、ダイナミックに割り当てられたホストとクライアント間の接続を定義します。このルールにより、アプレットのあるサーバーからクライアントに GO-Joe アプレットがダウンロードされます。
各表記の意味は次のとおりです。
gojoe はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
/gojoe.html は、たとえば、アプレットを含む HTML ページのパスや、ポータルが配備されている Web コンテナのドキュメントルートへの相対パスです。
8000:gojoeserver:8080 は、クライアントでアプレットを受け取る接続先ポートがポート 8000 であることを示します。gojoeserve はアプレットを送るサーバー名、8080 はアプレットのダウンロード元のサーバー上のポートです。
Extended Session (true) は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
3399 は、ネットレットがこのタイプの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーがネットレットプロバイダを使用して接続先ホストを設定する必要があることを示します。
58 はネットレットで開かれる接続先サーバーのポートです。この例では、GoJoe のポートです。ポート 58 は接続先ホストが自分のトラフィックを待機するポートです。ネットレットは新しいアプレットの情報をこのポートに渡します。
「ネットレットルールの例」は、いくつかの一般的なアプリケーションのネットレットルールの例を示しています。
この表には、ネットレットルールごとに 7 項目あり、それぞれ、「ルール名」、「リモートアプリケーションの URL」、「ダウンロードアプレットの有効化」、「ローカルポート」、「接続先ホスト」、「接続先ポート」の各フィールドに対応しています。最後の列は、ルールの説明を示します。
「ネットレットルールの例」には、ネットレットルールの暗号化方式および拡張セッションのフィールドは示されていません。それぞれが「SSL_RSA_WITH_RC4_128_MD5」および「true」に設定されていることを前提としています。
ネットレットアプレットまたは jws のクライアント側ログは、クライアントの Java コンソールに表示されます。
ネットレットのサーバー側ログは、/var/opt/SUNWportal/portals/<portal_ID>/logs/<INSTANCE_ID> ディレクトリの下にある portal.0.0.log ファイルに表示されます。
Sun Ray 環境のクライアントマシンでアプレットをダウンロードする必要があるアプリケーションを実行するときは、HTML ファイルを変更する必要があります。次に、必要な変更を加えたファイルの例を示します。
<!-- @(#)citrix_start.html 2.1 98/08/17 Copyright (c) 1998 i-Planet, Inc., All rights reserved.--> <html> <script language="JavaScript"> var KEY_VALUES; // KEY_VALUES[\qkey\q] = \qvalue\q; function retrieveKeyValues() { KEY_VALUES = new Object(); var queryString = \q\q + this.location; queryString = unescape(queryString); queryString = queryString.substring((queryString.indexOf(\q?\q)) + 1); if (queryString.length < 1) { return false; } var keypairs = new Object(); var numKP = 0; while (queryString.indexOf(\q&\q) > -1) { keypairs[numKP] = queryString.substring(0,queryString.indexOf(\q&\q)); queryString = queryString.substring((queryString.indexOf(\q&\q)) + 1); numKP++; } // クエリー文字列に最後の keypairs[] データとして残されている内容を格納します。 keypairs[numKP++] = queryString; var keyName; var keyValue; for (var i=0; i < numKP; ++i) { keyName = keypairs[i].substring(0,keypairs[i].indexOf(\q=\q)); keyValue = keypairs[i].substring((keypairs[i].indexOf(\q=\q)) + 1); while (keyValue.indexOf(\q+\q) > -1) { keyValue = keyValue.substring(0,keyValue.indexOf(\q+\q)) + \q \q + keyValue.substring(keyValue.indexOf(\q+\q) + 1); } keyValue = unescape(keyValue); // 英数字以外のエスケープを解除します。 KEY_VALUES[keyName] = keyValue; } } function getClientPort(serverPort) { var keyName = "clientPort[\q" + serverPort +"\q]"; return KEY_VALUES[keyName]; } function generateContent() { retrieveKeyValues(); var newContent = "<html>\\n" + "<head></head>\\n" + "<body>\\n" + "<applet code=\\"com.citrix.JICA.class\\" archive=\\ "JICAEngN.jar\\" width=800 height=600>\\n" + "<param name=\\"cabbase\\" value=\\"JICAEngM.cab\\">\\n" + "<param name=\\"address\\" value=\\"localhost\\">\\n" + "<param name=ICAPortNumber value=" + getClientPort(\q1494\q) + ">\\n" + "</applet>\\n" + "</body>\\n" + "</html>\\n"; document.write(newContent); } </script> <body onLoad="generateContent();"> </body> </html>
<html> <body> <applet code="com.citrix.JICA.class" archive= "JICAEngN.jar" width=800 height=600> <param name="cabbase" value="JICAEngM.cab"> <param name="address" value="localhost"> <param name=ICAPortNumber value=1494> </applet> </body></html>