具有异步服务器实现的代理协议库
proxy-protocol的Python项目详细描述
代理协议
具有asyncio服务器实现的代理协议库。在
Specification
API Documentation
Docker Image
目录
安装和使用
$ pip install proxy-protocol
与基于^{
也可以根据协议的版本,简化协议的配置 从字符串中读取。在
fromproxyprotocol.versionimportProxyProtocolVersionpp_noop=ProxyProtocolVersion.get()pp_detect=ProxyProtocolVersion.get('detect')pp_v1=ProxyProtocolVersion.get('v1')pp_v2=ProxyProtocolVersion.get('v2')
本例中的pp_noop
对象是一个特殊情况下的实现
根本不从流中读取代理协议头。它可以用来
禁用代理协议使用,而不会使服务器代码复杂化。在
您还可以查看^{localhost:10007
,你可以看到它的作用:
$ proxyprotocol-echo --help $ proxyprotocol-echo detect $ proxyprotocol-echo noop
服务器使用率
其中包括两个基本的服务器实现供参考。利用两者
一起可以演示端到端的过程:使用proxyprotocol-server
要将代理协议头代理到proxyprotocol-echo
,请执行以下操作:,
然后显示原始连接信息。在
这两种类型的服务器使用的hostname:port
参数由
^{
回声服务器
proxyprotocol-echo
服务器要求入站连接提供代理
表示连接的原始源的协议头。在
头,所有接收到的数据都将回显到客户端。在
proxyprotocol-echo --help
proxyprotocol-echo # run the server
代理服务器
proxyprotocol-server
服务器将入站连接代理到另一个服务器
主机/端口endoint,在出站连接前面加上代理协议
指示原始连接信息的标头。在
proxyprotocol-server --help proxyprotocol-server --service localhost:10000 localhost:10007
开发和测试
你需要做一些额外的设置来开发和测试插件。弗斯特 关闭,我建议激活venv。然后,安装测试要求和 指向代理协议包的本地链接:
$ pip install -r test/requirements.txt
$ pip install -e .
使用运行测试py.测试公司名称:
$ py.test
如果你打算创建一个完整的套件,请务必创建一个完整的套件 CI/CD运行的测试正在通过:
$ py.test
$ mypy --strict proxyprotocol test
$ flake8 proxyprotocol test
Apy.测试run执行单元测试和集成测试。集成测试
使用模拟套接字来模拟命令和
响应,并保存在test/server/
子目录中。在
类型提示
这个项目大量使用Python的type hinting系统,使用 干净运行mypy的意图:
mypy --strict proxyprotocol test
除非尽力使用类型,否则不会接受任何代码贡献 在代码库的其余部分中尽可能和常见的暗示。在
麻省理工学院执照
版权所有(c)2020 Ian Good
兹免费准许任何人取得复制品 本软件及其相关文档文件(“软件”)的 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的使用者 根据以下条件提供:
上述版权声明和本许可声明应包括在所有 软件的副本或大部分。在
本软件按“原样”提供,无任何形式的保证,明示或 包括但不限于适销性保证, 特定目的的适用性和非侵犯性。在任何情况下 作者或版权持有人应对任何索赔、损害赔偿或其他 无论是在合同诉讼、侵权诉讼或其他诉讼中,由以下原因引起的责任:, 不属于或与软件、使用或其他交易 软件。在
- 项目
标签: