openbluapi的官方python3包装器

openblu的Python项目详细描述


OpenBlu Python包装

围绕openbluapi的官方Python包装器

概述

这个包装器可用于从openbluapi获取服务器并检索它们的OpenVPN配置。在

为了简化操作,库从API中抽象出三个对象中的JSON响应:

  • Server->;包含来自服务器的更详细信息,如OpenBlu's Documentation中所述
  • ServerListing->;包含来自服务器的元数据,如ping、国家/地区和位置
  • OpenVPN->;包含在Server对象中,存储服务器的OpenVPN配置

可以打印ServerListingServer对象,以获得服务器信息的概述。在

安装

要安装这个包装器,只需使用git clone克隆这个repo,然后运行python3 setup.py install

使用

获取多个服务器

要获取多个服务器,而不使用它们的OpenVPN配置,可以使用openblu.OpenBluAPI类的list_servers()方法,如下所示

fromopenbluimportOpenBluAPIapi=OpenBluAPI('access_key')# Get your access key at openblu.intellivoid.netservers=api.list_servers(filter_by=("germany","country"))

下面是Sphinx格式的list_servers方法的完整文档

^{pr2}$

获取单个服务器

如OpenBlu文档中所述,服务器可以通过一个唯一的ID来标识。这个ID可以用于从OpenBlu API获取包含OpenVPN服务器配置的更详细的服务器对象,如下所示。 此服务器对象还包含服务器的IP地址

fromopenbluimportOpenBluAPIapi=OpenBluAPI('access_key')# Get your access key at openblu.intellivoid.netservers=api.list_servers(filter_by=("germany","country"))server=servers[0]# Take the first entrysrv=api.get_server(server.id)# Retrieve the server's configuration

下面是Sphinx格式的get_server方法的完整文档


Fetches a single OpenVPN server from the OpenBlu API, given its unique ID

:param uuid: The unique ID of the desired server
:type uuid: string
:param verbose: If ``True``, make output verbose, default to ``False``
:type verbose: bool, optional
:returns: A class:Server object
:rtype: class: Server
:raises OpenBluError: An proper subclass of OpenBluError is raised if something goes wrong. If the error cannot be determined, a generic OpenBluError is raised

有关更多示例和更深入的描述,请查看此repo中的examples.py文件

对象概述

下面是一些示例对象,可以让您直接开始

Note:打印出所有对象时,显示对象本身的所有信息(包括None值等)

服务器列表

当打印出来时,ServerListing对象应该如下所示,尽管相应的参数可能不同。在

ServerListing(
id=dbd24ff8e4802f22,
host_name=vpn774575625,
country=Germany,
country_short=DE,
score=366198,
ping=28,
sessions=66,
total_sessions=30926,
last_updated=1576539451,
created=1576529629)

服务器

server对象具有与ServerListing相似的输出,但是(当然)它包含关于单个服务器的不同且更具描述性的信息。在

Server(
id=dbd24ff8e4802f22,
host_name=vpn774575625,
country=Germany,
country_short=DE,
score=366198,
ping=28,
sessions=66,
total_sessions=30926,
ip_address=78.54.226.91,
openvpn=<OpenVPN object at 0x7b2b706f10>,
last_updated=1576539451,
created=1576529629)

OpenVPN对象

OpenVPN对象的输出要少得多,因为打印对象的所有参数实际上需要几页的输出,它们的属性仍然可以通过点表示法和dict-like访问来访问。在

为了完整起见,这里列出了对象的所有参数;要获得有关其含义的详细信息,请参阅OpenBlu's official docs

- parameters
- certificate_authority
- certificate_authority_b64
- certificate
- certificate_b64
- key
- key_b64
- ovpn_configuration

例外情况

包装器实现了3个异常:

  • OpenBluError->;所有异常的泛型父类,当API返回401和404以外的错误时也会引发
  • ServerNotFound->;向API提供无效的服务器ID时
  • UnauthorizedAccess->;向API提供无效的访问密钥时

其他错误,如JSON解码错误或HTTP失败,不会被捕获,必须由最终用户自己处理。在

最后,但并非最不重要的是

所有objects对象都支持dict-like访问和点标记,这意味着执行server["id"]或{}会产生相同的结果。在

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

推荐PyPI第三方库


热门话题
Android中Axis2 web服务的java解析响应   java读取Dockerfile命令时遇到问题:是否可以将cd刻录到jar文件中?那么tarcf是做什么的呢?   java如何防止gcmTaskService periodicTask在上一个任务尚未完成时再次运行?   jquery希望使用Java生成自动登录程序   在Hibernate中检索用BigInteger映射的属性时出现java问题   与错误用户连接时发生java错误   java Hibernate+c3p0池+ehcache失败启动   JAVAlang.ClassNotFoundException:org。mysql。JDBC无法解决,添加了mysql连接器   java如何在其键包含JSTL中的点时访问映射值?   packageprivate类中的Java方法可访问性?   java如何将文件转换为StorageObject(谷歌API)   java apache commons httpclient 4.23表单登录问题不同请求中使用的不同会话cookie   所有组件的java一个侦听器instance或每个组件的一个实例   重新启动应用程序后,不会保存ListView中的java更新   java如何修复libgdx中的屏幕无渲染   java在使用mongotemplate时遇到ClassNotFound异常