Files
gertdns/README.md
2022-03-20 02:18:46 +01:00

81 lines
2.3 KiB
Markdown

# gertdns
A DynDNS server meant for gertroot
Running:
```sh
go run main.go
```
Bullding:
```sh
go build
```
## Config
Default `conf.toml`
```toml
[DNS]
Port = 5353 # DNS server port
Host = '0.0.0.0' # DNS server host
Domains = ['example.com.'] # enabled domains, suffix with a .
[HTTP]
Port = 8080 # HTTP server port
Host = '127.0.0.1' # HTTP server host
Socket = '' # HTTP unix socket
SocketFileMode = 420 # File mode for HTTP unix socket in decimal (420 = 0644)
```
## Users
Default `auth.toml`
```toml
[someusername] # user name of the user
Password = '1234' # password of the user
Hashed = false # false if omitted; if false, password will be hashed
Domains = ["subdomain.example.com."] # domains the user can register, suffix with a .
# ..
```
## Flags
### --enable-debug-mode
Will output all registered records on the index page of the HTTP server.
Type: `bool`
Default: `false`
### --config-file
Will define what config file should be used.
Type: `string`
Default: `conf.toml`
### --auth-file
Will define what file should be used to define users that can log in.
Type: `string`
Default: `auth.toml`
### --data-path
Will define where stored data is put (i.e. IP addresses for subdomains). All records will be saved here every second if they have been changed and when the application gets shut down.
Type: `string`
Default: `.`
## Routes
### `/`
If in debug mode, will output all registered records, otherwise prints `"Working"`.
### `/update/{domain}/{type}`
Updates a given record.
#### URL parts
`domain` (`string`): defines the subdomain that is to be modified
`type` (`"v4"` | `"v6"`): specifies whether an IPv4 or IPv6 record is to be changed.
#### query parameters
`ipv4` (`string`) (only if `type` is `"v4"`): specifies the IPv4 address to be applied.
`ipv6` (`string`) (only if `type` is `"v6"`): specifies the IPv6 address to be applied.
`user` (`string`): username as specified in _auth file_.
`password` (`string`): password as specified in _auth file_.
#### examples
/update/**example.example**/**v4**?ipv4=**127.0.0.1**&user=**username**&password=**password**
/update/**example.example**/**v6**?ipv6=**::1**&user=**username**&password=**password**