PACGen ReadMe.txt 2002/12/15  このたびは「PACGen」をご利用いただき、誠にありがとうございます。  PACGenはプロキシ自動構成用スクリプト(PACファイル)を生成するためのプログラムです。  プロキシ自動構成の機能はWindowsを初め、Netscape Navigatorなどのブラウザでも利用できます。  プロキシ自動構成用スクリプトを使うことで、企業ネットワークを利用中は企業ネットワークのプロキシサーバ、自宅ネットワークを利用中はダイレクト接続など、利用中のネットワークごとにプロキシサーバの設定を手動で変更する必要がなくなります。また、プロキシ自動構成はOSの標準機能ですので、プログラムを常駐させる必要はありません。 ●利用中のネットワークの識別  PACGenが生成するスクリプトでは、現在のIPアドレスを調べることで利用中のネットワークを判定します。  たとえば、企業ネットワークで「10.20.30.40」、自宅ネットワークで「192.168.0.1」のIPアドレスを使っているとすれば、現在のIPアドレスから利用中のネットワークを識別できます。また、IPアドレスをDHCPで自動設定している場合でも、企業ネットワークであれば「10.20.30.*」、自宅ネットワークであれば「192.168.0.*」のようにワイルドカードで指定することで識別できるようになります。  ただし、異なるネットワークで同じネットワークアドレスを利用している場合は判定がうまくいかないことがあるでしょう。その場合は、DHCPサーバーの設定を変更してください。 ●OSの設定変更  PACGenでスクリプトを生成するとき、「システム設定を上書きする」のオプションを選択すると、プロキシ自動構成スクリプトを使うように、OSの設定を上書きします。このとき変更されるレジストリキーは以下のとおりです。 1.プロキシ自動構成用スクリプトの場所 変更されるレジストリキーのパス:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL キー値:PACファイルのパス名(URL表記) 2.「LANにプロキシサーバを使用する」の設定 変更されるレジストリキーのパス:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable キー値:0 3.「プロキシサーバーを使用しないサイトをすべて含める」の設定 変更されるレジストリキーのパス:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\Flags キー値:第4ビットをオフ ●高度な使い方  PACGenは、 1.あるネットワークはすべてダイレクト接続 2.あるネットワークでは原則としてプロキシを使う、例外は○○ という2つの場合のプロキシ自動構成スクリプトを生成します。しかし、 3.あるネットワークは原則としてダイレクト接続、例外は○○ という利用例もあるはずです。たとえば、ダイレクト接続が原則だが、2ちゃんねるの場合はプロキシを使いたい、という場合です。このような場合は生成されたPACファイルに以下のようなスクリプトを追加するとよいでしょう。(■の行) // 自宅ネットワーク if ( myIpAddress() == "192.168.0.*" ) { // .2ch.netドメインはダイレクト(DNS参照あり) if ( dnsDomainIs(host, ".2ch.net") ) // ■ return "PROXY proxy.example.net:8080"; // ■ } } dnsDomainIs()関数は、接続するホストのドメイン名を調べます。したがって、ブラウザのアドレスバーにたとえIPアドレスを直に入力したとしても、接続するホストのドメイン名が指定されたドメインかどうかを検査してくれます。また、ネットワーク環境によっては、プロキシサーバのアドレスとして多段プロキシも設定できます。 ●PACファイルの内容  PACファイルはJavaScriptで記述します。唯一有効な関数はFindProxyForURL()で、戻り値としてプロキシサーバのアドレスを指定します。 function FindProxyForURL(url, host) { return "DIRECT"; } 上は最も単純なPACファイルの内容です。urlは接続するURL、hostはURL中のホスト名が格納されます。 戻り値としては、 "DIRECT" "PROXY <プロキシサーバのアドレス>[":"<ポート番号>]" "SOCKS [":"<ポート番号>]" の3つの形式が有効です。 ●PACファイルで有効な関数  PACファイルで使用できる関数は制限されています。たとえば、window.open(...)、alert(...)、password(...)などを含むプロキシ自動設定ファイルは実行されません。 ★isPlainHostName(<ホスト名>) <ホスト名>の中にピリオドが含まれているかどうかを調べます。含まれている場合は偽 (False)、含まれていない場合は真 (True) を返します。 【例】 if (isPlainHostName(host)) return "DIRECT"; <ホスト名>が「www」のとき「真」 <ホスト名>が「www.example.com」のとき「偽」 ★localHostOrDomainIs(<ホスト名>, <ドメイン>) <ホスト名>がローカルホストまたは指定された<ドメイン>が<ホスト名>のドメインと一致すると真 (True) を返します。 【例】 if (localHostOrDoaminIs(host, "example.com")) return "DIRECT"; <ホスト名>が「www」のとき「真」 <ホスト名>が「www.example.com」のとき「真」 <ホスト名>が「www.example.net」のとき「偽」 ★dnsDomainLevels(<ホスト名>) <ホスト名>に含まれているピリオドの数を調べます。 【例】 if (dnsDomainLevels(host) > 0) return "DIRECT"; ★dnsResolve(<ホスト名>) ※DNS参照関数 <ホスト名>をIPアドレスに変換する。 【例】 if (dnsResolve(host) == "192.168.0.1") return "DIRECT"; ★isInNet(<ホスト名>, "<ネットワークアドレス>", "<サブネットマスク>")) ※DNS参照関数 <ホスト名>が指定された<ネットワークアドレス>と<サブネットマスク>で表されるサブネットに所属しているときは真 (True) を返します。 【例】 if (isInNet(host, "192.168.0.0", "255.255.255.0")) return "DIRECT"; ★isResolvable(<ホスト名>) ※DNS参照関数 DNSサーバーを使って<ホスト名>を名前解決(IPアドレスに変換)できる場合は真 (True) を返します。 【例】 if (isResolvable(host)) return "DIRECT"; ★myIpAddress() 現在のIPアドレスを調べます。 【例】 if (myIpAddress() == "192.168.0.1") return "DIRECT"; ★shExpMatch(<ホスト名>,<マスク文字列>) <ホスト名>が<マスク文字列>に一致する場合は真 (True) を返します。<マスク文字列>にはワイルドカードが使えます。 【例】 if (shExpMatch(host, "*.com")) return "DIRECT"; ★weekdayRange((<曜日1>[,<曜日2>][,"GMT"]) 現在のシステム時刻が<曜日1>〜<曜日2>に含まれているかどうかを調べます。 【例1】 if(weekdayRange("WED", "SAT", "GMT")) return "DIRECT"; システム時刻(グリニッジ標準時)が月曜日のとき「偽」 システム時刻(グリニッジ標準時)が土曜日のとき「真」 【例2】 if(weekdayRange("WED", "SAT")) return "DIRECT"; システム時刻(ローカル時間)が月曜日のとき「偽」 システム時刻(ローカル時間)が土曜日のとき「真」 ●Internet Explorer以外のブラウザでの利用  プロキシ自動構成はNetscape Navigatorなど、Internet Explorer以外のブラウザでも利用できます。  その場合は、PACファイル生成時に「システム設定を上書きする」のチェックボックスをオフにし、適当なフォルダ(ブラウザのインストール先など)を選んでください。なお、Internet Explorer以外のブラウザでの動作チェックはしていません。 ●ライセンス PACGenはフリーソフトです。どなたでも自由にご利用ください。ただし、著作権は放棄していません。 ●サポートについて 電子メール(support@email-lab.com)または掲示板(http://www.email-lab.com/bbs/hbbs.cgi?bbs=PACGen)で対応します。ユーザー間で情報を共有できるよう、なるべく掲示板をご利用されるようお願いします。 ●動作環境 OS:Microsoft WindowsNT4.0(SP3/SP4/SP6)、Windows2000(SP1)、Windows XP Professional/Home Edition CPU: Pentium 100MHz以上(i386/486 CPUでの動作は保証いたしません) メモリ:4MB以上の空きメモリ(8MB以上を推奨) ハードディスク:1MB以上 ディスプレイ:解像度640×480ドット、表示色256色以上 ●開発履歴 Version 変更内容 1.0.0 正式公開バージョン 1.0.0 初回起動時に設定サンプルを表示するようにした 1.1.1 操作方式の変更 1.1.2 画面レイアウトの変更 1.1.3 プロキシを経由しないサイトが「イントラネット」と判定される問題を修正 1.1.5 [2002/12/15] ホスト指定ダイレクト接続のスクリプトでバグになる問題を修正