新增设备身份管理、认证限流、并发通道、Webhook路由、RBAC权限控制、SSE/轮询降级等全套网关通道功能,包含: 1. 设备身份生成与签名验证 2. 设备令牌认证与速率限制 3. 内存+数据库双重设备注册表 4. 并发通道限流管理 5. Webhook安全处理与路由 6. RBAC权限校验系统 7. OpenAI API兼容适配层 8. Tailscale认证支持 9. HTTP轮询降级机制
32 lines
951 B
Python
32 lines
951 B
Python
import logging
|
|
|
|
from yuxi.repositories.channel_device_identity_repo import DeviceIdentityRepository
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
_repo = DeviceIdentityRepository()
|
|
|
|
|
|
async def db_lookup_public_key(device_id: str) -> str | None:
|
|
record = await _repo.get_by_device_id(device_id)
|
|
if record is None or record.status != "active":
|
|
return None
|
|
|
|
await _repo.mark_used(device_id)
|
|
return record.public_key_pem
|
|
|
|
|
|
async def db_save_device(device_id: str, public_key_pem: str) -> None:
|
|
existing = await _repo.get_by_device_id(device_id)
|
|
if existing is not None:
|
|
await _repo.update(device_id, {"public_key_pem": public_key_pem, "status": "active"})
|
|
else:
|
|
await _repo.create(
|
|
{
|
|
"device_id": device_id,
|
|
"public_key_pem": public_key_pem,
|
|
"status": "active",
|
|
}
|
|
)
|
|
logger.debug("Device saved to DB: device_id=%s", device_id)
|