database

package
v1.6.4-rc1 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2024 License: MIT Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CAPIPullLockTimeout = 10
	CapiPullLockName    = "pullCAPI"
)
View Source
const (
	CapiMachineID      = types.CAPIOrigin
	CapiListsMachineID = types.ListOrigin
)

Variables

View Source
var (
	UserExists        = errors.New("user already exist")
	UserNotExists     = errors.New("user doesn't exist")
	HashError         = errors.New("unable to hash")
	InsertFail        = errors.New("unable to insert row")
	QueryFail         = errors.New("unable to query")
	UpdateFail        = errors.New("unable to update")
	DeleteFail        = errors.New("unable to delete")
	ItemNotFound      = errors.New("object not found")
	ParseTimeFail     = errors.New("unable to parse time")
	ParseDurationFail = errors.New("unable to parse duration")
	MarshalFail       = errors.New("unable to serialize")
	UnmarshalFail     = errors.New("unable to parse")
	BulkError         = errors.New("unable to insert bulk")
	ParseType         = errors.New("unable to parse type")
	InvalidIPOrRange  = errors.New("invalid ip address / range")
	InvalidFilter     = errors.New("invalid filter")
)

Functions

func AlertPredicatesFromFilter added in v1.4.2

func AlertPredicatesFromFilter(filter map[string][]string) ([]predicate.Alert, error)

func BuildAlertRequestFromFilter added in v1.0.0

func BuildAlertRequestFromFilter(alerts *ent.AlertQuery, filter map[string][]string) (*ent.AlertQuery, error)

func BuildDecisionRequestWithFilter added in v1.0.0

func BuildDecisionRequestWithFilter(query *ent.DecisionQuery, filter map[string][]string) (*ent.DecisionQuery, error)

func GetIpsFromIpRange added in v1.0.0

func GetIpsFromIpRange(host string) (int64, int64, error)

GetIpsFromIpRange takes a CIDR range and returns the start and end IP

func IP2Int added in v1.0.0

func IP2Int(ip net.IP) uint32

func Int2ip added in v1.0.0

func Int2ip(nn uint32) net.IP

func IsIpv4 added in v1.0.0

func IsIpv4(host string) bool

func LastAddress added in v1.0.0

func LastAddress(n *net.IPNet) net.IP

Stolen from : https://github.com/llimllib/ipaddress/ Return the final address of a net range. Convert to IPv4 if possible, otherwise return an ipv6

func ParseDuration added in v1.5.3

func ParseDuration(d string) (time.Duration, error)

Types

type BouncerNotFoundError added in v1.6.3

type BouncerNotFoundError struct {
	BouncerName string
}

func (*BouncerNotFoundError) Error added in v1.6.3

func (e *BouncerNotFoundError) Error() string

type Client added in v1.0.0

type Client struct {
	Ent      *ent.Client
	Log      *log.Logger
	CanFlush bool
	Type     string
	WalMode  *bool
	// contains filtered or unexported fields
}

func NewClient added in v1.0.0

func NewClient(ctx context.Context, config *csconfig.DatabaseCfg) (*Client, error)

func (*Client) AcquireLock added in v1.6.1

func (c *Client) AcquireLock(ctx context.Context, name string) error

func (*Client) AcquirePullCAPILock added in v1.6.1

func (c *Client) AcquirePullCAPILock(ctx context.Context) error

func (*Client) AlertsCountPerScenario added in v1.4.0

func (c *Client) AlertsCountPerScenario(ctx context.Context, filters map[string][]string) (map[string]int, error)

func (*Client) BouncerUpdateBaseMetrics added in v1.6.3

func (c *Client) BouncerUpdateBaseMetrics(ctx context.Context, bouncerName string, bouncerType string, baseMetrics models.BaseMetrics) error

func (*Client) BulkDeleteBouncers added in v1.5.3

func (c *Client) BulkDeleteBouncers(ctx context.Context, bouncers []*ent.Bouncer) (int, error)

func (*Client) BulkDeleteWatchers added in v1.5.3

func (c *Client) BulkDeleteWatchers(ctx context.Context, machines []*ent.Machine) (int, error)

