Server (provisioning) modules
A server module talks to one kind of control panel or server and acts on one account at a time. CoreInto decides when; the module decides how.
The class#
Every server module extends CoreInto\Modules\ServerModule. It is built with the server's row from Settings > Servers, with its secret opened, and acts on one Account at a time. Every request and answer goes to the module log with passwords hidden.
| Method | Required | What it does |
|---|---|---|
title() | Yes | The module's name |
about() | Set-up help shown when adding a server | |
loginLabels() | Labels for the server's login fields, such as "API token" | |
defaultPort() | The panel's usual port | |
productFields() | What a product using this module chooses, such as the package | |
usernameRule() | The pattern and length of usernames the panel accepts | |
canSso() | Whether the panel can sign a user in without a password | |
test() | Yes | Checks the connection and returns a line about the server |
packages() | Package names on the server, for the product form | |
create(Account $a) | Yes | Makes the account |
suspend(Account $a, string $reason) | Yes | Suspends it |
unsuspend(Account $a) | Yes | Lifts the suspension |
terminate(Account $a) | Yes | Removes the account and its files for good |
changePackage(Account $a) | Yes | Moves it to the product's package after an upgrade |
changePassword(Account $a, string $password) | Yes | Sets a new password |
usage(Account $a) | Disk and bandwidth used and allowed | |
loginUrl(Account $a) | A single sign-on address, or the panel's sign-in page |
The account#
Account carries the service id, username, password, domain, email, the panel's package name from the product, the product's module settings, the chosen configurable options, the client's name, a dedicated IP if any, and the public SSH keys on the client's account.
Errors#
Throw ModuleError with a message the panel gave you. CoreInto shows it to staff, logs it, and puts the action in Pending Module Actions to try again, so a server that is down for a minute never loses an order.
Shipping a module#
Server modules are listed in CoreInto's module registry and released with CoreInto: cPanel & WHM, Plesk, DirectAdmin and intoPanel today. If you have written one for another panel, send it through the partner program and we will review it for a release.
Frequently asked questions
What happens when create() fails?
The error is shown and logged, and the action waits in Pending Module Actions to be retried.
Which panels have modules today?
cPanel & WHM, Plesk, DirectAdmin and intoPanel.