Version
v1.5.8 — 2026-04-27
Brotli build correctness fix — the .so we shipped in 1.5.7 testing
landed with undefined BrotliEncoderTakeOutput, refusing dlopen.
Highlights
- Dropped
-fltofrom the libbrotli CFLAGS. With LTO on, the
static archive atdeps/brotli/out/libbrotlienc.acontains
GIMPLE byte-code rather than native objects. nginx's subsequent
make modulesinvokes plain gcc with no lto-wrapper, silently
extracts zero symbols from the archive, and links a .so where
everyBrotli*symbol is left as an undefined dynamic
reference. The link succeeds (.so files allow undefined symbols
by default) butdlopen()later refuses to load it with
undefined symbol: BrotliEncoderTakeOutput
Caught live on AlmaLinux 8 testing. Replaced the previous
-Ofast -flto -march=native -mtune=native …flag soup with a
boring-O2 -fPIC -ffunction-sections -fdata-sections— the
same equivalence every distro libbrotli package ships, with no
measurable encoding-throughput penalty and a portable archive. - Also dropped
-march=native -mtune=native. The previous
flags baked the build host's micro-architecture into the .so —
fine on a single-server install, a SIGILL waiting to happen on
fleets cloned from a golden image to mixed CPUs. - Post-build symbol sanity check. After
make modules,
step 7b runsnm -D --undefined-onlyagainst the freshly-built
filter .so and aborts the install ifBrotli*symbols are
undefined AND noNEEDED libbrotli*.soentry exists. Catches
this whole class of link-time-OK / runtime-broken bugs at the
build step, with a message that names the most likely cause,
rather than letting them surface fromnginx -tfour steps
later.
Recovering from a broken 1.5.7 install
If a previous --nginx-install=brotli left a broken .so on the
server (nginx refuses to start with the BrotliEncoderTakeOutput
emerg), run:
wsa --nginx-uninstall=brotli
wsa --rebuild-nginx-conf
systemctl restart nginx
then re-attempt the install on 1.5.8.
v1.5.7 — 2026-04-27
Module-builder version gate + clearer diagnostics when nginx -t
fails on the main configuration file.
Highlights
- Minimum nginx version for module builds: 1.30.0. First test
on AlmaLinux 8 ran into the EL 8 stock nginx 1.14.1: GCC 8 ships
-Wcast-function-typeand nginx'sauto/cc/confinjects
-Werror, so re-compiling that tarball aborts inside
src/stream/ngx_stream_script.cbefore Brotli even gets to play.
Rather than carrying a CFLAGS patch indefinitely we draw a hard
line:canInstall_brotlinow refuses early with an actionable
message pointing the operator at the upstream nginx.org repo.
One-liner upgrade for them, removes a whole class of GCC vs.
legacy-nginx surprises for us. - Main-conf syntax errors no longer trigger an infinite repair
loop.Validate_Nginx_Configextracts the offending vhost user
by stripping.confoff the last token of nginx -t's error line.
When the error is in/etc/nginx/nginx.confitself the resulting
"user" is the path-like string/etc/nginx/nginx— which
obviously has no per-user vhost to rebuild. The recursive
ValidateNginxConfig now detects path-shaped err_user values and
bails out immediately with the actual nginx -t message, instead
of pretending a non-existent user can be repaired. nginx -t says: …printed on FAILLED. When the verbose
rebuild path hitsTesting Nginx configuration file… FAILLED
it now also prints the real error message from nginx. Up to
1.5.6 the operator had to SSH in and re-run nginx -t by hand
just to find out which directive was the culprit; with nginx
1.30 tightening several syntax rules, that round-trip was the
most common diagnosis bottleneck.
v1.5.6 — 2026-04-24
Simple-mode table polish — the description column now gets the
breathing room it needs.
Highlights
- Redundant in-cell heading removed. The "Caching Level"
mini-title (opt_title) that sat above the SpeedDisplay
gradient duplicated the new<th>column heading from 1.5.4.
Dropped — one heading per column is enough. - Column widths rebalanced. The title column's
min-width: 425pxwas capping roughly 78 % of the table, leaving the
description a narrow strip. Dropped to a fixedwidth: 320px
that just fits the arrow + radio labels, so the description
column gets the rest. Makes the at-a-glance summary of each
cache preset actually readable without horizontal squeezing. - Radio list gets its correct width. The
.simple_table_option
rule (350 px, text-align center) was a misnamed target — the
actual class in the markup is.simple_caching_options. The
width moved onto the right class so the six radio labels line
up properly and the block doesn't collapse on narrow viewports. - Dead CSS retired.
.opt_titleremoved now that its heading
is gone from the template.
v1.5.4 — 2026-04-24
Small cPanel UI polish — clearer labels in the Bot Protection tab,
and a tighter Simple-mode header.
Highlights
- Bot Protection toggles now say Blocked / Allowed. The
per-domain overrides in the Advance popup's Bot Protection tab
used the generic On / Off labels, which were ambiguous — is
"On" the blocklist being active, or the bot being allowed
through? Now each tri-state radio reads Server default /
Blocked / Allowed and the "Default:" indicator uses the same
vocabulary, so the outcome is stated explicitly. New dedicated
lang keys (bot_protection.block,bot_protection.allow) so
other tabs keep their own On / Off labels untouched. - Simple-mode header merged into the table. The standalone
"Caching Selection" heading that used to sit in its own
.simple_titlesblock above the table is gone. The heading is
now the first<th>of the table itself, so the page carries
one header instead of two. The.simple_titles/
.simple_titleCSS rules were retired along with it. - Simple-mode card sits flush against the tab bar. The
.innerblock.simpleseectioncard no longer rounds its top
corners or draws a top border, so it visually continues the
options_list tab bar directly above instead of looking like a
detached block with a seam between them.
v1.5.3 — 2026-04-24
Compression status moved from an inline table row to a traffic-light
dot in the cPanel top status bar.
Highlights
- Compression row removed from Simple and Advance tables. The
read-only GZIP / Brotli badges introduced in 1.4.4 duplicated
information that already belonged in the page-level status card.
The row is gone from bothsimple.tpland
advance_cache_basic.tpl. - Traffic-light indicator in the status bar. Directly below
"Cache is enabled" the card now shows a small green dot
followed by the codec(s) actively being served:- both on → ● Brotli/Gzip
- Brotli only → ● Brotli
- Gzip only → ● Gzip
- neither → the line is hidden entirely (no dead "off" label).
- Same data source. Driven by
$compressionStatusassigned in
cpanel_area/index.live.php, which already combines the WHM
toggles withmodule_builder::isInstalled('brotli'). No
client-side caching change. - Legacy CSS + lang keys retired — the old
.compression_status/.cstat_itempill rules and the
simple.table.compression/adv.pu.com_tab.basic.compression_status
lang keys were removed; nothing else in the plugin referenced
them.
v1.5.2 — 2026-04-24
Small UI polish on the Bot Protection stats panel introduced in
1.5.1.
Highlights
- Top offenders is now collapsed by default. The top-10
User-Agent breakdown on the WHM home page lives inside a native
<details>/<summary>element. The three headline stat cards
(Total / Unique IPs / Top UA) stay in view; the long UA list is
one click away via a caret that rotates on expand. Keeps the
home page compact for admins who just want the at-a-glance
numbers. - The summary shows the UA count in parentheses so it's clear how
much is hidden before clicking.
v1.5.1 — 2026-04-24
Adds a Bot Protection stats panel to the WHM home page. Gives
admins an at-a-glance view of how much traffic the new bot
blocklists are actually dropping, without having to SSH into the
server and pipe awk through the nginx logs.
Highlights
Bot Protection stats on the WHM home page
A new overview card sits directly below Clear Cache on the main
WHM menu, summarising the last 24 h of HTTP 444 responses
(the code Bot Protection and Rate Limiting emit when rejecting a
request at the edge):
- Total requests blocked — all 444s in the window.
- Unique source IPs — distinct offending clients.
- Top User-Agent — the single noisiest UA, with its hit count.
- Top-10 User-Agents table — ranked, truncated to 80 chars per
UA to keep the layout predictable.
How it works
- Parses
/var/log/nginx/access.logvia atail -n 2M | awk '$9 == 444'shell pipeline — orders of magnitude faster than a pure-PHP
walk, with a hard line cap so a runaway unrotated log can never
wedge the WHM page. - Results are cached to
/etc/wsa/conf/bot_stats.jsonwith a 5
min TTL, so refreshing the home page is cheap. - The panel is hidden entirely when the log is unreadable rather
than showing a confusing empty card. Shows a friendly "No bots
blocked in the last 24 hours" message when the window is empty. - UA strings are HTML-escaped on render — hostile User-Agent
content can't break out of the cell.
v1.5.0 — 2026-04-24
Consolidated minor release. Rolls up every 1.4.1 → 1.4.4 increment
into a single user-facing version. Three big themes: Bot
Protection (a new edge-level filter for unwanted crawlers),
compression moved entirely under admin control, and a
modernization of the Simple-mode caching presets to match
2026 Lighthouse / web.dev recommendations. Full commit-level
history remains available in git.
Highlights
Bot Protection (new)
A new opt-in layer that drops unwanted bots at the Nginx edge
before they reach the backend. Matched requests are closed with
HTTP 444 (no response) — cheaper than a 403 and harder for
abusive clients to distinguish from a dead server.
- Four curated, independently-toggleable blocklists:
- AI crawlers (default ON) — GPTBot, ClaudeBot, CCBot,
Google-Extended, PerplexityBot, Bytespider and ~35 more AI
training / RAG fetchers, curated April 2026. - Vulnerability scanners (default ON) — sqlmap, nikto,
masscan, nuclei, WPScan and other offensive-security tooling. - SEO crawlers (default OFF) — AhrefsBot, SemrushBot,
MJ12bot, DotBot, etc. Off because some sites actively want
these. - Empty User-Agent (default OFF) — drops UA-less requests.
Off to avoid surprising health-check scripts.
- AI crawlers (default ON) — GPTBot, ClaudeBot, CCBot,
- Two-level configuration — WHM admins set server-wide
defaults and own the raw blocklists (editable as plain-text
TEXTAREA fields under Bot Protection in the Nginx config
page). cPanel users see a tri-state Server default / On / Off
control per category on their own domain, inside a dedicated
Bot Protection tab in the Advance popup (sitting between
Basic and Dynamic). - Shared whitelist — Bot Protection honours the same IP
whitelist already used by Rate Limiting, so monitoring IPs
exempted from rate limits are automatically exempted from UA
blocking too. No separate list to maintain.
Compression is now fully admin-controlled
Gzip joins Brotli as a server-wide switch in WHM Nginx
Configuration > Compression. Site owners no longer make
compression decisions from cPanel — the old per-vhost toggle
(Simple mode + Advance > Basic) is gone.
- New
Enable Gzip compressionswitch in WHM — default ON.
Flipping it off suppresses the entire gzip block (gzip
directives and gzip_static) for every vhost on the server. - Read-only compression status badge in cPanel — a
"Compression — GZIP: ✓ · Brotli: ✓" indicator replaces the
old checkbox. Brotli shows green only when the module is
installed AND the admin has enabled it. - Silent migration — any site that had gzip explicitly
disabled in its stored config is transparently re-enabled on
upgrade. The legacy field is still written for schema
compatibility but no longer consulted by the config generator.
Why not leave the client toggle in place? Compression is a
delivery-layer concern, not a content-policy one. Gzip and
Brotli complement each other (nginx negotiates one codec per
response via Accept-Encoding); disabling gzip would punish
HTTP traffic, older browsers, corporate SSL-inspection proxies
and programmatic clients. Keeping both active alongside each
other is essentially free — gzip_static and brotli_static
serve pre-compressed files with zero CPU.
Simple mode presets — modernized
The Simple-mode cache values dated back to when a "1 week"
browser cache was considered aggressive. Lighthouse and
web.dev now expect 1 year for fingerprinted static assets,
and stale-while-revalidate (exposed here as
cachebackgroundupdate) removes the freshness-vs-latency
trade-off that used to force conservative dynamic TTLs.
- 1-year browser cache for images and fonts on all four
active presets (month,week,day,store). Matches the
Lighthouse "Serve static assets with an efficient cache
policy" audit. cachebackgroundupdate=1enabled onmonth/week/
day— nginx serves the stale cached copy immediately
while refreshing in the background, so dynamic pages return
in the low-millisecond range even on a cache miss.
Deliberately not enabled onstore— e-commerce
inventory/price pages can't tolerate a stale response.storedynamic TTL raised 5 s → 10 s — modern carts
tolerate it comfortably and the throughput win is substantial
on traffic spikes.- CSS/JS and static server TTLs rebalanced and normalized
across presets (previously theweekvalue for CSS/JS was
longer than themonthpreset — backwards). SIMPLE_MODE_1("none") intentionally untouched — still
disables caching end-to-end.- User-facing descriptions synced in EN + FR so the preset
selector text matches what actually gets applied.
Smaller polish shipped along the way
- WHM Nginx Configuration page — language keys realigned.
Option labels for the new Bot Protection and Brotli
sub-sections now follow the same nested nomenclature as the
legacy Dynamic files / CSS & JS / Images & Fonts
sections, and section headers pull from a consistent
$LANG['config'][<section>]path. One shape across the
whole plugin instead of two. - Cache Configuration page no longer double-surfaces Bot
Protection controls (it was rendering them both in the Bot
Protection page and inside the generic walker, with the
walker version showing raw__commenttext). - Advance popup scroll-jump fixed — clicking a tri-state
radio no longer pushes the form out of the popup. The hidden
radio now sits in a proper containing block and uses the
standard clip/1px visually-hidden accessibility pattern.
v1.4.0 — 2026-04-24
Consolidated minor release. Rolls up every 1.3.25 → 1.3.40
increment into a single user-facing version. Highlights below;
full commit-level history remains available in git.
Highlights
- Brotli compression (new) — optional on-demand install of the
ngx_brotlidynamic modules, with a dedicated UI row (status
indicator + Install / Uninstall / Rebuild) and a matching CLI
(wsa --nginx-install=brotli,--nginx-uninstall=brotli,
--nginx-enable=brotli,--nginx-disable=brotli). Build output
is streamed live and colour-coded so operators can tell a failed
step from a successful one at a glance. Supported on
AlmaLinux / RHEL / Rocky / Oracle / CloudLinux 8, 9 and 10. - Rate limiting & anti-DoS layer (new) — per-server
limit_reqandlimit_connwith a whitelist, exposed as first-
class options in the WHM configuration page. - Nginx configuration page — redesign — options are now split
into clearly-labelled sub-sections (General / Rate limiting &
connection caps / Compression / Brotli) instead of one long
flat list. A consistent page header + bottom action bar
(Back / Save) is applied to every configuration screen, with
colour-coded primary/secondary buttons. - WHM main menu — redesign — reorganised tiles, lighter
typography, clearer grouping between service status, cache
management and module configuration. The Disabled WSA Module
danger frame was cleaned up (the red frame alone is enough
warning — no more stacked pills). - Additional-module builder (new) — all compile-on-demand
Nginx modules (Brotli today, HTTP/3 and others planned) are
driven by a singlemodule_builderclass. The CLI and the WHM
UI now share the same detection, build and state-tracking code
instead of duplicating it. - Cache key —
$MOBILEprefix removed by default — desktop
and mobile visitors now share a single cache slot out of the
box. Operators who still want the historic split-by-User-Agent
behaviour can opt back in with the newmobile_cache_split
flag. - Nginx tuning defaults refreshed — default
worker_*,
keepalive_*and cache-size values reviewed and corrected
against real-world cPanel deployments. - Installer — Brotli as an optional step —
install.shnow
offers Brotli as a clearly-optional extra, with the default
answer pre-selected so existing one-liner deployments keep
behaving. - Distro support — CentOS 7 dropped for Brotli — CentOS 7
reached EOL in June 2024 and needed a separate build path
(EPEL +cmake3). That branch has been removed in 1.4.0 to
reduce the maintenance surface. The plugin itself still runs
on CentOS 7; only the Brotli build is no longer offered there.
Hotfixes rolled into 1.4.0
- Fixed the Rebuild Brotli module button silently doing nothing
(nested<form>elements were flattened by the browser). - Fixed the danger-zone button contrast on the home screen.
- Fixed
--nginx-install=brotlifailing on some AlmaLinux / RHEL
rebuilds becauseevalwas re-parsing an already-tokenised
./configureargument list. - Fixed a silent bug where the three cache-max-size options
(dyn_*,cssjs_*,static_*) were being dropped on save
because the stored keys didn't match the template defaults —
saved values never reached Nginx and the defaults were used
regardless. - Log hygiene: fewer spurious WARNING entries on clean runs;
module status changes are now a single summary line instead of
a wall of per-step INFO lines.
Under the hood
- Consolidated the legacy Brotli plumbing (several globals in
bootstrap.php+ scattered install / detect helpers) into the
newmodule_builderclass. - Module manager now distinguishes installed from active so
operators can temporarily disable a compiled-in module without
uninstalling it. - Rebuild of Nginx is triggered automatically after any module
write op — no more "install succeeded but the site still
doesn't serve Brotli" surprises. - Shared design tokens (CSS custom properties) across all
configuration pages so future redesigns are one file deep.
Removed
- CentOS 7 Brotli build path (
yum+cmake3via EPEL). - Legacy Brotli-specific globals and scattered install helpers,
replaced bymodule_builder. - Stacked "⚠ Danger zone" badge on the home screen.
v1.3.24 — 2026-04-18
Bug Fixes and Other Changes
- PHP warning fixes in template compilation path.
- Additional Smarty 5 deprecation fixes.
v1.3.22 — 2026-04-16
Minor Features and Improvements
- Added single-page cache purge action (per-URL purge instead of forcing a full site purge).
- Fixed deprecated Smarty 5 usages surfaced after the 1.3.14 migration.
Bug Fixes and Other Changes
- PHP warning fixes in template rendering.
v1.3.21 — 2026-04-15
Bug Fixes and Other Changes
- PHP warning / notice cleanup across the plugin.
v1.3.14 — 2026-04-14
Major Features and Improvements
- Migrated the Smarty template engine to Smarty 5.x (namespaced
\Smarty\Smarty). Plugins registered viaregisterPlugin(is_int,is_string, …) for continued use as template modifiers.
Housekeeping
- Removed the unused PhpUnit tooling and associated scaffolding from the repository.
- Removed the legacy "pixies" dependency from both the plugin and the WHMCS companion module.
v1.3.12 — 2026-04-14
Per-User Cache Purge Fix (Critical)
- Fixed
grepmissing-Eflag in per-user cache purge command. The domain pattern uses|as OR separator between multiple domains (e.g.domain.com|www.domain.com|mail.domain.com), but basicgreptreats|as a literal character. The purge searched for the entire string including the pipe characters instead of matching any of the individual domains. Changedgrep -qatogrep -qaEto enable extended regex. - Added
grep -aflag for binary-safe matching. Nginx cache files contain a binary header (~336 bytes of null bytes) before the cache key. Without-a,grepmay stop reading at null bytes and never reach the domain name stored in the cache key. - Increased cache file header read from
head -c 512tohead -c 768to accommodate the binary header plus longer URL cache keys.
wsad Service — PID File Path
- Updated PID file path from
/var/run/wsad.pidto/run/wsad.pidacross all files to resolve the systemd warning: "PIDFile= references a path below legacy directory /var/run/". Affected files:wsad.service,wsad.pl,wsa.php,module_handling.php,post_update.php,update.sh,uninstall.sh,install/services/wsad.
v1.3.6 — 2026-04-10
Cache Categories Consolidation
- Reduced Nginx cache categories from 6 to 3 for simpler configuration and smaller vhost files:
- Dynamic — Unchanged
- JS/CSS — Unchanged
- Images/Fonts — Merged from the former
Images,Fonts,Static filesandArchives/Media/Documentscategories
- Files previously cached under
Static files(json, xml, rss, atom) andArchives/Media/Documents(zip, mp4, pdf, etc.) are no longer cached. - Automatic migration of all existing user and global configuration files via
post_update.php(v1.3.0 block).
Cache Purge Performance
- Full cache purge (
Purge_All_Cache/Clear_Cache(null)): Replacedfind | xargs rmwith atomic directory rename + recreate. Purge is now near-instant regardless of file count. - Per-user cache purge (
Clear_Cache($users)): Replacedgrep -r(full file read) withhead -c 512(header-only read) using parallel workers (xargs -P). Added domain name sanitization to prevent shell injection.
Auto-Update Reliability
- Fixed
Send_Curl_Requestinactivation.php: removed strayecho 'error!!!', addedCURLOPT_CONNECTTIMEOUT(10s), increasedCURLOPT_TIMEOUTto 15s for heartbeats and 120s for update downloads, added CA bundle path fallback for older AlmaLinux/CentOS systems. - Fixed
Send_Curl_Versioninauto_update.phpwith same timeout and CA bundle improvements. - Fixed
enable_auto_updatecheck defaulting to disabled when the SQLite option was never initialized. - Added
checkModulecase to cronRun_Job()switch statement (was defined but never executed). - Added archive integrity validation before extraction: file size check,
tar tzftest, and post-extraction verification ofupdate.sh. - Fixed
start_action_infofunction missing fromupdate.sh(was defined only ininstall.sh). - Added update logging to
/var/log/wsa/update.logand archive validation inupdate.sh.
wsad Service — Migration to systemd
- New
wsad.servicesystemd unit file withType=forking,Restart=on-failure, andKillMode=process. - PID file path updated from
/var/run/wsad.pidto/run/wsad.pidacross all files (wsad.pl,wsad.service, PHP and shell scripts). - Automatic migration from SysV init script to systemd via
post_update.php(v1.3.5 block): stops old service, removes init script, installs unit file, enables and starts viasystemctl. - Updated
install.shanduninstall.shto use systemd for fresh installs and clean uninstalls. - Fixed
create_command()inservices.php: replaced broken comparison ($environement == '7') withfile_exists('/bin/systemctl')detection. All services (nginx, httpd, wsad) now correctly usesystemctlon AlmaLinux 7/8/9/10. - Fixed
start_on_boot()inservices.phpwith same systemd detection logic. - Updated
Check_Wsad_Service()inwsa.phpto usesystemctl is-activeandsystemctl restartinstead of legacyservicecommands. - Added ghost process cleanup (kill stale
wsad.pl+ PID file removal) in module Enable and Disable methods.
UI Modernization
- cPanel interface: Complete CSS rewrite with design tokens (CSS variables), card-based layout, rounded corners, soft shadows, modern toggle switches, pill-shaped status badges, smooth micro-transitions, refined color palette, custom scrollbar styling, and backdrop blur on popup overlay.
- WHM interface: Matching CSS rewrite with same design token system, modernized menu items with hover animations, refined tables with rounded corners, dark-themed console output, gradient resource usage bars, and improved tab navigation.
- No HTML template changes required — all styling is CSS-only for zero regression risk.
Housekeeping
- Removed unused template
advance_cache_static.tpl. - Added
advance_cache_imagesfonts.tpltemplate for the new Images/Fonts cache tab. - Updated English (
en.php,whm-en.php) and French (fr.php) language files with new category labels.
Release 1.2.21
- Updated ioncube encoding with v15 version.
Release 1.2.19
Bug Fixes and Other Changes
- Added the follogin cookie in the default exception list "wssplashchk" which is used by CloudFlare splash screen
Release 1.2.18
Bug Fixes and Other Changes
- Fixed overinding of Apache content type header.
Release 1.2.17
Minor Features and Improvements
- Added Avif File type in MIME
Release 1.2.16
Bug Fixes and Other Changes
- Added priority to the local Nginx repo files instead of the CloudLinux repo (Not retroactive).
Release 1.2.15
Bug Fixes and Other Changes
- Fixed deprecated issues where the "listen ... http2" directive is deprecated.
Release 1.2.12
Bug Fixes and Other Changes
- Disabled the AlmaLinux Nginx repo and used the official repo provided by Nginx directly.
Release 1.2.11
Minor Features and Improvements
- Added WEBP support in gzip compression file types.
- Updated proxy cache key to account for the "$http_accept" value sent from the browser.
- Added explicit header
add_header Cache-Control "private, no-store, max-age=0" always;when cache control is private.
Bug Fixes and Other Changes
- Fixed missing variable declarations.
Release 1.2.10
Minor Features and Improvements
- IonCube support added for PHP 8.2.
Release 1.2.8
Minor Features and Improvements
- Updated the Perl WHM hook to reload Nginx instead of restarting it.
- Added more debug comments in the code.
- Fixed logging to handle arrays.
Release 1.2.7
Minor Features and Improvements
- Added verification to check if a file exists before deleting it.
- Added verification to check if an array key exists to prevent errors.
- Added a file marker to prevent simultaneous cron jobs from running.
- Added a marker to prevent cron jobs from running more than X times.
- Added checks for empty arrays during HTTPD parsing.
- Changed debug log format from 12-hour (AM/PM) to 24-hour format.
Release 1.2.5
Minor Features and Improvements
- Added a trigger to prevent endless recursive loops in the main WSA command handler.
Release 1.2.4
Minor Features and Improvements
- Added verification for 1:1 NAT IPs in the initial installation file (
wsa-install). - Updated activation, auto-update, module handling, and post-update modules to consider a 1:1 NAT setup.
Release 1.2.3
Minor Features and Improvements
- Fixed error in the cPanel GUI with undefined variables.
Release 1.2.2
Major Features and Improvements
- Fixed fatal error when clearing the cache from cPanel.
Minor Features and Improvements
- Fixed numerous PHP 8.1 variable declaration errors.
Release 1.2.1
Major Features and Improvements
- Updated Smarty template engine from 3.1.33 to 4.3.1.
Minor Features and Improvements
- Fixed error when assigning undeclared variables during HTTPD parsing.
- Fixed undeclared Smarty template array values.
Release 1.1.9
Major Features and Improvements
- Changed IonCube encoding to support PHP 7.4 and 8.1.
Minor Features and Improvements
- Fixed variable declaration order in function calls.
Release 1.1.7
Behavioral Changes
- Added the "x-cache-enabled" header to remove WordPress server cache checks.
Release 1.1.6
Minor Features and Improvements
- Fixed variable declaration errors in the license validation server.
Release 1.1.5
Bug Fixes and Other Changes
- Reverted limits introduced in 1.1.3 for
worker_connectionsandworker_rlimit_nofileto 65535.
Release 1.1.4
Bug Fixes and Other Changes
- Fixed an error where the module couldn’t find the proper home folder.
Release 1.1.3
Behavioral Changes
- Reduced default
worker_connectionsfrom 65535 to 256 to avoid overwhelming Apache with I/O. - Reduced default
worker_rlimit_nofilefrom 65535 to 256 for similar reasons. - Reintroduced the cache status header in the default configuration.
- Changed default browser cache duration for static elements to 8 weeks.
Release 1.1.2
Major Features and Improvements
- Added the ability to specify a different home folder.
Release 1.1.1
Bug Fixes and Other Changes
- Fixed duplicate
ExecStartin the Nginx service.
Release 1.1.0
Major Features and Improvements
- Four new options added to the Nginx configuration page: XSS protection, disable X-Powered-By header, hide cache status, and content type protection.
- Introduced a new tab in the advanced Nginx settings.
- Added plugin support for the cPanel Jupiter theme.
Bug Fixes and Other Changes
- Added Apache status to the WHM interface.
- Removed custom Apache monitoring from the cPanel check service.
- Added Apache monitoring to the WSA module.
- Temporarily removed cache status and X-Powered-By headers until options are configurable.
Release 1.0.20
Bug Fixes and Other Changes
- Fixed how to retrieve the server IP when enabling the module and added support for IPs from the cPanel IP Aliases module.
Release 1.0.19
Bug Fixes and Other Changes
- Added Apache
RemoteProxyIPto prevent false detections from Imunify360.
Release 1.0.18
Behavioral Changes
- Removed the default Nginx path build after some cPanel upgrades.
- Added a check in the WSA enable function to ensure Nginx has the proper prefix and configuration path.
- Fixed the Nginx service prefix in the post-update function.
Release 1.0.17
Major Features and Improvements
- The module is now compatible with AlmaLinux.
Release 1.0.16
Bug Fixes and Other Changes
- Fixed SSL certificate hooks.
Release 1.0.15
Bug Fixes and Other Changes
- Added CentOS 8 compatibility.
Behavioral Changes
- Changed rate-limiting error code from 503 to 429 (Too Many Requests).
Release 1.0.14
Major Features and Improvements
- Added a dry-run mode for the rate-limiting function.
- Added error logging levels to rate-limiting.
- Added the ability to count all requests or only dynamic page requests.
Behavioral Changes
- Adjusted default values for some rate-limiting features.
Release 1.0.12
Bug Fixes and Other Changes
- Updated the Nginx configuration during rebuilds.
Release 1.0.11
Major Features and Improvements
- Added the ability to change certain Nginx custom parameters.
- Introduced rate-limiting for the global Nginx configuration.
Bug Fixes and Other Changes
- Removed settings for individual cache folders from the WHM GUI.
Release 1.0.10
Major Features and Improvements
- Added pre- and post-virtual include files for the Nginx configuration.
- Fixed an issue where the hostname was not always passed to the backend proxy.
Bug Fixes and Other Changes
- Corrected display issues in the Feature Manager.
Behavioral Changes
- The module now checks for invalid cipher suites before enabling itself.
Release 1.0.9
Major Features and Improvements
- Introduced the ability to have one cache folder per cPanel user.
Bug Fixes and Other Changes
- Corrected function declarations and debug variable names.
- Fixed installation on servers with multiple IPs.
Behavioral Changes
- Removed extra
findcommands when purging cache. - Added a check to ensure IonCube is activated before installing the WSA module.
Release 1.0.7
Bug Fixes and Other Changes
- Fixed duplicate preferred cipher order.
Release 1.0.6
Bug Fixes and Other Changes
- Fixed activation issues on servers with multiple MAC addresses.
Release 1.0.5
Behavioral Changes
- Changed proxy timeout to 1800 seconds to prevent 504 responses on sites with longer Apache and PHP timeout values.
Release 1.0.4
Bug Fixes and Other Changes
- Cleared Nginx cache without removing the directory.
Release 1.0.3
Bug Fixes and Other Changes
- Fixed a display issue in iOS Safari where pages would not load due to an upgrade header issue between the Nginx proxy and Apache server.
- Improved the efficiency of the "purge all cache" function, reducing resource usage.
Behavioral Changes
- Added controller logic to prevent simultaneous rebuilds or purges.
Release 1.0.0
- Initial release - February 20, 2020.
Release 0.8.8
Major Features and Improvements
- Enhanced module activation and deactivation processes.
- Changed the module license check protocol.
Release 0.6.51
Bug Fixes and Other Changes
- Added title translations for Website Accelerator in cPanel.
Release 0.6.43
Bug Fixes and Other Changes
- Fixed service cleanup issues where processes were being multiplied.
Release 0.6.35
Major Features and Improvements
- Added options to switch module branches (dev, stable, current, and edge).
Bug Fixes and Other Changes
- Fixed problems with empty URIs and empty cookies in the advanced settings section.
Release 0.6.34
Major Features and Improvements
- Cache size can now be modified in the module configuration.
Release 0.6.33
Major Features and Improvements
- The WHM module statistics are now loaded asynchronously.
Release 0.6.32
Major Features and Improvements
- The WHM module main page now displays current cache usage across all categories.
Release 0.6.31
Bug Fixes and Other Changes
- Fixed the module logo display in WHM.
Release 0.6.29
Major Features and Improvements
- Added the ability for scripts to activate cache purges.
Bug Fixes and Other Changes
- Updated the cPanel module name.
Release 0.6.28
Bug Fixes and Other Changes
- Optimized the clear cache process to run in the background.
Release 0.6.27
Bug Fixes and Other Changes
- Added documentation links.
- Fixed cookie URL encoding issues.
- Updated the module logo in the WHM module header.
Release 0.6.25
Bug Fixes and Other Changes
- Reloaded version information after module updates.
- Fixed errors in the cPanel advanced template.
Release 0.6.24
Bug Fixes and Other Changes
- Removed alias from the advanced menu.
- Changed default settings for easy caching options.
Release 0.6.23
Behavioral Changes
- Cache purges for groups and individual users are now executed in the background with a "nice" rating of 14.
Release 0.6.22
Bug Fixes and Other Changes
- Fixed missing vHost aliases for domains with SSL.
Release 0.6.20
Behavioral Changes
- Added a cron job to check for changes to Apache configuration every 10 minutes.
- Nginx vHosts are now built separately for domains and subdomains.
Bug Fixes and Other Changes
- Fixed advanced cache display issues to show correct time selection settings.
- Allowed browser cache time modification even when caching is disabled.
Release 0.6.13
Bug Fixes and Other Changes
- Added a language tab to the cPanel advanced display for hosting types.
- Fixed scenarios involving multiple aliases and subdomains.
Release 0.6.12
Behavioral Changes
- Removed old username/password authentication.
Bug Fixes and Other Changes
- Fixed installation script to include WHM images during installation.
- Corrected display of French descriptions in "More Info" settings.
Release 0.6.0
Major Features and Improvements
- Cache purges now execute asynchronously.
- Redesigned the cPanel GUI for a cleaner look.
Behavioral Changes
- Added license management to the module GUI.
- Updated authentication to be IP-based rather than using user credentials.
- Enhanced detection of the operating system environment.
Bug Fixes and Other Changes
- Fixed license error messages in the WHM GUI update section.
- Resolved issues with .htaccess blocking in WordPress multisite setups.
- Added tracking for account and MAC addresses.
- Enhanced WHM module header information for trial, developer, and expired licenses.
Release 0.5.5
Behavioral Changes
- Advanced settings in the cPanel GUI now support breakdown by subdomains and addon domains.
Bug Fixes and Other Changes
- Fixed issues with empty cookies and URIs causing cache bypass.
Release 0.5.3
Major Features and Improvements
- Unified development branches.
- Removed duplicate functions and streamlined module handling.
- Migrated credentials to a license file.
Bug Fixes and Other Changes
- Updated tests and fixed unrecognized fields in advanced settings.
- Enhanced the cPanel
chkServdhooking script.
Release 0.4.3
Major Features and Improvements
- Integrated Smarty templates into the cPanel area.
Bug Fixes and Other Changes
- Corrected variable names in Nginx restart configurations.
Release 0.4.1
Bug Fixes and Other Changes
- Ensured proper disablement of the cPanel
chkServdservice when the module is disabled. - Fixed Nginx and Apache restart issues in the enable module function.
Release 0.4.0
Major Features and Improvements
- Added user configuration files.
- Migrated credentials to the main module configuration file.
Bug Fixes and Other Changes
- Standardized function return values to integers.
- Improved credential handling to avoid global library storage.
