Sandbox fails for unsupported cmds (#129)

* introduce enforce_always sandbox config & hooks for flows

* fix sandbox failing for unsupported commands

* add hooks for pypi package managers

* add tests for sandbox hook

* introduce enforce_always flag for ease use & CI

* make comments descriptive

* remove hooks & update config to add API to configure sandbox

* add comments

* rm unused function
This commit is contained in:
Sahil Bansal
2026-01-19 22:24:59 +05:30
committed by GitHub
parent cc2dd993ed
commit 736c63a7b6
7 changed files with 44 additions and 11 deletions
+10 -6
View File
@@ -28,9 +28,13 @@ func Common(pm packagemanager.PackageManager, pkgResolver packagemanager.Package
func (f *commonFlow) Run(ctx context.Context, args []string, parsedCmd *packagemanager.ParsedCommand) error {
var analyzers []analyzer.PackageVersionAnalyzer
config := config.Get()
if config.Config.Paranoid {
// Configure sandbox based on command type and enforcement policy
config.ConfigureSandbox(parsedCmd.IsInstallationCommand())
cfg := config.Get()
if cfg.Config.Paranoid {
malysisActiveScanAnalyzer, err := analyzer.NewMalysisActiveScanAnalyzer(analyzer.DefaultMalysisActiveScanAnalyzerConfig())
if err != nil {
return fmt.Errorf("failed to create malware analyzer: %s", err)
@@ -55,15 +59,15 @@ func (f *commonFlow) Run(ctx context.Context, args []string, parsedCmd *packagem
}
guardConfig := guard.DefaultPackageManagerGuardConfig()
guardConfig.DryRun = config.DryRun
guardConfig.InsecureInstallation = config.InsecureInstallation
guardConfig.DryRun = cfg.DryRun
guardConfig.InsecureInstallation = cfg.InsecureInstallation
proxy, err := guard.NewPackageManagerGuard(guardConfig, f.pm, f.packageResolver, analyzers, interaction)
guardManager, err := guard.NewPackageManagerGuard(guardConfig, f.pm, f.packageResolver, analyzers, interaction)
if err != nil {
return fmt.Errorf("failed to create package manager guard: %s", err)
}
err = proxy.Run(ctx, args, parsedCmd)
err = guardManager.Run(ctx, args, parsedCmd)
if err != nil {
return fmt.Errorf("failed to run package manager guard: %w", err)
}