Skip to content

Add DNS provider for Com Laude#2886

Draft
ldez wants to merge 3 commits intogo-acme:masterfrom
ldez:feat/dns/comlaude
Draft

Add DNS provider for Com Laude#2886
ldez wants to merge 3 commits intogo-acme:masterfrom
ldez:feat/dns/comlaude

Conversation

@ldez
Copy link
Copy Markdown
Member

@ldez ldez commented Mar 3, 2026

Closes #2880

Ping @lackern-se-digicert, can you run the command with your domain, credentials, etc. (and put the output of this command to a comment)?

make build
rm -rf .lego

COMLAUDE_USERNAME="xxx" \
COMLAUDE_PASSWORD="yyy" \
COMLAUDE_API_KEY="zzz" \
COMLAUDE_GROUP_ID="abc" \
./dist/lego --dns comlaude -d '*.example.com' -d example.com -s https://acme-staging-v02.api.letsencrypt.org/directory run

Note that the wildcard domain is important.

How to test this PR?
  1. You need Go
  2. Check out the PR:
    git clone https://github.com/ldez/lego.git
    cd lego
    git checkout feat/dns/comlaude
  3. Compile lego:
    • if you have make: make build
    • if you don't have make: go build -o dist/lego ./cmd/lego
  4. Run the following command with your information (email, domain, credentials):
    COMLAUDE_USERNAME="xxx" \
    COMLAUDE_PASSWORD="yyy" \
    COMLAUDE_API_KEY="zzz" \
    COMLAUDE_GROUP_ID="abc" \
    ./dist/lego --dns comlaude -d '*.example.com' -d example.com -s https://acme-staging-v02.api.letsencrypt.org/directory run
    The wildcard domain is important
  5. Before each run of the command, you should clean your local environment:
    rm -rf .lego

@ldez ldez added enhancement area/dnsprovider waiting-for/user-tests Need users to test functionality waiting-for/contrib-feedback Awaiting feedback from the contributor. new-provider labels Mar 3, 2026
@ldez ldez mentioned this pull request Mar 4, 2026
5 tasks
@lackern-se-digicert
Copy link
Copy Markdown

Thank you for your patience to review the request, unfortunately, I do not have direct access to the privilege information required to run the commands.

@ldez
Copy link
Copy Markdown
Member Author

ldez commented Mar 5, 2026

OK, but why have you asked for the addition of this provider? 🤔

Perhaps you could ask someone to test the PR?

@ldez ldez changed the title feat: Add DNS provider for Com Laude Add DNS provider for Com Laude Mar 10, 2026
@ldez ldez force-pushed the master branch 6 times, most recently from b63378b to c4ab057 Compare April 11, 2026 01:15
@lackern-se-digicert
Copy link
Copy Markdown

lackern-se-digicert commented Apr 30, 2026

Thank you for waiting. This is the information shared by end user, hope it helps.

Test result (Windows 11 / Git Bash)
Go: go1.26.2 windows/amd64
lego: v4.32.0+dev-detach windows/amd64
Command used (redacted env vars):

COMLAUDE_USERNAME="***" 
COMLAUDE_PASSWORD="***" 
COMLAUDE_API_KEY="***" 
COMLAUDE_GROUP_ID="***" \
./dist/lego --dns comlaude -d '*.example.com' -d example.com -s https://acme-staging-v02.api.letsencrypt.org/directory run

Result: ACME order starts, but DNS provider fails during Com Laude login JSON parsing.
Error:

comlaude: API login: unable to unmarshal response: [status code: 200] body: {...}
json: cannot unmarshal object into Go struct field LoginResponse.data of type []internal.TokenInfo

Sanitized response shape from Com Laude:

{
  "errors": [],
  "messages": [
    {
      "code": "correct_login_details",
      "message": "Log-in details correct"
    }
  ],
  "data": {
    "token_type": "Bearer",
    "expires_in": 7200,
    "access_token": "<redacted>",
    "refresh_token": "<redacted>",
    "dnsdashboard_link": 1
  },
  "status_code": 200
}

It looks like data is an object, but the code expects []TokenInfo. Suggest changing LoginResponse.data to a single object (or supporting both object/array).
(Also note: cleanup warnings “unknown record ID or zone ID” appear after the failure, likely because Present never completed.)

@ldez
Copy link
Copy Markdown
Member Author

ldez commented Apr 30, 2026

This means that the API documentation is wrong.

https://api.comlaude.com/docs#/Auth/POST.api_login

{
  "errors": [
    "string"
  ],
  "messages": [
    {
      "code": "correct_login_details",
      "message": "Log-in details correct"
    }
  ],
  "data": [
    {
      "token_type": "Bearer",
      "expires_in": 7600,
      "access_token": "",
      "refresh_token": "",
      "dnsdashboard_link": 1
    }
  ],
  "status_code": 200
}

@ldez ldez force-pushed the feat/dns/comlaude branch from 82ebca5 to 4007ea2 Compare April 30, 2026 09:27
@ldez
Copy link
Copy Markdown
Member Author

ldez commented Apr 30, 2026

I updated the PR, can you pull, build, and run again?

@ldez ldez force-pushed the feat/dns/comlaude branch from 4007ea2 to bf5b508 Compare April 30, 2026 09:35
@ldez ldez force-pushed the feat/dns/comlaude branch from bf5b508 to 23bf66d Compare April 30, 2026 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/dnsprovider enhancement new-provider waiting-for/contrib-feedback Awaiting feedback from the contributor. waiting-for/user-tests Need users to test functionality

Development

Successfully merging this pull request may close these issues.

Support for provider: Com Laude

2 participants