# Connection Configuration {#connect-config}

Proton clients can read default connection configuration from a
configuration file.

If the environment variable `MESSAGING_CONNECT_FILE` is set, it is the
path to the file. Otherwise the client looks for a file named
`connect.json` in the following locations, using the first one found:

* Current working directory of client process.
* `$HOME/.config/messaging/` - $HOME is user's home directory.
* `$PREFIX/etc/messaging/` - $PREFIX is the prefix where the proton library is installed
* `/etc/messaging/`

The configuration file is in JSON object format. Comments are allowed,
as defined by the [JavaScript Minifier](https://www.crockford.com/javascript/jsmin.html)

The file format is as follows. Properties are shown with their default
values, all properties are optional.

    {
      "scheme": "amqps",   // [string] "amqp" (no TLS) or "amqps"
      "host": "localhost", // [string] DNS or IP address for connection. Defaults to local host.
      "port": "amqps",     // [string] "amqp", "amqps" or port number. Defaults to value of 'scheme'.
      "user": null,        // [string] Authentication user name
      "password": null,    // [string] Authentication password

      "sasl": {
        "enable": true,         // [bool] Enable or disable SASL
        "mechanisms": null,     // [list] List of allowed SASL mechanism names.
                                // If null the library determines the default list.
        "allow_insecure": false // [boolean] Allow mechanisms that send unencrypted clear-text passwords
      },

      // Note: it is an error to have a "tls" object unless scheme="amqps"
      "tls": {
        "cert": null,   // [string] name of client certificate or database
        "key": null,    // [string] private key or identity for client certificate
        "ca": null,     // [string] name of CA certificate or database
        "verify": true  // [bool] if true, require a valid cert with matching host name
      }
    }
