v2.1.0 — package creation from products, and packages by name
Products can now create their CWP packages, and a package set by name works.
Added
Products can create their CWP packages. Ten new product options describe the package — disk quota, bandwidth, and the FTP, email, email-list, database, subdomain, parked-domain, addon-domain and hourly-email limits. Saving the product creates the package on every CWP server in that product's server group, or updates it if one of that name already exists. No more building the same package by hand on each server.
Off by default — push_packages_on_product_save in config.php. Enabling it decides ownership: WHMCS becomes the source of truth, and a package edited in CWP is overwritten the next time its product is saved. Needs ADD and UPD on Packages.
A limit left blank keeps CWP's own default; set it to 0 to mean none allowed.
The CWP Package field may be left blank, in which case the product's own name is used — both when pushing the package and when provisioning against it.
Fixed
A package change failed whenever the package was set by name. CWP's changepack takes a package id and nothing else — given a name it answers a bare Error with no explanation. Whatever the product holds, name or id, is now resolved against the server's own package list before anything is sent, so a name works and each server in a group can assign that package its own local id.
This replaces the existence check added in 2.0.3, which confirmed the package was real and then sent the unusable form of it anyway. Resolution still fails open on a key without list on Packages, and an unknown package is still refused with the available ones named.
tblservers.accesshash is not encrypted on every install. Where it holds the API key verbatim, running it through DecryptPassword does not fail — it reports success and returns binary noise, which CWP rejects as "No special characters are allowed!". A stored value that already looks like a key is now used as-is.
Upgrading
Replace the directory contents. Nothing else changes — the module type, config option order and stored usernames are all unchanged.
The ten new product options are appended after the existing five, so current settings carry over untouched. Fill them in only if you want package pushing.
Full detail in CHANGELOG.md.