Kerio产品的API
PyKerio的Python项目详细描述
皮克里奥
说明:Kerio产品的API
版权所有:2018 Fabio Castelli(muflone)muflone@muflone.com
许可证:GPL-2+
源代码:https://github.com/muflone/pykerio" rel="nofollow">https://github.com/muflone/pykerio
文档:http://www.muflone.com/pykerio/" rel="nofollow">http://www.muflone.com/pykerio/
说明
pykerio试图构建一个公共api来与任何 kerio服务器以便使用外部操作 工具和简单的设置脚本。
交互将使用集成Kerio Web上的HTTP请求 服务器的方式与经典的Kerio Web管理相同。
系统要求
- python 3.x
pykerio类型
最初的kerio api 使用json数据与kerio服务器交互,但是在pykerio中可以找到 许多类将json原始数据映射到python对象,以简化 使用和检查无效数据类型。
pykerio数据类型分为4组:
- 简单类型
- 枚举
- 结构
- 列表
所有pykerio类型都可以使用
实例对象上的.dump()
方法。
pykerio简单类型
pykerio简单类型可以在pykerio.types
中找到,并且是简单的
映射到python原始数据的类。
pykerio简单类型背后的原因是将特定类型绑定到
功能。
例如,当一个方法需要ipaddress
类型时,您可以
一个新的ipaddress
对象,它基本上包装了表示ipv4的字符串
地址:
它们的用法相当简单:
>>> ip_address = pykerio.types.IpAddress('8.8.8.8')
>>> print(ip_address)
'8.8.8.8'
pykerio枚举
pykerio枚举可以在pykerio.enums
中找到,并且很简单
引用完成的字符串集的类。它们可以用来代替
当一个函数需要一个特定的常量值时的字符串。
pykerio枚举背后的原因是限制invalid的使用
ST并知道一个论点的唯一允许值。
例如,当方法需要activetool
数据类型时,您可以
实例一个新的activetool
对象在对象期间传递其值
创造。将首先检查此值,并且不能检查无效值
指定。
它们的用法如下所示:
>>> tool = pykerio.enums.ActiveTool('ActiveToolDns')
>>> print(tool.dump())
'ActiveToolDns'
创建对象期间不能指定无效参数。以下 指令将引发断言错误。
>>> tool = pykerio.enums.ActiveTool('Invalid value')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pykerio/enums/BaseEnumeration.py", line 29, in __init__
assert(name in self.VALUES)
AssertionError
这样,您就可以安全地将对象传递给函数,而不必冒任何风险 无效值,因为它们将被自动禁止。
Pykerio结构
pykerio结构可以在pykerio.structs中找到,并且是复杂的 有两个或更多成员的课程。
如果不解释pykerio结构的所有成员,则无法实例化它。
价值观。它们的使用需要通过一本字典,上面有所有的名字和
价值观。
例如,每当函数要求您传递APIApplication
对象您可以通过这种方式对其进行实例化:
application = pykerio.structs.ApiApplication({
'name': 'My application',
'vendor': 'Fabio Castelli',
'version': '1.1.2'})
一些pykerio结构可能非常复杂,因为它们包含许多成员和 每个成员可以是另一个pykerio结构或许多其他python的列表 结构。
pykerio列表
pykerio列表可以在pykerio中找到。
固定和不可变数据类型的列表。
pykerio列表背后的原因是将列表分组为 相同类型。
例如,当函数需要ipaddresslist
对象时,可以
实例一个ipaddresslist
并用尽可能多的ipaddress
对象填充它
你需要。
有两种方法可以用对象填充pykerio列表:
创建时:
iplist = pykerio.lists.IpAddressList([ip1], [ip2], [ip3])
创建后:
iplist = pykerio.lists.IpAddressList() iplist.append(ip1) iplist.append(ip2) iplist.append(ip3)
不能将不同类型的对象放入pykerio列表。
实现的接口
以下接口在pykerio.interfaces
下实现:
- 会话
- 硬件信息
- 接口
- 端口
- 文件名组
- 服务器
- 存储
- iptools
每个需要实现或使用的简单类型、结构、枚举或列表 这些接口也可以使用。
用法示例
与Kerio服务器交互的第一步是
一个pykerio
对象,但是不能直接实例化pykerio
类
但需要通过pykeriocontrol
或pykerioconnect进行实例化
类,
下一步是使用有效的用户名和密码登录到服务器。 所有其他命令都需要成功的登录会话。
许多使用示例在使用时可以在tests
文件夹中找到
测试API操作。
登录
>>> import pykerio
>>> import ssl
>>> ssl._create_default_https_context = ssl._create_unverified_context
>>> api = pykerio.PyKerioControl(server='control-demo.kerio.com',
port=4081)
>>> application = pykerio.structs.ApiApplication({'name': pykerio.APP_NAME,
'vendor': pykerio.APP_AUTHOR,
'version': pykerio.APP_VERSION})
>>> session = pykerio.interfaces.Session(api)
>>> session.login('admin-en', 'kerio', application)
注销
>>> session.logout()
丢失的接口呢?< >
pykerio
模块提供了一个名为request\u rpc的方法,该方法允许
只需提供以下方法,就可以向Kerio服务器启动直接命令
json数组中的名称及其输入参数。
成功登录后,您可以使用 以下方式:
>>> response = api.request_rpc(method='HardwareInfo.getBoxSerialNumber',
params={})
>>> print(response.result)
{'serialNumber': 'LNKR17123456'}
使用原始json输入参数的更复杂的示例:
>>> ip_address = pykerio.types.IpAddress('8.8.8.8')
>>> print(ip_address)
'8.8.8.8'
0
也可以编写使用pykeriohistogramtype
类的相同示例
像这样:
>>> ip_address = pykerio.types.IpAddress('8.8.8.8')
>>> print(ip_address)
'8.8.8.8'
1
request-rpc方法将自动转换pykerio类型
(从pykerio.structs
,pykerio.lists
,pykerio.enums
和
pykerio.types
)到json原始数据。