在 Firefox 附加组件中打开套接字连接

2024-01-08

我想从 JavaScript 中的 Firefox 插件中打开套接字连接(传出,而不是侦听 nsIServerSocket)。连接应该是 TCP 到指定端口上的本地主机,并将用于与计算机上运行的另一个进程进行通信。

我怎样才能打开这样的客户端套接字?我在developer.mozilla.org 上找到了像nsISocketTransport 这样的接口的API 文档,但这仍然无法帮助我将各个部分组合在一起。它甚至没有提到套​​接字可以用于 TCP,所以我什至不能 100% 确定这是我需要的接口。到目前为止我能找到的只是有关 nsIServerSocket 的更多信息。注意:我没有使用附加 SDK,而是直接使用引导附加组件。


你走在正确的轨道上。我在 KeeFox 中使用 nsISocketTransport 和 nsISocketTransportService 来启用跨进程通信,但完整的图片是相关的侦听器和回调接口。

该文件应包含一些有用的示例代码:https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/session.js https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/session.js

它在特定端口上打开安全 TCP 连接,定期尝试连接到服务器端口并处理因使用自签名证书而产生的安全异常。

我使用以下接口,但根据具体情况,您可能需要略有不同的接口:

QueryInterface: XPCOMUtils.generateQI([Ci.nsIBadCertListener2,
                                       Ci.nsIInterfaceRequestor,
                                       Ci.nsIStreamListener,
                                       Ci.nsITransportEventSink,
                                       Ci.nsIOutputStreamCallback])

这些接口上定义的一些回调包含在第二个文件中,该文件扩展了基本会话对象原型以应用 KeeFox 使用的特定通信协议 (JSON-RPC):

https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/json.js https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/json.js

https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/KF.js https://github.com/luckyrat/KeeFox/blob/master/Firefox%20addon/KeeFox/modules/KF.js创建一些计时器并使用下面的代码启动连接过程,但您可能不需要详细查看该文件。

this.KeePassRPC = new jsonrpcClient(); // defined in json.js and session.js

// make the initial connection to KeePassRPC
// (fails silently if KeePassRPC is not reachable)
this.KeePassRPC.connect();

// start regular attempts to reconnect to KeePassRPC
this.KeePassRPC.reconnectSoon();

出于兴趣,您是否必须使用原始 TCP 连接?这是 4 年前我创建 KeeFox 时唯一的选择,但我目前正在开发 Web Socket 解决方案,因此如果您还没有考虑过该选项,那么可能也值得考虑。这肯定比了解原始套接字接口要简单得多。

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

