Pass Wizard with a JSON

After any clean installation of XiVO, it must be initialized through a program called wizard. Wizard is usually passed through the web interface, but there is another way - through a REST API.

You can pass the wizard with a single request to the API, by providing a specific JSON body as argument. You can use the swagger found on XIVO_IP/api > xivo_confd > wizard to send the POST request.

The body to fill has this form :

{
"admin_password": "string",
"license": true,
"timezone": "string",
"language": "de_DE",
"entity_name": "string",
"network": {
    "hostname": "string",
    "domain": "string",
    "interface": "string",
    "ip_address": "string",
    "netmask": "string",
    "gateway": "string",
    "nameservers": [
    "string"
    ]
},
"context_incall": {
    "display_name": "Incalls",
    "number_start": "string",
    "number_end": "string",
    "did_length": 0
},
"context_internal": {
    "display_name": "Default",
    "number_start": "string",
    "number_end": "string"
},
"context_outcall": {
    "display_name": "Outcalls"
},
"default_french_configuration": true,
"handle_system_conf": true,
"run_scripts": false
}

For example, you can use curl to send the JSON:

curl -X POST \
-H 'Content-Type: application/json' \
-H "Accept: application/json" \
-d @/JSON/LOCATION --insecure "https://XIVO_IP:9486/1.1/wizard"

In this command, you need to modify :

  • JSON/LOCATION by the path of you json file

  • XIVO_IP by the IP of you XiVO

Some key’s meaning will be detailed below.

handle_system_conf

Value: true | false, default is true

By default the XiVO appliance handles the system configuration (network interfaces, nameservers etc.).

If handle_system_conf is set to false when launching the wizard, then the XiVO will not touch the system configuration. It will not touch/change:

  • /etc/hosts

  • /etc/hostname

  • /etc/mailname

  • /etc/network/interfaces

  • /etc/postfix/canonical

  • /etc/postfix/main.cf

  • /etc/resolv.conf

All the settings passed to the wizard API will only be set in the XiVO db, but will not be applied on the system.

Warning

Beware, though, that even if you run the wizard with handle_system_conf to false the system configuration will still be accessible via the webi. If you change it there and then click on Apply network configuration this will touch/change the system configuration.

run_scripts

Value: true | false, default is false

If set to true, after the wizard is finished, all executable scripts in directory /etc/xivo/wizard.d are going to be run.

Those scripts must be runnable by xivo-confd (file has permission set to ‘x’ for www-data) plus any necessary right to perform their additionnal actions.

The scripts are run in ascii order (0-9, A-Z, a-z). In case of unsuccessful run, an exception is raised and all non-finished scripts are stopped. You can then find the failing script’s output in xivo-confd log. Another exception is raised if the directory /etc/xivo/wizard.d doesn’t exist.