cwhub

package
v1.5.14 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2023 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const PathSeparator = "/"

Variables

View Source
var COLLECTIONS = "collections"
View Source
var HubBranch = "master"
View Source
var HubIndexFile = ".index.json"
View Source
var MissingHubIndex = errors.New("hub index can't be found")
View Source
var PARSERS = "parsers"

managed configuration types

View Source
var PARSERS_OVFLW = "postoverflows"
View Source
var RawFileURLTemplate = "https://hub-cdn.crowdsec.net/%s/%s"
View Source
var ReferenceMissingError = errors.New("Reference(s) missing in collection")

To be used when reference(s) (is/are) missing in a collection

View Source
var SCENARIOS = "scenarios"

Functions

func AddItem

func AddItem(itemType string, item Item) error

func CheckName

func CheckName(vname string, fauthor string, fname string) bool

func CheckSuffix

func CheckSuffix(hubpath string, remotePath string) bool

func CollecDepsCheck

func CollecDepsCheck(v *Item) error

func DisplaySummary

func DisplaySummary()

func DownloadDataIfNeeded

func DownloadDataIfNeeded(hub *csconfig.Hub, target Item, force bool) error

func DownloadHubIdx

func DownloadHubIdx(hub *csconfig.Hub) ([]byte, error)

func GetHubIdx

func GetHubIdx(hub *csconfig.Hub) error

func GetInstalledCollectionsAsString

func GetInstalledCollectionsAsString() ([]string, error)

func GetInstalledParsersAsString

func GetInstalledParsersAsString() ([]string, error)

func GetInstalledPostOverflowsAsString

func GetInstalledPostOverflowsAsString() ([]string, error)

func GetInstalledScenariosAsString

func GetInstalledScenariosAsString() ([]string, error)

func GetItemMap

func GetItemMap(itemType string) map[string]Item

func GetVersionStatus

func GetVersionStatus(v *Item) int

GetVersionStatus : semver requires 'v' prefix

func InstallItem

func InstallItem(csConfig *csconfig.Config, name string, obtype string, force bool, downloadOnly bool) error

func ItemStatus

func ItemStatus(v Item) (string, bool, bool, bool)

returns: human-text, Enabled, Warning, Unmanaged

func LoadPkgIndex

func LoadPkgIndex(buff []byte) (map[string]map[string]Item, error)

LoadPkgIndex loads a local .index.json file and returns the map of parsers/scenarios/collections associated

func LocalSync

func LocalSync(hub *csconfig.Hub) (error, []string)

Updates the infos from HubInit() with the local state

func RemoveMany

func RemoveMany(csConfig *csconfig.Config, itemType string, name string, all bool, purge bool, forceAction bool)

XXX this must return errors instead of log.Fatal

func SetHubBranch

func SetHubBranch() error

SetHubBranch sets the package variable that points to the hub branch.

func SyncDir

func SyncDir(hub *csconfig.Hub, dir string) (error, []string)

func UpdateHubIdx

func UpdateHubIdx(hub *csconfig.Hub) error

func UpgradeConfig

func UpgradeConfig(csConfig *csconfig.Config, itemType string, name string, force bool)

Types

type Item

