Gendle commited on
Commit
f941ea6
·
verified ·
1 Parent(s): df0ee84

Upload entrypoint.sh with huggingface_hub

Browse files
Files changed (1) hide show
  1. entrypoint.sh +70 -64
entrypoint.sh CHANGED
@@ -1332,88 +1332,94 @@ else
1332
  fi
1333
 
1334
  # ==================== 设置自定义用户凭据 ====================
1335
- # 策略:通过 BFF API 修改凭据(不使用直接 SQLite 操作避免 BFF 进程内缓存不一致
1336
  echo "🔐 配置用户凭据..."
1337
  sleep 3
1338
 
1339
- # Step 1: 先确保默认凭据存在(BFF 可能还没创建)
1340
- # 使用 hermes-web-ui CLI 重置默认登录(确保 admin/123456 存在)
1341
- if [ -f "/opt/hermes-web-ui/node_modules/.bin/hermes-web-ui" ]; then
1342
- echo " 🔄 确保默认凭据就绪..."
1343
- node /opt/hermes-web-ui/node_modules/.bin/hermes-web-ui reset-default-login 2>/dev/null || true
1344
- fi
 
 
 
 
1345
 
1346
- # Step 2: 使用 AUTH_TOKEN 修改用户名和密码
1347
- # 先登录获取 token,然后通过 API 修改
1348
- CRED_CURL=$(cat <<'CURLSCRIPT'
1349
- #!/bin/bash
1350
- # 登录获取 token
1351
- LOGIN_RESP=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1352
  -H "Content-Type: application/json" \
1353
- -d '{"username":"admin","password":"123456"}' 2>/dev/null)
1354
- LOGIN_TOKEN=$(echo "$LOGIN_RESP" | node -e "process.stdin.on('data',d=>{try{console.log(JSON.parse(d).token)}catch(e){console.log('')}})")
1355
 
1356
- if [ -n "$LOGIN_TOKEN" ]; then
1357
- echo " ✅ 已登录 (admin),正在修改凭据..."
1358
 
1359
- # 用户名
1360
- curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
1361
- -H "Content-Type: application/json" \
1362
- -H "Authorization: Bearer $LOGIN_TOKEN" \
1363
- -d '{"currentPassword":"123456","newUsername":"Gendle"}' >/dev/null 2>&1
1364
- if [ $? -eq 0 ]; then
1365
- echo " ✅ 用户名已改为 Gendle"
1366
- fi
1367
-
1368
- # 修改密码
1369
  curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
1370
  -H "Content-Type: application/json" \
1371
- -H "Authorization: Bearer $LOGIN_TOKEN" \
1372
  -d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
1373
- if [ $? -eq 0 ]; then
1374
- echo " ✅ 密码已改为 hm951753"
1375
- fi
1376
 
1377
- echo " ✅ 凭据配置完成: Gendle / hm951753"
1378
- else
1379
- echo " ⚠️ 默认 admin 登录失败,尝试通过 AUTH_TOKEN 设置..."
1380
- # Fallback: 重置默认登录后尝试
1381
- sleep 2
1382
- LOGIN_RESP2=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1383
  -H "Content-Type: application/json" \
1384
- -d '{"username":"admin","password":"123456"}' 2>/dev/null)
1385
- LOGIN_TOKEN2=$(echo "$LOGIN_RESP2" | node -e "process.stdin.on('data',d=>{try{console.log(JSON.parse(d).token)}catch(e){console.log('')}})")
1386
- if [ -n "$LOGIN_TOKEN2" ]; then
 
 
 
 
1387
  curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
1388
  -H "Content-Type: application/json" \
1389
- -H "Authorization: Bearer $LOGIN_TOKEN2" \
1390
- -d '{"currentPassword":"123456","newUsername":"Gendle"}' >/dev/null 2>&1
1391
- curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
 
 
 
1392
  -H "Content-Type: application/json" \
1393
- -H "Authorization: Bearer $LOGIN_TOKEN2" \
1394
- -d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
1395
- echo " ✅ 凭据配置完成: Gendle / hm951753"
 
 
 
 
 
1396
  else
1397
- echo " ⚠️ 无法修改凭据,请稍在 Web 设置中手动修改"
1398
  fi
 
 
 
1399
  fi
1400
- CURLSCRIPT
1401
- )
1402
-
1403
- # 等待 BFF 就绪后执行
1404
- for i in $(seq 1 10); do
1405
- if curl -sf http://127.0.0.1:7861/health >/dev/null 2>&1; then
1406
- echo " 🔗 BFF 已就绪,开始配置凭据..."
1407
- sleep 3 # 给 BFF 一些时间完成初始化
1408
- bash -c "$CRED_CURL"
1409
- break
1410
- fi
1411
- if [ "$i" -lt 10 ]; then
1412
- sleep 3
1413
- else
1414
- echo " ⚠️ BFF 未在 30 秒内就绪"
1415
- fi
1416
- done
1417
 
1418
  # 再次验证模型配置(BFF 启动可能修改 config.yaml)
1419
  if [ -f "$CONFIG_FILE" ]; then
 
1332
  fi
1333
 
1334
  # ==================== 设置自定义用户凭据 ====================
1335
+ # 策略:通过 BFF API 修改凭据(先改密码再改用户名
1336
  echo "🔐 配置用户凭据..."
