纯蟒蛇气氛机制实现
wayround_org_sasl的Python项目详细描述
非常简单的sasl机制实现
- 在此之前,我已经为python做了两个gsasl绑定:
- 其中一个是使用cython实现的;
- 第二个是使用vala实现的。
- gsasl的主要问题是它的回调机制是什么
- 无法传递用户数据,因此尝试 为类似python的oop语言进行绑定。
- 由于我非常不喜欢非面向对象编程,最后我决定了
- 至少为普通方法编写非常简单的sasl机制 不再返回GSASL问题。
- 我在gsasl上写了这个包,所以它有一些 相似之处,但我也试着把它简化为 有可能,因为我在霍里,需要我的新邮件服务器软件 尽快工作。
-
用法
这种sasl机制架构应该很简单
导入wayround_org.sasl.sasl
使用init_mech(mech_name,mode,callback=none)函数 创建saslession实例。
- 注意:在写入时,仅支持的方法(机制)是
简单,是“服务器”和“客户端”。
示例:init_mech('plain','server')
- 注意:回调可能仅在客户端模式下才需要,可能用于
组织对话框。这就像在GSASL中一样。
如果提供回调,则必须使用一个参数- 服务器希望客户端返回的字段的名称。回报 回调的值将被分配给 客户端的对象“.properties”dict property
使用saslession实例的step()或step64()方法传递数据 它的工作机制。
- 这些方法总是返回两个值:
代码-表示错误、成功或要求更多数据;
At time of this writting, valid values considered to be: ‘ok’, ‘error’, ‘need_more’.
- gsasl supports more error codes indicating various
errors, depending on mechanism being used. and this step() methods should also somehow specify errors. possibly, the good way for farther development of this methods (and particularly this package mechanisms) is, in case of errors, return strings starting with ‘error’ text and continuing with ‘_some_spec’ to indicate specific error.
- 文本-数据应发送到服务器或客户端 副本。(如果出现错误,通常没有任何数据 应该发送得更远,但请阅读文档 关于使用的机构的细节)
它的输入,将解码结果传递给step(),之后 对step()结果进行编码并将其返回给调用方。
发展机制
开发新机制-在“mechs”中创建名称为的新文件 目录。编写一些代码:以plain.py为例。
当您的新机制模块完成时,通过以下方式在sasl.py中注册它 在sasl.py top中编辑“机制”dict。
- 模式类的结构需要具有以下内容:
- def初始化(self,callback=none)
- 定义步骤(自,数据)
- step()方法必须返回2个值: 1:结构 2:字节
- “.properties”dict属性
其他的一切都取决于程序员的良心。