Documentation
¶
Index ¶
- func New(ctx context.Context, next http.Handler, config *Config, name string) (http.Handler, error)
- type Config
- type IStorage
- type MemoryStorage
- type MyTraefikLogger
- func (logger *MyTraefikLogger) Debug(message string)
- func (logger *MyTraefikLogger) Debuge(err error, message string)
- func (logger *MyTraefikLogger) Debugef(err error, format string, v ...any)
- func (logger *MyTraefikLogger) Debugf(format string, v ...any)
- func (logger *MyTraefikLogger) Error(message string)
- func (logger *MyTraefikLogger) Errore(err error, message string)
- func (logger *MyTraefikLogger) Erroref(err error, format string, v ...any)
- func (logger *MyTraefikLogger) Errorf(format string, v ...any)
- func (logger *MyTraefikLogger) Info(message string)
- func (logger *MyTraefikLogger) Infoe(err error, message string)
- func (logger *MyTraefikLogger) Infoef(err error, format string, v ...any)
- func (logger *MyTraefikLogger) Infof(format string, v ...any)
- func (logger *MyTraefikLogger) Warn(message string)
- func (logger *MyTraefikLogger) Warne(err error, message string)
- func (logger *MyTraefikLogger) Warnef(err error, format string, v ...any)
- func (logger *MyTraefikLogger) Warnf(format string, v ...any)
- type RedisStorage
- type RedisStorageConfig
- type StorageItem
- type TeapotHackerIsolationPlugin
- func (t *TeapotHackerIsolationPlugin) AppendStatusHeaders(rw http.ResponseWriter, found StorageItem, blocked bool)
- func (t *TeapotHackerIsolationPlugin) DetectIfHacker(rw2 *http.Response) bool
- func (t *TeapotHackerIsolationPlugin) ReturnHackerResponse(rw http.ResponseWriter, found StorageItem)
- func (t *TeapotHackerIsolationPlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶
type Config struct {
MinInstances int `json:"minInstances"`
ExpirySeconds int `json:"expirySeconds"`
ReturnCurrentExpiresHeader string `json:"returnCurrentExpiresHeader"`
ReturnCurrentStatusHeader string `json:"returnCurrentStatusHeader"`
ReturnCurrentCountHeader string `json:"returnCurrentCountHeader"`
StorageSystem string `json:"storageSystem"`
RedisHost string `json:"redisHost"`
RedisPort int `json:"redisPort"`
LoggingPrefix string `json:"loggingPrefix"`
TriggerOnHeaders []string `json:"triggerOnHeaders"`
TriggerOnStatusCodes []int `json:"triggerOnStatusCodes"`
ReturnStatusCodeOnBlock int `json:"blockedStatusCode"`
ReturnBodyOnBlock string `json:"blockedBody"`
ReturnHeadersOnBlock []string `json:"blockedHeaders"`
}
Config the plugin configuration.
func CreateConfig ¶
func CreateConfig() *Config
CreateConfig creates the DEFAULT plugin configuration - no access to config yet!
type IStorage ¶
type IStorage interface {
GetIpViolations(ip string) StorageItem
IncrIpViolations(ip string, jailTime time.Duration) StorageItem
}
type MemoryStorage ¶
type MemoryStorage struct {
// contains filtered or unexported fields
}
func NewMemoryStorage ¶
func NewMemoryStorage() *MemoryStorage
func (*MemoryStorage) GetIpViolations ¶
func (r *MemoryStorage) GetIpViolations(ip string) StorageItem
func (*MemoryStorage) IncrIpViolations ¶
func (r *MemoryStorage) IncrIpViolations(ip string, jailTime time.Duration) StorageItem
type MyTraefikLogger ¶
type MyTraefikLogger struct {
// contains filtered or unexported fields
}
func NewMyTraefikLogger ¶
func NewMyTraefikLogger(prefix string) *MyTraefikLogger
func (*MyTraefikLogger) Debug ¶
func (logger *MyTraefikLogger) Debug(message string)
func (*MyTraefikLogger) Debuge ¶
func (logger *MyTraefikLogger) Debuge(err error, message string)
func (*MyTraefikLogger) Debugef ¶
func (logger *MyTraefikLogger) Debugef(err error, format string, v ...any)
func (*MyTraefikLogger) Debugf ¶
func (logger *MyTraefikLogger) Debugf(format string, v ...any)
func (*MyTraefikLogger) Error ¶
func (logger *MyTraefikLogger) Error(message string)
func (*MyTraefikLogger) Errore ¶
func (logger *MyTraefikLogger) Errore(err error, message string)
func (*MyTraefikLogger) Erroref ¶
func (logger *MyTraefikLogger) Erroref(err error, format string, v ...any)
func (*MyTraefikLogger) Errorf ¶
func (logger *MyTraefikLogger) Errorf(format string, v ...any)
func (*MyTraefikLogger) Info ¶
func (logger *MyTraefikLogger) Info(message string)
func (*MyTraefikLogger) Infoe ¶
func (logger *MyTraefikLogger) Infoe(err error, message string)
func (*MyTraefikLogger) Infoef ¶
func (logger *MyTraefikLogger) Infoef(err error, format string, v ...any)
func (*MyTraefikLogger) Infof ¶
func (logger *MyTraefikLogger) Infof(format string, v ...any)
func (*MyTraefikLogger) Warn ¶
func (logger *MyTraefikLogger) Warn(message string)
func (*MyTraefikLogger) Warne ¶
func (logger *MyTraefikLogger) Warne(err error, message string)
func (*MyTraefikLogger) Warnef ¶
func (logger *MyTraefikLogger) Warnef(err error, format string, v ...any)
func (*MyTraefikLogger) Warnf ¶
func (logger *MyTraefikLogger) Warnf(format string, v ...any)
type RedisStorage ¶
type RedisStorage struct {
// contains filtered or unexported fields
}
func NewRedisStorage ¶
func NewRedisStorage(config *Config) (*RedisStorage, error)
func (*RedisStorage) GetIpViolations ¶
func (r *RedisStorage) GetIpViolations(ip string) StorageItem
func (*RedisStorage) IncrIpViolations ¶
func (r *RedisStorage) IncrIpViolations(ip string, jailTime time.Duration) StorageItem
type RedisStorageConfig ¶
type StorageItem ¶ added in v0.2.0
type StorageItem struct {
// contains filtered or unexported fields
}
type TeapotHackerIsolationPlugin ¶
type TeapotHackerIsolationPlugin struct {
Config *Config
Logger *log.Logger
Storage IStorage
// contains filtered or unexported fields
}
func NewTeapotHackerIsolationPlugin ¶
func NewTeapotHackerIsolationPlugin(ctx context.Context, next http.Handler, config *Config, name string) (*TeapotHackerIsolationPlugin, error)
for debugging and to get back a strongly typed plugin implementation
func (*TeapotHackerIsolationPlugin) AppendStatusHeaders ¶ added in v0.2.0
func (t *TeapotHackerIsolationPlugin) AppendStatusHeaders(rw http.ResponseWriter, found StorageItem, blocked bool)
func (*TeapotHackerIsolationPlugin) DetectIfHacker ¶
func (t *TeapotHackerIsolationPlugin) DetectIfHacker(rw2 *http.Response) bool
func (*TeapotHackerIsolationPlugin) ReturnHackerResponse ¶ added in v0.2.0
func (t *TeapotHackerIsolationPlugin) ReturnHackerResponse(rw http.ResponseWriter, found StorageItem)
func (*TeapotHackerIsolationPlugin) ServeHTTP ¶
func (t *TeapotHackerIsolationPlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request)
Click to show internal directories.
Click to hide internal directories.