feat: notification provider (#8)
All checks were successful
CD / test (push) Successful in 48s
CD / Build and push (push) Successful in 3m48s

Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
This commit was merged in pull request #8.
This commit is contained in:
2024-08-11 11:52:51 +02:00
committed by t.behrendt
parent b8bdcaa35e
commit 7bb1e9ca08
11 changed files with 304 additions and 31 deletions

26
main.go
View File

@@ -2,13 +2,17 @@ package main
import (
"fmt"
"time"
"realdnydns/pkg/changeDetector"
"realdnydns/pkg/config"
"realdnydns/pkg/dnsProvider"
ionos "realdnydns/pkg/dnsProvider/ionos"
"realdnydns/pkg/externalIpProvider"
plainExternalIpProvider "realdnydns/pkg/externalIpProvider/plain"
"time"
"realdnydns/pkg/notificationProvider"
notificationProviderConsole "realdnydns/pkg/notificationProvider/console"
gotify "realdnydns/pkg/notificationProvider/gotify"
"github.com/go-co-op/gocron"
)
@@ -50,7 +54,25 @@ func main() {
panic(fmt.Errorf("unknown DNS provider: %s", configClient.DNSProvider.Type))
}
changeDetector := changeDetector.New(externalIpProvider, dnsProvider, configClient.Domains)
var notificationProvider notificationProvider.NotificationProvider
switch configClient.NotificationProvider.Type {
case "gotify":
var gotifyConfig gotify.NotificationProviderImplGotifyConfig
err := configClient.NotificationProvider.ProviderConfig.Decode(&gotifyConfig)
if err != nil {
panic(err)
}
notificationProvider, err = gotify.New(gotifyConfig)
if err != nil {
panic(err)
}
default:
// Use default console notification provider
notificationProvider = notificationProviderConsole.New()
}
changeDetector := changeDetector.New(externalIpProvider, dnsProvider, notificationProvider, configClient.Domains)
s := gocron.NewScheduler(time.UTC)
s.SingletonMode()