J'essaie d'utiliser Firefox pour lire la bannière SSH. c'est à dire. Lorsque vous vous connectez initialement à un serveur SSH, le serveur vous envoie sa bannière, identifiant le logiciel serveur et vous envoyez au serveur SSH votre bannière, identifiant votre logiciel client.
Pour ce faire, j'utilise l'exemple de cette URL:
Y a-t-il nsiClientSocket dans l'extension javascript de Firefox?
Voici mon code:
'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!"); };
Quand je fais cfx xpi avec ça, je comprends ceci:
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).
Donc, j'essaie à la place:
'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!"); };
c'est à dire. Je crée les composants Composants (minuscules) et Composants. Les interfaces ne sont que des interfaces. Mais je reçois cette erreur sur la console:
var transport = components.classes["@mozilla.org/network/socket-transport-service;1"] ReferenceError: components is not defined
Des idées?
Vous devez utiliser Cc
au lieu de Components.classes
et Ci
au lieu de Components.interfaces
: ce sont les variables que vous avez importées du module chrome
et qu'elles sont définies. Si vous avez besoin d'utiliser l'objet Components
lui-même (peu probable), vous pouvez l'importer aussi:
const {components, Cc, Ci} = require("chrome");
Pour référence: autorité de chrome