Rename project to ddns-service
This commit is contained in:
76
README.md
76
README.md
@@ -1,4 +1,4 @@
|
||||
# DDNS Daemon
|
||||
# DDNS Service
|
||||
|
||||
Dynamic DNS update service with CLI administration. Accepts HTTP(S) requests to update DNS A/AAAA records using the dns-manager library.
|
||||
|
||||
@@ -20,9 +20,9 @@ Dynamic DNS update service with CLI administration. Accepts HTTP(S) requests to
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
ddns-daemon/
|
||||
├── ddns-daemon # Main executable
|
||||
├── ddns_daemon/ # Python package
|
||||
ddns-service/
|
||||
├── ddns-service # Main executable
|
||||
├── ddns_service/ # Python package
|
||||
│ ├── __init__.py # Version info
|
||||
│ ├── cleanup.py # TTL expiry cleanup
|
||||
│ ├── cli.py # CLI commands
|
||||
@@ -35,7 +35,7 @@ ddns-daemon/
|
||||
│ ├── server.py # HTTP server
|
||||
│ └── validation.py # Hostname validation
|
||||
├── config.example.toml
|
||||
├── ddns-daemon.service
|
||||
├── ddns-service.service
|
||||
├── requirements.txt
|
||||
└── README.md
|
||||
```
|
||||
@@ -56,7 +56,7 @@ pip install -r requirements.txt
|
||||
|
||||
## Configuration
|
||||
|
||||
Copy `config.example.toml` to `/etc/ddns-daemon/config.toml` or `./config.toml`:
|
||||
Copy `config.example.toml` to `/etc/ddns-service/config.toml` or `./config.toml`:
|
||||
|
||||
```toml
|
||||
[daemon]
|
||||
@@ -66,19 +66,19 @@ Copy `config.example.toml` to `/etc/ddns-daemon/config.toml` or `./config.toml`:
|
||||
# log_target = "stdout" # default: "stdout", or "syslog", "file"
|
||||
# syslog_socket = "/dev/log" # default: "/dev/log"
|
||||
# syslog_facility = "daemon" # default: "daemon"
|
||||
# log_file = "/var/log/ddns-daemon.log" # default, used if log_target = "file"
|
||||
# log_file = "/var/log/ddns-service.log" # default, used if log_target = "file"
|
||||
# log_file_size = 52428800 # default: 52428800 (50 MB in bytes)
|
||||
# log_versions = 5 # default: 5 backup files
|
||||
# log_requests = false # default: false
|
||||
# ssl = false # default: false
|
||||
ssl_cert_file = "/etc/ddns-daemon/cert.pem" # required if ssl = true
|
||||
ssl_key_file = "/etc/ddns-daemon/key.pem" # required if ssl = true
|
||||
ssl_cert_file = "/etc/ddns-service/cert.pem" # required if ssl = true
|
||||
ssl_key_file = "/etc/ddns-service/key.pem" # required if ssl = true
|
||||
# proxy_header = "" # default: "" (disabled), e.g. "X-Forwarded-For"
|
||||
# trusted_proxies = [] # default: [], e.g. ["127.0.0.1", "10.0.0.0/8"]
|
||||
|
||||
[database]
|
||||
# backend = "sqlite" # default: "sqlite", or "mariadb"
|
||||
path = "/var/lib/ddns-daemon/ddns.db" # required for sqlite
|
||||
path = "/var/lib/ddns-service/ddns.db" # required for sqlite
|
||||
|
||||
[dns_service]
|
||||
# manager_config_file = "/etc/dns-manager/config.yml" # default
|
||||
@@ -142,64 +142,64 @@ password = ["password"]
|
||||
### Initialize Database
|
||||
|
||||
```bash
|
||||
./ddns-daemon --init-db
|
||||
./ddns-service --init-db
|
||||
```
|
||||
|
||||
### User Management
|
||||
|
||||
```bash
|
||||
# List users
|
||||
./ddns-daemon user list
|
||||
./ddns-service user list
|
||||
|
||||
# Add user (prompts for password)
|
||||
./ddns-daemon user add myuser user@example.com
|
||||
./ddns-service user add myuser user@example.com
|
||||
|
||||
# Delete user (fails if hostnames exist)
|
||||
./ddns-daemon user delete myuser
|
||||
./ddns-service user delete myuser
|
||||
|
||||
# Change password
|
||||
./ddns-daemon user passwd myuser
|
||||
./ddns-service user passwd myuser
|
||||
|
||||
# Update email
|
||||
./ddns-daemon user email myuser new@example.com
|
||||
./ddns-service user email myuser new@example.com
|
||||
```
|
||||
|
||||
### Hostname Management
|
||||
|
||||
```bash
|
||||
# List all hostnames
|
||||
./ddns-daemon hostname list
|
||||
./ddns-service hostname list
|
||||
|
||||
# List hostnames for specific user
|
||||
./ddns-daemon hostname list --user myuser
|
||||
./ddns-service hostname list --user myuser
|
||||
|
||||
# Add hostname
|
||||
./ddns-daemon hostname add myuser mypc.dyn.example.com dyn.example.com
|
||||
./ddns-service hostname add myuser mypc.dyn.example.com dyn.example.com
|
||||
|
||||
# Add hostname with custom TTLs
|
||||
./ddns-daemon hostname add myuser mypc.dyn.example.com dyn.example.com \
|
||||
./ddns-service hostname add myuser mypc.dyn.example.com dyn.example.com \
|
||||
--dns-ttl 60 --expiry-ttl 7200
|
||||
|
||||
# Modify hostname TTLs
|
||||
./ddns-daemon hostname modify mypc.dyn.example.com --dns-ttl 120
|
||||
./ddns-service hostname modify mypc.dyn.example.com --dns-ttl 120
|
||||
|
||||
# Delete hostname
|
||||
./ddns-daemon hostname delete mypc.dyn.example.com
|
||||
./ddns-service hostname delete mypc.dyn.example.com
|
||||
```
|
||||
|
||||
### Manual Cleanup
|
||||
|
||||
```bash
|
||||
./ddns-daemon cleanup
|
||||
./ddns-service cleanup
|
||||
```
|
||||
|
||||
### Run Daemon
|
||||
|
||||
```bash
|
||||
./ddns-daemon --daemon
|
||||
./ddns-service --daemon
|
||||
|
||||
# With debug logging
|
||||
./ddns-daemon --daemon --debug
|
||||
./ddns-service --daemon --debug
|
||||
```
|
||||
|
||||
### Debug Mode
|
||||
@@ -207,8 +207,8 @@ password = ["password"]
|
||||
Use `--debug` to enable debug logging for any command:
|
||||
|
||||
```bash
|
||||
./ddns-daemon --debug user list
|
||||
./ddns-daemon --debug cleanup
|
||||
./ddns-service --debug user list
|
||||
./ddns-service --debug cleanup
|
||||
```
|
||||
|
||||
## HTTP API
|
||||
@@ -276,30 +276,30 @@ useradd -r -s /sbin/nologin ddns
|
||||
|
||||
2. Create directories:
|
||||
```bash
|
||||
mkdir -p /etc/ddns-daemon /var/lib/ddns-daemon
|
||||
chown ddns:ddns /var/lib/ddns-daemon
|
||||
mkdir -p /etc/ddns-service /var/lib/ddns-service
|
||||
chown ddns:ddns /var/lib/ddns-service
|
||||
```
|
||||
|
||||
3. Install files:
|
||||
```bash
|
||||
cp -r ddns_daemon /opt/ddns-daemon/
|
||||
cp ddns-daemon /opt/ddns-daemon/
|
||||
cp config.example.toml /etc/ddns-daemon/config.toml
|
||||
cp ddns-daemon.service /etc/systemd/system/
|
||||
cp -r ddns_service /opt/ddns-service/
|
||||
cp ddns-service /opt/ddns-service/
|
||||
cp config.example.toml /etc/ddns-service/config.toml
|
||||
cp ddns-service.service /etc/systemd/system/
|
||||
```
|
||||
|
||||
4. Configure and start:
|
||||
```bash
|
||||
# Edit config
|
||||
vi /etc/ddns-daemon/config.toml
|
||||
vi /etc/ddns-service/config.toml
|
||||
|
||||
# Initialize database
|
||||
/opt/ddns-daemon/ddns_daemon.py --init-db
|
||||
/opt/ddns-service/ddns-service --init-db
|
||||
|
||||
# Enable and start
|
||||
systemctl daemon-reload
|
||||
systemctl enable ddns-daemon
|
||||
systemctl start ddns-daemon
|
||||
systemctl enable ddns-service
|
||||
systemctl start ddns-service
|
||||
```
|
||||
|
||||
## Security Considerations
|
||||
@@ -352,7 +352,7 @@ Each HTTP request is assigned a random 8-character transaction ID for log correl
|
||||
When using syslog, timestamps are omitted (syslog provides them):
|
||||
|
||||
```
|
||||
ddns-daemon[12345]: [INFO] [a1b2c3d4] Updated: hostname=mypc.dyn.example.com ipv4=1.2.3.4 ipv6=N/A
|
||||
ddns-service[12345]: [INFO] [a1b2c3d4] Updated: hostname=mypc.dyn.example.com ipv4=1.2.3.4 ipv6=N/A
|
||||
```
|
||||
|
||||
### CLI Logging
|
||||
|
||||
Reference in New Issue
Block a user