Gorelay
Jump to navigation
Jump to search
Simple HTTP Relay written in go
package main
import (
"crypto/tls"
"github.com/labstack/echo/v4"
"io"
"net/http"
)
func main() {
e := echo.New()
e.Any("/*", func(c echo.Context) error {
req := c.Request()
client := &http.Client{}
client.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
// Create a new request
newReq, err := http.NewRequest(req.Method, "https://192.168.1.1:8443"+req.RequestURI, req.Body)
if err != nil {
return err
}
// Copy the headers
for k, v := range req.Header {
newReq.Header[k] = v
}
// Send the request
resp, err := client.Do(newReq)
if err != nil {
return err
}
defer resp.Body.Close()
// Copy the response headers
for k, v := range resp.Header {
c.Response().Header().Set(k, v[0])
}
// Copy the response body
io.Copy(c.Response().Writer, resp.Body)
return nil
})
e.Start(":8080")
}