使用 Firefox 插件 sdk 的 nsISocketTransportService

2024-05-18

我正在尝试使用 Firefox 来读取 SSH 横幅。 IE。当您最初连接到 SSH 服务器时,服务器会向您发送其横幅,标识服务器软件,并且您向 SSH 服务器发送您的横幅,标识您的客户端软件。

为此,我使用以下 URL 中的示例:

firefox扩展javascript中有nsiClientSocket吗? https://stackoverflow.com/questions/7850258/is-there-nsiclientsocket-in-firefox-extension-javascript

这是我的代码:

'use strict';

const {Cc,Ci} = require("chrome")
const prefs = require("simple-prefs");


exports.main = function(options,callbacks) {
    var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
                              .getService(Components.interfaces.nsISocketTransportService)
                              .createTransport(null, 0, "localhost", 22, null);

    //var output = transport.openOutputStream(0, 0, 0);
    var input = transport.openInputStream(0, 0, 0);
    var data = "test";
    dump(stream.read());
    //stream.write(data, data.length);
    //stream.close();
    dump("all done!");
};

当我用 cfx xpi 执行此操作时,我得到以下信息:

The following lines from file C:\path\to\lib\main.js:
   8: var transport = Components.classes["@mozilla.org/network/socket-transport-service;1"]
   9: .getService(Components.interfaces.nsISocketTransportService) use 'Components' to access chrome authority. To do so, you need to add a line somewhat like the following:

  const {Cc,Ci} = require("chrome");

Then you can use any shortcuts to its properties that you import from the 'chrome' module ('Cc', 'Ci', 'Cm', 'Cr', and 'Cu' for the 'classes', 'interfaces', 'manager', 'results', and 'utils' properties, respectively. And `components` for `Components` object itself).

所以我尝试这样做:

'use strict';

const {Cc,Ci} = require("chrome")
const prefs = require("simple-prefs");


exports.main = function(options,callbacks) {
    var transport = components.classes["@mozilla.org/network/socket-transport-service;1"]
                              .getService(interfaces.nsISocketTransportService)
                              .createTransport(null, 0, "localhost", 22, null);

    //var output = transport.openOutputStream(0, 0, 0);
    var input = transport.openInputStream(0, 0, 0);
    var data = "test";
    dump(stream.read());
    //stream.write(data, data.length);
    //stream.close();
    dump("all done!");
};

IE。我将 Components 组件(小写)和 Components.interfaces 只是接口。但后来我在控制台上收到此错误:

    var transport = components.classes["@mozilla.org/network/socket-transport-service;1"]
ReferenceError: components is not defined

有任何想法吗?


你应该使用Cc代替Components.classes and Ci代替Components.interfaces- 这些是您从chrome模块并定义它们。如果您需要使用Components对象本身(不太可能)你也可以导入它:

const {components, Cc, Ci} = require("chrome");

以供参考:铬权威 https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Chrome_Authority

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Firefox 插件 sdk 的 nsISocketTransportService 的相关文章

随机推荐