Skip to content

Server extensions ​

The server extensions have a few hooks that you can use to setup the server.

Servers still support everything documented in the extensions overview.

getProductConfig ​

Shown to the admin when configuring the product.

php
public function getProductConfig($values = [])
{
    return [
        [
            'name' => 'ram',
            'label' => 'Ram',
            'type' => 'number',
            'required' => true,
            'default' => 1024,
            'description' => 'The amount of ram in MB',
        ],
    ];
}
ParameterDescription
$valuesThe values that are provided on the product from getProductConfig.

$values can come in handy if you want to show/hide certain fields based on other fields.

Read this to learn more about the available input fields and options.

getCheckoutConfig ​

Shown to the user when they are checking out.

php
use App\Models\Product;

public function getCheckoutConfig(Product $product, $values = [], $settings = [])
{
    return [
        [
            'name' => 'location',
            'label' => 'Location',
            'type' => 'select',
            'required' => true,
            'options' => [
                '1' => 'Location 1',
                '2' => 'Location 2',
            ],
        ]
    ];
}
ParameterDescription
Product $productThe product that is being purchased.
$valuesThe values that are provided on the product from getCheckoutConfig.
$settingsThe settings that are provided on the product from getProductConfig.

$values can come in handy if you want to show/hide certain fields based on other fields.

Read this to learn more about the available input fields and options.

createServer, suspendServer, unsuspendServer, terminateServer, upgradeServer ​

These hooks are used to create, suspend, unsuspend, terminate and upgrade the server.

ParameterDescription
Service $serviceThe service that is being created, suspended, unsuspended or terminated.
$settingsThe settings that are provided on the product from getProductConfig.
$propertiesCustom properties created by the admin and values coming from getCheckoutConfig.
Its recommended to array_merge($settings, $properties) before using them.
This makes sure that any variable that the admin wants to override is properly set.
php
use App\Models\Service;

/**
 * Create a server for the service.
 * 
 * @param Service $service The service that is being created.
 * @param array $settings The settings that are provided on the product from `getProductConfig`.
 * @param array $properties Custom properties created by the admin and values coming from `getCheckoutConfig`.
 */
public function createServer(Service $service, $settings, $properties)
{
    // Create the server
}

getActions ​

This hook is used to add actions to the service show page.

It supports texts, views, and buttons.

php
public function getActions(Service $service, $settings, $properties)
{
    return [
        [
            'text' => properties['username'],
            'label' => 'Panel Username',
            'type' => 'text',
        ]
        [
            'name' => 'control_panel',
            'label' => 'Go to control panel',
            'url' => 'https://panel.paymenter.org',
            'type' => 'button',
        ],
        [
            'name' => 'console',
            'label' => 'Go to console',
            'type' => 'view',
        ],
    ];
}

Having a time sensistive url? Then you can use the function argument to generate the url.

php
public function getActions(Service $service, $settings, $properties)
{
    return [
        [
            'name' => 'control_panel',
            'label' => 'Go to control panel',
            'function' => 'getControlPanelUrl',
            'type' => 'button',
        ],
        [
            'name' => 'console',
            'label' => 'Go to console',
            'type' => 'view',
            'function' => 'getView', // If this function is not provided, we will use the function `getView` to render the view.
        ],
    ];
}

public function getControlPanelUrl(Service $service)
{
    return 'https://panel.paymenter.org/' . $service->id;
}

public function getView(Service $service, $settings, $properties, $view)
{
    return view('extension::' . $view, ['service' => $service]);
}