func (*Client) CountActiveDecisionsByValue added in v1.6.2

func (c *Client) CountActiveDecisionsByValue(ctx context.Context, decisionValue string) (int, error)

func (*Client) CountDecisionsByValue added in v1.4.0

func (c *Client) CountDecisionsByValue(ctx context.Context, decisionValue string) (int, error)

func (*Client) CountDecisionsSinceByValue added in v1.4.0

func (c *Client) CountDecisionsSinceByValue(ctx context.Context, decisionValue string, since time.Time) (int, error)

func (*Client) CreateAlert added in v1.0.0

func (c *Client) CreateAlert(ctx context.Context, machineID string, alertList []*models.Alert) ([]string, error)

func (*Client) CreateBouncer added in v1.0.0

func (c *Client) CreateBouncer(ctx context.Context, name string, ipAddr string, apiKey string, authType string) (*ent.Bouncer, error)

func (*Client) CreateMachine added in v1.0.0

func (c *Client) CreateMachine(ctx context.Context, machineID *string, password *strfmt.Password, ipAddress string, isValidated bool, force bool, authType string) (*ent.Machine, error)

func (*Client) CreateMetric added in v1.6.3

func (c *Client) CreateMetric(ctx context.Context, generatedType metric.GeneratedType, generatedBy string, receivedAt time.Time, payload string) (*ent.Metric, error)

func (*Client) CreateOrUpdateAlert added in v1.5.0

func (c *Client) CreateOrUpdateAlert(ctx context.Context, machineID string, alertItem *models.Alert) (string, error)

CreateOrUpdateAlert is specific to PAPI : It checks if alert already exists, otherwise inserts it if alert already exists, it checks it associated decisions already exists if some associated decisions are missing (ie. previous insert ended up in error) it inserts them

func (*Client) DeleteAlertByID added in v1.4.2

func (c *Client) DeleteAlertByID(ctx context.Context, id int) error

func (*Client) DeleteAlertGraph added in v1.0.0

func (c *Client) DeleteAlertGraph(ctx context.Context, alertItem *ent.Alert) error

func (*Client) DeleteAlertGraphBatch added in v1.2.1

func (c *Client) DeleteAlertGraphBatch(ctx context.Context, alertItems []*ent.Alert) (int, error)

func (*Client) DeleteAlertWithFilter added in v1.0.0

func (c *Client) DeleteAlertWithFilter(ctx context.Context, filter map[string][]string) (int, error)

func (*Client) DeleteBouncer added in v1.0.0

func (c *Client) DeleteBouncer(ctx context.Context, name string) error

func (*Client) DeleteDecisions added in v1.6.3

func (c *Client) DeleteDecisions(ctx context.Context, decisions []*ent.Decision) (int, error)

DeleteDecisions removes a list of decisions from the database It returns the number of impacted decisions for the CAPI/PAPI

func (*Client) DeleteDecisionsWithFilter added in v1.0.0

func (c *Client) DeleteDecisionsWithFilter(ctx context.Context, filter map[string][]string) (string, []*ent.Decision, error)

func (*Client) DeleteWatcher added in v1.0.0

func (c *Client) DeleteWatcher(ctx context.Context, name string) error

func (*Client) ExpireDecisionByID added in v1.6.3

func (c *Client) ExpireDecisionByID(ctx context.Context, decisionID int) (int, []*ent.Decision, error)

ExpireDecision set the expiration of a decision to now()

func (*Client) ExpireDecisions added in v1.6.3

func (c *Client) ExpireDecisions(ctx context.Context, decisions []*ent.Decision) (int, error)

ExpireDecisions sets the expiration of a list of decisions to now() It returns the number of impacted decisions for the CAPI/PAPI

func (*Client) ExpireDecisionsWithFilter added in v1.6.3

func (c *Client) ExpireDecisionsWithFilter(ctx context.Context, filter map[string][]string) (string, []*ent.Decision, error)

ExpireDecisionsWithFilter updates the expiration time to now() for the decisions matching the filter, and returns the updated items

func (*Client) FlushAgentsAndBouncers added in v1.4.0

