ws01博客 - 测试
type: channel
link: https://boke.199881.xyz/index.php/tag/%E6%B5%8B%E8%AF%95/
items: 部署在CF的轻量化导航页面，可移动卡片式书签，方便管理
items: 经典老电影10部

部署在CF的轻量化导航页面，可移动卡片式书签，方便管理
type: item
date: 2024-09-08T01:41:00+00:00
description: 部署在CF的轻量化导航页面，可移动卡片式书签，方便管理 github项目 Card-Tab 书签卡片式管理，进入管理模式可以自由移动书签位置，添加和删除书签，支持自定义网站分类，支持切换黑暗色主题一、cloudflare workes部署 现用代码 ，nodeseek风格const HTML_CONTENT = ` ws01主页 <link rel="icon" href="data:image/svg+xml, <text y=%22.9em%22 font-size=%2280%22>💠</text> "> WS01の主页 beta + - C+ C- ◑ <!-- 显示日志 --> 名称 地址 选择分类 私密链接 确定 取消 设 置 登 录 载入天数... <span | 本页总访问量 次 | 开源于 @GitHub `; // 服务端 token 验证 async function validateServerToken(authToken, env) { if (!authToken) { return { isValid: false, status: 401, response: { error: 'Unauthorized', message: '未登录或登录已过期' } }; } try { const [timestamp, hash] = authToken.split('.'); const tokenTimestamp = parseInt(timestamp); const now = Date.now(); const FIFTEEN_MINUTES = 15 * 60 * 1000; if (now - tokenTimestamp > FIFTEEN_MINUTES) { return { isValid: false, status: 401, response: { error: 'Token expired', tokenExpired: true, message: '登录已过期，请重新登录' } }; } const tokenData = timestamp + "_" + env.ADMIN_PASSWORD; const encoder = new TextEncoder(); const data = encoder.encode(tokenData); const hashBuffer = await crypto.subtle.digest('SHA-256', data); const expectedHash = btoa(String.fromCharCode(...new Uint8Array(hashBuffer))); if (hash !== expectedHash) { return { isValid: false, status: 401, response: { error: 'Invalid token', tokenInvalid: true, message: '登录状态无效，请重新登录' } }; } return { isValid: true }; } catch (error) { return { isValid: false, status: 401, response: { error: 'Invalid token', tokenInvalid: true, message: '登录验证失败，请重新登录' } }; } } export default { async fetch(request, env) { const url = new URL(request.url); if (url.pathname === '/') { return new Response(HTML_CONTENT, { headers: { 'Content-Type': 'text/html' } }); } if (url.pathname === '/api/getLinks') { const userId = url.searchParams.get('userId'); const authToken = request.headers.get('Authorization'); const data = await env.CARD_ORDER.get(userId); if (data) { const parsedData = JSON.parse(data); // 验证 token if (authToken) { const validation = await validateServerToken(authToke…

经典老电影10部
type: item
date: 2024-01-30T12:07:00+00:00
description: 经典老电影10部