Skip to content

Domain expiry notification defaults to enabled for unsupported ccTLDs like .co without a valid RDAP server, causing persistent log spam #6883

@BitWise-0x

Description

@BitWise-0x

📑 I have found these related issues/pull requests

These addressed editor keystroke spam and private/local domains, but the runtime behavior for unsupported public TLDs (like .co) is still problematic.

🛡️ Security Policy

📝 Description

When a monitor targets a domain with a TLD that has no RDAP endpoint listed by IANA (e.g. .co), the "Domain Name Expiry Notification" checkbox in the monitor editor is grayed out but still checked/enabled. The UI correctly shows the message:

Domain expiry monitoring is not available for ".co" because no RDAP service is listed by IANA

However, two problems remain:

  1. The checkbox defaults to checked (enabled) even though it is grayed out. Since it cannot be unchecked by the user, the domain expiry check runs on every heartbeat cycle despite being unsupported. It should default to unchecked/disabled when RDAP is unavailable for the TLD.

  2. The warning logs on every single polling cycle, not just once. This results in massive log spam that continues indefinitely for each monitor targeting a .co domain.

👟 Reproduction steps

  1. Create an HTTP(s) monitor targeting any .co domain (e.g. https://example.co)
  2. Observe that "Domain Name Expiry Notification" is grayed out but checked
  3. Save the monitor
  4. Watch the container logs -- the DOMAIN_EXPIRY warning repeats on every heartbeat

👀 Expected behavior

  • When RDAP is unsupported for a TLD, expiryNotification should default to false (disabled), not true
  • If the check still somehow runs for an unsupported TLD, the warning should be logged once (or at most on startup), not on every heartbeat cycle

😓 Actual Behavior

  • The checkbox is grayed out but enabled, so the expiry check runs every cycle
  • The warning fires on every single heartbeat, flooding the logs

🐻 Uptime-Kuma Version

nightly2 (2026-02-06, based on master)

💻 Operating System and Arch

Debian 12 (Docker), amd64

🌐 Browser

N/A (log-level issue, not browser-dependent)

🖥️ Deployment Environment

  • Runtime Environment:
    • Docker Swarm
  • Database:
    • MariaDB: Embedded
  • Database Storage:
    • Filesystem:
      • Linux: ext4
    • Storage Medium: SSD
  • Uptime Kuma Setup:
    • Number of monitors: Multiple monitors targeting .co domains

📝 Relevant log output

2026-02-06T23:17:55-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.
2026-02-06T23:18:03-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.
2026-02-06T23:18:03-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.
2026-02-06T23:18:06-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.
2026-02-06T23:18:08-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.
2026-02-06T23:18:55-05:00 [DOMAIN_EXPIRY] WARN: Domain expiry unsupported for '.co' because its RDAP endpoint is not listed in the IANA database.

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-requestRequest for new features to be added

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions