Restoring a Real cPanel Account, Not a Reimplementation of Our Own
The biggest gap left on the parity list was migration: a way to bring an account off a cPanel/WHM server onto KNJ Panel. The panel already had one…
Read more →The biggest gap left on the parity list was migration: a way to bring an account off a cPanel/WHM server onto KNJ Panel. The panel already had one…
Read more →Challenge-response has been working for a while: a server-side mail rule diverts anyone not on the allow list into a Pending folder. But approving a sender only changed…
Read more →Two phases ago, Perl Modules and PHP PEAR Packages moved off the web request path and onto the queue worker, because installing a brand-new package can need to…
Read more →Backup Restoration has always meant one thing: wipe the account’s home directory and re-extract the whole files archive. That’s correct but blunt, and per-file and per-directory restoration needed…
Read more →The previous phase closed out PHP PEAR Packages by widening the web application’s hardening allowances for two new locations. Before trusting that fix, we checked something flagged but…
Read more →The last open item under Backup & Server Status: which accounts get backed up on the automated scheduled run. Previously the answer was “all of them, always”, with…
Read more →The last open item in the Client Panel’s Software section was PHP PEAR Packages. The obvious shortcut was to guess a curated set from PEAR’s channel naming convention…
Read more →The admin-side Perl Module Manager (Phase 78) already did the real work: a curated set of 8 common CGI modules, install state read live off the server, and…
Read more →Upgrading the database server’s major version is the kind of admin action where a wrong guess doesn’t just break a feature. So this one started with research: what…
Read more →The largest item still open on the gap list was Statistics Software Configuration. The existing Traffic & Visitors page already parses access logs for requests, unique visitors, response…
Read more →Next on the gap list was admin-side scheduled tasks. Per-account Cron Jobs has existed for a while, letting account owners schedule recurring commands as their own system user.…
Read more →Two more items off the gap list: a Perl module installer, and Feature Manager. The first was straightforward. The second revealed a gap in work that had already…
Read more →Next on the gap list was a database root password rotation feature. We checked how the server’s database administrator account actually authenticates before writing code, and the answer…
Read more →The next item on the gap list was an SSL Storage Manager. The existing SSL page listed every site’s current certificate, but that is also its limit: it…
Read more →Back to the open items from the earlier click-through comparison: a client-side deliverability checker, a stale tracking note, a web page template editor, an outbound mail-abuse protection, and…
Read more →A small follow-up to the dashboard work: a feature search, added to both the account and controller sidebars. Why the sidebar, not the top of the page Many…
Read more →The account dashboard was the thinnest page in the panel: four stat tiles and a “your site” card, with everything else a click away behind the sidebar. Logging…
Read more →This phase went further than the roadmap document: a full re-audit of the admin feature catalog, cross-referenced against the live codebase. Most of it held up. Two items…
Read more →After a run of long work sessions came a five-day break with no changes. Coming back, the goal wasn’t to carry on where we left off but to…
Read more →Same approach as audit #07: stop, check everything, and don’t move on until it’s clean. This time the scope went wider: a full roadmap accuracy sweep first (every…
Read more →