1337
  sleep 3
1338
 
1339
+ # 等待 BFF 就绪
1340
+ echo " 🔗 等待 BFF 就绪..."
1341
+ for i in $(seq 1 15); do
1342
+ if curl -sf http://127.0.0.1:7861/health >/dev/null 2>&1; then
1343
+ echo " ✅ BFF 已就绪"
1344
+ sleep 3
1345
+ break
1346
+ fi
1347
+ [ "$i" -lt 15 ] && sleep 2
1348
+ done
1349
 
1350
+ # 确保 admin/123456 默认凭据存在
1351
+ echo " 🔄 重置默认凭据..."
1352
+ node -e "
1353
+ const{DatabaseSync}=require('node:sqlite');
1354
+ const{randomBytes,scryptSync}=require('node:crypto');
1355
+ const os=require('node:os'),p=require('node:path'),fs=require('node:fs');
1356
+ const h=process.env.HERMES_WEB_UI_HOME?.trim()||p.join(os.homedir(),'.hermes-web-ui');
1357
+ const f=p.join(h,'hermes-web-ui.db');
1358
+ if(!fs.existsSync(f)){process.exit(1)}
1359
+ const db=new DatabaseSync(f);
1360
+ db.exec('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT,username TEXT NOT NULL UNIQUE,password_hash TEXT NOT NULL,role TEXT NOT NULL DEFAULT \"admin\",status TEXT NOT NULL DEFAULT \"active\",created_at INTEGER NOT NULL,updated_at INTEGER NOT NULL,last_login_at INTEGER)');
1361
+ const s=randomBytes(16).toString('hex');
1362
+ const hash=scryptSync('123456',s,64).toString('hex');
1363
+ const ph='scrypt:'+s+':'+hash;
1364
+ const e=db.prepare('SELECT id FROM users WHERE username=?').get('admin');
1365
+ const n=Date.now();
1366
+ if(e?.id){db.prepare('UPDATE users SET password_hash=?,role=\"super_admin\",status=\"active\",updated_at=? WHERE id=?').run(ph,n,e.id)}
1367
+ else{db.prepare('INSERT INTO users(username,password_hash,role,status,created_at,updated_at) VALUES(?,?,\"super_admin\",\"active\",?,?)').run('admin',ph,n,n)}
1368
+ db.close()
1369
+ " 2>/dev/null && echo " ✅ 默认凭据已就绪" || echo " ⚠️ 默认凭据设置可能失败"
1370
+
1371
+ sleep 2
1372
+
1373
+ # Step 1: 登录 admin/123456
1374
+ TOKEN=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1375
  -H "Content-Type: application/json" \
1376
+ -d '{"username":"admin","password":"123456"}' 2>/dev/null | \
1377
+ node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1378
 
1379
+ if [ -n "$TOKEN" ]; then
1380
+ echo " ✅ 管理令牌获取"
1381
 
1382
+ # Step 2: 先密码
 
 
 
 
 
 
 
 
 
1383
  curl -sf -X POST http://127.0.0.1:7861/api/auth/change-password \
1384
  -H "Content-Type: application/json" \
1385
+ -H "Authorization: Bearer $TOKEN" \
1386
  -d '{"currentPassword":"123456","newPassword":"hm951753"}' >/dev/null 2>&1
1387
+ sleep 1
 
 
1388
 
1389
+ # 重新登录验证密码
1390
+ TOKEN2=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
 
 
 
 
1391
  -H "Content-Type: application/json" \
1392
+ -d '{"username":"admin","password":"hm951753"}' 2>/dev/null | \
1393
+ node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1394
+
1395
+ if [ -n "$TOKEN2" ]; then
1396
+ echo " ✅ 密码已修改"
1397
+
1398
+ # Step 3: 改用户名
1399
  curl -sf -X POST http://127.0.0.1:7861/api/auth/change-username \
1400
  -H "Content-Type: application/json" \
1401
+ -H "Authorization: Bearer $TOKEN2" \
1402
+ -d '{"currentPassword":"hm951753","newUsername":"Gendle"}' >/dev/null 2>&1
1403
+ sleep 1
1404
+
1405
+ # Step 4: 最终验证
1406
+ TOKEN3=$(curl -sf -X POST http://127.0.0.1:7861/api/auth/login \
1407
  -H "Content-Type: application/json" \
1408
+ -d '{"username":"Gendle","password":"hm951753"}' 2>/dev/null | \
1409
+ node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).token)}catch(e){}})" 2>/dev/null)
1410
+
1411
+ if [ -n "$TOKEN3" ]; then
1412
+ echo " ✅ 凭据配置完成: Gendle / hm951753"
1413
+ else
1414
+ echo " ⚠️ 最终验证失败,请手动测试登录"
1415
+ fi
1416
  else
1417
+ echo " ⚠️ 密码修改后无法重新登录"
1418
  fi
1419
+ else
1420
+ echo " ⚠️ admin 登录失败,凭据配置未完成"
1421
+ echo " 💡 请使用默认凭据 admin/123456 登录后自行修改"
1422
  fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1423
 
1424
  # 再次验证模型配置(BFF 启动可能修改 config.yaml)
1425
  if [ -f "$CONFIG_FILE" ]; then