Files
hadrian/handlers/api_raw.go
2023-12-07 10:37:05 -06:00

51 lines
1.2 KiB
Go

package handlers
import (
"ladder/proxychain"
rx "ladder/proxychain/requestmodifiers"
tx "ladder/proxychain/responsemodifiers"
"github.com/gofiber/fiber/v2"
)
func NewRawProxySiteHandler(opts *ProxyOptions) fiber.Handler {
return func(c *fiber.Ctx) error {
proxychain := proxychain.
NewProxyChain().
SetFiberCtx(c).
SetRequestModifications(
rx.AddCacheBusterQuery(),
rx.MasqueradeAsGoogleBot(),
rx.ForwardRequestHeaders(),
rx.HideOrigin(),
rx.DeleteOutgoingCookies(),
rx.SpoofReferrerFromRedditPost(),
)
// no options passed in, return early
if opts == nil {
// return as plaintext, overriding any rules
proxychain.AddOnceResponseModifications(
tx.SetResponseHeader("content-type", "text/plain; charset=UTF-8"),
)
return proxychain.Execute()
}
// load ruleset
rule, exists := opts.Ruleset.GetRule(proxychain.Request.URL)
if exists {
proxychain.AddOnceRequestModifications(rule.RequestModifications...)
proxychain.AddOnceResponseModifications(rule.ResponseModifications...)
}
// return as plaintext, overriding any rules
proxychain.AddOnceResponseModifications(
tx.SetResponseHeader("content-type", "text/plain; charset=UTF-8"),
)
return proxychain.Execute()
}
}