- 新增图像生成接口,支持试用、积分和自定义API Key模式 - 实现生成图片结果异步上传至MinIO存储,带重试机制 - 优化积分预扣除和异常退还逻辑,保障用户积分准确 - 添加获取生成历史记录接口,支持时间范围和分页 - 提供本地字典配置接口,支持模型、比例、提示模板和尺寸 - 实现图片批量上传接口,支持S3兼容对象存储 feat(admin): 增加管理员角色管理与权限分配接口 - 实现角色列表查询、角色创建、更新及删除功能 - 增加权限列表查询接口 - 实现用户角色分配接口,便于统一管理用户权限 - 增加系统字典增删查改接口,支持分类过滤和排序 - 权限控制全面覆盖管理接口,保证安全访问 feat(auth): 完善用户登录注册及权限相关接口与页面 - 实现手机号验证码发送及校验功能,保障注册安全 - 支持手机号注册、登录及退出接口,集成日志记录 - 增加修改密码功能,验证原密码后更新 - 提供动态导航菜单接口,基于权限展示不同菜单 - 实现管理界面路由及日志、角色、字典管理页面访问权限控制 - 添加系统日志查询接口,支持关键词和等级筛选 feat(app): 初始化Flask应用并配置蓝图与数据库 - 创建应用程序工厂,加载配置,初始化数据库和Redis客户端 - 注册认证、API及管理员蓝图,整合路由 - 根路由渲染主页模板 - 应用上下文中自动创建数据库表,保证运行环境准备完毕 feat(database): 提供数据库创建与迁移支持脚本 - 新增数据库创建脚本,支持自动检测是否已存在 - 添加数据库表初始化脚本,支持创建和删除所有表 - 实现RBAC权限初始化,包含基础权限和角色创建 - 新增字段手动修复脚本,添加用户API Key和积分字段 - 强制迁移脚本支持清理连接和修复表结构,初始化默认数据及角色分配 feat(config): 新增系统配置参数 - 配置数据库、Redis、Session和MinIO相关参数 - 添加AI接口地址及试用Key配置 - 集成阿里云短信服务配置及开发模式相关参数 feat(extensions): 初始化数据库、Redis和MinIO客户端 - 创建全局SQLAlchemy数据库实例和Redis客户端 - 配置基于boto3的MinIO兼容S3客户端 chore(logs): 添加示例系统日志文件 - 记录用户请求、验证码发送成功与失败的日志信息
268 lines
7.9 KiB
Python
268 lines
7.9 KiB
Python
# This file is dual licensed under the terms of the Apache License, Version
|
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
|
# for complete details.
|
|
|
|
from __future__ import annotations
|
|
|
|
from cryptography.x509 import certificate_transparency, verification
|
|
from cryptography.x509.base import (
|
|
Attribute,
|
|
AttributeNotFound,
|
|
Attributes,
|
|
Certificate,
|
|
CertificateBuilder,
|
|
CertificateRevocationList,
|
|
CertificateRevocationListBuilder,
|
|
CertificateSigningRequest,
|
|
CertificateSigningRequestBuilder,
|
|
InvalidVersion,
|
|
RevokedCertificate,
|
|
RevokedCertificateBuilder,
|
|
Version,
|
|
load_der_x509_certificate,
|
|
load_der_x509_crl,
|
|
load_der_x509_csr,
|
|
load_pem_x509_certificate,
|
|
load_pem_x509_certificates,
|
|
load_pem_x509_crl,
|
|
load_pem_x509_csr,
|
|
random_serial_number,
|
|
)
|
|
from cryptography.x509.extensions import (
|
|
AccessDescription,
|
|
Admission,
|
|
Admissions,
|
|
AuthorityInformationAccess,
|
|
AuthorityKeyIdentifier,
|
|
BasicConstraints,
|
|
CertificateIssuer,
|
|
CertificatePolicies,
|
|
CRLDistributionPoints,
|
|
CRLNumber,
|
|
CRLReason,
|
|
DeltaCRLIndicator,
|
|
DistributionPoint,
|
|
DuplicateExtension,
|
|
ExtendedKeyUsage,
|
|
Extension,
|
|
ExtensionNotFound,
|
|
Extensions,
|
|
ExtensionType,
|
|
FreshestCRL,
|
|
GeneralNames,
|
|
InhibitAnyPolicy,
|
|
InvalidityDate,
|
|
IssuerAlternativeName,
|
|
IssuingDistributionPoint,
|
|
KeyUsage,
|
|
MSCertificateTemplate,
|
|
NameConstraints,
|
|
NamingAuthority,
|
|
NoticeReference,
|
|
OCSPAcceptableResponses,
|
|
OCSPNoCheck,
|
|
OCSPNonce,
|
|
PolicyConstraints,
|
|
PolicyInformation,
|
|
PrecertificateSignedCertificateTimestamps,
|
|
PrecertPoison,
|
|
ProfessionInfo,
|
|
ReasonFlags,
|
|
SignedCertificateTimestamps,
|
|
SubjectAlternativeName,
|
|
SubjectInformationAccess,
|
|
SubjectKeyIdentifier,
|
|
TLSFeature,
|
|
TLSFeatureType,
|
|
UnrecognizedExtension,
|
|
UserNotice,
|
|
)
|
|
from cryptography.x509.general_name import (
|
|
DirectoryName,
|
|
DNSName,
|
|
GeneralName,
|
|
IPAddress,
|
|
OtherName,
|
|
RegisteredID,
|
|
RFC822Name,
|
|
UniformResourceIdentifier,
|
|
UnsupportedGeneralNameType,
|
|
)
|
|
from cryptography.x509.name import (
|
|
Name,
|
|
NameAttribute,
|
|
RelativeDistinguishedName,
|
|
)
|
|
from cryptography.x509.oid import (
|
|
AuthorityInformationAccessOID,
|
|
CertificatePoliciesOID,
|
|
CRLEntryExtensionOID,
|
|
ExtendedKeyUsageOID,
|
|
ExtensionOID,
|
|
NameOID,
|
|
ObjectIdentifier,
|
|
PublicKeyAlgorithmOID,
|
|
SignatureAlgorithmOID,
|
|
)
|
|
|
|
OID_AUTHORITY_INFORMATION_ACCESS = ExtensionOID.AUTHORITY_INFORMATION_ACCESS
|
|
OID_AUTHORITY_KEY_IDENTIFIER = ExtensionOID.AUTHORITY_KEY_IDENTIFIER
|
|
OID_BASIC_CONSTRAINTS = ExtensionOID.BASIC_CONSTRAINTS
|
|
OID_CERTIFICATE_POLICIES = ExtensionOID.CERTIFICATE_POLICIES
|
|
OID_CRL_DISTRIBUTION_POINTS = ExtensionOID.CRL_DISTRIBUTION_POINTS
|
|
OID_EXTENDED_KEY_USAGE = ExtensionOID.EXTENDED_KEY_USAGE
|
|
OID_FRESHEST_CRL = ExtensionOID.FRESHEST_CRL
|
|
OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY
|
|
OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME
|
|
OID_KEY_USAGE = ExtensionOID.KEY_USAGE
|
|
OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS
|
|
OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK
|
|
OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS
|
|
OID_POLICY_MAPPINGS = ExtensionOID.POLICY_MAPPINGS
|
|
OID_SUBJECT_ALTERNATIVE_NAME = ExtensionOID.SUBJECT_ALTERNATIVE_NAME
|
|
OID_SUBJECT_DIRECTORY_ATTRIBUTES = ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES
|
|
OID_SUBJECT_INFORMATION_ACCESS = ExtensionOID.SUBJECT_INFORMATION_ACCESS
|
|
OID_SUBJECT_KEY_IDENTIFIER = ExtensionOID.SUBJECT_KEY_IDENTIFIER
|
|
|
|
OID_DSA_WITH_SHA1 = SignatureAlgorithmOID.DSA_WITH_SHA1
|
|
OID_DSA_WITH_SHA224 = SignatureAlgorithmOID.DSA_WITH_SHA224
|
|
OID_DSA_WITH_SHA256 = SignatureAlgorithmOID.DSA_WITH_SHA256
|
|
OID_ECDSA_WITH_SHA1 = SignatureAlgorithmOID.ECDSA_WITH_SHA1
|
|
OID_ECDSA_WITH_SHA224 = SignatureAlgorithmOID.ECDSA_WITH_SHA224
|
|
OID_ECDSA_WITH_SHA256 = SignatureAlgorithmOID.ECDSA_WITH_SHA256
|
|
OID_ECDSA_WITH_SHA384 = SignatureAlgorithmOID.ECDSA_WITH_SHA384
|
|
OID_ECDSA_WITH_SHA512 = SignatureAlgorithmOID.ECDSA_WITH_SHA512
|
|
OID_RSA_WITH_MD5 = SignatureAlgorithmOID.RSA_WITH_MD5
|
|
OID_RSA_WITH_SHA1 = SignatureAlgorithmOID.RSA_WITH_SHA1
|
|
OID_RSA_WITH_SHA224 = SignatureAlgorithmOID.RSA_WITH_SHA224
|
|
OID_RSA_WITH_SHA256 = SignatureAlgorithmOID.RSA_WITH_SHA256
|
|
OID_RSA_WITH_SHA384 = SignatureAlgorithmOID.RSA_WITH_SHA384
|
|
OID_RSA_WITH_SHA512 = SignatureAlgorithmOID.RSA_WITH_SHA512
|
|
OID_RSASSA_PSS = SignatureAlgorithmOID.RSASSA_PSS
|
|
|
|
OID_COMMON_NAME = NameOID.COMMON_NAME
|
|
OID_COUNTRY_NAME = NameOID.COUNTRY_NAME
|
|
OID_DOMAIN_COMPONENT = NameOID.DOMAIN_COMPONENT
|
|
OID_DN_QUALIFIER = NameOID.DN_QUALIFIER
|
|
OID_EMAIL_ADDRESS = NameOID.EMAIL_ADDRESS
|
|
OID_GENERATION_QUALIFIER = NameOID.GENERATION_QUALIFIER
|
|
OID_GIVEN_NAME = NameOID.GIVEN_NAME
|
|
OID_LOCALITY_NAME = NameOID.LOCALITY_NAME
|
|
OID_ORGANIZATIONAL_UNIT_NAME = NameOID.ORGANIZATIONAL_UNIT_NAME
|
|
OID_ORGANIZATION_NAME = NameOID.ORGANIZATION_NAME
|
|
OID_PSEUDONYM = NameOID.PSEUDONYM
|
|
OID_SERIAL_NUMBER = NameOID.SERIAL_NUMBER
|
|
OID_STATE_OR_PROVINCE_NAME = NameOID.STATE_OR_PROVINCE_NAME
|
|
OID_SURNAME = NameOID.SURNAME
|
|
OID_TITLE = NameOID.TITLE
|
|
|
|
OID_CLIENT_AUTH = ExtendedKeyUsageOID.CLIENT_AUTH
|
|
OID_CODE_SIGNING = ExtendedKeyUsageOID.CODE_SIGNING
|
|
OID_EMAIL_PROTECTION = ExtendedKeyUsageOID.EMAIL_PROTECTION
|
|
OID_OCSP_SIGNING = ExtendedKeyUsageOID.OCSP_SIGNING
|
|
OID_SERVER_AUTH = ExtendedKeyUsageOID.SERVER_AUTH
|
|
OID_TIME_STAMPING = ExtendedKeyUsageOID.TIME_STAMPING
|
|
|
|
OID_ANY_POLICY = CertificatePoliciesOID.ANY_POLICY
|
|
OID_CPS_QUALIFIER = CertificatePoliciesOID.CPS_QUALIFIER
|
|
OID_CPS_USER_NOTICE = CertificatePoliciesOID.CPS_USER_NOTICE
|
|
|
|
OID_CERTIFICATE_ISSUER = CRLEntryExtensionOID.CERTIFICATE_ISSUER
|
|
OID_CRL_REASON = CRLEntryExtensionOID.CRL_REASON
|
|
OID_INVALIDITY_DATE = CRLEntryExtensionOID.INVALIDITY_DATE
|
|
|
|
OID_CA_ISSUERS = AuthorityInformationAccessOID.CA_ISSUERS
|
|
OID_OCSP = AuthorityInformationAccessOID.OCSP
|
|
|
|
__all__ = [
|
|
"OID_CA_ISSUERS",
|
|
"OID_OCSP",
|
|
"AccessDescription",
|
|
"Admission",
|
|
"Admissions",
|
|
"Attribute",
|
|
"AttributeNotFound",
|
|
"Attributes",
|
|
"AuthorityInformationAccess",
|
|
"AuthorityKeyIdentifier",
|
|
"BasicConstraints",
|
|
"CRLDistributionPoints",
|
|
"CRLNumber",
|
|
"CRLReason",
|
|
"Certificate",
|
|
"CertificateBuilder",
|
|
"CertificateIssuer",
|
|
"CertificatePolicies",
|
|
"CertificateRevocationList",
|
|
"CertificateRevocationListBuilder",
|
|
"CertificateSigningRequest",
|
|
"CertificateSigningRequestBuilder",
|
|
"DNSName",
|
|
"DeltaCRLIndicator",
|
|
"DirectoryName",
|
|
"DistributionPoint",
|
|
"DuplicateExtension",
|
|
"ExtendedKeyUsage",
|
|
"Extension",
|
|
"ExtensionNotFound",
|
|
"ExtensionType",
|
|
"Extensions",
|
|
"FreshestCRL",
|
|
"GeneralName",
|
|
"GeneralNames",
|
|
"IPAddress",
|
|
"InhibitAnyPolicy",
|
|
"InvalidVersion",
|
|
"InvalidityDate",
|
|
"IssuerAlternativeName",
|
|
"IssuingDistributionPoint",
|
|
"KeyUsage",
|
|
"MSCertificateTemplate",
|
|
"Name",
|
|
"NameAttribute",
|
|
"NameConstraints",
|
|
"NameOID",
|
|
"NamingAuthority",
|
|
"NoticeReference",
|
|
"OCSPAcceptableResponses",
|
|
"OCSPNoCheck",
|
|
"OCSPNonce",
|
|
"ObjectIdentifier",
|
|
"OtherName",
|
|
"PolicyConstraints",
|
|
"PolicyInformation",
|
|
"PrecertPoison",
|
|
"PrecertificateSignedCertificateTimestamps",
|
|
"ProfessionInfo",
|
|
"PublicKeyAlgorithmOID",
|
|
"RFC822Name",
|
|
"ReasonFlags",
|
|
"RegisteredID",
|
|
"RelativeDistinguishedName",
|
|
"RevokedCertificate",
|
|
"RevokedCertificateBuilder",
|
|
"SignatureAlgorithmOID",
|
|
"SignedCertificateTimestamps",
|
|
"SubjectAlternativeName",
|
|
"SubjectInformationAccess",
|
|
"SubjectKeyIdentifier",
|
|
"TLSFeature",
|
|
"TLSFeatureType",
|
|
"UniformResourceIdentifier",
|
|
"UnrecognizedExtension",
|
|
"UnsupportedGeneralNameType",
|
|
"UserNotice",
|
|
"Version",
|
|
"certificate_transparency",
|
|
"load_der_x509_certificate",
|
|
"load_der_x509_crl",
|
|
"load_der_x509_csr",
|
|
"load_pem_x509_certificate",
|
|
"load_pem_x509_certificates",
|
|
"load_pem_x509_crl",
|
|
"load_pem_x509_csr",
|
|
"random_serial_number",
|
|
"verification",
|
|
"verification",
|
|
]
|