API Reference
This page lists every exported function, method, and type in package golangIPSentry, and marks which types are for internal use only.
Lifecycle
| Function | Signature | Description |
|---|---|---|
New |
func New(c Config) (*IPGuardian, error) |
Applies Log/Redis defaults, creates the logger, connects and pings Redis, builds the three list managers and loads list files, opens GeoLite2 |
IPGuardian.Close |
func (i *IPGuardian) Close() error |
Closes Redis, GeoLite2, and the logger; if closing Redis fails it returns that error without closing the rest |
New fails when the logger cannot initialize or the Redis ping fails. List-file and GeoLite2 failures are only logged and never fail New.
Check and Integration
| Method | Signature | Description |
|---|---|---|
IPGuardian.Check |
func (i *IPGuardian) Check(r *http.Request, w http.ResponseWriter) IPGuardianResult |
The full decision flow; see Request Lifecycle |
IPGuardian.HTTPMiddleware |
func (i *IPGuardian) HTTPMiddleware(next http.Handler) http.Handler |
net/http middleware |
IPGuardian.GinMiddleware |
func (i *IPGuardian) GinMiddleware() gin.HandlerFunc |
Gin middleware |
IPGuardian.LoginFailure |
func (i *IPGuardian) LoginFailure(w http.ResponseWriter, r *http.Request) error |
Increments the current session's login-failure count |
IPGuardian.NotFound404 |
func (i *IPGuardian) NotFound404(w http.ResponseWriter, r *http.Request) error |
Increments the current session's 404 count |
List Management
Accessed through IPGuardian.Manager (type Manager with fields Allow, Block, Deny):
| Method | Signature | Description |
|---|---|---|
AllowIPManager.Add |
func (m *AllowIPManager) Add(ip string, tag string) error |
Writes memory, Redis (no expiry), and the list file |
AllowIPManager.Check |
func (m *AllowIPManager) Check(ip string) bool |
Redis first; memory on a miss or error |
DenyIPManager.Add |
func (m *DenyIPManager) Add(ip, reason string) error |
Same as Allow, plus an asynchronous email |
DenyIPManager.Check |
func (m *DenyIPManager) Check(ip string) bool |
Same as Allow |
BlockIPManager.Add |
func (m *BlockIPManager) Add(ip string, reason string) error |
Temporary block; repeated calls grow the duration |
BlockIPManager.IsBlock |
func (m *BlockIPManager) IsBlock(ip string) bool |
Whether the IP is blocked; false on a Redis error |
AllowIPManager and DenyIPManager export Logger, Config, Redis, Context, Mutex, and Cache (map[string]*IPItem); BlockIPManager exports Logger, Config, Redis, and Context. Hold Mutex before touching Cache directly.
Main Types
type IPGuardian struct {
Context context.Context
Config *Config
Redis *redis.Client
Logger *Logger
GeoLite2 *GeoLite2
Manager *Manager
}
type IPGuardianResult struct {
Success bool `json:"success"`
StatusCode int `json:"status_code"`
Error string `json:"error"`
}
type IPItem struct {
IP string `json:"ip"`
Reason string `json:"reason"`
AddedAt int64 `json:"added_at"`
Count int `json:"count,omitempty"`
Last int64 `json:"last,omitempty"`
}
| Type | Description |
|---|---|
Config, Redis, Filepath, EmailConfig |
Settings; see Configuration |
Parameter |
Thresholds and scores; see Parameters |
Log |
Alias of goLogger.Log |
Logger |
Alias of goLogger.Logger; IPGuardian.Logger can be used to write logs |
IPItem |
Format of each list entry in files and Redis; Count / Last are used only by Block |
Exported Types for Internal Use
These types are exported but no public function returns or accepts them; they are implementation details and may change between versions:
| Type | Purpose |
|---|---|
Device, IS, IP |
Device, list status, and IP data parsed by getDevice |
ScoreItem |
One scoring result (IsBlock, IsSuspicious, IsDangerous, Flag, Score, Detail) |
RiskScore |
A dimension's accumulated Base score and Detail |
BasicItem |
Correlation-set settings for calcBasic (all fields unexported) |
ScoreTask, ScoreResult |
Currently unused |
GeoLite2 |
GeoLite2 readers and cache (IPGuardian.GeoLite2, nil when disabled) |
GeoLite2Config |
Currently unused; paths come from Filepath |
Location |
GeoLite2 lookup result (country, city, timezone, coordinates, accuracy radius) |