echo framework,什么时候降级权限?

echo framework, downgrade privileges at which moment?

我使用 echo framework 创建我的 API 服务器。它由 systemd 启动,默认情况下需要 root,以便获取低于 1024 的端口。为了安全,我喜欢 降级我的 go 程序的权限 在监听端口被回声框架获取后。

我知道怎么降级,但是我找不到合适的event/callback这个?问题是,echo.Start()echo.StartAutoTLS() 不会返回。我可以创建一个并行线程并尝试找到我的 echo 会话的一些状态值,告诉我端口已打开,但我也找不到这样的状态指示。

如何确保在获取端口后执行某些代码(并且确定知道)?

到目前为止,我 运行 在创建服务器之前使用并行线程,然后等待 5 秒进行降级。它到目前为止有效,但这是 hacky,我不喜欢它:-(

您可以使用 e.ListenerAddr() 检查端口是否打开。 在端口打开之前它将 return 为零。

func degradePrivileges(e *echo.Echo, userName string) { 
    for { adr := e.ListenerAddr() if adr != nil { 
        degradeMe(userName) break 
    } 
    time.Sleep(100 * time.Millisecond) } 
}