2008年4月22日火曜日

FTPS で LIST コマンドがハングアップする

先日、あるお客様から FTPS でサーバに接続すると、サーバログイン後しばらくすると固まってしまう、というお問い合わせを頂きました。そのログを見ると以下のようになっています。
> Connecting to FTP server
> Connected.
> 220 Serv-U FTP Server v6.4 for WinSock ready...
> USER XXXXXXXX
> 331 User name okay, need password.
> PASS XXXXXXXX
> 230 User logged in, proceed.
> PWD
> 257 "/" is current directory
> PASV
> 227 Entering Passive Mode(192,168,0,2,8,71)
> LIST

サーバから 227 応答を得た後、クライアントが LIST コマンドを発行してところでハングアップしてしまいます。

これは、既定値ではパッシブモード時のリモートサーバアドレスを、サーバ応答から得るためで、この例ではリモートサーバはファイアウォールの内側に設置されており 192.168.0.2 というプライベートアドレスを使用しているためです。SSL を使用していなければファイアウォールがこのデータの書き換えを行ってくれるでしょうが、SSL で暗号化されたセッションの書き換えは行いません。この結果、クライアント側はサーバへのデータチャネルの接続にこのプライベートアドレスを使用してしまい、接続ができずタイムアウトしてしまうことになります。

これを解決するには FTP コンポーネントの構成設定パラメータで
    FTPS1.Config('UseRemoteHostAddressForPassive=true')

として、リモートサーバアドレスを RemoteHost プロパティから得るようにします。これにより、リモートサーバのアドレスは実際に当該クライアントから見たリモートサーバのアドレス (ファイアウォールのグローバル側アドレス) が使用されるようになり、ファイアウォールのポートフォワード機能を介して正しくファイアウォールの内側にあるサーバとコントロールチャネルを確保できるようになります。

2008年4月21日月曜日

IPv6 と IPv4

弊社の通信系コンポーネントでは、アドレス指定方式として IPv6 と IPv4 をサポートしています。