在 Firefox 附加组件中打开套接字连接 的相关文章

  • 如何在客户端-服务器模型(OpenCV C++)中通过套接字传输 cv::VideoCapture 帧?

    我通过套接字翻译视频 我在另一端看到视频流 但无法接收视频 我的视频文件是空的 我认为问题可能是接收端转换视频格式错误 我应该如何在服务器端对视频进行编码以及如何在客户端对视频进行解码 我使用 Linux Ubuntu Mate OpenC
  • 使用 C++ 中的 java 套接字接收浮点数

    我需要使用套接字从 C 客户端到 java 服务器接收包含浮点数的数组或类 但 InputStreamReader 没有得到正确的结果 任何原因 任何有关更简单方法的建议将不胜感激 谢谢 Java服务器代码 public static vo
  • 使用 BufferedInputStream 进行套接字读取

    我正在使用Java的BufferedInputStream类读取发送到套接字的字节 发送到套接字的数据是 HTTP 形式 因此通常是具有定义的内容长度的标头 然后是一些内容 我遇到的问题是有时BufferedInputStream read
  • Windows 操作系统中无法访问的 IP 套接字关闭时间

    这些代码通过用户数据报协议提供发送数据 下面有两个代码 当我使用第一个代码来处理无法访问的 IP 地址时 我得到了三秒的延迟 请查看新结果标题 只需打开新的 C 控制台应用程序并将这些代码粘贴到其中 第一个代码 using System u
  • 无法远程连接到Python Socket

    我已经使用 python 套接字和 Tkinter 创建了一个聊天应用程序 它在本地运行得很好 但是客户端无法远程连接到服务器 当我输入我的公共 IP 地址作为主机时 我已经完全端口转发了我的网络并且我知道如何很好地进行端口转发 当我运行在
  • Python中的非阻塞套接字?

    是我 还是我找不到关于Python中非阻塞套接字的好教程 我不确定如何准确地工作 recv和 send在里面 根据 python 文档 至少是我的理解 recv ed or send ed 数据可能只是部分数据 那么这是否意味着我必须以某种
  • 套接字对和一对无名管道有什么区别吗?

    我不仅想知道用户端的差异 还想知道 Linux 内核实现中的差异 共同部分 管道是单向的 因此需要两个管道才能进行双向通信 而套接字对是双向的 管道始终是面向流的 而套接字对可以是面向数据报的 套接字对正常AF UNIX套接字 这意味着辅助
  • 在 socket.on() 的回调上调度操作

    所以基本上我得到了这个套接字 它工作正常 向我发送 新订单 消息 我正在使用 redux 并且我想分派一个操作 然后减速器会得到它并且我的商店将会更新 但这段代码没有做任何事情 socket on new order order gt re
  • 如何在java应用程序中检测FIN - tcp标志?

    我在两台计算机之间有持久的 TCP 连接 第二台计算机不受我的控制 第二台计算机可以随时发送FIN标志 并且首先必须关闭当前连接 将FIN标志发送回第二台计算机 我如何知道第二台计算机正在发送 FIN 标志 以及何时必须调用 Java 应用
  • 在 multiprocessing.connection.Listener.accept() 给定时间后引发 TimeOutError

    我正试图打断multiprocessing connection Listener accept 但迄今为止尚未成功 由于它不提供timeout参数 我想也许我可以使用socket setdefaulttimeout 打断它 正如帖子中所建
  • 由于权限被拒绝,无法绑定到某些端口

    在过去 3 个月左右的时间里 我遇到了随机错误 无法绑定身份服务器在本地开发工作站上运行的特定端口 起初我以为是我的机器坏了 所以我重置了所有东西 这在两个月内解决了这个问题 现在它又回来了 与此同时 其他开发人员也看到了同样的问题 我们所
  • 带代理的 PHP CURL 导致套接字上的 CLOSE_WAIT

    我正在使用 PHPcurl 库来建立连接并从 WEB 检索内容 通常 我有多个 SOCKS5 代理服务器在 localhost 上运行 端口从 10300 到 10350 PHP 随机选择一个端口 My code ch curl init
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • 开源 C# 套接字 (TCP + UDP) 库 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对 NET 框架的标准套接字类感到头疼 有人可以推荐一个高效的开源 C 套接字 TCP UDP 库来处理套接字消息吗 使用 Kerry Jia
  • ZeroMQ可以用来接受传统的套接字请求吗?

    我正在尝试使用 ZeroMQ 重写我们的旧服务器之一 现在我有以下服务器设置 适用于 Zmq 请求 using var context ZmqContext Create using var server context CreateSoc
  • 高性能 C# 服务器套接字的提示/技术

    我有一个 NET 2 0 服务器似乎遇到了扩展问题 可能是由于套接字处理代码的设计不佳 我正在寻找有关如何重新设计它以提高性能的指导 使用场景 50 150 个客户端 每个客户端以高速率 高达 100 秒 秒 发送小消息 每条 10 字节
  • WebSockets 监听 UNIX 域套接字?

    是否可以在 nginx 服务器后面设置一个 WebSockets 服务器来处理 UNIX 域套接字上的连接 我目前在同一台计算机上有多个 WebSocket 服务器实例 并且存在端口共享问题 所有实例都必须分配一个唯一的端口 我想避免这种情
  • Socket.*Async 方法是线程化的吗?

    我目前正在尝试找出最小化 TCP 主服务器中使用的线程数量的最佳方法 以便最大限度地提高性能 由于我最近阅读了大量 C 5 0 的新异步功能 异步并不一定意味着多线程 这可能意味着将有限状态对象分成较小的块 然后通过交替与其他操作一起进行处
  • 在 PCL 中使用 System.Net.Sockets(.Net 4.5 + 电话 8)

    我现有的 Net 库已经适用于 Net 4 5 和 Windows Phone 8 现在我想将其转换为可移植类库 突然我无法使用System Net Sockets不再了 我只检查了 Net 4 5和Windows Phone 8 未选择X
  • Linux 中 AF_UNIX 数据报消息的最大大小是多少?

    目前我已达到 130688 字节的硬限制 如果我尝试在一条消息中发送更大的内容 我会收到一条消息ENOBUFS error 我已经检查过net core rmem default net core wmem default net core

