REMOVE LDAP

This commit is contained in:
beabigegg
2025-09-25 08:44:44 +08:00
commit 333a640a3b
53 changed files with 4231 additions and 0 deletions

66
cdn_utils.py Normal file
View File

@@ -0,0 +1,66 @@
"""
CDN 工具函數
用於靜態資源加速
"""
from flask import current_app, url_for as flask_url_for
import os
def cdn_url_for(endpoint, **values):
"""
CDN化的 url_for 函數
自動將靜態資源指向CDN域名
"""
if endpoint == 'static':
cdn_domain = current_app.config.get('CDN_DOMAIN', '').strip()
if cdn_domain:
# 確保CDN域名格式正確
if not cdn_domain.startswith(('http://', 'https://')):
cdn_domain = f"https://{cdn_domain}"
filename = values.get('filename', '')
if filename:
# 移除開頭的斜線
filename = filename.lstrip('/')
return f"{cdn_domain.rstrip('/')}/static/{filename}"
# 非靜態資源或未配置CDN時使用原始url_for
return flask_url_for(endpoint, **values)
def get_static_url(filename):
"""
獲取靜態資源URL
自動判斷使用CDN還是本地路徑
"""
return cdn_url_for('static', filename=filename)
def is_cdn_enabled():
"""檢查是否啟用CDN"""
return bool(current_app.config.get('CDN_DOMAIN', '').strip())
class CDNHelper:
"""CDN輔助類"""
def __init__(self, app=None):
if app:
self.init_app(app)
def init_app(self, app):
"""初始化應用"""
app.jinja_env.globals['cdn_url_for'] = cdn_url_for
app.jinja_env.globals['get_static_url'] = get_static_url
app.jinja_env.globals['is_cdn_enabled'] = is_cdn_enabled
# 添加模板過濾器
app.jinja_env.filters['cdn'] = self._cdn_filter
def _cdn_filter(self, filename):
"""Jinja2過濾器將靜態檔案路徑轉換為CDN URL"""
if filename.startswith('/static/'):
filename = filename[8:] # 移除 '/static/' 前綴
elif filename.startswith('static/'):
filename = filename[7:] # 移除 'static/' 前綴
return get_static_url(filename)
# 全局CDN輔助實例
cdn_helper = CDNHelper()