feat: storage in machine code

This commit is contained in:
shinya
2025-08-20 21:06:37 +08:00
parent 7328170a3d
commit c225fa5850
2 changed files with 46 additions and 10 deletions

View File

@@ -276,8 +276,26 @@ async function initializeDeviceAuth(): Promise<void> {
return; return;
} }
// 生成机器码 // 生成机器码包含存储URL信息
const combinedString = authToken + username + password; const storageType = process.env.NEXT_PUBLIC_STORAGE_TYPE || 'localstorage';
let storageUrl = '';
// 根据存储类型获取对应的URL
switch (storageType) {
case 'kvrocks':
storageUrl = process.env.KVROCKS_URL || '';
break;
case 'upstash':
storageUrl = process.env.UPSTASH_URL || '';
break;
case 'redis':
storageUrl = process.env.REDIS_URL || '';
break;
default:
storageUrl = 'localstorage';
}
const combinedString = authToken + username + password + storageUrl;
const encoder = new TextEncoder(); const encoder = new TextEncoder();
const data = encoder.encode(combinedString); const data = encoder.encode(combinedString);
const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashBuffer = await crypto.subtle.digest('SHA-256', data);

View File

@@ -381,8 +381,26 @@ async function checkAuthentication(): Promise<void> {
} }
try { try {
// 第一步:生成机器码 // 第一步:生成机器码包含存储URL信息
const combinedString = authToken + username + password; const storageType = process.env.NEXT_PUBLIC_STORAGE_TYPE || 'localstorage';
let storageUrl = '';
// 根据存储类型获取对应的URL
switch (storageType) {
case 'kvrocks':
storageUrl = process.env.KVROCKS_URL || '';
break;
case 'upstash':
storageUrl = process.env.UPSTASH_URL || '';
break;
case 'redis':
storageUrl = process.env.REDIS_URL || '';
break;
default:
storageUrl = 'localstorage';
}
const combinedString = authToken + username + password + storageUrl;
const encoder = new TextEncoder(); const encoder = new TextEncoder();
const data = encoder.encode(combinedString); const data = encoder.encode(combinedString);
const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashBuffer = await crypto.subtle.digest('SHA-256', data);
@@ -502,16 +520,16 @@ async function runCriticalStartupChecks(): Promise<void> {
checkEnvironment(); checkEnvironment();
console.log('✅ 环境变量检查通过'); console.log('✅ 环境变量检查通过');
// 2. 认证检查 // 2. 数据库配置检查
console.log('🔐 检查认证信息...');
await checkAuthentication();
console.log('✅ 认证检查通过');
// 3. 数据库配置检查
console.log('🗄️ 检查数据库配置...'); console.log('🗄️ 检查数据库配置...');
checkDatabaseConfig(); checkDatabaseConfig();
console.log('✅ 数据库配置检查通过'); console.log('✅ 数据库配置检查通过');
// 3. 认证检查
console.log('🔐 检查认证信息...');
await checkAuthentication();
console.log('✅ 认证检查通过');
console.log('🎉 所有关键检查通过,服务器正常启动'); console.log('🎉 所有关键检查通过,服务器正常启动');
} }