Use net.IPNet.Contains to check CIDR membership directly and remove the address increment loop. Large authorized subnets no longer cause per-request address enumeration and excessive CPU usage.
* feat(auth): implement OIDC authentication endpoints and error handling
* feat(auth): add OIDC provider discovery endpoint and related functionality
* feat(auth): add SAML2 authentication support and related functionality
* feat(auth): add LDAP authentication support and related functionality
* fix(auth): improve login keydown handler for better event handling
* feat(auth): add LDAP authentication support and related configurations
* feat(ldap): implement LDAP synchronization features and enhance user import logic
* feat(auth): add authSource and authSourceStatus to user information
* feat(i18n): update LDAP synchronization error messages in multiple languages
* feat(i18n): update LDAP synchronization error messages in multiple languages
* feat(i18n): update LDAP synchronization error messages in multiple languages
cmd.Which() previously shelled out to `which <name>` to determine whether
a binary was on PATH. On distributions that do not ship a `which` package
by default — Arch Linux is the canonical example, but the same applies to
several minimal container images — `which` itself is missing, so every
call to Which() returned false and 1Panel reported core dependencies
(notably Docker) as 'not installed' even when they were running normally.
Switch the primary path to Go's exec.LookPath, which uses the process
PATH directly and has no external dependency. The original shell-out is
preserved as a fallback so any environment where the agent's PATH
differs from the user's interactive shell PATH (the original reason the
shell-out existed) keeps working unchanged.
Both copies are updated (agent/utils/cmd/cmd.go and core/utils/cmd/cmd.go)
and a small unit test is added to each package to guard the regression.
Fixes#12605
Signed-off-by: Sanjay Santhanam <51058514+Sanjays2402@users.noreply.github.com>
* refactor: replace DownloadFileWithProxy with DownloadFileWithProxyStream for improved file downloading logic
* refactor: remove commented-out DownloadFileWithProxy function to clean up code