|
|
from flask import Flask, jsonify
|
|
|
from flask_cors import CORS
|
|
|
from config import Config
|
|
|
from models import db
|
|
|
import os
|
|
|
|
|
|
def create_app():
|
|
|
"""创建并配置Flask应用"""
|
|
|
app = Flask(__name__)
|
|
|
app.config.from_object(Config)
|
|
|
|
|
|
# 启用CORS,允许前端跨域访问
|
|
|
CORS(app, resources={r"/api/*": {"origins": "*"}})
|
|
|
|
|
|
# 初始化数据库
|
|
|
db.init_app(app)
|
|
|
|
|
|
# 创建必要的目录
|
|
|
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
|
|
|
os.makedirs(app.config['CERTIFICATE_FOLDER'], exist_ok=True)
|
|
|
os.makedirs('ca', exist_ok=True)
|
|
|
|
|
|
# 注册蓝图
|
|
|
from routes.auth import auth_bp
|
|
|
from routes.certificate import cert_bp
|
|
|
from routes.admin import admin_bp
|
|
|
|
|
|
app.register_blueprint(auth_bp, url_prefix='/api/auth')
|
|
|
app.register_blueprint(cert_bp, url_prefix='/api/certificate')
|
|
|
app.register_blueprint(admin_bp, url_prefix='/api/admin')
|
|
|
|
|
|
# 添加测试路由
|
|
|
@app.route('/')
|
|
|
def index():
|
|
|
return jsonify({
|
|
|
'status': 'ok',
|
|
|
'message': 'CA System API is running',
|
|
|
'version': '1.0.0'
|
|
|
})
|
|
|
|
|
|
@app.route('/api')
|
|
|
def api_info():
|
|
|
return jsonify({
|
|
|
'status': 'ok',
|
|
|
'endpoints': {
|
|
|
'auth': '/api/auth/register, /api/auth/login',
|
|
|
'certificate': '/api/certificate/*',
|
|
|
'admin': '/api/admin/*'
|
|
|
}
|
|
|
})
|
|
|
|
|
|
# 初始化数据库表和CA证书
|
|
|
with app.app_context():
|
|
|
db.create_all()
|
|
|
# 初始化CA根证书(如果不存在)
|
|
|
from utils.cert_utils import init_ca
|
|
|
try:
|
|
|
init_ca()
|
|
|
except Exception as e:
|
|
|
print(f'警告: CA证书初始化失败: {e}')
|
|
|
|
|
|
return app
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
app = create_app()
|
|
|
app.run(debug=True, host='0.0.0.0', port=5000)
|
|
|
|