简单安全轻量级的python服务发现

pydiscover的Python项目详细描述


pydiscover:简单安全轻量级的python服务发现

Codename:ZaRZaner0
Version:1.0
Code:https://github.com/cr0hn/pydiscover
Issues:https://github.com/cr0hn/pydiscover/issues/
Python version:Python 3.4 and above
Author:Daniel Garcia (cr0hn) - @ggdaniel

什么是pydiscover

pydiscover是一个简单的服务发现客户机和服务器,设计时考虑到了简单性、性能和安全性。与实现ssdp协议或其他协议不同,使用一种非常简单的机制:将信息作为json格式发送给客户机。

PyDiscover是非常灵活和轻量级的,并采用了密码机制来确保服务器和客户端之间的通信(基于密码)。

功能

  • 简单的用法。
  • 可配置的多播服务发现。
  • 对服务器信息的密码保护访问(可选)。
  • AES加密(如果定义了密码)。
  • 自定义频道定义。
  • 高服务器性能,基于新的python异步模块。
  • 服务器可以向客户端传播任何信息。此信息以json格式发送/接收。
  • 简单配置文件

安装

安装非常简单:

# python3.4 -m pip install pydiscover

它是怎么工作的?

架构

pydiscover由客户机和服务器组成:

  • 服务器在端口50000中侦听多播客户端请求(默认情况下)。
  • 客户端使用多播地址向端口50000发送请求。

虚拟频道(或魔术)

客户机和服务器必须在同一个虚拟通道(或magic)中传输信息。magic是服务器/客户端已知的预共享单词。只有带有这个词的消息才会被关注,执行“虚拟通道”。

隐藏模式

默认情况下(根据安全原因),服务器以隐藏模式运行。这是:如果服务器接收到没有正确魔法或密码错误的消息,则不会对客户端请求作出任何响应。如果希望服务器应答时显示错误消息,我们将显式激活。

保护通信

我们可以为服务器设置密码。设置好后,信息将使用aes加密发送到客户端。只有在知道密码的客户端才能理解消息。

发送/接收信息

服务器必须用-d参数启动。此参数引用.cfg文件。此文件的格式必须为:

[DEFAULT]services=10.0.0.1net_password=asfi0j9ask123
  • 一个[默认值]部分。
  • 任何信息如下:key=value

默认节内容将以json格式发送给客户端。

用法

服务器

在端口40000中启动服务器,使用密码,虚拟通道由单词“askskals828”构建:

# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg

取消隐藏模式:

# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg --disable-hidden

您可以看到更多输入示例:

# pydiscover-server -h

客户端

使用上述配置连接到服务器:

# pydiscover-client -p 40000 --password 1238d8KKls_jj -m askskAls828 -v

实际示例

https://raw.githubusercontent.com/cr0hn/pydiscover/master/pydiscover/example.jpg

有什么新消息?

版本1.0.0

  • 第一版发布

许可证

PyDiscover是根据BSD许可证发布的。

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

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序