2012-03-13 9 views
3

nsIServerSocketを使用してソケット接続をリッスンするFirefox拡張機能を作成しています。私は、拡張機能がFirefox拡張機能を実行しているマシンのローカルネットワークアドレスをプログラムで学習する方法を探しています。この情報は、アウト・オブ・バンドのローカル・ネットワーク上のクライアントに伝達され、エクステンションへのソケット接続を開くことができる。この中Firefox拡張コードからローカルIPを取得する方法

私の研究は、これまでのところ唯一FFの拡張のために適切ではないでしょうかDNS resolutionJava appletsを使用する方法でIPアドレスof loaded websitesを見つけることを希望する個人を)上げています。 Geolocation API上のMozillaの開発者向けページは言及:

が、「データが無線LANアクセスポイントのデータ、(2週間のクッキーに似ています)アクセストークン、およびユーザーのIPアドレスを含む交換されました」ユーザーのIPアドレスに直接アクセスするためのAPIを示すものではありません。

私の唯一のアイデアは、nsIProcessを使用してローカルプロセスを呼び出し、そこからIPを解析することです。これはひどくハックしているようで、OSごとに処理する必要があります。私。 ifconfig、netcfg、ipconfigを実行しますか? argsとは何ですか?

もっと良い解決方法を知っている人はいますか?

+0

リンクフィックスBergiに感謝します。 – Daniel

答えて

1

は、それを解消することができるmyHostName性質があります。

var dns = Components.classes["@mozilla.org/network/dns-service;1"] 
        .getService(Components.interfaces.nsIDNSService); 
var myName = dns.myHostName; 
var record = dns.resolve(myName, 0); 
while (record.hasMore()) 
    alert(record.getNextAddrAsString()); 

あなたはそれが複数のアドレスを生成するために期待するべきであるし、それらのすべてが有効になりますされていない - でも、ローカルネットワークのためのVMWare & Co.などによってインストールされた仮想アダプタからのアドレスなど、少なくとも2つのアドレス(IPv6とIPv4)を取得します。

+0

ありがとうございます。これはまさに私が探していたものです。私は、複数のインターフェースアドレスについて頭がおかしいと感謝しています。 – Daniel

+0

ちょっと@ウラジミール・パランツ、私はこれがしばらくしてきたことを知っていますが、あなたが答えを知っているなら、それは本当に助けになるでしょう。この投稿を読んでいると、Firefox経由で設定された匿名プロキシを使用している場合でも、FirefoxアドオンがローカルIPアドレスを読み取る可能性がありますか?言い換えれば、アドオンはプロキシを使用しているにもかかわらず、常にローカルIPアドレスを読み取ることができますか? – DomainsFeatured

+1

@DomainsFedatured:Firefoxアドオンは現在のところサンドボックス化されていないため、コンピュータにフルアクセスできるため、たくさんのことができます。 'nsIDNSService'が存在しなかった場合、ネットワーク構成を読み出すために外部コマンドを実行することができます。あるいは、プロキシ設定を一時的に無効にすることもできます。 Web Extensionsはこれを変更しようとしていますが、それでもインストールしたアドオンをより信頼していると言えます。明るいところでは、アドオンはaddons.mozillaによってレビューされました。orgは通常は問題ありません。レビューでは、彼らが主張することをしていることを確認しています。 –

0

Geolocation APIに記載されているIPアドレスがローカルコンピュータのIPアドレスではないと思います。私は、世界で192.168.0.100のどこにいるのでしょうか?これは一般的に有用な情報ではありません。

ローカルネットワークを扱っているので、クライアントのアドレスを印刷する小さなWebページを設定できますか?その後、そのWebページを要求することであなたのIPを知ることができます。 - あなたがここにもnsIDNSService interfaceを使用

+0

良い点RE:ジオロケーションAPI。 私の拡張機能の目的/展開は、要求するIPをエコーバックするために別のサービスを実行できるという前提を排除します。さもなければそれは潜在的なアイデアでした。ありがとう! – Daniel

関連する問題