Compare commits
2 Commits
main
...
feature/YO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcea539250 | ||
|
|
eeb512c98a |
31
internal/middleware/country.go
Normal file
31
internal/middleware/country.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"yobble-gateway-go/internal/logger"
|
||||||
|
"yobble-gateway-go/pkg/geoip"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CountryMW struct {
|
||||||
|
Geo *geoip.GeoIPService
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CountryMW) AddCountryHeaderIPMiddleware(next http.Handler) http.Handler {
|
||||||
|
op := "middleware.AddCountryHeaderIPMiddleware"
|
||||||
|
log := logger.NewLoggerWithOp(op)
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
realIP := GetRealIP(r)
|
||||||
|
log.Debug(op, "realIP", realIP)
|
||||||
|
_, countryCode := m.Geo.IsCountryBlocked(realIP)
|
||||||
|
log.Debug(op, "countryCode", countryCode)
|
||||||
|
|
||||||
|
if countryCode != "" {
|
||||||
|
r.Header.Set("X-Country-Code", countryCode)
|
||||||
|
} else {
|
||||||
|
r.Header.Set("X-Country-Code", "Undefined")
|
||||||
|
}
|
||||||
|
|
||||||
|
next.ServeHTTP(w, r)
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -31,11 +31,15 @@ func NewServer(cfg *config.Settings, geoIPService *geoip.GeoIPService) *Server {
|
|||||||
// Create the main proxy handler
|
// Create the main proxy handler
|
||||||
proxyHandler := proxy.NewProxyHandler(cfg, geoIPService)
|
proxyHandler := proxy.NewProxyHandler(cfg, geoIPService)
|
||||||
|
|
||||||
|
//Initialize country middleware
|
||||||
|
countryMW := &middleware.CountryMW{Geo: geoIPService}
|
||||||
// Apply middleware chain
|
// Apply middleware chain
|
||||||
chain := middleware.RemoveTrailingSlashMiddleware(
|
chain := middleware.RemoveTrailingSlashMiddleware(
|
||||||
middleware.RealIPMiddleware(
|
middleware.RealIPMiddleware(
|
||||||
|
countryMW.AddCountryHeaderIPMiddleware(
|
||||||
proxyHandler,
|
proxyHandler,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
addr := fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port)
|
addr := fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user