| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package schema
- import (
- "context"
- "time"
- "github.com/gravitl/netmaker/db"
- "github.com/gravitl/netmaker/models"
- "gorm.io/datatypes"
- )
- type Attribute string
- type Values string
- const (
- OS Attribute = "os"
- OSVersion Attribute = "os_version"
- OSFamily Attribute = "os_family"
- KernelVersion Attribute = "kernel_version"
- AutoUpdate Attribute = "auto_update"
- ClientVersion Attribute = "client_version"
- ClientLocation Attribute = "client_location"
- )
- var PostureCheckAttrs = []Attribute{
- ClientLocation,
- ClientVersion,
- OS,
- OSVersion,
- OSFamily,
- KernelVersion,
- AutoUpdate,
- }
- var PostureCheckAttrValuesMap = map[Attribute]map[string]struct{}{
- ClientLocation: {
- "any_valid_iso_country_codes": {},
- },
- ClientVersion: {
- "any_valid_semantic_version": {},
- },
- OS: {
- "linux": {},
- "darwin": {},
- "windows": {},
- "ios": {},
- "android": {},
- },
- OSVersion: {
- "any_valid_semantic_version": {},
- },
- OSFamily: {
- "linux-debian": {},
- "linux-redhat": {},
- "linux-suse": {},
- "linux-arch": {},
- "linux-gentoo": {},
- "linux-other": {},
- "darwin": {},
- "windows": {},
- "ios": {},
- "android": {},
- },
- KernelVersion: {
- "any_valid_semantic_version": {},
- },
- AutoUpdate: {
- "true": {},
- "false": {},
- },
- }
- var PostureCheckAttrValues = map[Attribute][]string{
- ClientLocation: {"any_valid_iso_country_codes"},
- ClientVersion: {"any_valid_semantic_version"},
- OS: {"linux", "darwin", "windows", "ios", "android"},
- OSVersion: {"any_valid_semantic_version"},
- OSFamily: {"linux-debian", "linux-redhat", "linux-suse", "linux-arch", "linux-gentoo", "linux-other", "darwin", "windows", "ios", "android"},
- KernelVersion: {"any_valid_semantic_version"},
- AutoUpdate: {"true", "false"},
- }
- type PostureCheck struct {
- ID string `gorm:"primaryKey" json:"id"`
- Name string `gorm:"name" json:"name"`
- NetworkID models.NetworkID `gorm:"network_id" json:"network_id"`
- Description string `gorm:"description" json:"description"`
- Attribute Attribute `gorm:"attribute" json:"attribute"`
- Values datatypes.JSONSlice[string] `gorm:"values" json:"values"`
- Severity models.Severity `gorm:"severity" json:"severity"`
- Tags datatypes.JSONMap `gorm:"tags" json:"tags"`
- UserGroups datatypes.JSONMap `gorm:"user_groups" json:"user_groups"`
- Status bool `gorm:"status" json:"status"`
- CreatedBy string `gorm:"created_by" json:"created_by"`
- CreatedAt time.Time `gorm:"created_at" json:"created_at"`
- UpdatedAt time.Time `gorm:"updated_at" json:"updated_at"`
- }
- func (p *PostureCheck) Get(ctx context.Context) error {
- return db.FromContext(ctx).Model(&PostureCheck{}).First(&p).Where("id = ?", p.ID).Error
- }
- func (p *PostureCheck) Update(ctx context.Context) error {
- return db.FromContext(ctx).Model(&PostureCheck{}).Where("id = ?", p.ID).Updates(&p).Error
- }
- func (p *PostureCheck) Create(ctx context.Context) error {
- return db.FromContext(ctx).Model(&PostureCheck{}).Create(&p).Error
- }
- func (p *PostureCheck) ListByNetwork(ctx context.Context) (pcli []PostureCheck, err error) {
- err = db.FromContext(ctx).Model(&PostureCheck{}).Where("network_id = ?", p.NetworkID).Find(&pcli).Error
- return
- }
- func (p *PostureCheck) Delete(ctx context.Context) error {
- return db.FromContext(ctx).Model(&PostureCheck{}).Where("id = ?", p.ID).Delete(&p).Error
- }
- func (p *PostureCheck) UpdateStatus(ctx context.Context) error {
- return db.FromContext(ctx).Model(&PostureCheck{}).Where("id = ?", p.ID).Updates(map[string]any{
- "status": p.Status,
- }).Error
- }
|