func (c *Client) FlushAgentsAndBouncers(ctx context.Context, agentsCfg *csconfig.AuthGCCfg, bouncersCfg *csconfig.AuthGCCfg) error

func (*Client) FlushAlerts added in v1.0.0

func (c *Client) FlushAlerts(ctx context.Context, MaxAge string, MaxItems int) error

func (*Client) FlushOrphans added in v1.1.0

func (c *Client) FlushOrphans(ctx context.Context)

func (*Client) GetActiveDecisionsTimeLeftByValue added in v1.6.2

func (c *Client) GetActiveDecisionsTimeLeftByValue(ctx context.Context, decisionValue string) (time.Duration, error)

func (*Client) GetAlertByID added in v1.0.0

func (c *Client) GetAlertByID(ctx context.Context, alertID int) (*ent.Alert, error)

func (*Client) GetBouncerUsageMetricsByName added in v1.6.3

func (c *Client) GetBouncerUsageMetricsByName(ctx context.Context, bouncerName string) ([]*ent.Metric, error)

func (*Client) GetConfigItem added in v1.5.0

func (c *Client) GetConfigItem(ctx context.Context, key string) (*string, error)

func (*Client) GetLPUsageMetricsByMachineID added in v1.6.3

func (c *Client) GetLPUsageMetricsByMachineID(ctx context.Context, machineId string) ([]*ent.Metric, error)

func (*Client) IsLocked added in v1.6.1

func (c *Client) IsLocked(err error) bool

func (*Client) IsMachineRegistered added in v1.0.0

func (c *Client) IsMachineRegistered(ctx context.Context, machineID string) (bool, error)

func (*Client) ListBouncers added in v1.0.0

func (c *Client) ListBouncers(ctx context.Context) ([]*ent.Bouncer, error)

func (*Client) ListMachines added in v1.0.0

func (c *Client) ListMachines(ctx context.Context) ([]*ent.Machine, error)

func (*Client) MachineUpdateBaseMetrics added in v1.6.3

func (c *Client) MachineUpdateBaseMetrics(ctx context.Context, machineID string, baseMetrics models.BaseMetrics, hubItems models.HubItems, datasources map[string]int64) error

func (*Client) MarkUsageMetricsAsSent added in v1.6.3

func (c *Client) MarkUsageMetricsAsSent(ctx context.Context, ids []int) error

func (*Client) QueryAlertWithFilter added in v1.0.0

func (c *Client) QueryAlertWithFilter(ctx context.Context, filter map[string][]string) ([]*ent.Alert, error)

func (*Client) QueryAllDecisionsWithFilters added in v1.1.0

func (c *Client) QueryAllDecisionsWithFilters(ctx context.Context, filters map[string][]string) ([]*ent.Decision, error)

func (*Client) QueryBouncersInactiveSince added in v1.6.3

func (c *Client) QueryBouncersInactiveSince(ctx context.Context, t time.Time) ([]*ent.Bouncer, error)

func (*Client) QueryDecisionCountByScenario added in v1.4.0

func (c *Client) QueryDecisionCountByScenario(ctx context.Context) ([]*DecisionsByScenario, error)

func (*Client) QueryDecisionWithFilter added in v1.0.0

func (c *Client) QueryDecisionWithFilter(ctx context.Context, filter map[string][]string) ([]*ent.Decision, error)

func (*Client) QueryExpiredDecisionsSinceWithFilters added in v1.1.0

func (c *Client) QueryExpiredDecisionsSinceWithFilters(ctx context.Context, since *time.Time, filters map[string][]string) ([]*ent.Decision, error)

func (*Client) QueryExpiredDecisionsWithFilters added in v1.1.0

func (c *Client) QueryExpiredDecisionsWithFilters(ctx context.Context, filters map[string][]string) ([]*ent.Decision, error)

func (*Client) QueryMachineByID added in v1.0.0

func (c *Client) QueryMachineByID(ctx context.Context, machineID string) (*ent.Machine, error)

func (*Client) QueryMachinesInactiveSince added in v1.6.3

