Template
Release v2.6.3: support page with SBP/card/crypto donate placeholders and admin settings.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -103,7 +103,7 @@ else:
|
||||
application_path = os.path.dirname(__file__)
|
||||
|
||||
DATA_FILE = os.path.join(application_path, 'data.json') # legacy JSON; used only for one-shot import / export
|
||||
CURRENT_VERSION = "v2.6.5"
|
||||
CURRENT_VERSION = "v2.6.3"
|
||||
RELEASES_REPO_URL = repo_url()
|
||||
RELEASES_API_LATEST = api_latest_url()
|
||||
BIN_DIR = os.environ.get('TUNNEL_BIN_DIR', os.path.join(application_path, 'bin'))
|
||||
@@ -241,12 +241,14 @@ def get_current_user(request: Request, data: Optional[dict] = None):
|
||||
def tpl(request, template, **kwargs):
|
||||
data = load_data()
|
||||
lang = request.cookies.get('lang', 'en')
|
||||
donate_cfg = (data.get('settings') or {}).get('donate') or {}
|
||||
ctx = {
|
||||
'request': request,
|
||||
'current_user': get_current_user(request, data),
|
||||
'site_settings': data.get('settings', {}).get('appearance', {}),
|
||||
'captcha_settings': data.get('settings', {}).get('captcha', {}),
|
||||
'telegram_settings': data.get('settings', {}).get('telegram', {}),
|
||||
'donate_enabled': bool(donate_cfg.get('enabled', True)),
|
||||
'bot_running': tg_bot.is_running(),
|
||||
'lang': lang,
|
||||
'_': lambda text_id: _t(text_id, lang),
|
||||
@@ -2359,6 +2361,20 @@ class GuestSettings(BaseModel):
|
||||
create_xui_panel_id: str = ''
|
||||
|
||||
|
||||
class DonateMethodSettings(BaseModel):
|
||||
enabled: bool = True
|
||||
title: str = ''
|
||||
details: str = ''
|
||||
|
||||
|
||||
class DonateSettings(BaseModel):
|
||||
enabled: bool = True
|
||||
intro: str = ''
|
||||
sbp: DonateMethodSettings = DonateMethodSettings()
|
||||
card: DonateMethodSettings = DonateMethodSettings()
|
||||
crypto: DonateMethodSettings = DonateMethodSettings()
|
||||
|
||||
|
||||
class UpdateUserRequest(BaseModel):
|
||||
telegramId: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
@@ -2379,6 +2395,7 @@ class SaveSettingsRequest(BaseModel):
|
||||
telegram: TelegramSettings
|
||||
ssl: SSLSettings
|
||||
guest: GuestSettings = GuestSettings()
|
||||
donate: DonateSettings = DonateSettings()
|
||||
|
||||
|
||||
class ToggleUserRequest(BaseModel):
|
||||
@@ -6072,6 +6089,18 @@ async def api_my_connection_config(request: Request, connection_id: str):
|
||||
return JSONResponse({'error': str(e)}, status_code=500)
|
||||
|
||||
|
||||
@app.get('/support', response_class=HTMLResponse, tags=["System Templates"])
|
||||
async def support_page(request: Request):
|
||||
user = get_current_user(request)
|
||||
if not user:
|
||||
return RedirectResponse('/login', status_code=302)
|
||||
data = load_data()
|
||||
donate = dict((data.get('settings') or {}).get('donate') or {})
|
||||
if not donate.get('enabled', True):
|
||||
return RedirectResponse('/my', status_code=302)
|
||||
return tpl(request, 'support.html', donate=donate)
|
||||
|
||||
|
||||
@app.get('/settings', response_class=HTMLResponse, tags=["System Templates"])
|
||||
async def settings_page(request: Request):
|
||||
user = _check_admin(request)
|
||||
@@ -6381,6 +6410,7 @@ async def save_settings(request: Request, payload: SaveSettingsRequest):
|
||||
else:
|
||||
guest['password_hash'] = existing_guest.get('password_hash')
|
||||
data['settings']['guest'] = guest
|
||||
data['settings']['donate'] = payload.donate.dict()
|
||||
|
||||
save_data(data)
|
||||
logger.info("Settings saved (including captcha and telegram)")
|
||||
|
||||
Reference in New Issue
Block a user