Skip to content
NEW:
[Bootstrapper] "has_dns_only" build option installs a lightweight ApisCP for use with DNS-only.
[Dashboard] show ban reason, corresponding API command rampart:get-reason().
[DNS] $hostname available in DNS templates as a composition of $subdomain + $zone.
[DNS Manager] show DNS zone information in Toolbox.
[Mail] MXRoute provider (see docs.apiscp.com/admin/mail/Mxroute/).
[Process] unshare support. Namespace resources (files, PIDs, UIDs, network) prior to running a process.
[Scopes] cp.screenshots - enable screenshot support; cp.whitelist-login - always permit CP login (see SECURITY.md for Anvil).
[stats] vmstat()- report virtual memory statistics.
[UI] rspamd app now available for admins.
[Web Apps] learning mode duration.
[Web Apps] screenshot support. Enabled automatically if has_low_memory wasn't set at install time. May be manually enabled using the cp.screenshots Scope. web:inventory-capture() performs an en masse screenshot acquitisition.

FIXED:
[Dev] prune unreachable methods during intellisense stub generation.
[file] recursive chown repeatedly calls fsmount for each directory chown'd
[Import] accept mailman list names with underscores.
[PHP] PHP-FPM cache inspection could leave behind its inspection script in certain conditions.
[PHP] webp support for PHP 7.4.
[Process] argument decomposition incorrectly handles nested quotes.
[Opcenter] "True"/"False" parsed as literals.
[Scopes] cp.config automatic postback ignores numeric input types.
[Virtualhosting] binding additional IPs before nm readies drops the active interface from nm's control. Relocate virtualhosting.service until after network-online.target to ensure nm has completed upstream acquisition. ISO/IEC 9899:2011 workaround for last IP in multihomed environment.

CHANGED:
[admin] admin:collect() now supports invoice selection. Works with both primary and subordinate accounts (billing,invoice/billing,parent_invoice).
[billing] implement billing:get-package-type().
[Bootstrapper] improved CentOS 8+ support.
[build] Always drop privileges using git. If root privileges are required for git hooks, set "apnscp_build_helper" in Bootstrapper with a custom build script. set-repo-user.sh in build/ may be used to update remote credentials to the effective username if previously supplied credentials assumed "root".
[cgroup] get-usage() CPU cumulative usage refers to 24 hours, previously 240 hours. Add cumsystem, cumuser that refer to cumulative usage since uptime. system/user fields refer to same value over 24 hour window.
[DNS] get-records() accepts "null" as subdomain to list all records.
[Firewall] change 25/TCP restriction from "postfix" gid to more generic, "mail" gid. Allows rspamd to perform MX checks as well.
[Import] detect corrupted HOME paths from backup source.
[MySQL] database renames apply correct DDL statements.
[MySQL Manager] display database size charged on disk.
[PHP] imagick enabled by default. Simplify multiPHP extension builds + configuration (see PHP-FPM.md).
[PHP] detach pool .service binding from php-fpm such that pools have two-way binding to named .socket and propagated action through group or "php-fpm" master service. Requires `EditDomain --reconfig --all` to appyl retroactively.
[PHP] Relocate composer referent to /usr/share/pear/composer.phar, inline with wp-cli and other PHP utilities.
[Postfix] simplify SMTPS/ESMTP mode settings (see SMTP.md). Always encrypt smarthost transmission set via mail.smart-host. Prior to, encryption was opportunistic.
[Process] suid/sgid options no longer wrap the command in /bin/sh. "Fork" process types may accept open/close callbacks.
[watch] lockdown()- support web user ("apache") as a target user after learning mode completes.
[Web Apps] perform validity check before updating web apps. Prevents potential loop on updating a ghosted web app.
[wordpress] purge WP-CLI cache periodically. Recovery mode resets theme to twentyXXX.

REMOVED:
[dns] check-zone() authoritative_ns requirement. Intended for use internally with BIND. Still used for PTR checks in IpCommon\ip_allocated() for now.