type Item struct {
	/*descriptive info*/
	Type                 string   `yaml:"type,omitempty" json:"type,omitempty"`                                     //parser|postoverflows|scenario|collection(|enrich)
	Stage                string   `json:"stage,omitempty" yaml:"stage,omitempty,omitempty"`                         //Stage for parser|postoverflow : s00-raw/s01-...
	Name                 string   `json:"name,omitempty"`                                                           //as seen in .config.json, usually "author/name"
	FileName             string   `json:"file_name,omitempty"`                                                      //the filename, ie. apache2-logs.yaml
	Description          string   `yaml:"description,omitempty" json:"description,omitempty"`                       //as seen in .config.json
	Author               string   `json:"author,omitempty"`                                                         //as seen in .config.json
	References           []string `yaml:"references,omitempty" json:"references,omitempty"`                         //as seen in .config.json
	BelongsToCollections []string `yaml:"belongs_to_collections,omitempty" json:"belongs_to_collections,omitempty"` /*if it's part of collections, track name here*/

	/*remote (hub) infos*/
	RemoteURL  string                 `yaml:"remoteURL,omitempty" json:"remoteURL,omitempty"` //the full remote uri of file in http
	RemotePath string                 `json:"path,omitempty" yaml:"remote_path,omitempty"`    //the path relative to git ie. /parsers/stage/author/file.yaml
	RemoteHash string                 `yaml:"hash,omitempty" json:"hash,omitempty"`           //the meow
	Version    string                 `json:"version,omitempty"`                              //the last version
	Versions   map[string]ItemVersion `json:"versions,omitempty" yaml:"-"`                    //the list of existing versions

	/*local (deployed) infos*/
	LocalPath string `yaml:"local_path,omitempty" json:"local_path,omitempty"` //the local path relative to ${CFG_DIR}
	//LocalHubPath string
	LocalVersion string `json:"local_version,omitempty"`
	LocalHash    string `json:"local_hash,omitempty"` //the local meow
	Installed    bool   `json:"installed,omitempty"`
	Downloaded   bool   `json:"downloaded,omitempty"`
	UpToDate     bool   `json:"up_to_date,omitempty"`
	Tainted      bool   `json:"tainted,omitempty"` //has it been locally modified
	Local        bool   `json:"local,omitempty"`   //if it's a non versioned control one

	/*if it's a collection, it not a single file*/
	Parsers       []string `yaml:"parsers,omitempty" json:"parsers,omitempty"`
	PostOverflows []string `yaml:"postoverflows,omitempty" json:"postoverflows,omitempty"`
	Scenarios     []string `yaml:"scenarios,omitempty" json:"scenarios,omitempty"`
	Collections   []string `yaml:"collections,omitempty" json:"collections,omitempty"`
}

Item can be : parsed, scenario, collection

func DisableItem

func DisableItem(hub *csconfig.Hub, target Item, purge bool, force bool) (Item, error)

DisableItem to disable an item managed by the hub, removes the symlink if purge is true

func DownloadItem

func DownloadItem(hub *csconfig.Hub, target Item, overwrite bool) (Item, error)

func DownloadLatest

func DownloadLatest(hub *csconfig.Hub, target Item, overwrite bool, updateOnly bool) (Item, error)

DownloadLatest will download the latest version of Item to the tdir directory

func EnableItem

func EnableItem(hub *csconfig.Hub, target Item) (Item, error)

creates symlink between actual config file at hub.HubDir and hub.ConfigDir Handles collections recursively

func GetInstalledCollections

func GetInstalledCollections() ([]Item, error)

func GetInstalledParsers

func GetInstalledParsers() ([]Item, error)

func GetInstalledPostOverflows

func GetInstalledPostOverflows() ([]Item, error)

func GetInstalledScenarios

func GetInstalledScenarios() ([]Item, error)

func GetItem

func GetItem(itemType string, itemName string) *Item

func GetItemByPath

func GetItemByPath(itemType string, itemPath string) (*Item, error)

GetItemByPath retrieves the item from hubIdx based on the path. To achieve this it will resolve symlink to find associated hub item.

type ItemHubStatus

type ItemHubStatus struct {
	Name         string `json:"name"`
	LocalVersion string `json:"local_version"`
	LocalPath    string `json:"local_path"`
	Description  string `json:"description"`
	UTF8_Status  string `json:"utf8_status"`
	Status       string `json:"status"`
}

func GetHubStatusForItemType

func GetHubStatusForItemType(itemType string, name string, all bool) []ItemHubStatus

Returns a list of entries for packages : name, status, local_path, local_version, utf8_status (fancy)

type ItemVersion

type ItemVersion struct {
	Digest     string `json:"digest,omitempty"`
	Deprecated bool   `json:"deprecated,omitempty"`
}

Jump to

Keyboard shortcuts

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