mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
feat: Add proxy_install_only config to restrict proxy to download commands
Introduces proxy_install_only (default: false) which, when enabled, skips the proxy for package manager commands that do not download packages (e.g. npm ls, pip list), avoiding unnecessary MITM overhead. - Add ProxyInstallOnly to Config and config template - Add IsKnownDownloadCommand / MayDownloadPackages to ParsedCommand - Add DownloadCommands to npm and pypi PM configs covering update, ci, audit, dlx, exec, x, download, run and equivalents per PM - Extract shared runner.Execute used by both proxy flow and guard - Proxy flow short-circuits to runner.Execute for non-download commands when proxy_install_only=true
This commit is contained in:
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/safedep/pmg/guard"
|
||||
"github.com/safedep/pmg/internal/audit"
|
||||
"github.com/safedep/pmg/internal/pty"
|
||||
"github.com/safedep/pmg/internal/runner"
|
||||
"github.com/safedep/pmg/internal/ui"
|
||||
"github.com/safedep/pmg/packagemanager"
|
||||
"github.com/safedep/pmg/proxy"
|
||||
@@ -51,6 +52,12 @@ func (f *proxyFlow) Run(ctx context.Context, args []string, parsedCmd *packagema
|
||||
|
||||
cfg := config.Get()
|
||||
|
||||
// Skip proxy for commands that don't download packages when proxy_install_only is enabled
|
||||
if cfg.Config.ProxyInstallOnly && !parsedCmd.MayDownloadPackages() {
|
||||
log.Debugf("Skipping proxy for non-download command (proxy_install_only=true)")
|
||||
return runner.Execute(ctx, parsedCmd, f.pm.Name(), cfg.DryRun)
|
||||
}
|
||||
|
||||
// Initialize report data at the start
|
||||
reportData := ui.NewReportData()
|
||||
reportData.PackageManagerName = f.pm.Name()
|
||||
|
||||
Reference in New Issue
Block a user