analyzers

package
v3.95.9 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2026 License: AGPL-3.0 Imports: 13 Imported by: 25

Documentation

Index

Constants

View Source
const (
	READ       PermissionType = "Read"
	WRITE      PermissionType = "Write"
	READ_WRITE PermissionType = "Read & Write"
	NONE       PermissionType = "None"
	ERROR      PermissionType = "Error"

	FullAccess string = "full_access"
)
View Source
const (
	OperationValidateCredentials = "validate_credentials"
	OperationAnalyzePermissions  = "analyze_permissions"
)

Operation constants for AnalysisError.

View Source
const (
	ServiceAPI      = "API"
	ServiceConfig   = "config"
	ServiceDatabase = "Database"
	ServiceOAuth    = "OAuth"
	ServiceCrypto   = "crypto"
)

Service constants for AnalysisError.

Variables

View Source
var DefaultWriter = color.New().SprintFunc()
View Source
var GreenWriter = color.New(color.FgGreen).SprintFunc()
View Source
var RedWriter = color.New(color.FgRed).SprintFunc()
View Source
var YellowWriter = color.New(color.FgYellow).SprintFunc()

Functions

func AvailableAnalyzers added in v3.81.6

func AvailableAnalyzers() []string

AvailableAnalyzers returns a sorted slice of AnalyzerType strings, skipping "Invalid".

func CreateLogFileName

func CreateLogFileName(baseName string) string

func GetWriterFromStatus

func GetWriterFromStatus(status PermissionType) func(a ...interface{}) string

func IsMethodSafe added in v3.88.3

func IsMethodSafe(method string) bool

IsMethodSafe is a helper method to check whether the HTTP method is safe according to MDN Web Docs. https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods#safe_idempotent_and_cacheable_request_methods

func NewAnalyzeClient

func NewAnalyzeClient(cfg *config.Config, opts ...func(*http.Client)) *http.Client

This returns a client that is restricted and filters out unsafe requests returning a success status code.

func NewAnalyzeClientUnrestricted added in v3.88.3

func NewAnalyzeClientUnrestricted(cfg *config.Config, opts ...ClientOption) *http.Client

This returns a client that is unrestricted and does not filter out unsafe requests returning a success status code.

func StatusContains

func StatusContains(status int, vals []int) bool

Types

type AnalysisError added in v3.95.0

type AnalysisError struct {
	// contains filtered or unexported fields
}

AnalysisError represents a structured error from an analyzer.

func NewAnalysisError added in v3.95.0

func NewAnalysisError(analyzerType, operation, service, resource string, err error) *AnalysisError

NewAnalysisError creates a new AnalysisError.

func (*AnalysisError) AnalyzerType added in v3.95.0

func (e *AnalysisError) AnalyzerType() string

func (*AnalysisError) Error added in v3.95.0

func (e *AnalysisError) Error() string

func (*AnalysisError) Operation added in v3.95.0

func (e *AnalysisError) Operation() string

func (*AnalysisError) Resource added in v3.95.0

func (e *AnalysisError) Resource() string

func (*AnalysisError) Service added in v3.95.0

func (e *AnalysisError) Service() string

func (*AnalysisError) Unwrap added in v3.95.0

func (e *AnalysisError) Unwrap() error

type AnalysisErrorInfo added in v3.95.0

type AnalysisErrorInfo interface {
	error
	AnalyzerType() string
	Operation() string // "validate_credentials", "authenticate", "analyze_permissions", "connect", "ping"
	Service() string   // "config", "API", "OAuth", "Database"
	Resource() string  // account ID, endpoint URL, or other identifier
}

AnalysisErrorInfo is implemented by errors that provide structured context about analysis failures. This allows downstream consumers (e.g., the scanner) to extract metadata for structured error storage without depending on concrete error types.

type AnalyzeClient

type AnalyzeClient struct {
	http.Client
	LoggingEnabled bool
	LogFile        string
}

type Analyzer

type Analyzer interface {
	Type() AnalyzerType
	Analyze(ctx context.Context, credentialInfo map[string]string) (*AnalyzerResult, error)
}

type AnalyzerResult

