Add listen to Unix websocket

This commit is contained in:
Thomas Miceli
2025-06-04 18:44:17 +02:00
parent 3c0115d829
commit ab9382b8b1
4 changed files with 70 additions and 7 deletions

View File

@ -2,7 +2,9 @@ package server
import (
"github.com/thomiceli/opengist/internal/validator"
"net"
"net/http"
"os"
"github.com/labstack/echo/v4"
"github.com/rs/zerolog/log"
@ -54,12 +56,54 @@ func (s *Server) Start() {
}
}
func (s *Server) StartUnixSocket() {
socketPath := "/tmp/opengist.sock"
if err := os.Remove(socketPath); err != nil && !os.IsNotExist(err) {
log.Warn().Err(err).Str("socket", socketPath).Msg("Failed to remove existing socket file")
}
listener, err := net.Listen("unix", socketPath)
if err != nil {
log.Fatal().Err(err).Msg("Failed to start Unix socket server")
}
s.echo.Listener = listener
log.Info().Msgf("Starting Unix socket server on " + socketPath)
server := new(http.Server)
if err := s.echo.StartServer(server); err != nil && err != http.ErrServerClosed {
log.Fatal().Err(err).Msg("Failed to start Unix socket server")
}
}
func (s *Server) Stop() {
if err := s.echo.Close(); err != nil {
log.Fatal().Err(err).Msg("Failed to stop HTTP server")
}
}
func (s *Server) StopUnixSocket() {
log.Info().Msg("Stopping Unix socket server...")
var socketPath string
if s.echo.Listener != nil {
if unixListener, ok := s.echo.Listener.(*net.UnixListener); ok {
socketPath = unixListener.Addr().String()
}
}
if err := s.echo.Close(); err != nil {
log.Error().Err(err).Msg("Failed to stop Unix socket server")
}
if socketPath != "" {
if err := os.Remove(socketPath); err != nil && !os.IsNotExist(err) {
log.Error().Err(err).Str("socket", socketPath).Msg("Failed to remove socket file")
} else {
log.Info().Str("socket", socketPath).Msg("Socket file removed")
}
}
}
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
s.echo.ServeHTTP(w, r)
}