* 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>
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
📚 Related Documentation
- Command Line Configuration - Detailed command line parameter documentation
- JSON Configuration - JSON configuration file format documentation
- Environment Variable Configuration - Environment variable configuration method
- Provider Development Guide - How to develop new providers
- JSON Schema - Configuration file validation schema
If you have questions or need help, please check the FAQ or ask in GitHub Issues.