Documentation
¶
Index ¶
- Constants
- Variables
- type Client
- func (c *Client) Close() error
- func (c *Client) Find(ctx context.Context, ip string) (reason string, err error)
- func (c *Client) Flush(ctx context.Context) error
- func (c *Client) Insert(ctx context.Context, ipRange, reason string) error
- func (c *Client) Remove(ctx context.Context, ipRange string) error
- func (c *Client) Reset(ctx context.Context) error
- func (c *Client) UpdateReasonOf(ctx context.Context, ip string, fn UpdateFunc) (err error)
- type Error
- type Options
- type UpdateFunc
Constants ¶
const ( // ErrConnectionFailed is returned when the connection to the redis database fails. ErrConnectionFailed = Error("failed to establish a connection to the redis database") // ErrDatabaseInit is returned when the initialization of the database boundaries fails. ErrDatabaseInit = Error("failed to initialize database ±inf boundaries") // ErrDatabaseInconsistent is returned when the initialization of the database boundaries fails. ErrDatabaseInconsistent = Error("the databe is in an inconsistent state") // ErrInvalidRange is returned when a passed string is not a valid range ErrInvalidRange = Error("invalid range passed, use either of these: <IP>, <IP>/<1-32>, <IP> - <IP>") // ErrIPv6NotSupported is returned if an IPv6 range or IP input is detected. ErrIPv6NotSupported = Error("IPv6 ranges are not supported") // ErrInvalidIP is returned when the passed argument is an invalid IP ErrInvalidIP = Error("invalid IP passed") // ErrNoResult is returned when a result slic is empty or some connection error occurs during retrieval of values. ErrNoResult = Error("could not retrieve any results from the database") // ErrIPNotFound is returned if the passed IP is not contained in any ranges ErrIPNotFound = Error("the given IP was not found in any database ranges") )
Variables ¶
var ( // IPRangesKey contains the key name of the sorted set that contains the IPs (integers) IPRangesKey = "________________IP_RANGES________________" // DeleteReason is given to a specific deltion range // on a second attept (not atomic) the range is then finally deleted. DeleteReason = "_________________DELETE_________________" )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is an extended version of the redis.Client
func (*Client) Find ¶
Find searches for the requested IP in the database. If the IP is found within any previously inserted range, the associated reason is returned. If it is not found, an error is returned instead. returns a reason or either ErrIPNotFound if no IP was found ErrDatabaseInconsistent if the database has become inconsistent.
func (*Client) Insert ¶
Insert inserts a new IP range or IP into the database with an associated reason string
func (*Client) UpdateReasonOf ¶
UpdateReasonOf updates the reason of the range that contains the passed ip.
type Error ¶
type Error string
Error is a wrapper for constant errors that are not supposed to be changed.
type Options ¶
type Options struct { // The network type, either tcp or unix. // Default is tcp. Network string // host:port address. Addr string // ClientName will execute the `CLIENT SETNAME ClientName` command for each conn. ClientName string // Dialer creates new network connection and has priority over // Network and Addr options. Dialer func(ctx context.Context, network, addr string) (net.Conn, error) // Hook that is called when new connection is established. OnConnect func(ctx context.Context, cn *redis.Conn) error // Protocol 2 or 3. Use the version to negotiate RESP version with redis-server. // Default is 3. Protocol int // Use the specified Username to authenticate the current connection // with one of the connections defined in the ACL list when connecting // to a Redis 6.0 instance, or greater, that is using the Redis ACL system. Username string // Optional password. Must match the password specified in the // requirepass server configuration option (if connecting to a Redis 5.0 instance, or lower), // or the User Password when connecting to a Redis 6.0 instance, or greater, // that is using the Redis ACL system. Password string // CredentialsProvider allows the username and password to be updated // before reconnecting. It should return the current username and password. CredentialsProvider func() (username string, password string) // Database to be selected after connecting to the server. DB int // Maximum number of retries before giving up. // Default is 3 retries; -1 (not 0) disables retries. MaxRetries int // Minimum backoff between each retry. // Default is 8 milliseconds; -1 disables backoff. MinRetryBackoff time.Duration // Maximum backoff between each retry. // Default is 512 milliseconds; -1 disables backoff. MaxRetryBackoff time.Duration // Dial timeout for establishing new connections. // Default is 5 seconds. DialTimeout time.Duration // Timeout for socket reads. If reached, commands will fail // with a timeout instead of blocking. Supported values: // - `0` - default timeout (3 seconds). // - `-1` - no timeout (block indefinitely). // - `-2` - disables SetReadDeadline calls completely. ReadTimeout time.Duration // Timeout for socket writes. If reached, commands will fail // with a timeout instead of blocking. Supported values: // - `0` - default timeout (3 seconds). // - `-1` - no timeout (block indefinitely). // - `-2` - disables SetWriteDeadline calls completely. WriteTimeout time.Duration // ContextTimeoutEnabled controls whether the client respects context timeouts and deadlines. // See https://redis.uptrace.dev/guide/go-redis-debugging.html#timeouts ContextTimeoutEnabled bool // Type of connection pool. // true for FIFO pool, false for LIFO pool. // Note that FIFO has slightly higher overhead compared to LIFO, // but it helps closing idle connections faster reducing the pool size. PoolFIFO bool // Maximum number of socket connections. // Default is 10 connections per every available CPU as reported by runtime.GOMAXPROCS. PoolSize int // Amount of time client waits for connection if all connections // are busy before returning an error. // Default is ReadTimeout + 1 second. PoolTimeout time.Duration // Minimum number of idle connections which is useful when establishing // new connection is slow. // Default is 0. the idle connections are not closed by default. MinIdleConns int // Maximum number of idle connections. // Default is 0. the idle connections are not closed by default. MaxIdleConns int // ConnMaxIdleTime is the maximum amount of time a connection may be idle. // Should be less than server's timeout. // // Expired connections may be closed lazily before reuse. // If d <= 0, connections are not closed due to a connection's idle time. // // Default is 30 minutes. -1 disables idle timeout check. ConnMaxIdleTime time.Duration // ConnMaxLifetime is the maximum amount of time a connection may be reused. // // Expired connections may be closed lazily before reuse. // If <= 0, connections are not closed due to a connection's age. // // Default is to not close idle connections. ConnMaxLifetime time.Duration // TLS Config to use. When set, TLS will be negotiated. TLSConfig *tls.Config // Limiter interface used to implement circuit breaker or rate limiter. Limiter redis.Limiter }
Options keeps the settings to set up redis connection.
type UpdateFunc ¶
UpdateFunc updates the previous reason to a new reason.