reload readme doc
This commit is contained in:
214
README.md
214
README.md
@@ -1,19 +1,67 @@
|
|||||||
## Purpose
|
# Hua.DDNS
|
||||||
|
|
||||||
A system service for dynamic update DNS record by `net6` with `Quartz.Net`. only Support [DnsPod](https://docs.dnspod.cn/api/add-domain/)、[AlibabaCloud]([阿里云 OpenAPI 开发者门户 (aliyun.com)](https://next.api.aliyun.com/document/Alidns/2015-01-09))、[Namesilo](https://www.namesilo.com/api-reference)
|
A dynamic DNS update system service built with .NET 8.0 and Quartz.Net.
|
||||||
|
|
||||||
## Deploy
|
## Features
|
||||||
|
|
||||||
1. Copy the folder `\bin\Debug\net6.0` to a new path and open it .
|
- **Multi-Platform Support**: Supports multiple DNS providers
|
||||||
2. Configure the `App` option in `appsetting.json` file.
|
- [DnsPod](https://docs.dnspod.cn/api/add-domain/) (Tencent Cloud)
|
||||||
3. In Windows system, configure the service name in `InstallServiceByNssm.bat` file , and then double click the BAT file.
|
- [Alibaba Cloud DNS](https://next.api.aliyun.com/document/Alidns/2015-01-09)
|
||||||
|
- [Namesilo](https://www.namesilo.com/api-reference)
|
||||||
|
- **SSL Certificate Download**: Automatic SSL certificate download from Alibaba Cloud and Tencent Cloud
|
||||||
|
- **Scheduled Tasks**: Flexible task scheduling using Quartz.Net with Cron expressions
|
||||||
|
- **Windows Service**: Can run as a Windows service using NSSM
|
||||||
|
- **Docker Support**: Ready for containerized deployment
|
||||||
|
- **Logging**: Comprehensive logging with Serilog
|
||||||
|
- **Database Support**: PostgreSQL for data persistence
|
||||||
|
|
||||||
## Building
|
## Requirements
|
||||||
Check and configure the `App` option in `appsetting.json` file, and then click the `Hua.DDNS.sln` file open the solution.
|
|
||||||
|
- .NET 8.0 SDK (for building)
|
||||||
|
- .NET 8.0 Runtime (for running)
|
||||||
|
- PostgreSQL (optional, for database features)
|
||||||
|
- Windows (for Windows Service mode) or Linux/Docker
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Windows Service Deployment
|
||||||
|
|
||||||
|
1. Build the project:
|
||||||
|
```bash
|
||||||
|
dotnet publish -c Release -o ./publish
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Copy the `publish` folder to your desired location
|
||||||
|
|
||||||
|
3. Configure the `appsettings.json` file (see Configuration section below)
|
||||||
|
|
||||||
|
4. Edit `InstallServiceByNssm.bat` to set your preferred service name and path
|
||||||
|
|
||||||
|
5. Run `InstallServiceByNssm.bat` as administrator to install the service
|
||||||
|
|
||||||
|
6. The service will start automatically
|
||||||
|
|
||||||
|
### Docker Deployment
|
||||||
|
|
||||||
|
1. Build the Docker image:
|
||||||
|
```bash
|
||||||
|
docker build -t hua.ddns .
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run the container:
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
-v /path/to/appsettings.json:/app/appsettings.json \
|
||||||
|
-v /path/to/logs:/app/Log \
|
||||||
|
hua.ddns
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Example of config in `appsetting.json`
|
### Basic Configuration
|
||||||
|
|
||||||
|
Configure the `appsettings.json` file with your settings:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
@@ -26,32 +74,140 @@ Example of config in `appsetting.json`
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"App": {
|
"App": {
|
||||||
|
"GetIpv4Url": "http://47.108.74.59:8001/api/NetWork/GetIp",
|
||||||
"AppJob": {
|
"AppJob": {
|
||||||
"Corn": "* * * * * ?" //https://cron.qqe2.com/
|
"Corn": "0/5 * * * * ?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"DDNS": {
|
"DDNS": {
|
||||||
"Platform": 3, //1 Ali 2 Tencent 3 Namesilo
|
"Platform": 2,
|
||||||
// 主域名
|
"Domain": "example.com",
|
||||||
"Domain": "we965.com",
|
"SubDomainArray": [ "www", "api", "dev" ],
|
||||||
// 子域名前缀
|
|
||||||
"SubDomainArray": [ "git", "webutil", "dev" ],
|
|
||||||
// 记录类型
|
|
||||||
"type": "A",
|
"type": "A",
|
||||||
//间隔时间 秒
|
|
||||||
"time": "30"
|
"time": "30"
|
||||||
},
|
},
|
||||||
|
"SslDownload": {
|
||||||
|
"Enabled": true,
|
||||||
|
"Corn": "0 0 2 * * ?",
|
||||||
|
"Platform": 2,
|
||||||
|
"SavePath": "D:\\Paths\\ssl",
|
||||||
|
"ExpireDays": 10000,
|
||||||
|
"DownloadItems": [
|
||||||
|
{
|
||||||
|
"Domain": "www.example.com",
|
||||||
|
"FileName": "www.example.com.pem"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TencentCloud": {
|
||||||
|
"SecretId": "your-secret-id",
|
||||||
|
"SecretKey": "your-secret-key",
|
||||||
|
"Region": "ap-guangzhou",
|
||||||
|
"Dnspod": {
|
||||||
|
"Endpoint": "dnspod.tencentcloudapi.com"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AliCloud": {
|
||||||
|
"AccessKeyId": "your-access-key-id",
|
||||||
|
"AccessKeySecret": "your-access-key-secret",
|
||||||
|
"RegionId": "cn-hangzhou",
|
||||||
|
"Endpoint": "alidns.cn-hangzhou.aliyuncs.com"
|
||||||
|
},
|
||||||
"Namesilo": {
|
"Namesilo": {
|
||||||
"ApiKey": "1111"
|
"ApiKey": "your-api-key"
|
||||||
},
|
|
||||||
"Dnspod": {
|
|
||||||
"Id": "1111",
|
|
||||||
"Key": "1111",
|
|
||||||
"Endpoint": "1111"
|
|
||||||
},
|
|
||||||
"Ali": {
|
|
||||||
"Id": "1111",
|
|
||||||
"Key": "1111",
|
|
||||||
"Endpoint": "1111"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration Details
|
||||||
|
|
||||||
|
#### DDNS Configuration
|
||||||
|
|
||||||
|
- **Platform**: DNS provider selection
|
||||||
|
- `1`: Alibaba Cloud
|
||||||
|
- `2`: Tencent Cloud (DnsPod)
|
||||||
|
- `3`: Namesilo
|
||||||
|
- **Domain**: Your main domain name
|
||||||
|
- **SubDomainArray**: List of subdomains to update
|
||||||
|
- **type**: DNS record type (A, AAAA, etc.)
|
||||||
|
- **time**: Update interval in seconds
|
||||||
|
|
||||||
|
#### SSL Download Configuration
|
||||||
|
|
||||||
|
- **Enabled**: Enable/disable SSL certificate download
|
||||||
|
- **Corn**: Cron expression for download schedule
|
||||||
|
- **Platform**: SSL provider (same as DDNS Platform)
|
||||||
|
- **SavePath**: Directory to save SSL certificates
|
||||||
|
- **ExpireDays**: Days before certificate expiration to trigger download
|
||||||
|
- **DownloadItems**: List of domains and filenames for certificates
|
||||||
|
|
||||||
|
#### Cron Expressions
|
||||||
|
|
||||||
|
Use [Cron Expression Generator](https://cron.qqe2.com/) to create custom schedules.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- `0/5 * * * * ?` - Every 5 seconds
|
||||||
|
- `0 0 2 * * ?` - Every day at 2:00 AM
|
||||||
|
- `0 0 * * * ?` - Every hour
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- .NET 8.0 SDK
|
||||||
|
|
||||||
|
### Build Steps
|
||||||
|
|
||||||
|
1. Clone the repository:
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd Hua.DDNS
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Restore dependencies:
|
||||||
|
```bash
|
||||||
|
dotnet restore
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Build the solution:
|
||||||
|
```bash
|
||||||
|
dotnet build -c Release
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Run the application:
|
||||||
|
```bash
|
||||||
|
dotnet run --project Hua.DDNS/Hua.DDNS.csproj
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
Hua.DDNS/
|
||||||
|
├── Common/ # Common utilities and helpers
|
||||||
|
│ ├── Config/ # Configuration classes and options
|
||||||
|
│ ├── Http/ # HTTP helper classes
|
||||||
|
│ ├── FileHelper.cs
|
||||||
|
│ └── SqlHelper.cs
|
||||||
|
├── DDNSProviders/ # DNS provider implementations
|
||||||
|
│ ├── Ali/ # Alibaba Cloud DNS provider
|
||||||
|
│ ├── Dnspod/ # Tencent Cloud DNS provider
|
||||||
|
│ ├── Namesilo/ # Namesilo DNS provider
|
||||||
|
│ └── ...
|
||||||
|
├── Jobs/ # Scheduled jobs
|
||||||
|
│ ├── AppJob.cs
|
||||||
|
│ ├── NewJob.cs
|
||||||
|
│ └── SslDownloadJob.cs
|
||||||
|
├── Models/ # Data models
|
||||||
|
├── SslProviders/ # SSL certificate providers
|
||||||
|
│ ├── Ali/ # Alibaba Cloud SSL provider
|
||||||
|
│ └── Tencent/ # Tencent Cloud SSL provider
|
||||||
|
└── Start/ # Application entry point
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License - see the [LICENSE.txt](LICENSE.txt) file for details.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues and questions, please open an issue on the project repository.
|
||||||
Reference in New Issue
Block a user