<!doctype html><html lang="cn"><head><meta charset="utf-8"><meta content="IE=edge"><meta name="referer" content="never"><meta name="renderer" content="webkit"><title>{{g.title}}</title><link rel="shortcut icon" href="{{g['panel_theme']['logo']['favicon']}}" type="image/x-icon"><link rel="stylesheet" crossorigin href="/static/css/login.min.css?v=1761009159"><script>window.vite_public_title = '{{g.title}}' // 网站标题
			window.vite_public_login_token = '{{data['last_login_token']}}'; // 登录token
			window.vite_public_encryption = '{{session['rsa_public_key']}}'; // rsa加密公钥
			window.vite_public_login_check = '{{session['code']}}' === 'True'; // 是否登录检查
			window.vite_public_hosts_list = JSON.parse('{{data.hosts|safe}}'.replace(/\&\#34;/g, '"')); // cdn主机列表
			window.vite_public_panel_theme = JSON.parse('{{g['panel_theme']}}'.replace(/\&\#39;/g, '"').replace(/\&\#34;/g, '"').replace(/True/g, 'true').replace(/False/g, 'false')); // 网站图标信息

			// 主题预加载脚本 - 避免闪屏
			(function () {
				//  获取系统配置主题
				var getSystemTheme = function () {
					try {
						return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
					} catch (error) {
						return 'light'
					}
					return 'light'
				}

				// 获取本地配置主题
				var getLocalTheme = function () {
					try {
						return window.vite_public_panel_theme.theme.preset || 'light';
					} catch (error) {
						return 'light';
					}
				}

				// 检查主题优先级（本地主题>系统主题，但本地主题为'auto'时，则采用系统主题）
				var setTheme = function () {
					var theme = getLocalTheme()
					if (theme === 'auto') theme = getSystemTheme()
					document.documentElement.setAttribute('class', theme)
				}

				// 添加系统主题变化监听器
				var setupThemeListener = function () {
					try {
						// 检查是否支持 matchMedia
						if (window.matchMedia) {
							var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')

							// 监听系统主题变化
							var handleThemeChange = function (e) {
								// 只有当本地主题设置为 'auto' 时才响应系统主题变化
								var localTheme = getLocalTheme()
								if (localTheme === 'auto') location.reload()
							}
							// 添加监听器（兼容新旧API）
							if (mediaQuery.addEventListener) {
								mediaQuery.addEventListener('change', handleThemeChange)
							} else if (mediaQuery.addListener) {
								// 兼容旧版本浏览器
								mediaQuery.addListener(handleThemeChange)
							}
						}
					} catch (error) {
						console.warn('主题监听器设置失败:', error)
					}
				}

				// 添加基础过渡样式
				var style = document.createElement('style')
				style.textContent = `
					* {
						transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease !important;
					}
					
					/* 防止过渡动画在页面加载时触发 */
					.preload * {
						transition: none !important;
					}
				`
				document.head.appendChild(style)

				// 添加预加载类，防止初始动画
				document.documentElement.classList.add('preload')

				// 页面加载完成后移除预加载类
				window.addEventListener('load', function () {
					setTimeout(function () {
						document.documentElement.classList.remove('preload')
					}, 100)
				})

				// 初始化主题
				setTheme()

				// 设置主题变化监听器
				setupThemeListener()
			})()
				; (function () {
					// 浏览器兼容性检测
					function browserCompatible() {
						// IE浏览器版本检测
						var ieVersion = (function () {
							var userAgent = navigator.userAgent,
								isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1,
								isEdge = userAgent.indexOf('Edge') > -1 && !isLessIE11,
								isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1
							if (isLessIE11) {
								var IEReg = new RegExp('MSIE (\\d+\\.\\d+);')
								IEReg.test(userAgent)
								var IEVersionNum = parseFloat(RegExp['$1'])
								if ([7, 8, 9, 10].indexOf(IEVersionNum) > -1) {
									return IEVersionNum
								} else {
									return 6
								}
							} else if (isEdge) {
								return 'edge'
							} else if (isIE11) {
								return 11
							} else {
								return -1
							}
						})()
						if ((ieVersion != -1 && ieVersion <= 11) || ieVersion === 'edge') location.href = '/tips'

						// 支持Firefox\Chrome\Safari浏览器判断，排除移动设备
						var browserVersion = function (config) {
							var userAgent = navigator.userAgent
							// 判断是否为移动端设备
							if (userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)) return false
							if (type === 'Safari') type = 'Version'
							for (var i = 0; i < config.length; i++) {
								var type = config[i][0]
								var version = config[i][1]
								if (userAgent.indexOf(type) > -1) {
									var reg = new RegExp(type + '/(\\d+\\.\\d+)')
									reg.test(userAgent)
									var versionNum = parseFloat(RegExp['$1'])
									return version > versionNum
								} else {
									return false
								}
							}
						}
						if (
							browserVersion([
								['Chrome', 60],
								['Safari', 11],
								['Firefox', 55],
							])
						) {
							location.href = '/tips'
						}
						if (!location.origin) location.origin = location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '')
					}

					// 禁止后退
					function blockHist() {
						if (window.history && window.history.pushState) {
							window.onpopstate = function () {
								window.history.pushState('forward', null, '')
								window.history.forward(1)
							}
						}
						window.history.pushState('forward', null, '') //在IE中必须得有这两行
						window.history.forward(1)
					}
					browserCompatible()
					blockHist()
				})()</script><script type="module" crossorigin src="/static/js/login.js?v=1761009159"></script><script type="module">import.meta.url;import("_").catch(()=>1);(async function*(){})().next();if(location.protocol!="file:"){window.__vite_is_modern_browser=true}</script><script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script></head><body><script src="/static/js/qrcode.min.js?v=1761009159"></script><script src="/static/js/jsencrypt.min.js?v=1761009159"></script><script src="/static/js/md5.js?v=1761009159"></script><div id="app"><div class="login-bg" id="login-bg"><div class="login-images" id="login-images"></div><div class="login-main" id="login-main" style="display:none"><aside class="login-svg" id="login-svg"><img src="/static/icons/logo-green.svg" alt="logo" id="login-logo"></aside><aside class="cut-login-type account" id="cut-login-type"><svg class="login-type-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="5" height="5"></rect><rect x="3" y="16" width="5" height="5"></rect><rect x="16" y="3" width="5" height="5"></rect><path d="m5 5 0 0"></path><path d="m5 18 0 0"></path><path d="m18 5 0 0"></path><path d="M21 16h-3a2 2 0 0 0-2 2v3"></path><path d="M21 21v.01"></path><path d="M12 7v3a2 2 0 0 1-2 2H7"></path><path d="M3 12h.01"></path><path d="M12 3h.01"></path><path d="M12 16v.01"></path><path d="M16 12h1"></path><path d="M21 12v.01"></path><path d="M12 21v-1"></path></svg><div class="tips"><span class="tips-text">切换扫码登录</span></div></aside><aside class="login-account" id="login-account"><div class="w-full"><div class="login-title"><span class="title-text" id="login-title-text"></span></div><div class="login-form"><div class="login-form-item"><div class="form-group"><input class="login-form-input" name="username" autocomplete="off" autofocus placeholder="账号"><div class="input-action-icon"></div></div></div><div class="login-form-item"><div class="form-group"><input class="login-form-input" name="password" autocomplete="off" type="password" placeholder="密码"><div class="input-action-icon"></div></div></div><div class="login-form-item"><div class="form-group"><div class="login-safe-mode !w-[230px]"></div><div class="loading-icon svgtofont-el-question-filled cursor-pointer !text-warning h-[20px] ml-[15px] text-round"></div></div></div><div class="login-form-item flex login-code-view !hidden"><div class="form-group"><input class="login-form-input !w-[230px] mr-[15px]" name="code" type="code" placeholder="验证码"><div class="input-action-icon"></div></div><div class="cut-login-code"><img title="点击切换验证码" class="w-[100%] h-[40px]"></div></div><div class="login-form-item"><div class="form-group"><button class="login-form-button login-submit">登录</button></div></div><div class="login-form-footer"><div class="flex"><div class="cdn-node">加速节点</div><div class="login-cdn-accelerate"></div></div><span><a class="bt-link noreferrer_tips" href="https://www.bt.cn/new/wechat_customer" target="_blank" rel="noreferrer noopener">无法登录？联系客服</a><div class="el-divider el-divider--vertical"></div><a class="bt-link" href="https://www.bt.cn/bbs/thread-1172-1-1.html" target="_blank" rel="noreferrer noopener">忘记密码</a></span></div><div class="login-form google-verify-view !hidden"><div class="login-google-verify"><div class="close-popup-btn -right-[15px] -top-[15px]"></div><div class="login-title !mt-0">动态口令认证</div><div class="login-form-item"><div class="form-group"><input class="login-form-input" name="vcode" placeholder="请输入动态口令"><div class="input-action-icon"></div></div></div><div class="login-form-item"><button class="login-form-button login-google-verify-submit">验证并登录</button></div><ul class="mt-4x leading-8 text-small"><li>请使用宝塔APP或谷歌认证器获取验证代码</li><li><a href="https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=105839" target="_blank" rel="noreferrer noopener" class="bt-link"><span class="el-link--inner">无法验证，点击帮助</span></a></li></ul></div><div class="google-verify-shade"></div></div></div></div></aside><aside class="login-scan !hidden" id="login-scan"><div class="login-scan-view"><div class="login-scan-success"><div class="login-title">堡塔APP扫码登录</div><div id="canvas" class="login-scan-canvas"></div><div class=""><span><a href="https://www.bt.cn/bbs/thread-47408-1-1.html" target="_blank" title="点击查看链接信息" class="bt-link text-middle login-scan-tips">关于堡塔APP</a></span></div></div><div class="login-scan-error !hidden"><span class="title">当前面板未绑定扫描登录，请按照以下顺序检查：</span> <span class="line">1、检查堡塔APP插件(面板插件)是否安装，是否绑定</span> <span class="line">2、打开<a class="bt-link text-middle" rel="noreferrer noopener" href="https://www.bt.cn/bbs/thread-47408-1-1.html">堡塔APP(手机APP)</a>查看绑定情况</span> <span class="line">3、如果以上操作均无法解决问题，请<a target="_block" rel="noreferrer noopener" class="bt-link text-middle" href="https://www.bt.cn/new/wechat_customer">联系客服</a></span></div></div></aside></div></div></div><svg id="__svg__icons__dom__" xmlns="http://www.w3.org/2000/svg" xmlns:link="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0"><symbol fill="none" viewBox="0 0 613 657" id="icon-tools-logo"><path id="icon-tools-logo_logo-white 1" d="M0 0h613v657H0z"></path><defs><style>#icon-tools-logo .logo-left-color{fill:currentColor;opacity:.7}#icon-tools-logo .logo-right-color{fill:currentColor}</style></defs><g id="icon-tools-logo_左侧内容"><path class="logo-left-color" d="M304.858 203.122c1.642 0 2.737 1.643 2.189 2.738V657l-1.642-.547-39.407-13.141c-44.88-16.424-87.571-36.682-124.789-67.342-20.798-16.973-38.86-36.135-51.996-59.678-3.83-6.57-5.473-14.235-5.473-21.9.548-73.912.548-147.277 1.095-220.642 0-4.38 1.095-6.023 5.473-7.118 13.136-3.285 25.724-7.117 38.86-10.95 2.189 2.19 1.642 4.38 1.642 6.57v21.9c0 5.475.547 6.023 6.02 4.928 2.19-.547 4.379-.547 6.021 0l26.271-6.57c3.284-.548 3.284-2.19 3.284-4.928v-31.207c0-2.19 0-4.38 2.737-4.928 13.683-3.832 27.366-7.665 41.049-12.045 2.189 2.19 1.642 4.928 1.642 7.665 0 9.308-.547 18.615.547 27.923 3.284 2.737 6.021-.548 8.757-.548 1.642-.547 2.19 0 4.926 0 7.663-2.19 15.873-4.38 24.082-6.57 3.832-1.095 5.474-2.19 5.474-6.57-.548-10.95 0-21.352 0-31.755 0-2.19 0-3.832 2.736-4.38 12.041-4.38 26.272-8.212 40.502-12.045ZM307.047 101.287v57.488c0 3.285 0 5.475-3.284 6.57-23.534 6.57-46.522 13.688-70.057 20.805-61.847 17.52-124.242 35.04-186.636 53.107-2.19.548-4.379 2.191-6.568-1.095C27.366 221.19 14.23 204.217.547 186.15l20.799-2.19c1.094 0 2.189 0 3.284 1.095 1.094.547 1.642 1.095 2.736 2.19 10.4 10.95 21.893 10.95 36.67 7.117 73.889-21.9 147.777-41.61 221.666-62.415 3.284-1.095 6.02-2.189 6.568-6.57.547-4.38 2.736-8.76 3.284-13.687.547-7.665 4.925-9.855 11.493-10.403ZM307.047.547V81.03c0 2.19 0 4.38-1.094 6.57-35.576 9.855-71.699 20.258-107.823 30.113-37.765 10.95-76.077 21.352-114.39 32.302-4.926 1.643-8.21.548-11.494-3.285-13.135-14.235-26.818-28.47-39.407-42.158 4.379-.547 10.947-1.642 17.514-2.19 2.737-.547 4.38 1.095 6.021 2.738 10.946 10.95 22.44 10.402 36.67 6.023 62.943-19.71 125.885-38.326 188.826-56.94 4.379-1.096 6.021-3.286 6.568-7.666 2.19-13.14 4.926-25.732 7.116-38.325 0-6.57 2.189-9.307 8.209-8.212 1.642.547 2.19.547 3.284.547ZM485.474 255.135v2.19a181.501 181.501 0 0 1 0 34.493c-4.926-.548-8.757-2.19-13.683-3.285v-25.185c0-4.381 1.095-6.023 5.473-6.571 2.737-.547 5.473-1.642 8.21-1.642Zm-92.497 10.95c-2.737-.547-4.926-1.095-7.663-2.19V236.52c0-4.38 1.095-5.475 4.926-6.023 2.737 0 5.473-2.19 8.757-1.642-2.189 4.38-1.094 9.855-1.094 14.235v20.805c.547 3.285.547 3.832-4.926 2.19Z"></path></g><g id="icon-tools-logo_右侧内容"><path class="logo-right-color" d="M307.047 655.357c-1.094-2.737-1.642-6.022-1.642-9.307V217.358c0-4.38 0-8.76-.547-13.688 0-.547 0-1.095 1.095-1.643 1.094 0 2.736 0 4.378.548 13.683 3.833 26.819 7.665 40.502 10.95 3.284 1.095 4.379 2.19 4.379 5.475v31.207c0 4.38 1.094 6.023 5.473 6.57 8.757 1.643 16.967 4.928 25.724 6.023h.547c3.284-1.095 5.473.548 7.663 1.643h.547c6.021 0 1.095-2.738 2.189-3.833-.547-8.76 0-17.52 0-26.828 0-2.19 0-4.38 2.19-6.022h1.094c13.683 3.832 27.366 7.665 40.502 11.497 2.737.548 2.737 2.738 2.737 4.928v30.66c0 3.285.547 4.927 4.378 5.475 8.21 1.642 16.42 4.38 24.082 6.57h1.095c3.831-1.095 7.115 1.642 10.946 1.642.548 0 1.095-.547 1.095-1.094 1.095-4.381 0-9.308.547-14.236.548-5.475 0-11.497 0-17.52v-1.095c0-2.19.548-1.095 2.19-1.095 13.135 3.833 26.818 7.665 39.954 11.498 3.284 1.095 2.737 3.285 2.737 5.475 0 33.397.547 67.342.547 100.74 0 41.062 0 82.672.547 123.735 0 4.927-1.094 9.855-3.284 14.235-10.946 21.9-26.271 39.42-44.333 55.845-32.839 29.565-71.151 49.822-111.653 66.795-18.609 7.665-38.313 13.14-57.469 20.805-1.642.547-2.189 1.095-2.189 1.095h-.547c-1.095.547-2.737 1.095-4.379 1.095m-1.095-553.523c6.568.548 10.947 3.285 12.041 10.403 1.095 6.022 1.642 14.235 5.474 17.52 3.831 3.832 11.493 4.38 17.514 5.475 74.436 20.805 148.324 41.61 222.76 62.415 3.831 1.095 6.568 1.095 9.852-1.643 0 0 .547-.547 1.094-.547 10.399-10.403 22.44-13.688 36.671-7.665.547 1.095-1.095 2.19-2.19 3.285-12.041 15.33-23.534 30.66-35.028 46.537-2.19 3.285-3.831 3.833-7.663 2.738-84.835-24.638-170.217-49.275-255.052-73.913-2.736-1.095-5.473-1.095-8.209-1.095 2.189-6.57 1.642-13.687 1.642-20.257v-35.588c-.548-2.737-1.095-5.475 1.094-7.665ZM307.047.547C316.899 0 316.899 0 319.088 9.855c2.19 12.593 4.926 25.185 7.116 37.778 0 2.737 2.189 4.927 4.378 5.474l206.888 62.415c2.189 1.095 4.378.548 6.02-1.095 0 0 .547-.547 1.095-.547 10.946-9.855 23.535-15.33 38.312-7.665 0 1.095-1.642 1.642-2.736 2.737-13.136 13.14-26.819 25.733-39.407 38.873-3.284 3.285-6.021 3.832-10.4 2.737-72.793-20.805-146.134-41.062-218.928-61.32-1.642-.547-3.831-1.095-5.473-1.095-.548-1.642-1.095-3.832-.548-5.475V9.308c0-3.285-.547-6.023 1.642-8.76ZM142.304 288.532c-3.284 1.096-7.116 2.191-10.947 3.285-3.284.548-2.189-2.19-2.737-4.38v-32.302h.548c13.136 2.19 13.136 2.19 13.136 14.782-.548 6.023 0 12.593 0 18.615ZM226.044 264.99c1.642 0 3.284-.547 4.378-1.095-3.284 0-2.189-2.19-2.189-4.38v-24.637c0-1.643.547-3.833-2.189-4.38-3.832-.548-7.115-2.738-10.947-2.191v32.303c0 .548 0 5.475 1.095 6.023h2.189c.548 0 1.095 0 2.19-.548"></path></g></symbol></svg><script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script nomodule crossorigin id="vite-legacy-polyfill" src="/static/js/polyfills-legacy.js?v=1761009159"></script><script nomodule crossorigin id="vite-legacy-entry" data-src="/static/js/login-legacy.js?v=1761009159">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script><script src="/static/js/load-file.min.js?v=1761009159"></script></head></html>