Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/haimgel/oci-dyndns
Trivial Oracle Cloud DNS updater via HTTP API
https://github.com/haimgel/oci-dyndns
Last synced: about 1 month ago
JSON representation
Trivial Oracle Cloud DNS updater via HTTP API
- Host: GitHub
- URL: https://github.com/haimgel/oci-dyndns
- Owner: haimgel
- License: mit
- Created: 2022-09-24T14:32:10.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T01:39:34.000Z (8 months ago)
- Last Synced: 2024-10-16T06:12:45.544Z (3 months ago)
- Language: Go
- Size: 30.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Trivial Oracle Cloud DNS updater via HTTP API
This is a trivial dynamic DNS updater for Oracle Cloud: the idea is to deploy this to [OKE](https://www.oracle.com/ca-en/cloud/cloud-native/container-engine-kubernetes/)
and have a simple HTTPS API endpoint to register my home IP address as a DNS record in the DNS zone served by Oracle DNS.## Why?
* I want to be able to connect to my home server, and my home IP address changes frequently.
* Existing dynamic DNS services introduce an additional point of failure, I'd rather not add complexity where it's not needed.
* Oracle DNS does not support standard dynamic DNS protocols (RFC 2136, etc.).
* Calling `curl` in DHCP client hook or just as a cronjob is incredibly simple.
* I wanted to write _something_ somewhat useful to get my feet wet with Go.## How?
Either build the executable manually, or use the provided container image. Two command-line parameters are supported:
```text
Usage of ./oci-dyndns:
-config string
Configuration file name (default "config.json")
-listen string
Address and port to listen to (default ":8080")
```The configuration file is expected to contain the following:
```json
{
"zone": "DNS zone to update",
"host": "Host name to update, FQDN",
"username": "HTTP authentication user name",
"password": "HTTP authentication password",
"oci": {
"tenancy" : "OCI user credentials that can update DNS records",
"user" : "",
"region" : "",
"fingerprint" : "",
"privateKey" : ""
}
}
```## API
Only one endpoint is available: `GET /nic/update`. The HTTP basic authentication is expected. Example:
```shell
curl 'https://username:password@my-domain/nic/update'
```