Spaces:
Running
Running
Update index.html
Browse files- index.html +17 -17
index.html
CHANGED
|
@@ -87,8 +87,7 @@
|
|
| 87 |
font-weight: 500;
|
| 88 |
}
|
| 89 |
|
| 90 |
-
input[type="text"],
|
| 91 |
-
input[type="password"] {
|
| 92 |
width: 100%;
|
| 93 |
padding: 0.8rem 1rem;
|
| 94 |
border: 1px solid var(--border-color);
|
|
@@ -99,8 +98,7 @@
|
|
| 99 |
transition: all 0.3s ease;
|
| 100 |
}
|
| 101 |
|
| 102 |
-
input[type="text"]:focus,
|
| 103 |
-
input[type="password"]:focus {
|
| 104 |
outline: none;
|
| 105 |
border-color: var(--accent-color);
|
| 106 |
box-shadow: 0 0 0 3px rgba(0, 170, 255, 0.1);
|
|
@@ -271,7 +269,6 @@
|
|
| 271 |
opacity: 0;
|
| 272 |
transform: translateY(10px);
|
| 273 |
}
|
| 274 |
-
|
| 275 |
to {
|
| 276 |
opacity: 1;
|
| 277 |
transform: translateY(0);
|
|
@@ -349,18 +346,18 @@
|
|
| 349 |
<div class="login-card">
|
| 350 |
<h1 class="login-title">LLM+ 系統</h1>
|
| 351 |
<p class="login-subtitle">請輸入您的登入資訊</p>
|
| 352 |
-
|
| 353 |
<form id="loginForm">
|
| 354 |
<div class="form-group">
|
| 355 |
<label for="username">帳號</label>
|
| 356 |
<input type="text" id="username" name="username" required>
|
| 357 |
</div>
|
| 358 |
-
|
| 359 |
<div class="form-group">
|
| 360 |
<label for="password">密碼</label>
|
| 361 |
<input type="password" id="password" name="password" required>
|
| 362 |
</div>
|
| 363 |
-
|
| 364 |
<div class="form-group">
|
| 365 |
<label>驗證碼</label>
|
| 366 |
<div class="captcha-container">
|
|
@@ -368,7 +365,7 @@
|
|
| 368 |
<input type="text" class="captcha-input" id="captchaInput" placeholder="請輸入驗證碼" required>
|
| 369 |
</div>
|
| 370 |
</div>
|
| 371 |
-
|
| 372 |
<button type="submit" class="login-button">登入系統</button>
|
| 373 |
<div id="errorMessage" class="error-message"></div>
|
| 374 |
</form>
|
|
@@ -381,7 +378,7 @@
|
|
| 381 |
<button class="tab-button" onclick="openTab(event, 'iframe01')">ESG爬蟲</button>
|
| 382 |
<button class="tab-button" onclick="openTab(event, 'iframe02')">多模態API 應用</button>
|
| 383 |
<button class="tab-button" onclick="openTab(event, 'iframe03')">Grop+Linebot+Webcam</button>
|
| 384 |
-
|
| 385 |
<div class="logout-section">
|
| 386 |
<button class="logout-button" onclick="logout()">登出系統</button>
|
| 387 |
</div>
|
|
@@ -398,7 +395,7 @@
|
|
| 398 |
<div id="iframe02" class="tab-content">
|
| 399 |
<iframe src="https://cjian2025-groq-api-gradio.hf.space" frameborder="0"></iframe>
|
| 400 |
</div>
|
| 401 |
-
|
| 402 |
<div id="iframe03" class="tab-content">
|
| 403 |
<iframe src="https://z9760405-webcam-groq-linebot-application.hf.space" frameborder="0"
|
| 404 |
allow="camera; microphone"></iframe>
|
|
@@ -409,6 +406,9 @@
|
|
| 409 |
<script>
|
| 410 |
// 全域變數
|
| 411 |
let currentCaptcha = '';
|
|
|
|
|
|
|
|
|
|
| 412 |
const CORRECT_USERNAME_HASH = 'a8b94f6d8b472e465f8c4d8e9c1b2f3a4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1';
|
| 413 |
const CORRECT_PASSWORD_HASH = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92';
|
| 414 |
|
|
@@ -465,7 +465,7 @@
|
|
| 465 |
function showMainSystem() {
|
| 466 |
document.getElementById('loginPage').style.display = 'none';
|
| 467 |
document.getElementById('mainSystem').style.display = 'grid';
|
| 468 |
-
|
| 469 |
// 自動點擊第一個 tab
|
| 470 |
if (document.getElementsByClassName("tab-button")[0]) {
|
| 471 |
document.getElementsByClassName("tab-button")[0].click();
|
|
@@ -476,7 +476,7 @@
|
|
| 476 |
function logout() {
|
| 477 |
document.getElementById('mainSystem').style.display = 'none';
|
| 478 |
document.getElementById('loginPage').style.display = 'flex';
|
| 479 |
-
|
| 480 |
// 清空登入表單
|
| 481 |
document.getElementById('loginForm').reset();
|
| 482 |
document.getElementById('errorMessage').textContent = '';
|
|
@@ -499,14 +499,14 @@
|
|
| 499 |
}
|
| 500 |
|
| 501 |
// 初始化
|
| 502 |
-
document.addEventListener('DOMContentLoaded', function
|
| 503 |
// 生成初始驗證碼
|
| 504 |
generateCaptcha();
|
| 505 |
|
| 506 |
// 登入表單提交事件 (使用非同步處理)
|
| 507 |
-
document.getElementById('loginForm').addEventListener('submit', async function
|
| 508 |
e.preventDefault();
|
| 509 |
-
|
| 510 |
const username = document.getElementById('username').value;
|
| 511 |
const password = document.getElementById('password').value;
|
| 512 |
const captcha = document.getElementById('captchaInput').value;
|
|
@@ -532,7 +532,7 @@
|
|
| 532 |
});
|
| 533 |
|
| 534 |
// 按 Enter 鍵也可以登入
|
| 535 |
-
document.addEventListener('keypress', function
|
| 536 |
if (e.key === 'Enter' && document.getElementById('loginPage').style.display !== 'none') {
|
| 537 |
document.getElementById('loginForm').dispatchEvent(new Event('submit'));
|
| 538 |
}
|
|
|
|
| 87 |
font-weight: 500;
|
| 88 |
}
|
| 89 |
|
| 90 |
+
input[type="text"], input[type="password"] {
|
|
|
|
| 91 |
width: 100%;
|
| 92 |
padding: 0.8rem 1rem;
|
| 93 |
border: 1px solid var(--border-color);
|
|
|
|
| 98 |
transition: all 0.3s ease;
|
| 99 |
}
|
| 100 |
|
| 101 |
+
input[type="text"]:focus, input[type="password"]:focus {
|
|
|
|
| 102 |
outline: none;
|
| 103 |
border-color: var(--accent-color);
|
| 104 |
box-shadow: 0 0 0 3px rgba(0, 170, 255, 0.1);
|
|
|
|
| 269 |
opacity: 0;
|
| 270 |
transform: translateY(10px);
|
| 271 |
}
|
|
|
|
| 272 |
to {
|
| 273 |
opacity: 1;
|
| 274 |
transform: translateY(0);
|
|
|
|
| 346 |
<div class="login-card">
|
| 347 |
<h1 class="login-title">LLM+ 系統</h1>
|
| 348 |
<p class="login-subtitle">請輸入您的登入資訊</p>
|
| 349 |
+
|
| 350 |
<form id="loginForm">
|
| 351 |
<div class="form-group">
|
| 352 |
<label for="username">帳號</label>
|
| 353 |
<input type="text" id="username" name="username" required>
|
| 354 |
</div>
|
| 355 |
+
|
| 356 |
<div class="form-group">
|
| 357 |
<label for="password">密碼</label>
|
| 358 |
<input type="password" id="password" name="password" required>
|
| 359 |
</div>
|
| 360 |
+
|
| 361 |
<div class="form-group">
|
| 362 |
<label>驗證碼</label>
|
| 363 |
<div class="captcha-container">
|
|
|
|
| 365 |
<input type="text" class="captcha-input" id="captchaInput" placeholder="請輸入驗證碼" required>
|
| 366 |
</div>
|
| 367 |
</div>
|
| 368 |
+
|
| 369 |
<button type="submit" class="login-button">登入系統</button>
|
| 370 |
<div id="errorMessage" class="error-message"></div>
|
| 371 |
</form>
|
|
|
|
| 378 |
<button class="tab-button" onclick="openTab(event, 'iframe01')">ESG爬蟲</button>
|
| 379 |
<button class="tab-button" onclick="openTab(event, 'iframe02')">多模態API 應用</button>
|
| 380 |
<button class="tab-button" onclick="openTab(event, 'iframe03')">Grop+Linebot+Webcam</button>
|
| 381 |
+
|
| 382 |
<div class="logout-section">
|
| 383 |
<button class="logout-button" onclick="logout()">登出系統</button>
|
| 384 |
</div>
|
|
|
|
| 395 |
<div id="iframe02" class="tab-content">
|
| 396 |
<iframe src="https://cjian2025-groq-api-gradio.hf.space" frameborder="0"></iframe>
|
| 397 |
</div>
|
| 398 |
+
|
| 399 |
<div id="iframe03" class="tab-content">
|
| 400 |
<iframe src="https://z9760405-webcam-groq-linebot-application.hf.space" frameborder="0"
|
| 401 |
allow="camera; microphone"></iframe>
|
|
|
|
| 406 |
<script>
|
| 407 |
// 全域變數
|
| 408 |
let currentCaptcha = '';
|
| 409 |
+
// 使用 SHA-256 HASH 隱匿帳號密碼
|
| 410 |
+
// ROOT2025 的 SHA-256: a8b94f6d8b472e465f8c4d8e9c1b2f3a4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1
|
| 411 |
+
// 123456 的 SHA-256: 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
|
| 412 |
const CORRECT_USERNAME_HASH = 'a8b94f6d8b472e465f8c4d8e9c1b2f3a4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1';
|
| 413 |
const CORRECT_PASSWORD_HASH = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92';
|
| 414 |
|
|
|
|
| 465 |
function showMainSystem() {
|
| 466 |
document.getElementById('loginPage').style.display = 'none';
|
| 467 |
document.getElementById('mainSystem').style.display = 'grid';
|
| 468 |
+
|
| 469 |
// 自動點擊第一個 tab
|
| 470 |
if (document.getElementsByClassName("tab-button")[0]) {
|
| 471 |
document.getElementsByClassName("tab-button")[0].click();
|
|
|
|
| 476 |
function logout() {
|
| 477 |
document.getElementById('mainSystem').style.display = 'none';
|
| 478 |
document.getElementById('loginPage').style.display = 'flex';
|
| 479 |
+
|
| 480 |
// 清空登入表單
|
| 481 |
document.getElementById('loginForm').reset();
|
| 482 |
document.getElementById('errorMessage').textContent = '';
|
|
|
|
| 499 |
}
|
| 500 |
|
| 501 |
// 初始化
|
| 502 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 503 |
// 生成初始驗證碼
|
| 504 |
generateCaptcha();
|
| 505 |
|
| 506 |
// 登入表單提交事件 (使用非同步處理)
|
| 507 |
+
document.getElementById('loginForm').addEventListener('submit', async function(e) {
|
| 508 |
e.preventDefault();
|
| 509 |
+
|
| 510 |
const username = document.getElementById('username').value;
|
| 511 |
const password = document.getElementById('password').value;
|
| 512 |
const captcha = document.getElementById('captchaInput').value;
|
|
|
|
| 532 |
});
|
| 533 |
|
| 534 |
// 按 Enter 鍵也可以登入
|
| 535 |
+
document.addEventListener('keypress', function(e) {
|
| 536 |
if (e.key === 'Enter' && document.getElementById('loginPage').style.display !== 'none') {
|
| 537 |
document.getElementById('loginForm').dispatchEvent(new Event('submit'));
|
| 538 |
}
|