func (c *Client) QueryMachinesInactiveSince(ctx context.Context, t time.Time) ([]*ent.Machine, error)

func (*Client) QueryNewDecisionsSinceWithFilters added in v1.1.0

func (c *Client) QueryNewDecisionsSinceWithFilters(ctx context.Context, since *time.Time, filters map[string][]string) ([]*ent.Decision, error)

func (*Client) QueryPendingMachine added in v1.0.0

func (c *Client) QueryPendingMachine(ctx context.Context) ([]*ent.Machine, error)

func (*Client) ReleaseLock added in v1.6.1

func (c *Client) ReleaseLock(ctx context.Context, name string) error

func (*Client) ReleaseLockWithTimeout added in v1.6.1

func (c *Client) ReleaseLockWithTimeout(ctx context.Context, name string, timeout int) error

func (*Client) ReleasePullCAPILock added in v1.6.1

func (c *Client) ReleasePullCAPILock(ctx context.Context) error

func (*Client) SelectBouncer added in v1.0.0

func (c *Client) SelectBouncer(ctx context.Context, apiKeyHash string) (*ent.Bouncer, error)

func (*Client) SelectBouncerByName added in v1.4.0

func (c *Client) SelectBouncerByName(ctx context.Context, bouncerName string) (*ent.Bouncer, error)

func (*Client) SetConfigItem added in v1.5.0

func (c *Client) SetConfigItem(ctx context.Context, key string, value string) error

func (*Client) StartFlushScheduler added in v1.0.0

func (c *Client) StartFlushScheduler(ctx context.Context, config *csconfig.FlushDBCfg) (*gocron.Scheduler, error)

func (*Client) TotalAlerts added in v1.0.0

func (c *Client) TotalAlerts(ctx context.Context) (int, error)

func (*Client) UpdateBouncerIP added in v1.0.0

func (c *Client) UpdateBouncerIP(ctx context.Context, ipAddr string, id int) error

func (*Client) UpdateBouncerLastPull added in v1.0.0

func (c *Client) UpdateBouncerLastPull(ctx context.Context, lastPull time.Time, id int) error

func (*Client) UpdateBouncerTypeAndVersion added in v1.0.0

func (c *Client) UpdateBouncerTypeAndVersion(ctx context.Context, bType string, version string, id int) error

func (*Client) UpdateCommunityBlocklist added in v1.2.0

func (c *Client) UpdateCommunityBlocklist(ctx context.Context, alertItem *models.Alert) (int, int, int, error)

UpdateCommunityBlocklist is called to update either the community blocklist (or other lists the user subscribed to) it takes care of creating the new alert with the associated decisions, and it will as well deleted the "older" overlapping decisions: 1st pull, you get decisions [1,2,3]. it inserts [1,2,3] 2nd pull, you get decisions [1,2,3,4]. it inserts [1,2,3,4] and will try to delete [1,2,3,4] with a different alert ID and same origin

func (*Client) UpdateMachineIP added in v1.0.0

func (c *Client) UpdateMachineIP(ctx context.Context, ipAddr string, id int) error

func (*Client) UpdateMachineLastHeartBeat added in v1.4.0

func (c *Client) UpdateMachineLastHeartBeat(ctx context.Context, machineID string) error

func (*Client) UpdateMachineScenarios added in v1.0.0

func (c *Client) UpdateMachineScenarios(ctx context.Context, scenarios string, id int) error

func (*Client) UpdateMachineVersion added in v1.0.0

func (c *Client) UpdateMachineVersion(ctx context.Context, ipAddr string, id int) error

func (*Client) ValidateMachine added in v1.0.0

func (c *Client) ValidateMachine(ctx context.Context, machineID string) error

type DecisionsByScenario added in v1.4.0

type DecisionsByScenario struct {
	Scenario string
	Count    int
	Origin   string
	Type     string
}

type MachineNotFoundError added in v1.6.3

type MachineNotFoundError struct {
	MachineID string
}

func (*MachineNotFoundError) Error added in v1.6.3

func (e *MachineNotFoundError) Error() string

Directories

Path Synopsis
ent

Jump to

Keyboard shortcuts

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