Compare commits

..

No commits in common. "11cf35cf0d65f4b3c014439b84b706f63f1e8a33" and "e55077c7e9fa88a0b4728bae98a979bbfbf40738" have entirely different histories.

4 changed files with 30 additions and 47 deletions

View File

@ -5,19 +5,19 @@ A blazing fast reverse proxy with a lot of shining features.
## Features
1. Reverse proxy
2. WebSocket Support
3. Static File Hosting
4. Low Configuration
5. Analytics and Metrics
6. Integrate with CI/CD
7. Web management panel (Work in progres for v2, available in v1)
8. One-liner CLI
9. Open-source and free
10. **Blazing fast ⚡**
2. HTTP2 Support
3. WebSocket Support
4. Static File Hosting
5. Low Configuration
6. Analytics and Metrics
7. Integrate with CI/CD
8. Web management panel (Work in progres for v2, available in v1)
9. One-liner CLI
10. Open-source and free
11. **Blazing fast ⚡**
> [!IMPORTANT]
> Currently roadsign haven't supported for server-side events. We are working on it.
> At the same time, we don't support HTTP/2.0, [here's](https://github.com/gofiber/fiber/issues/262) the reason
### How fast is it?

View File

@ -1,7 +1,6 @@
package hypertext
import (
"fmt"
"github.com/spf13/viper"
"math/rand"
"regexp"
@ -95,38 +94,22 @@ func UseProxies(app *fiber.App) {
})
}
func makeResponse(c *fiber.Ctx, region *navi.Region, location *navi.Location, dest *navi.Destination) error {
uri := c.Request().URI().String()
func makeResponse(ctx *fiber.Ctx, region *navi.Region, location *navi.Location, dest *navi.Destination) error {
uri := ctx.Request().URI().String()
// Modify request
for _, transformer := range dest.Transformers {
if err := transformer.TransformRequest(c); err != nil {
if err := transformer.TransformRequest(ctx); err != nil {
return err
}
}
// Add reserve proxy headers
ip := c.IP()
scheme := c.Protocol()
protocol := string(c.Request().Header.Protocol())
c.Request().Header.Set(fiber.HeaderXForwardedFor, ip)
c.Request().Header.Set(fiber.HeaderXForwardedHost, ip)
c.Request().Header.Set(fiber.HeaderXForwardedProto, scheme)
c.Request().Header.Set(
fiber.HeaderVia,
fmt.Sprintf("%s %s", protocol, viper.GetString("central")),
)
c.Request().Header.Set(
fiber.HeaderForwarded,
fmt.Sprintf("by=%s; for=%s; host=%s; proto=%s", c.IP(), c.IP(), c.Get(fiber.HeaderHost), scheme),
)
// Forward
err := navi.R.Forward(c, dest)
err := navi.R.Forward(ctx, dest)
// Modify response
for _, transformer := range dest.Transformers {
if err := transformer.TransformResponse(c); err != nil {
if err := transformer.TransformResponse(ctx); err != nil {
return err
}
}
@ -143,8 +126,8 @@ func makeResponse(c *fiber.Ctx, region *navi.Region, location *navi.Location, de
Location: location.ID,
Destination: dest.ID,
Uri: uri,
IpAddress: c.IP(),
UserAgent: c.Get(fiber.HeaderUserAgent),
IpAddress: ctx.IP(),
UserAgent: ctx.Get(fiber.HeaderUserAgent),
Error: navi.RoadTraceError{
IsNull: err == nil,
Message: message,

View File

@ -1,11 +1,12 @@
package sideload
import (
"code.smartsheep.studio/goatworks/roadsign/pkg/sideload/view"
"fmt"
"net/http"
"code.smartsheep.studio/goatworks/roadsign/pkg/sideload/view"
"github.com/gofiber/fiber/v2/middleware/filesystem"
jsoniter "github.com/json-iterator/go"
"net/http"
roadsign "code.smartsheep.studio/goatworks/roadsign/pkg"
"github.com/gofiber/fiber/v2"
@ -42,6 +43,13 @@ func InitSideload() *fiber.App {
},
}))
app.Use("/", filesystem.New(filesystem.Config{
Root: http.FS(view.FS),
PathPrefix: "dist",
Index: "index.html",
NotFoundFile: "index.html",
}))
cgi := app.Group("/cgi").Name("CGI")
{
cgi.Get("/metadata", getMetadata)
@ -59,12 +67,5 @@ func InitSideload() *fiber.App {
webhooks.Put("/sync/:slug", doSync)
}
app.Use("/", filesystem.New(filesystem.Config{
Root: http.FS(view.FS),
PathPrefix: "dist",
Index: "index.html",
NotFoundFile: "dist/index.html",
}))
return app
}

View File

@ -1,5 +1,3 @@
id = "central"
[debug]
print_routes = false
@ -27,6 +25,7 @@ capture_traces = true
[performance]
traces_limit = 256
network_timeout = 3_000
prefork = false
[security]