この設定は、UseIPV6 構成設定パラメータで指定します。既定値は false で、IPv4 アドレスを使用します。この設定を true にすることで、IPv6 アドレス形式を使用できるようになります。設定例 (C#):
コンポーネント名.Config("UseIPV6=true");

なお、UseIPV6 の設定の如何にかかわらずアドレス形式は IPv6 または IPv4 を排他的に使用します。両者の混在はできません。(UseIPV6=true の場合は IPv6 形式、false の場合は IPv4 形式のみがご利用頂けます。)

2008年4月18日金曜日

弊社製品で必要となる JDK バージョン

弊社 Java 製品は JDK 1.3 以降でのご利用を前提として設計されていますが、JDK 1.4 以降でのご利用をお勧めします。

2008年4月17日木曜日

Java Edition の2つの .jar ファイルについて

製品版の lib フォルダ内を見ると、2つの .jar ファイルがあります。ひとつは製品名の .jar (IP*Works! Core なら ipworks.jar、IP*Works! Zip なら ipworkszip.jar)、もうひとつは製品に関係なく deploy.jar となっています。

これらは、内容はほとんど同じですが、製品名の .jar にはデバッグ用の情報も含まれています。従って、サイズは deploy.jar は製品名の .jar のおよそ半分以下となりますので、成果物を配布する際には deploy.jar を指定する方が有利なケースが多々あります。

※なお、評価版には deploy.jar は含まれておらず製品名の .jar のみとなっています。

また、同一アプリケーションで複数の弊社 Java 製品をご利用いただく場合、deploy.jar という名称が衝突してしまいます。このような場合は適宜名前を変更してご利用ください。

2008年4月15日火曜日

IP*Works! アクティブ化 FAQ

製品アクティブ化 FAQ

アクティブ化とは何ですか?

アクティブ化とは、意図的な、あるいは意図せざるソフトウェアへの著作権侵害行為を制限することを目的に登録処理内に追加された手順です。製品のアクティブ化はソフトウェアベンダーがソフトウェアの著作権侵害行為を制御するためのポピュラーな手段となっており、Microsoft や Novell、Borland 等多くのベンダーにより利用されています。そして著作権侵害行為を制限することにより、各社は開発により注力しより多くの資源を割り当て、また顧客に対しより価値のあるサービスをしっかりと提供することができます。
アクティブ化は製品ライセンス同意書の事項に従った合法的な使用を妨げるようなことは意図していません。

それはどのように動作しますか?

アクティブ化は通常、初めて製品をインストールする際に行われます。あるマシン上で初めて当該製品をインストールする場合、インストールプログラムは当該製品をアクティブ化しなければならない旨を通知します。そしてインストーラはアクティブ化キーをダウンロードするための、弊社サイト内のページへの URL をオープンするよう提示します。この時これを受け入れると、弊社ウェブサイトへと誘導され、あなたの製品名、シリアル番号、キーおよび NODEID が記載済みのページが表示されます。このページで .reg ファイルのアイコンをクリックするだけで、あなたのマシンで製品をアクティブ化するための正しいレジストリファイルがダウンロードされます。

REG ファイルをあなたのマシンにダウンロードしたら、当該ファイルをディスクに保存します。これ以降あなたがマシン名を変更しない限り、この REG ファイルをダブルクリックするだけで毎回弊社ウェブサイトを参照することなく、当該ソフトウェアをアクティブ化することができます。NODEID は同一のままですので、これが問題になることはありません。

NODEID とは何ですか?NODEID はどうすれば知ることができますか?

NODEID とは、アクティブ化処理時に使用される、マシン名の一方向ハッシュです。これにより我々は製品がアクティブ化されるコンピュータの実際のマシン名を収集する必要がなく、あなたのプライバシーを守ることができるのです。あなたの NODEID は、次の2つの方法で知ることができるはずです:

製品のインストール中であれば、当該製品をアクティブ化しなければならないことを通知するウィンドウが表示されます。このウィンドウ内に当該マシンの NODEID が記載されています。

コンポーネントがあるマシンでアクティブ化されていないのであれば、そのマシン上でいずれかのコンポーネントを使用すると当該マシンの NODEID を提示するダイアログが表示されます。

【訳注: V8 製品ではインストール時にアクティブ化しないとインストールが完了しないようになっていますので、未アクティブ化状態でのインストールは、レジストリの破損等でもない限り通常はあり得なくなっています。】

一度当該マシンの NODEID を取得してしまえば、そのマシン上で製品を簡単にアクティブ化できます。

製品アクティブ化には何か特別なソフトウェアが必要ですか?

いいえ。製品アクティブ化サイクルの際に弊社ウェブサイトが提示され .reg ファイルをダウンロードするよう示されます。ダウンロードした REG ファイルをダブルクリックすることで、アクティブ化情報はあなたのローカルマシン レジストリに自動的に追加されます。

私のコンピュータはファイアウォールの内側にありますが、これはアクティブ化に関し問題となりますか?

これは問題とはならないはずです。アクティブ化処理ははウェブベースの処理であり、あなたが弊社ウェブサイトに到達できるのであればなんら問題は発生しないはずです。弊社ウェブサイトへの接続が困難な場合は、FAQ「IP*Works! をインストールするマシンがインターネットに接続されていません。…」をご参照ください。

プライバシーはどうなりますか?マシンをアクティブ化するのにどんな情報が必要ですか?

ソフトウェアのアクティブ化の際に必要となる情報は、有効なシリアル番号、キーおよび NODEID のみです。これらはユーザの確認およびアクティブ化のためだけに必要です。さらに付け加えておくと、NODEID は一方向ハッシュでありその値からいかなる情報をも取り出すことは不可能です。これら以外の情報を集めないことで、/n software はお客様のプライバシーを完全に保護します。

アクティブ化せずに IP*Works! を使用できますか?

IP*Works! 製品はどれもアクティブ化をすることなくご利用頂くことは可能です。ただし、About ダイアログが表示され続け、ライセンスのない評価版と全く同じ動作になります。IP*Works! 製品はアクティブ化されなければなりません。さもないと、About ダイアログが表示されます。

IP*Works! をインストールするマシンがインターネットに接続されていません。この場合、どうやってアクティブ化すればよいですか?

IP*Works! がインストールされるマシンからインターネット接続ができない場合の製品アクティブ化には幾つかの方法があります。まず最初に、当該製品をアクティブ化するマシンの NODEID を調べます。続いて次のうちのいずれか1つを実行できます:
  1. 別のマシンからhttp://www.nsoftware.com/download/lic.aspxをアクセスし、表示されたフォームに適切な値を記入します。全てを記入することで、有効な REG (.reg) ファイルをダウンロードできるようになります。この REG ファイルを取得し、インターネット接続のできないマシンにコピーします。コピー先マシン上でこの REG ファイルをダブルクリックすることで、適切なキーが当該マシンのレジストリにインストールされます。
  2. support@nsoftware.com にメールを送り、製品をインストールしたいマシン用の有効な REG ファイルをリクエストすることができます。なおその際にはあなたのシリアル番号とキーの他、ソフトウェアをインストールしたいマシンの NODEID をお知らせください。

  3. 上記のいずれもご利用頂けない場合は、お電話にて製品アクティブ化のための追加オプションを弊社カスタマサポートまでお問い合わせください。



IP*Works! ソフトウェアを別のマシンに移転したらどうなりますか?

弊社ソフトウェアを、別の名称のマシンに移動させた場合、あるいは当該ソフトウェアを別のマシンに移転させた場合は、「移転通知」を弊社まで FAX にてご送付頂く必要があります。この FAX にはあなたの署名と、当該ソフトウェアが以前インストールされていたマシンから完全に削除されたことを言明する一文を含めてください。また、当該製品が新たにインストールされるマシンの NODEID も併せてご記載ください。

【訳注: 現在は移転通知はウェブフォーム (http://www.nsoftware.com/lic/transfer/) 経由で自動送信されますので、書面を FAX する必要はなくなりました。】

アプリケーションをコンパイルしビルドした場合、そのアプリケーションの配布先マシン全てでライセンスをアクティブ化しなければならないのですか?

いいえ、そのようなことは全く必要ありません。コンパイル対象アプリケーションをビルドする際に、アクティブ化はライセンスがインストールされる開発マシンでのみ必要となります。有効なアクティブ化済みライセンスでアプリケーションをコンパイルすると、ライセンス情報はアプリケーションに埋め込まれるので実行時のアクティブ化は全く必要ありません。

2008年4月14日月曜日

V8 .NET 製品のライセンスについて

V8 製品は、これまでの製品とは異なるランタイムライセンスルーチンを使用しています。このため、コンポーネントを標準的な使い方 (IDE 上でのフォームへのドラグ&ドロップ) 以外の方法でご利用いただく場合の処置が旧バージョン製品とは若干異なっています。

この件に関しては、インストール先に licensing.htm という名称で説明文書が残されています。参考のため、以下にその日本語訳を載せておきます。

IP*Works! V8 - ライセンス情報


標準 (ロイヤルティ・フリー) ライセンス
.NET および ASP.NET コンポーネントは Microsoft .NET ライセンス スキームを使用しています。.NET Compact Framework コンポーネントのライセンスについては、後述の ".NET CF" セクションをご覧ください。

Microsft .NET ライセンス スキームでは、Visual Studio .NET はフォームにライセンス済みコンポーネントをドロップすると、自動的に "licenses.licx" という名称のファイルを生成します。このファイルは埋め込みリソース (embedded resource) としてあなたのプロジェクトに自動的追加されます。このプロジェクトをビルドすると、ライセンス情報をコンパイルされたアセンブリに埋め込むのにこの licenses.licx ファイルが使用されます。(ただし ASP.NET 2.0 ではライセンス情報は既定値では別途用意されたファイル App_License.dll に埋め込まれます。)

フォームを使用しない、あるいはコンポーネントを動的に生成する場合にlicx ファイルを生成する最も簡単な方法は、別プロジェクトを1つ用意し、そのフォームにコンポーネントを1つドロップして licenses.licx を生成させ、その licenses.licx ファイルをフォームを使わないプロジェクトにコピーします。

要注意事項:
  • licx ファイルの名称は、必ず "licenses.licx" でなければなりません。また、このファイルは埋め込みリソースとしてプロジェクトに含められる必要があります。
  • 開発しているのがクラスライブラリである場合、そのライブラリを参照するプロジェクトにもこの .licx ファイルが埋め込みリソースとして含められている必要があります。さらに、そのプロジェクトは有効なライセンスがインストールされているマシン上でコンパイルされなければなりません。

.NET CF のライセンス
.NET Compact Framework コンポーネントは前述の Microsoft .NET ライセンス スキームを使用することができません。代わりに RuntimeLicense プロパティのみを使用します。ライセンス済みコンポーネントをフォームにドロップすると、デザイナ内 (および当該フォームの InitializeComponent 関数内) に RuntimeLicense という名称のプロパティが出現しライセンス文字列が割り当てられます。なお同じ RuntimeLicense プロパティ値を、当該製品の同一エディションに含まれる全てのコンポーネントでご利用頂けます。

ASP.NET 用シングルサーバ ライセンス - 共有ホスト上へのシングルサーバ ライセンスのインストール手順
ご購入頂いたライセンスが .NET Edition 用のシングルサーバ ライセンスであった場合、アプリケーションをサーバに配置して初めて起動した際に、当該システムに有効なライセンスが見つからなかった旨のエラーが表示されます。このエラーメッセージには製品アクティブ化ページへのリンクが含まれており、当該ページから keys.reg ファイルをダウンロードできます。この keys.reg ファイルにはあなた用のライセンスが格納されており、次の2通りの使い方が可能となっています:
  • keys.reg ファイルをサーバマシン上で実行できます。これにより、ライセンスが当該システムのレジストリにインストールされます。
  • あるいは、keys.reg ファイルを "nsoftware.XXXX.lic" (XXXX の部分は、製品ごとに固有の名称。通信系 Core 製品なら IPWorksWeb、SSL 製品なら IPWorksSSLWeb、ZIP 製品なら IPWorksZipWeb) にリネームし、あなたの web アプリケーションの /bin ディレクトリにコピーします。

トラブルシューティング
ライセンスを購入済なのに、ライセンス例外が発生する、あるいは "About" メッセージが表示される場合には以下の点をチェックしてみてください:
  • licenses.licx ファイルに問題はありませんか?当該ファイルがちゃんと存在しており、プロジェクトに含められており、正しい情報 (正しいコンポーネント名や正しいバージョン) が格納されていますか?
  • ビルド対象が ASP.NET 2.0 の場合は、licenses.licx ファイルを右クリックし「ランタイムライセンスのビルド (Build Runtime Licenses)」を選択し、当該プロジェクトをリビルドします。
  • コンポーネントの新ビルドをインストールしたらこの問題が発生するようになった場合は、licenses.licx ファイルに正しいバージョン情報が格納されていることを確認してください。バージョン情報が含まれていない licenses.licx は問題ありません。
  • クラスライブラリをビルドしているのであれば、そのライブラリを参照する側にも同じライセンスルールが適用されます。参照側アプリケーションにもこの licx ファイルが埋め込みリソースとして含まれており、またそのアプリケーションはライセンス済みマシン上でコンパイルされていますか?

ライセンスの移転
ライセンスを別のシステムに移転したい場合は、ライセンス移転申請書 (英文) を弊社までお送りください。この申請を行うことにより、別途のインストール行為をライセンス違反と誤認することがなくなります。

製品のアクティブ化に関しより詳しい情報が必要な場合は、弊社の「製品アクティブ化 FAQ (英文)」をご参照ください。

V8 Java 製品のライセンスについて

V8 製品は、これまでの製品とは異なるランタイムライセンスルーチンを使用しています。このため、コンポーネントを標準的な使い方 (IDE 上でのフォームへのドラグ&ドロップ) 以外の方法でご利用いただく場合の処置が旧バージョン製品とは若干異なっています。

この件に関しては、インストール先に licensing.htm という名称で説明文書が残されています。参考のため、以下にその日本語訳を載せておきます。

IP*Works! V8 - ライセンス情報


標準 (ロイヤルティ・フリー) ライセンス
IPWorks コンポーネントは実行時のライセンスチェックに RuntimeLicense という名称のプロパティを使用します。ライセンス済みコンポーネントをフォームにドロップすると、ライセンス文字列が自動的に RuntimeLicense プロパティに割り当てられます。お使いの IDE がこのプロパティを自動的には設定してくれない場合は、このプロパティをソースコードにハードコードすることで、ご利用いただくコンポーネントが正しくライセンスされたものであることを明示します。デザイナを使用しないのであれば、別のプロジェクトを作成してそこから RuntimeLicense プロパティの値を読み取り、その値をコピーしてあなたのアプリケーションにペーストします。なお、同一の製品の同一エディションに含まれる全てのコンポーネントに対し、同一の RuntimeLicense プロパティ値を使用できます。

シングルマシン ライセンス - サーバにシングルマシン ライセンスをインストールする手順
お買い上げ頂いたライセンスがシングルマシン ライセンスであった場合、ライセンスは上記のロイヤルティ・フリー ライセンスとは異なった動作をします。あなたのアプリケーションをサーバ上で初めて実行した際に、有効なライセンスがシステム上で見つからないというエラーが表示されるかもしれません。その場合には、 IPWorks セットアップ時に生成された .lic ファイル (IP*Works! 製品なら ipworks.lic、IP*Works! SSL 製品なら ipworksssl.lic、IP*Works! Zip 製品なら ipworkszip.lic) を、製品の .jar ファイル (IP*Works! 製品なら ipworks.jar、IP*Works! SSL 製品なら ipworksssl.jar, IP*Works! Zip 製品なら ipworkszip.jar) と共に配置する必要があります。この ipworks.lic ファイルはあなたのユーザホームディレクトリ配下の .nsoftware フォルダ内に格納されています。なお、ipworks.lic ファイルはそれを生成したマシンに結び付けられていますので、このファイルを他のマシンにコピーした場合は動作しません。

Unix/Linux およびその他のシステムへのライセンスのインストール
Windows 以外のシステムでは、各コンポーネントは ZIP ファイルにアーカイブされています。アーカイブをオープンし、製品の jar ファイル (IP*Works! 製品なら ipworks.jar、IP*Works! SSL 製品なら ipworksssl.jar, IP*Works! Zip 製品なら ipworkszip.jar) をダブルクリック (あるいはコマンド java -jar ipworks.jar 等を実行) してライセンスをアクティブ化します。なおローヤルティ・フリー ライセンスではこの手順は一度だけ、開発マシン上でのみ実行が求められるのみであり、実行時には各コンポーネントは RuntimeLicense プロパティに格納されたライセンスが使用されます(前述)。

トライアル版ライセンスをインストールする場合も、同じ手順で行います: 製品 jar ファイルをダブルクリック (あるいは java -jar ipworks.jar 等を実行) し、指示に従って処理を進めます。

ライセンスの移転
ライセンスを別のシステムに移転したい場合は、ライセンス移転申請書 (英文) を弊社までお送りください。この申請を行うことにより、別途のインストール行為をライセンス違反と誤認することがなくなります。

製品のアクティブ化に関しより詳しい情報が必要な場合は、弊社の「製品アクティブ化 FAQ (英文)」をご参照ください。