teleport/server/idea.md

28 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# IDEA
简化core服务使之不用直接访问数据库
优点:
- 简化core服务代码不用直接访问数据库C++访问数据库比python访问数据库代码复杂度更高。
- 通过web提供的rpc接口来访问数据库限定数据库访问点仅通过web进行容易做多类型的数据库的支持比如从sqlite迁移到mysql。
缺点:
- 需要web提供特别的rpc接口web服务和core服务的交互增加了。
目前的core服务中直接访问数据库涉及到
- 生成会话ID需要根据认证ID获取认证信息可改为web查询数据库然后将认证信息传递给core服务。
关于会话ID的有效期现有版本是设置一个引用计数对于rdp可以使用两次而ssh只能使用一次原因是rdp连接时通常第一次连接用于协商子协议然后会断开并立即重连并使用确定好的子协议进行后续操作。
改进的方法是为一个会话ID设置一个标志及一个最后活动时间会话ID刚生成时标志为false调用take_session()时设置为true当连接断开时或者未能连接成功时重置为false并更新最后活动时间为当前时间。标志为true时不允许重复take_session()每次调用take_session()时检查标志为false的回话ID的最后活动时间如果超过5秒未活动则删除此会话ID。
这样做可以适配各种连接方式。