青龙面板教程(三):OpenApi

一.前言

青龙面板为用户提供了OpenApi,可以创建一个应用授予部分权限,提供给第三方工具来帮我们管理面板,这样就具有较高的安全性,而且不影响主账号的操作。

二.正文

1.创建应用

(1) 登录面板-系统设置-应用设置-创建应用,命名和选择权限,一般选环境变量即可

(2) 获取Client ID和Client Secret

  

2.接口开发

青龙面板OpenApi和正常Api请求基本一致,只是/api/xxx改成/open/xxx。

青龙面板OpenApi最常用的场景也就是环境变量的管理,因此针对环境变量接口使用Python语言做了一个封装类:

import requests
from json import dumps as jsonDumps

class QL:
    def __init__(self, address: str, id: str, secret: str) -> None:
        """
        初始化
        """
        self.address = address
        self.id = id
        self.secret = secret
        self.valid = True
        self.login()

    def log(self, content: str) -> None:
        """
        日志
        """
        print(content)

    def login(self) -> None:
        """
        登录
        """
        url = f"{self.address}/open/auth/token?client_id={self.id}&client_secret={self.secret}"
        try:
            rjson = requests.get(url).json()
            if(rjson['code'] == 200):
                self.auth = f"{rjson['data']['token_type']} {rjson['data']['token']}"
            else:
                self.log(f"登录失败:{rjson['message']}")
        except Exception as e:
            self.valid = False
            self.log(f"登录失败:{str(e)}")

    def getEnvs(self) -> list:
        """
        获取环境变量
        """
        url = f"{self.address}/open/envs?searchValue="
        headers = {"Authorization": self.auth}
        try:
            rjson = requests.get(url, headers=headers).json()
            if(rjson['code'] == 200):
                return rjson['data']
            else:
                self.log(f"获取环境变量失败:{rjson['message']}")
        except Exception as e:
            self.log(f"获取环境变量失败:{str(e)}")

    def deleteEnvs(self, ids: list) -> bool:
        """
        删除环境变量
        """
        url = f"{self.address}/open/envs"
        headers = {"Authorization": self.auth,"content-type": "application/json"}
        try:
            rjson = requests.delete(url, headers=headers, data=jsonDumps(ids)).json()
            if(rjson['code'] == 200):
                self.log(f"删除环境变量成功:{len(ids)}")
                return True
            else:
                self.log(f"删除环境变量失败:{rjson['message']}")
                return False
        except Exception as e:
            self.log(f"删除环境变量失败:{str(e)}")
            return False

    def addEnvs(self, envs: list) -> bool:
        """
        新建环境变量
        """
        url = f"{self.address}/open/envs"
        headers = {"Authorization": self.auth,"content-type": "application/json"}
        try:
            rjson = requests.post(url, headers=headers, data=jsonDumps(envs)).json()
            if(rjson['code'] == 200):
                self.log(f"新建环境变量成功:{len(envs)}")
                return True
            else:
                self.log(f"新建环境变量失败:{rjson['message']}")
                return False
        except Exception as e:
            self.log(f"新建环境变量失败:{str(e)}")
            return False

    def updateEnv(self, env: dict) -> bool:
        """
        更新环境变量
        """
        url = f"{self.address}/open/envs"
        headers = {"Authorization": self.auth,"content-type": "application/json"}
        try:
            rjson = requests.put(url, headers=headers, data=jsonDumps(env)).json()
            if(rjson['code'] == 200):
                self.log(f"更新环境变量成功")
                return True
            else:
                self.log(f"更新环境变量失败:{rjson['message']}")
                return False
        except Exception as e:
            self.log(f"更新环境变量失败:{str(e)}")
            return False


if __name__ == "__main__":
    address = "http://127.0.0.1:5700"
    client_id = "client_id"
    client_secret = "client_secret"

    ql = QL(address, client_id, client_secret)

    envs = ql.getEnvs()
    #print(envs)

    envs = [{"name":"test","value":"test"}]
    result = ql.deleteEnvs(envs)

三.结语

OpenApi教程到此结束了,接下来会出一篇利用OpenApi开发线报监控系统的教程。

java.net.UnknownHostException异常是Java编程中经常遇到的网络错误之一,该异常在建立网络连接时通常发生,原因是程序无法解析所查询的主机名,即无法找到该主机名对应的IP地址。对于出现java.net.UnknownHostException异常,我们一般需要检查其可能的原因和解决方案。 在本问题中,出现了java.net.UnknownHostException: openapi.alipay.com异常,这是因为程序无法解析openapi.alipay.com这个主机名。针对这个问题,我们需要排查如下几个可能的原因: 1. DNS解析问题:程序可能没有正确配置或无法访问DNS服务器,导致无法解析域名为IP地址,需要确认DNS解析是否正常。 2. 网络连接问题:可能存在网络连接问题,比如代理服务器配置不正确、网络不稳定等问题,需要确认网络连接是否正常。 3. 安全相关问题:如果运行程序需要进行安全认证,可能是证书相关问题导致无法建立连接,需要检查证书是否正确。 针对以上可能的原因,我们可以尝试相应的解决方案: 1. DNS解析问题可以尝试更换DNS服务器、在hosts文件中手动添加IP地址等方式解决。 2. 网络连接问题可以尝试更换网络环境,检查代理服务器等。 3. 安全相关问题需要确认证书的正确性,可以参考相应的API文档进行调试和排查。 总之,出现java.net.UnknownHostException异常,需要认真分析可能出现的原因和解决方案,通过正确的调试和排查,才能最终解决问题。针对本问题,需要检查网络连接、DNS解析等方面,如果还不能解决问题,可以查阅相关API文档进行更深入的调试和排查。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发大观园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值