Websockify。

websockif的Python项目详细描述


websockify:websockets支持任何应用程序/服务器

websockify的前身是wsproxy,是 novnc项目。

在最基本的层面上,websockify只是翻译websockets流量 正常的套接字通信。websockify接受websockets握手, 解析它,然后开始在客户端和 两个方向的目标。

新闻/帮助/联系

显著的承诺、公告和新闻发布到 @novnc

如果您是WebSockify开发人员/集成人员/用户(或希望) 请加入novnc/websockify 讨论组

bug和功能请求可以通过github提交 问题

如果你想对WebSockify表示感谢,你可以向 非营利组织,如:同情 国际sil人类栖息地电子前沿 基金会< /A>,< HeRF= ="HTTP://www-Afth.MalARA.COM/"Re="nfoLoLo>"抗疟疾 基金会< /a>,< HeRF= ="HTTP://www. NOthuthButn.NET/Re="NoFoLoL> > 网络等。如果需要,请发tweet@novnc

WebSockets二进制数据

从websockif0.5.0开始,只有hybi/ietf 支持6455 WebSocket协议。对老年人没有支持 base64编码数据格式。

加密的WebSocket连接(wss://)

要使用websocket'wss://'uri方案加密通信,您需要 生成要加载WebSockify的证书和密钥。默认情况下,WebSockify 加载证书文件名self.pem,但--cert=cert--key=key 选项可以覆盖文件名。您可以生成自签名证书 使用openssl。当需要公共名称时,请使用服务器的主机名 代理的运行位置:

openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem

要使自签名证书生效,您需要使您的客户端/浏览器 理解它。您可以将其安装为接受的证书,或者 对首先导航到的https连接使用相同的证书 批准。浏览器通常不会给你"信任证书"?促使 通过使用无效证书打开wss套接字,因此需要 通过这两种方法之一接受它。

如果您有带有一个或多个中间层的商业/有效SSL证书 证书,将它们集中到一个文件中,首先是服务器证书,然后是 来自CA等的中间文件。使用--cert选项指向此文件 然后用--key键。最后,根据需要使用--ssl

其他WebSockify功能

基本操作不需要这些功能。

  • 守护:当指定了-d选项时,WebSockify将运行 作为后台进程。

  • ssl(wss://websockets-uri):这是由 通过嗅探从客户端发送的第一个字节,然后 如果数据以"\x16"或"\x80"开头,则包装套接字 (表示SSL)。

  • 会话记录:此功能允许记录通信量 使用--记录从客户端发送和接收到文件 选项. < /P>

  • mini-webserver:websockify可以检测和响应普通的web 与WebSockets代理在同一端口上的请求。这个功能 使用--web dir选项激活,其中dir是 网络目录o服务。< /P>

  • 包装程序:请参阅下面的"包装程序"部分。

  • 日志文件:WebSockify可以将所有日志信息保存在一个文件中。 此功能通过--日志文件选项激活 其中file是保存日志的文件。

  • 身份验证插件:WebSockify可以要求身份验证 websocket连接,如果您使用--web auth,也可以用于普通 Web请求。此功能通过 --auth plugin class--auth source arg选项,其中class是 通常auth_plugin s.py和arg中的一个是插件的配置。

  • 令牌插件:WebSockify的一个实例可以将客户端连接到 根据发送的令牌,有多个不同的预配置目标 由客户端使用标记url参数,或使用 如果您使用--host token,请访问WebSockify。此功能是 使用--token plugin class--token source arg激活 选项,其中类通常是token_plugins.py中的一个,arg是 插件的配置。

WebSockify的其他实现

websockify的主要实现是在python中。有 中提供了其他语言的几种替代实现 我们的姊妹存储库websockify js (javascript/node.js)和websockify-other (C、克洛朱尔、鲁比)。

此外,还有其他几个外部项目 WebSockify"协议"。请参阅替代实现功能 矩阵用于 更多信息。

包装程序

除了从源地址代理到目标地址之外 (可能在不同的系统上),WebSockify有能力 在本地系统和代理WebSockets通信上启动程序 程序拥有/绑定的普通TCP端口。

使用一个小的ld_预加载库(rebind.so)完成。 它拦截程序的bind()系统调用。指定的 端口移动到新的本地主机/环回可用高端口。网络化 然后将指向原始端口的WebSocket流量代理到 程序的新(移动)端口。

通过将目标替换为-- 然后是要换行的程序命令行。

`./run 2023 -- PROGRAM ARGS`

--wrap mode选项可用于指示要采取的操作 当包装的程序退出或守护时。

下面是一个使用websockify包装vncserver命令的示例 (哪种背景本身)用于 novnc

`./run 5901 --wrap-mode=ignore -- vncserver -geometry 1024x768 :1`

下面是包装telnetd(来自krb5 telnetd)的示例。守护进程 在连接关闭后退出,因此包装模式设置为重新生成 命令:

`sudo ./run 2023 --wrap-mode=respawn -- telnetd -debug 2023`

websockify js中的wstelnet.html页面 项目演示了一个简单的基于websockets的telnet客户端(使用 主机和端口分别为"localhost"和"2023"。

安装WebSockify

下载其中一个版本或最新的开发版本 它并以根用户身份运行python setup.py install 提取了文件。通常,这也会安装numpy 性能,如果您还没有安装它。不过,努比是 可选的。如果你不想安装numpy或者你不能编译它, 您可以编辑setup.py并删除install_requires=['numpy'],行 在运行python setup.py install之前

之后,WebSockify应该可以在您的路径中使用。跑 WebSockify--帮助确认安装正确。

更改

0.9.0

  • 已删除base64支持,现在需要二进制模式
  • 低级WebSocket协议处理现在有自己的类
  • 现在,Web服务器需要进行身份验证
  • 服务器主机名可用作标记
  • jwt/jws/jwe可用于令牌
  • redis可用于令牌
  • 现在可以登录到syslog
  • 通过禁用代理连接的nagle,改进了延迟
  • 添加了客户端证书身份验证
  • 支持密码保护的证书密钥文件
  • TLS密码和选项现在是可配置的
  • 可通过inetd调用
  • 很多小问题…

0.8.0

  • 使WebSockify在sigTerm(226)上正确终止子项
  • 删除登录信号处理程序(这可能导致python在某些情况下挂起)(219)
  • 更容易登录到文件(205)
  • 在令牌文件令牌插件中添加对令牌中IPv6地址的支持(197)
  • 改进auth插件框架以更好地支持http auth(194,201)
  • 修复jsontokenapi令牌插件中的错误(192)
  • 修复异常处理程序中缺少的变量(178)

0.7.0

  • Python3支持修复(140,155,159)
  • 通用令牌解析插件支持(162)
  • 通用身份验证插件支持(172)
  • 修复了big endian系统上的帧损坏(161)
  • 支持心跳(通过ping)和自动响应pong(169)
  • 默认情况下自动拒绝未屏蔽的客户端帧(严格模式)(174)
  • 自动重新启动中断的选择呼叫(175)
  • 进行"运行"尊重环境设置(包括virtualenv)(176)

0.6.1 - 2015年5月11日

  • 补丁发布:修复了导致文件无法正确传递的错误

0.6.0-2014年2月18日

  • 注意:0.6.0将中断子类websocketproxy的现有代码
  • 重构以使用标准socketserver requesthandler设计
  • 修复使用多处理时某些系统上的僵尸进程错误
  • 添加更好的单元测试
  • 通过python记录信息loggingmodule

0.5.1-2013年6月27日

  • 将上游einaros/ws(>;=0.4.27)与websockify.js结合使用
  • wsrequesthandler的"仅文件"和"无"父安全选项
  • 更新web socket js(c0855c6cae)的内部版本
  • 将include/web socket js项目子模块添加到gimite/web socket js 符合DSFG。
  • 删除hixie协议支持

0.4.1-2013年3月12日

  • 注意:0.5.0将放弃Hixie协议支持
  • 添加include/directory并从源中删除一些dev文件 分发。

0.4.0-2013年3月12日

  • 注意:0.5.0将放弃Hixie协议支持
  • 在node.js实现中使用buffer base64支持

0.3.0-2013年1月15日

  • 重构为模块:websocket、websocketproxy
  • 切换到使用ietf 6455的web套接字js
  • 更改为include/*.js的MPL 2.0许可证
  • 修复会话录制

0.2.1-2012年10月15日

  • 使用更新的版本号重新发布

0.2.0-2012年9月17日

  • websock.js中的二进制数据支持
  • 目标配置文件/dir和带有令牌选择器的多个目标
  • IPv6修复程序
  • SSL目标支持
  • 代理到/从Unix套接字

0.1.0-2012年5月11日

  • 初始版本发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作