models

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: May 16, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DatabaseGeoIP = "geoip"
	DatabaseASN   = "asn"
)

Variables

Functions

func ErrorResolver

func ErrorResolver(err error) (status int)

ErrorResolver is used to map internally defined errors to HTTP status codes for chix.

func IsClientError

func IsClientError(err error) bool

IsClientError returns true if the error is related to user input/can be corrected by the user.

Types

type ASNQuery

type ASNQuery struct {
	AutonomousSystemNumber int    `maxminddb:"autonomous_system_number"`
	AutonomousSystemOrg    string `maxminddb:"autonomous_system_organization"`

	Network *net.IPNet
}

ASNQuery is the ASN search query to search through the ASN Maxmind DB.

type ConfigDB

type ConfigDB struct {
	GeoIPPath string `env:"GEOIP_PATH"            long:"geoip-path" description:"path to read/store GeoIP Maxmind DB" default:"geoip.db"`
	GeoIPURL  string `` /* 233-byte string literal not displayed */

	ASNPath string `env:"ASN_PATH"            long:"asn-path" description:"path to read/store ASN Maxmind DB" default:"asn.db"`
	ASNURL  string `` /* 226-byte string literal not displayed */

	LicenseKey      string        `` /* 128-byte string literal not displayed */
	UpdateInterval  time.Duration `env:"UPDATE_INTERVAL" long:"update-interval" description:"interval of time between database update checks" default:"12h"`
	CacheSize       int           `` /* 142-byte string literal not displayed */
	CacheExpire     time.Duration `env:"CACHE_EXPIRE" long:"expire" description:"expiration time of cache" default:"1h"`
	DefaultLanguage string        `env:"DEFAULT_LANGUAGE" long:"lang" description:"default language to use for geolocation" default:"en"`
}

type ConfigDNS

type ConfigDNS struct {
	Resolvers   []string      `` /* 181-byte string literal not displayed */
	Local       bool          `env:"LOCAL"        long:"uselocal" description:"adds local (system) resolvers to the list of resolvers to use"`
	CacheSize   int           `` /* 145-byte string literal not displayed */
	CacheExpire time.Duration `env:"CACHE_EXPIRE" long:"expire"   description:"expiration time of cache" default:"1h"`
	Timeout     time.Duration `` /* 133-byte string literal not displayed */
}

type ConfigHTTP

type ConfigHTTP struct {
	BindAddr       string   `env:"BIND_ADDR"       long:"bind-addr"       default:":8080" required:"true" description:"ip:port pair to bind to"`
	TrustedProxies []string `` /* 193-byte string literal not displayed */
	MaxConcurrent  int      `` /* 134-byte string literal not displayed */
	Limit          int      `env:"LIMIT"           long:"limit"           description:"number of requests/ip/hour" default:"2000"`
	HSTS           bool     `env:"HSTS"            long:"hsts"            description:"enable HTTP Strict Transport Security"`
	CORS           []string `env:"CORS"            long:"cors"            env-delim:"," default:"*" description:"CORS allowed origins"`
	Metrics        bool     `env:"METRICS"         long:"metrics"         description:"enable prometheus metrics on /metrics to internal IPs"`
}

type ErrHostResolve

type ErrHostResolve struct {
	Err     error
	Address string
}

ErrHostResolve is an error that is returned when the address didn't match an IP, and thus a hostname lookup was attempted, but failed.

func (*ErrHostResolve) Error

func (e *ErrHostResolve) Error() string

func (*ErrHostResolve) Unwrap

func (e *ErrHostResolve) Unwrap() error

type ErrInternalAddress

type ErrInternalAddress struct {
	Address string
}

ErrInternalAddress is an error that is returned when the address is an internal bogon address.

func (*ErrInternalAddress) Error

func (e *ErrInternalAddress) Error() string

type ErrNotFound

type ErrNotFound struct {
	Address string
}

func (*ErrNotFound) Error

func (e *ErrNotFound) Error() string

type ErrRateLimitExceeded

type ErrRateLimitExceeded struct {
	Address string
}

func (*ErrRateLimitExceeded) Error

func (e *ErrRateLimitExceeded) Error() string

type Flags

type Flags struct {
	HTTP ConfigHTTP `group:"HTTP Server options" namespace:"http" env-namespace:"HTTP"`
	DB   ConfigDB   `group:"DB Options" namespace:"db" env-namespace:"DB"`
	DNS  ConfigDNS  `group:"DNS Lookup Options" namespace:"dns" env-namespace:"DNS"`
}

type GeoQuery

type GeoQuery struct {
	City struct {
		Names map[string]string `maxminddb:"names"`
	} `maxminddb:"city"`
	Country struct {
		Code  string            `maxminddb:"iso_code"`
		Names map[string]string `maxminddb:"names"`
	} `maxminddb:"country"`
	Continent struct {
		Code  string            `maxminddb:"code"`
		Names map[string]string `maxminddb:"names"`
	} `maxminddb:"continent"`
	Location struct {
		Lat              float64 `maxminddb:"latitude"`
		Long             float64 `maxminddb:"longitude"`
		MetroCode        int     `maxminddb:"metro_code"`
		TimeZone         string  `maxminddb:"time_zone"`
		AccuracyRadiusKM int     `maxminddb:"accuracy_radius"`
	} `maxminddb:"location"`
	Postal struct {
		Code string `maxminddb:"code"`
	} `maxminddb:"postal"`
	Subdivisions []struct {
		Code  string            `maxminddb:"iso_code"`
		Names map[string]string `maxminddb:"names"`
	} `maxminddb:"subdivisions"`
}

GeoQuery is the struct->tag search query to search through the GeoIP Maxmind DB.

type LookupOptions

type LookupOptions struct {
	Languages         []string `form:"languages,omitempty" json:"languages" validate:"omitempty,dive,bcp47_language_tag|alpha,min=2,max=5"`
	DisableHostLookup bool     `form:"disable_host_lookup,omitempty" json:"disable_host_lookup"`
}

LookupOptions are the options for the lookup service.

type Response

type Response struct {
	Query string `json:"query"`
	Error string `json:"error,omitempty"`

	Host string `json:"host,omitempty"`

	// GeoIP information.
	IP               string  `json:"ip"`
	IPType           int     `json:"ip_type"`
	Summary          string  `json:"summary"`
	City             string  `json:"city"`
	Subdivision      string  `json:"subdivision"`
	Country          string  `json:"country"`
	CountryCode      string  `json:"country_abbr"`
	Continent        string  `json:"continent"`
	ContinentCode    string  `json:"continent_abbr"`
	Lat              float64 `json:"latitude"`
	Long             float64 `json:"longitude"`
	Timezone         string  `json:"timezone"`
	PostalCode       string  `json:"postal_code"`
	AccuracyRadiusKM int     `json:"accuracy_radius_km"`

	// ASN information.
	Network string `json:"network"`
	ASN     string `json:"asn"`
	ASNOrg  string `json:"asn_org"`
}

Response contains the geolocation and host information for an IP/host.

Jump to

Keyboard shortcuts

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