Files
DDNS/doc/providers
96b4ca2e0c feat(config): 支持多配置文件和多服务商 优化http support multi config/providers (#531)
* Initial plan

* Implement multi-provider and multi-config file support

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Complete multi-provider and multi-config support with comprehensive testing

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address code review feedback: fix exit behavior, remove special env handling, fix log level

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Add object-with-configs array support for improved JSON schema validation

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address code review feedback: simplify config path handling, remove load_config function, and improve debug provider logic

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address final code review feedback: improve log handling, provider logging, and debug assignment logic

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address final review feedback: simplify debug provider logic and remove array format support

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Fix lint issues: remove whitespace from blank lines and apply black formatting

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Implement schema v4.1 with multi-provider support using providers array format

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address code review feedback: rename tests, use global log settings, simplify config logic, remove configs format support

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Fix lint issues and simplify complex functions to reduce cyclomatic complexity

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Address code review feedback: enhance config functions and inline simple logic

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Fix Python 2.7 compatibility and lint issues in test_config_schema_v4_1.py

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Simplify config logic, fix Python 2.7 compatibility, and improve code formatting

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Optimize config logic and enhance schema v4.0/v4.1 compatibility tests

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* Update file.py

* Update file.py

* Update file.py

* Update file.py

* Fix critical bug in multi-provider config processing and clean up lint issues

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>

* fix

* 优化测试代码格式,移除多余空行并调整注释位置
* refactor: update HTTP request handling and improve error processing

- Refactored imports for better clarity and organization.
- Added custom HTTP error processor to handle all HTTP error status codes gracefully.
- Enhanced SSL certificate loading with additional paths for Windows.
- Updated test cases to use HTTP instead of HTTPS for testing endpoints.
- Added tests for handling HTTP 400 Bad Request and SSL auto fallback behavior.

* update http

* update docs

* refactor: enhance SSL handling in SSLAutoFallbackHandler for better compatibility

* add multi tests

* fix patch and add rename fileds

* refactor: update provider field naming in configuration tests for consistency

* update doc link

* fix encoding

* fix

* 清理编码问题

* fix 编码问题

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
2025-07-17 18:54:09 +00:00
..
2025-07-15 00:55:08 +08:00
2025-07-15 00:55:08 +08:00

DNS Provider Configuration Guide

This directory contains detailed configuration guides for various DNS providers. DDNS supports multiple mainstream DNS providers, each with specific configuration requirements and API characteristics.

🚀 Quick Navigation

Provider Service Provider Chinese Doc Configuration Doc Features
alidns Alibaba Cloud DNS alidns 中文文档 alidns English Doc Alibaba Cloud ecosystem integration
aliesa Alibaba Cloud ESA aliesa 中文文档 aliesa English Doc Alibaba Cloud Edge Security Acceleration
callback Custom API (Webhook) callback 中文文档 callback English Doc Custom HTTP API
cloudflare Cloudflare cloudflare 中文文档 cloudflare English Doc Global CDN and DNS service
debug Debug Provider debug 中文文档 debug English Doc IP address printing for debugging
dnscom DNS.COM 51dns 中文文档 51DNS English Doc ⚠️ Pending verification
dnspod_com DNSPod Global dnspod_com 中文文档 dnspod_com English Doc ⚠️ Pending verification
dnspod DNSPod China dnspod 中文文档 dnspod English Doc Largest DNS provider in China
he HE.net he 中文文档 he English Doc ⚠️ Pending verification, no auto-record creation
huaweidns Huawei Cloud DNS huaweidns 中文文档 huaweidns English Doc ⚠️ Pending verification
noip No-IP noip 中文文档 noip English Doc Popular dynamic DNS service
tencentcloud Tencent Cloud DNSPod tencentcloud 中文文档 tencentcloud English Doc Tencent Cloud DNSPod service
edgeone Tencent Cloud EdgeOne edgeone 中文文档 edgeone English Doc Tencent Cloud Edge Security Platform

To add a new provider, create an issue and fill in the template

Automatic Record Creation Support

Most providers support automatic creation of non-existent DNS records, with exceptions:

  • ⚠️he: Does not support automatic record creation, records must be manually created in the control panel
  • ⚠️noip: Does not support automatic record creation, records must be manually created in the control panel

📝 Configuration Examples

Command Line Configuration

CLI provides command line configuration, here are some common command line examples:

# DNSPod China
ddns --dns dnspod --id 12345 --token your_token --ipv4 ddns.newfuture.cc

# Alibaba Cloud DNS
ddns --dns alidns --id your_access_key --token your_secret --ipv4 ddns.newfuture.cc

# Cloudflare (using email)
ddns --dns cloudflare --id user@example.com --token your_api_key --ipv4 ddns.newfuture.cc

# Cloudflare (using Token)
ddns --dns cloudflare --token your_api_token --ipv4 ddns.newfuture.cc

# No-IP
ddns --dns noip --id your_username --token your_password --ipv4 ddns.newfuture.cc

JSON Configuration File

JSON configuration file provides a more flexible configuration method, here are some common JSON configuration examples:

Traditional Single-Provider Format

{
  "$schema": "https://ddns.newfuture.cc/schema/v4.0.json",
  "dns": "dnspod",
  "id": "12345",
  "token": "your_token_here",
  "ipv4": ["ddns.newfuture.cc", "*.newfuture.cc"],
  "index4": ["default"],
  "ttl": 600
}

Multi-Provider Format

{
  "$schema": "https://ddns.newfuture.cc/schema/v4.1.json",
  "ssl": "auto",
  "cache": true,
  "log": {"level": "INFO"},
  "providers": [
    {
      "provider": "cloudflare",
      "id": "user@example.com",
      "token": "cloudflare-token",
      "ipv4": ["cf.example.com"],
      "ttl": 300
    },
    {
      "provider": "dnspod", 
      "id": "12345",
      "token": "dnspod-token",
      "ipv4": ["dnspod.example.com"],
      "ttl": 600
    }
  ]
}

Multiple Configuration Files Method

Command Line Specification

# Use multiple independent configuration files
ddns -c cloudflare.json -c dnspod.json -c alidns.json

# Use environment variable to specify multiple configuration files
export DDNS_CONFIG="cloudflare.json,dnspod.json,alidns.json"
ddns

Multiple Configuration Files Example

cloudflare.json:

{
  "dns": "cloudflare",
  "id": "user@example.com",
  "token": "your-cloudflare-token",
  "ipv4": ["cf.example.com"]
}

dnspod.json:

{
  "dns": "dnspod",
  "id": "12345", 
  "token": "your-dnspod-token",
  "ipv4": ["dnspod.example.com"]
}

Environment Variable Configuration

Environment variable configuration provides another configuration method, here are some common environment variable examples:

export DDNS_DNS=dnspod
export DDNS_ID=12345
export DDNS_TOKEN=your_token_here
export DDNS_IPV4=ddns.newfuture.cc
export DDNS_INDEX4=default
ddns --debug

If you have questions or need help, please check the FAQ or ask in GitHub Issues.