DSTCPServerTransport.pasの「procedureTDSTCPChannel.Open」メソッドは、「FChannelInfo」を割り当てるときに、接続されたユーザーのプライベートIPアドレスを使用します。HTTPトランスポートをトレースすると、ユーザーのパブリックIPが使用されました。DSTCPServerTransport.pasが次のように更新された場合
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.IP);
に変更されました
FChannelInfo := TDBXSocketChannelInfo.Create(Integer(FContext.Connection), FContext.Connection.Socket.Binding.PeerIP);
その場合、DSTCPServerTransport.pasはHTTPトランスポートの実装と一致し、接続されたユーザーのパブリックIPアドレスは、TCP接続の場合も「DSConnectEventObject.ChannelInfo.Info」を介してTDSServer.OnConnectイベントで使用できます。何人かの開発者がこれらの2つのEBTディスカッションでこれについて議論しました:ディスカッション#1、ディスカッション#2。このためのQC#は#91030です。
自分で変更を加えようとしましたが、DataSnap Frameworkを再コンパイルできないことを知りました(ここを参照)。
これはXE2で修正されますか、および/またはエンドユーザーはXE2でDataSnapフレームワークを再コンパイルできますか?この修正を含むXE2より前のDataSnapへのパッチはありますか?
ありがとう、ジェームズ