222 lines
5.2 KiB
Python
222 lines
5.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
@File : deploy_cert_api.py
|
|
@Date : 2024-03-31
|
|
"""
|
|
|
|
from flask import g, request
|
|
|
|
from domain_admin.enums.role_enum import RoleEnum
|
|
from domain_admin.model.deploy_cert_model import DeployCertModel
|
|
from domain_admin.model.host_model import HostModel
|
|
from domain_admin.service import deploy_cert_service, auth_service
|
|
from domain_admin.utils.flask_ext.app_exception import DataNotFoundAppException
|
|
from domain_admin.utils.open_api import aliyun_oss_api
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def get_deploy_list_by_cert_id():
|
|
"""
|
|
获取列表
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
cert_id = request.json['cert_id']
|
|
page = request.json.get('page', 1)
|
|
size = request.json.get('size', 10)
|
|
|
|
query = DeployCertModel.select().where(
|
|
DeployCertModel.cert_id == cert_id,
|
|
DeployCertModel.user_id == current_user_id,
|
|
)
|
|
|
|
total = query.count()
|
|
lst = []
|
|
|
|
if total > 0:
|
|
rows = query.order_by(
|
|
DeployCertModel.id,
|
|
).paginate(page, size)
|
|
|
|
lst = [row.to_dict() for row in rows]
|
|
|
|
# deploy_host
|
|
deploy_cert_service.load_cert_deploy_host(lst)
|
|
|
|
return {
|
|
"list": lst,
|
|
"total": total
|
|
}
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def add_deploy_cert():
|
|
"""
|
|
添加详情
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
cert_id = request.json['cert_id']
|
|
deploy_host_id = request.json['deploy_host_id']
|
|
deploy_key_file = request.json['deploy_key_file']
|
|
deploy_fullchain_file = request.json['deploy_fullchain_file']
|
|
deploy_reloadcmd = request.json['deploy_reloadcmd']
|
|
|
|
data = {
|
|
'user_id': current_user_id,
|
|
'cert_id': cert_id,
|
|
'deploy_host_id': deploy_host_id,
|
|
'deploy_key_file': deploy_key_file,
|
|
'deploy_fullchain_file': deploy_fullchain_file,
|
|
'deploy_reloadcmd': deploy_reloadcmd,
|
|
}
|
|
|
|
DeployCertModel.create(**data)
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def update_deploy_cert_by_id():
|
|
"""
|
|
更新详情
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
deploy_cert_id = request.json['deploy_cert_id']
|
|
deploy_host_id = request.json['deploy_host_id']
|
|
deploy_key_file = request.json['deploy_key_file']
|
|
deploy_fullchain_file = request.json['deploy_fullchain_file']
|
|
deploy_reloadcmd = request.json['deploy_reloadcmd']
|
|
|
|
# check data
|
|
deploy_cert_row = DeployCertModel.select().where(
|
|
DeployCertModel.id == deploy_cert_id,
|
|
DeployCertModel.user_id == current_user_id
|
|
).first()
|
|
|
|
if not deploy_cert_row:
|
|
raise DataNotFoundAppException()
|
|
|
|
data = {
|
|
'deploy_host_id': deploy_host_id,
|
|
'deploy_key_file': deploy_key_file,
|
|
'deploy_fullchain_file': deploy_fullchain_file,
|
|
'deploy_reloadcmd': deploy_reloadcmd,
|
|
}
|
|
|
|
DeployCertModel.update(data).where(
|
|
DeployCertModel.id == deploy_cert_row.id
|
|
).execute()
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def delete_by_deploy_cert_id():
|
|
"""
|
|
删除详情
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
deploy_cert_id = request.json['deploy_cert_id']
|
|
|
|
# check data
|
|
deploy_cert_row = DeployCertModel.select().where(
|
|
DeployCertModel.id == deploy_cert_id,
|
|
DeployCertModel.user_id == current_user_id
|
|
).first()
|
|
|
|
if not deploy_cert_row:
|
|
raise DataNotFoundAppException()
|
|
|
|
DeployCertModel.delete_by_id(deploy_cert_id)
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def delete_by_deploy_cert_ids():
|
|
"""
|
|
批量删除详情
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
deploy_cert_ids = request.json['deploy_cert_ids']
|
|
|
|
DeployCertModel.delete().where(
|
|
DeployCertModel.id.in_(deploy_cert_ids),
|
|
DeployCertModel.user_id == current_user_id
|
|
).execute()
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def get_deploy_cert_by_id():
|
|
"""
|
|
获取详情
|
|
:return:
|
|
@since v1.6.20
|
|
"""
|
|
|
|
current_user_id = g.user_id
|
|
|
|
deploy_cert_id = request.json['deploy_cert_id']
|
|
|
|
# check data
|
|
deploy_cert_row = DeployCertModel.select().where(
|
|
DeployCertModel.id == deploy_cert_id,
|
|
DeployCertModel.user_id == current_user_id
|
|
).first()
|
|
|
|
if not deploy_cert_row:
|
|
raise DataNotFoundAppException()
|
|
|
|
deploy_cert_dict = deploy_cert_row.to_dict()
|
|
|
|
deploy_cert_dict['deploy_host'] = HostModel.get_by_id(deploy_cert_dict['deploy_host_id'])
|
|
|
|
return deploy_cert_dict
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def handle_deploy_cert():
|
|
"""
|
|
部署证书
|
|
@since v1.6.20
|
|
:return:
|
|
"""
|
|
current_user_id = g.user_id
|
|
|
|
deploy_cert_id = request.json['deploy_cert_id']
|
|
|
|
# check data
|
|
deploy_cert_row = DeployCertModel.select().where(
|
|
DeployCertModel.id == deploy_cert_id,
|
|
DeployCertModel.user_id == current_user_id
|
|
).first()
|
|
|
|
if not deploy_cert_row:
|
|
raise DataNotFoundAppException()
|
|
|
|
err = deploy_cert_service.handle_deploy_cert(deploy_cert_row)
|
|
if err:
|
|
raise err
|
|
|
|
|
|
@auth_service.permission(role=RoleEnum.USER)
|
|
def get_aliyun_endpoint_options():
|
|
"""
|
|
阿里云endpoint
|
|
:return:
|
|
"""
|
|
return aliyun_oss_api.ENDPOINT_OPTIONS
|