符合SaltyRTC协议的信令服务器。
项目描述
这是一个适用于Python 3.5+的SaltyRTC服务器实现,使用asyncio。
注意
在Python 3不是默认Python运行时的机器上,您应该使用pip3而不是pip。
先决条件
sudo apt-get install python3 python3-pip
我们建议使用venv创建一个隔离的Python环境
pyvenv venv
您可以通过运行此命令进入创建的虚拟环境venv
source venv/bin/activate
当虚拟环境处于活动状态时,使用pip安装的所有包都将安装到该环境中。
要取消激活虚拟环境,只需运行
deactivate
如果您想要更容易地处理您的虚拟环境,您还可以查看virtualenvwrapper。
安装
如果您正在使用虚拟环境,请首先激活它。
通过以下命令安装模块:
pip install saltyrtc.server
依赖项 libnacl 将自动安装。但是,您可能需要安装 libsodium 以使 libnacl 正常工作。
命令行使用
脚本 saltyrtc-server 将自动安装,并为服务器提供命令行接口。
运行以下命令以查看详细的使用信息:
saltyrtc-server --help
所有命令行选项也可以作为环境变量使用,方法是在其前面加上 SALTYRTC_SERVER_ 和大写命令名称,然后是选项名称的大写。例如: SALTYRTC_SERVER_SERVE_PORT=8765。
快速入门
生成一个新的 私有永久密钥
saltyrtc-server generate /path/to/permanent-key
运行以下命令在任何地址上以端口 8765 启动服务器
saltyrtc-server serve \
-p 8765 \
-tc /path/to/x509-certificate \
-tk /path/to/key \
-k /path/to/permanent-key
或者,通过环境变量提供选项
export SALTYRTC_SERVER_SERVE_PORT=8765 \
SALTYRTC_SERVER_SERVE_TLSCERT=/path/to/x509-certificate \
SALTYRTC_SERVER_SERVE_TLSKEY=/path/to/key \
SALTYRTC_SERVER_SERVE_KEY=/path/to/permanent-key
saltyrtc-server serve
Docker
您还可以使用我们的 官方Docker镜像 来运行服务器
docker run \
-v /path/to/cert-and-keys:/var/saltyrtc \
-p 8765:8765
-it saltyrtc/saltyrtc-server-python:<tag> serve \
-p 8765 \
-tc /var/saltyrtc/x509-certificate \
-tk /var/saltyrtc/key \
-k /var/saltyrtc/permanent-key
上述命令将服务器容器内的端口 8765 映射到宿主机的端口 8765。
当然,也可以使用环境变量提供选项,如前所述。
贡献
如果您想为此项目做出贡献,应在可编辑的环境中安装项目的可选 dev 要求
git clone https://github.com/saltyrtc/saltyrtc-server-python.git
cd saltyrtc-server-python
pip install -e .[dev]
在创建pull请求之前,建议运行以下命令以检查代码风格违规(flake8)、优化导入(isort)、进行静态类型分析和运行项目测试
flake8 .
isort -rc .
MYPYPATH=${PWD}/stubs mypy saltyrtc examples
py.test
报告安全问题
请直接向以下联系人之一或两个报告安全问题
丹尼尔·巴根
电子邮件: mail@dbrgn.ch
Threema: EBEP4UCA
伦纳特·格拉尔
电子邮件: lennart.grahl@gmail.com
Threema: MSFVEW6C
变更日志
5.0.1 (2019-09-09)
修复另一个客户端断开连接时的异常
5.0.0 (2019-08-29)
将Python版本要求提升到3.6.1
升级依赖项
修复导致路径重复的竞态条件
4.2.0 (2019-04-25)
任务和作业处理的内部重构
4.1.1 (2019-04-09)
修复意外取消任务循环的问题
4.1.0 (2019-04-04)
- 允许将环境变量用作CLI参数替换
现在,您可以使用 SALTYRTC_SERVER_TLSKEY=foo saltyrtc-server serve 替代 saltyrtc-server serve --tlskey=foo
修复pyi文件中的导入顺序
4.0.1 (2019-01-24)
将Python版本要求提升到3.5.3
删除Python 3.5.2的替代方案
4.0.0 (2018-01-24)
重要:在升级之前,请确保您正在使用Python >= 3.5.3。
放弃Python 3.4支持(主要)
弃用CLI选项 -sc、–sslcert 和 -sk、–sslkey。请使用 -tc、–tlscert 和 -tk、–tlskey 代替。
添加类型提示
修复丢弃字符串消息
修复正确验证接收到的客户端ID类型
修复正确验证接收到的子协议
修复握手过程中一个客户端断开另一个客户端时的竞态条件
代码库清理
3.1.2 (2019-01-08)
修复早期Python 3.5版本的导入
3.1.1 (2019-01-08)
暂时禁用py.test中的弃用警告(请参阅 #90)
3.1.0 (2019-01-07)
事件回调参数现在始终需要提供一个 data 参数
3.0.1 (2019-01-02)
修复将 timeout 关闭代码作为 int 传递给事件回调
3.0.0 (2018-12-18)
当客户端未对ping消息做出响应时,请使用timeout关闭代码(3008)(重要)
添加对Python 3.7的支持
各种任务队列改进,使客户端处理更加稳健
修复:当通过“drop-responder”删除响应者时,不要发送“断开连接”消息
修复:防止发起者将消息转发到正在被删除的响应者客户端
修复:关闭服务器时,不要接受新的连接
2.0.1 (2018-08-20)
修复:防止创建具有相同路径字符串的两个路径实例
改进日志消息
2.0.0 (2018-07-16)
重要:在升级之前,请确保您正在使用Python >= 3.4.4,并且您的客户端支持断开连接消息。
添加对断开连接消息的支持(重要)
修复在派发send-error时可能出现的消息顺序无效问题
修复send-error消息中id字段值的问题
修复一些潜在的竞争条件
1.0.2 (2017-11-15)
修复:不要接受发起者的未加密“client-auth”消息
1.0.1 (2017-07-25)
修复处理新的libnacl异常
1.0.0 (2017-03-24)
添加SaltyRTC 1.0协议的服务器实现
在PyPI上的首次发布
项目详情
saltyrtc.server-5.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7493779b449b6ed9432224b7f3dd37829cb60d1ca7a7f7e52d5f50f8163d62f3 |
|
MD5 | 2b77a4a64ff65b4ba1fa74000f8099a5 |
|
BLAKE2b-256 | a22eb5e91ecde6ea3c713f645c84ef5b6b84392ae27cbbacb5f2e9b9410492af |
saltyrtc.server-5.0.1-py36.py37-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 33b4f1a590c6aecbcb20548b2debdfc767ab3ef8b094b4dd49cc08fe1834cec5 |
|
MD5 | 02d7969a21391abb28ab59a13cd255ec |
|
BLAKE2b-256 | c67cd69845bd088da49038a30df5adc3aec9808d88aaea248d43dcf95807b010 |