github.com/StackExchange/dnscontrol/v4@v4.11.0/documentation/provider/inwx.md (about)

     1  INWX.de is a Berlin-based domain registrar.
     2  
     3  ## Configuration
     4  
     5  To use this provider, add an entry to `creds.json` with `TYPE` set to `INWX`
     6  along with your INWX username and password.
     7  
     8  **Example:**
     9  
    10  {% code title="creds.json" %}
    11  ```json
    12  {
    13    "inwx": {
    14      "TYPE": "INWX",
    15      "password": "yourPassword",
    16      "username": "yourUsername"
    17    }
    18  }
    19  ```
    20  {% endcode %}
    21  
    22  ### Two-factor authentication
    23  
    24  INWX supports two-factor authentication via TOTP and does not allow TOTP codes to be reused. This means that you will only be able to log into your INWX account once every 30 seconds.
    25  
    26  You will hit this limitation in the following two scenarios:
    27  
    28  * You run DNSControl twice very quickly (to e.g. first use preview and then push). Waiting for 30 seconds to pass between these two invocations will work fine though.
    29  * You use INWX as both the registrar and the DNS provider. In this case, DNSControl will try to login twice too quickly and the second login will fail because a TOTP code will be reused. The only way to support this configuration is to use a INWX account without two-factor authentication.
    30  
    31  If you cannot work around these two limitation it is possible to create and manage sub-account - with specific permission sets - dedicated for API access with two-factor
    32  authentication disabled. This is possible at [inwx.de/en/account](https://www.inwx.de/en/account).
    33  
    34  If two-factor authentication has been enabled you will also need to provide a valid TOTP number.
    35  This can also be done via an environment variable:
    36  
    37  {% code title="creds.json" %}
    38  ```json
    39  {
    40    "inwx": {
    41      "TYPE": "INWX",
    42      "username": "yourUsername",
    43      "password": "yourPassword",
    44      "totp": "$INWX_TOTP"
    45    }
    46  }
    47  ```
    48  {% endcode %}
    49  
    50  and then you can run
    51  
    52  ```shell
    53  INWX_TOTP=12345 dnscontrol preview
    54  ```
    55  
    56  It is also possible to directly provide the shared TOTP secret using the key "totp-key" in `creds.json`.
    57  This secret is only shown once when two-factor authentication is enabled and you'll have to make sure to write it down then.
    58  
    59  **Important Notes**:
    60  * Anyone with access to this `creds.json` file will have *full* access to your INWX account and will be able to transfer and/or delete your domains
    61  * Storing the shared secret together with the password weakens two-factor authentication because both factors are stored in a single place.
    62  
    63  {% code title="creds.json" %}
    64  ```json
    65  {
    66    "inwx": {
    67      "TYPE": "INWX",
    68      "username": "yourUsername",
    69      "password": "yourPassword",
    70      "totp-key": "yourTOTPSharedSecret"
    71    }
    72  }
    73  ```
    74  {% endcode %}
    75  
    76  ### Sandbox
    77  You can optionally also specify sandbox with a value of 1 to redirect all requests to the sandbox API instead:
    78  
    79  {% code title="creds.json" %}
    80  ```json
    81  {
    82    "inwx": {
    83      "TYPE": "INWX",
    84      "username": "yourUsername",
    85      "password": "yourPassword",
    86      "sandbox": "1"
    87    }
    88  }
    89  ```
    90  {% endcode %}
    91  
    92  If sandbox is omitted or set to any other value the production API will be used.
    93  
    94  ## Metadata
    95  This provider does not recognize any special metadata fields unique to INWX.
    96  
    97  ## Usage
    98  An example `dnsconfig.js` configuration file
    99  for `example.com` registered with INWX
   100  and delegated to Cloudflare:
   101  
   102  {% code title="dnsconfig.js" %}
   103  ```javascript
   104  var REG_INWX = NewRegistrar("inwx");
   105  var DSP_CF = NewDnsProvider("cloudflare");
   106  
   107  D("example.com", REG_INWX, DnsProvider(DSP_CF),
   108      A("test", "1.2.3.4"),
   109  END);
   110  ```
   111  {% endcode %}