我使用 echo 框架来创建我的 API 服务器。它由 systemd 启动,默认情况下需要 root,以便获取低于 1024 的端口。为了安全起见,我喜欢在 echo 框架获取侦听端口后降级 go 程序的权限。我知道如何降级,但我找不到合适的事件/回调?问题是,这不会回来。我可以创建一个并行线程,并尝试找到回显会话的一些状态值,告诉我端口已打开,但我也找不到这样的状态指示。echo.Start()echo.StartAutoTLS()我如何确保在获取端口后执行一些代码(并确定)?到目前为止,我在创建服务器之前运行一个并行go线程,然后等待5秒钟进行降级。到目前为止,它的工作原理是,但这是黑客,我不喜欢它:-(
1 回答
DIEA
TA贡献1820条经验 获得超2个赞
您可以使用 e.ListenerAddr() 来检查端口是否打开。它将返回 nil,直到端口打开。
func degradePrivileges(e *echo.Echo, userName string) {
for { adr := e.ListenerAddr() if adr != nil {
degradeMe(userName) break
}
time.Sleep(100 * time.Millisecond) }
}
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消