我使用 echo 框架來創建我的 API 服務器。它由 systemd 啟動,默認情況下需要 root,以便獲取低于 1024 的端口。為了安全起見,我喜歡在 echo 框架獲取偵聽端口后降級 go 程序的權限。我知道如何降級,但我找不到合適的事件/回調?問題是,這不會回來。我可以創建一個并行線程,并嘗試找到回顯會話的一些狀態值,告訴我端口已打開,但我也找不到這樣的狀態指示。echo.Start()echo.StartAutoTLS()我如何確保在獲取端口后執行一些代碼(并確定)?到目前為止,我在創建服務器之前運行一個并行go線程,然后等待5秒鐘進行降級。到目前為止,它的工作原理是,但這是黑客,我不喜歡它:-(
1 回答

DIEA
TA貢獻1820條經驗 獲得超3個贊
您可以使用 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 關注
- 90 瀏覽
添加回答
舉報
0/150
提交
取消