type AnalyzerResult struct {
	AnalyzerType       AnalyzerType
	Bindings           []Binding
	UnboundedResources []Resource
	Metadata           map[string]any
}

AnalyzerResult is the output of analysis.

type AnalyzerRoundTripper added in v3.82.3

type AnalyzerRoundTripper struct {
	// contains filtered or unexported fields
}

func (AnalyzerRoundTripper) RoundTrip added in v3.82.3

func (r AnalyzerRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)

type AnalyzerType added in v3.82.12

type AnalyzerType int
const (
	AnalyzerTypeInvalid AnalyzerType = iota
	AnalyzerTypeAirbrake
	AnalyzerAnthropic
	AnalyzerTypeAsana
	AnalyzerTypeBitbucket
	AnalyzerTypeDockerHub
	AnalyzerTypeElevenLabs
	AnalyzerTypeGitHub
	AnalyzerTypeGitLab
	AnalyzerTypeHuggingFace
	AnalyzerTypeMailchimp
	AnalyzerTypeMailgun
	AnalyzerTypeMySQL
	AnalyzerTypeOpenAI
	AnalyzerTypeOpsgenie
	AnalyzerTypePostgres
	AnalyzerTypePostman
	AnalyzerTypeSendgrid
	AnalyzerTypeShopify
	AnalyzerTypeSlack
	AnalyzerTypeSourcegraph
	AnalyzerTypeSquare
	AnalyzerTypeStripe
	AnalyzerTypeTwilio
	AnalyzerTypePrivateKey
	AnalyzerTypeNotion
	AnalyzerTypeDigitalOcean
	AnalyzerTypePlanetScale
	AnalyzerTypeAirtableOAuth
	AnalyzerTypeAirtablePat
	AnalyzerTypeGroq
	AnalyzerTypeLaunchDarkly
	AnalyzerTypeFigma
	AnalyzerTypePlaid
	AnalyzerTypeNetlify
	AnalyzerTypeFastly
	AnalyzerTypeMonday
	AnalyzerTypeDatadog
	AnalyzerTypeNgrok
	AnalyzerTypeMux
	AnalyzerTypePosthog
	AnalyzerTypeDropbox
	AnalyzerTypeDataBricks
	AnalyzerTypeJira
)

func (AnalyzerType) String added in v3.82.12

func (a AnalyzerType) String() string

String method to get the string representation of an AnalyzerType.

type Binding

type Binding struct {
	Resource   Resource
	Permission Permission
	Condition  string
}

func BindAllPermissions added in v3.80.3

func BindAllPermissions(r Resource, perms ...Permission) []Binding

BindAllPermissions creates a Binding for each permission to the given resource.

type ClientOption added in v3.93.0

type ClientOption func(*http.Client)

func WithRateLimiter added in v3.93.0

func WithRateLimiter(l *rate.Limiter) ClientOption

type HttpStatusTest

type HttpStatusTest struct {
	URL     string
	Method  string
	Payload map[string]interface{}
	Params  map[string]string
	Valid   []int
	Invalid []int
	Type    PermissionType
	Status  PermissionStatus
	Risk    string
}

func (*HttpStatusTest) RunTest

func (h *HttpStatusTest) RunTest(headers map[string]string) error

type LoggingRoundTripper

type LoggingRoundTripper struct {
	// contains filtered or unexported fields
}

func (LoggingRoundTripper) RoundTrip

func (r LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)

type Permission

type Permission struct {
	Value  string
	Parent *Permission
}

type PermissionStatus

type PermissionStatus struct {
	Value   bool
	IsError bool
}

type PermissionType

type PermissionType string

type RateLimitRoundTripper added in v3.93.0

type RateLimitRoundTripper struct {
	// contains filtered or unexported fields
}

func (RateLimitRoundTripper) RoundTrip added in v3.93.0

func (rt RateLimitRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)

type Resource

type Resource struct {
	Name               string
	FullyQualifiedName string
	Type               string
	Metadata           map[string]any
	Parent             *Resource
}

type Scope

type Scope struct {
	Name  string
	Tests []interface{}
}

Directories

Path Synopsis
airtable
common
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
classic
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
finegrained
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.

Jump to

Keyboard shortcuts

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