我使用echo framework用于创建我的 API 服务器。它由 systemd 启动,默认需要 root 权限,才能获取 1024 以下的端口。为了安全起见,我喜欢在监听端口被关闭后降级权限。由echo框架获取。
我知道如何降级,但是我找不到合适的事件/回调?问题是,echo.Start()
和 echo.StartAutoTLS()
不会返回。我可以创建一个并行线程并尝试查找回显 session 的某些状态值,告诉我端口已打开,但我也找不到此类状态指示。
如何确保在获取端口后执行一些代码(并且确定)?
到目前为止,我在服务器创建之前运行并行 go 线程,然后等待 5 秒进行降级。到目前为止它可以工作,但这很糟糕,我不喜欢它:-(
最佳答案
您可以使用 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) }
}
关于go - echo框架,在哪一刻降级权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67867325/