随机推荐

  • 什么时候应该使用 require() ,什么时候使用 Define() ?

    最近几天我一直在玩 requirejs 我试图理解定义和要求之间的区别 Define 似乎允许模块分离并允许遵守依赖顺序 但它会下载开始时所需的所有文件 而 require 仅在您需要时加载您需要的内容 这两者可以一起使用吗 它们各自的用途
  • 我可以在C++中使用指针分配特定的内存地址吗?

    我可以使用 C 中的指针分配特定的内存地址吗 例如 分配这个内存地址25D4C3FA并放入4 分配进程地址空间中的特定地址有点棘手并且特定于平台 在 Unix 系统上 mmap http www kernel org doc man pag
  • 基于 Windows 的 apache 服务器 (wamp) 上的 cakephp 和 httpd.conf 问题

    所以 我想知道是否有人可以澄清以下事件 并建议我如何解决这个问题 对于代码的奇怪颜色感到抱歉 我先解释一下设置 我安装了 wamp 服务器 它物理上位于一个硬盘上 然后我的开发文件位于单独的硬盘上 所以我添加了别名来访问特定的开发文件夹 在
  • 无法使用 Android Studio 将模块依赖项添加到 Cordova 项目的 CordovaLib

    我无法弄清楚如何添加CordovaLib目录作为 Android Studio 中的模块依赖项 注意 这是我第一次使用 Android Studio 所以可能我只是不知道我在做什么 我在用着 OSX优胜美地 安卓工作室1 1 0 科尔多瓦4
  • 划分web.config

    我正在开发一个 asp net 项目 但还没有很长的 web config 文件 超过 400 行 但有了这个 nhibernate log4net 和 urlrewrites 它变得越来越大 有没有正确的方法将 web config 分成
  • Eclipse 字符编码

    我正在使用 Scanner 扫描 Java 中的 txt 文档 但是 当我在 Eclipse 中打开 txt 文档时 我注意到某些字符无法被识别 并且它们被替换为如下所示的内容 这些字符甚至不允许我扫描文件 while scan hasNe
  • 使用 VBA 仅引用 Excel 表格数据主体范围的一部分

    我找到了参考的解决方案整行 列 or a 单细胞在表内 例如ListObject Excel 表格的 VBA 指南 https stackoverflow com a 43541508 8345185 但没有具体的范围 示例 Table1
  • 使用 ng 模型变量使用 ng 角度 2 的变化

    如何在 Angular 2 中使用 ng change 事件 每当 ng model 变量发生变化时 就必须调用一个函数 ngModel variable ngchange variable 你可以使用ngModelChange event
  • Flutter Cloud Firestore 添加复杂类型抛出无效参数:“团队”实例

    我有一个 Match 类 其中包含 Team 类型的其他类的列表 仅当列表为空时 才可以将新文档 匹配 上传到 Firestore 一旦列表中存在团队项目 请尝试将其添加到 Firestore 中无效参数 团队 实例 Team类只包含简单的
  • 如何从 Json 序列化中排除属性

    我有一个 DTO 类 我将其序列化 Json Serialize MyClass 我怎样才能排除public它的财产 它必须是公开的 因为我在其他地方的代码中使用它 如果您使用 Json Net属性 JsonIgnore 在序列化和反序列化
  • SSI 还是 PHP Include()?

    基本上我很快就会推出一个网站 我预计会有很多流量 就场景而言 假设我每天会有 100 万个独立用户 数据将是静态的 但我也需要包含 我只会在另一个 html 页面中包含一个 html 页面 没有任何动态 为了保持简单 我不会透露我的原因 我
  • 检测 viewpager 中的触摸/点击事件

    我对 Android 开发还很陌生 目前我正在使用 viewpager 试图了解如何处理触摸 点击事件 我花了整个早上寻找这个问题的答案 但似乎找不到任何对我有帮助的东西 基本上我有一个带有 5 个片段的 viewpager 它们都使用相同
  • 为什么 Visual Studio Code 忽略我的tasks.json 文件?

    我对tasks json 有一个问题 我通过将其简化为以下内容来简化它 在我的 Visual Studio Code 项目的根目录中 文件资源管理器侧边栏内清晰可见的根文件夹是 vscode 而 vscode 内部是tasks json 这
  • MYSQL PHP 按日期排序并将结果按每个日期分组

    我试图寻找问题的解决方案 但我不太确定我在寻找什么 所以我运气不佳 我有一个简单的 MySQL 数据库 其中有一个名为 活动 的表 在该表中 我有 start date activity description 和 activity loc
  • 用原则 2 设置 LIMIT?

    我尝试编写一个查询 使用子查询 但我不知道如何在子查询中设置限制 我的查询 query ids this gt getEntityManager gt createQuery SELECT e id FROM MuzichCoreBundl
  • 在 CentOS 7.7 上初始化 MariaDB 10.4.12

    我在计算机上配置了 3 个驱动器 1 个用于数据文件 1 个用于事务日志文件 1 个用于临时文件 我想在 yum 安装后第一次运行时初始化 MariaDB 这是我的步骤 使用以下参数创建 etc my cnf mysqld aria log
  • 将 NuGet contentFiles 传递到引用的项目

    我有一个 NuGet 包 其中有一个打包为Content in contentFiles folder 然后我有两个带有 SDK 样式 csproj 的 C 项目 A 和 B 其中项目B参考项目A as a ProjectReference
  • 如何使用数据注释属性类来消除表单中的空字符串?

    我试图在表单中要求一个文本输入字段 这意味着表单中需要有一些内容 然而 添加一个 Required 我的模型的标签不起作用 具体来说 查看用户名属性 public class ColumnWidthMetaData DisplayName
  • 结构图 Web Api 2 帐户控制器和个人帐户

    我对 IOC 和 web api 2 相当陌生 但已经让 StructureMap 在 web api 2 中的我自己的控制器上工作 我没有管理的是使用个人帐户在 AccountController 上使用 StructureMap 我使用
  • 在 Firefox 附加组件中打开套接字连接

    我想从 JavaScript 中的 Firefox 插件中打开套接字连接 传出 而不是侦听 nsIServerSocket 连接应该是 TCP 到指定端口上的本地主机 并将用于与计算机上运行的另一个进程进行通信 我怎样才能打开这样的客户端套