31 lines
549 B
Go
31 lines
549 B
Go
// Package unix reads from a unix socket expecting it to be in /tmp/path
|
|
package unix
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net"
|
|
"net/http"
|
|
"path/filepath"
|
|
)
|
|
|
|
type Handler struct{}
|
|
|
|
func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
sock := fmt.Sprintf("%s.sock", filepath.Clean(r.URL.Path))
|
|
path := filepath.Join("/tmp", sock)
|
|
|
|
c, err := net.Dial("unix", path)
|
|
if err != nil {
|
|
http.Error(w, err.Error(), 500)
|
|
return
|
|
}
|
|
go io.Copy(c, r.Body)
|
|
// write response
|
|
io.Copy(w, c)
|
|
}
|
|
|
|
func (h *Handler) String() string {
|
|
return "unix"
|
|
}
|