ip_score

package module
v0.0.0-...-c271c8e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

README

Dynamic Client IP matcher for Caddy

Maintenance Go Reference GoReportCard example License

The dynamic_client_ip module is a clone of the client_ip matcher with one key difference: instead of providing IP ranges upfront, you specify an IPRangeSource. This allows IP ranges to be dynamically loaded per request.

Installation

Build Caddy using xcaddy:

xcaddy build --with github.com/tuzzmaniandevil/caddy-dynamic-clientip

Usage

:8880 {
	@denied dynamic_client_ip my_dynamic_provider
	abort @denied

    reverse_proxy localhost:8080
}

Example using the built-in static provider (But why though?)

:8880 {
	@denied dynamic_client_ip static 12.34.56.0/24 1200:ab00::/32
	abort @denied

    reverse_proxy localhost:8080
}

Development

Before diving into development, make sure to follow the Extending Caddy guide. This ensures you're familiar with the Caddy development process and that your environment is set up correctly.

To run Caddy with this module:

xcaddy run

License

The project is licensed under the Apache License.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IpScore

type IpScore struct {
	// Api Url is the API key from AbuseIPDB.
	ApiUrl string `json:"api_url,omitempty"`
	// WhitelistedIPs is a regex of whitelisted IPs. (optional)
	WhitelistedIPs string `json:"whitelisted_ips,omitempty"`

	Logger *zap.Logger
}

ListenCaddy is a Caddy http.handlers module that listens for requests to specific URIs/paths and reports IPs that hit these URIs to AbuseIPDB.

func (IpScore) CaddyModule

func (IpScore) CaddyModule() caddy.ModuleInfo

func (*IpScore) Provision

func (l *IpScore) Provision(ctx caddy.Context) error

func (IpScore) ServeHTTP

func (l IpScore) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.Handler) error

func (*IpScore) UnmarshalCaddyfile

func (l *IpScore) UnmarshalCaddyfile(d *caddyfile.Dispenser) error

UnmarshalCaddyfile implements caddyfile.Unmarshaler.

func (*IpScore) Validate

func (l *IpScore) Validate() error

type Response

type Response struct {
	Ip        string `json:"ip,omitempty"`
	IpVersion int    `json:"ipVersion,omitempty"`
	Country   string `json:"country,omitempty"`
	Score     int    `json:"score,omitempty"`
	IsVPN     bool   `json:"isVpn,omitempty"`
	Time      int    `json:"time,omitempty"`
	TimeStr   string `json:"timeStr,omitempty"`
	IsSafe    bool   `json:"isSafe,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL