feat: add mode selecting #15
@@ -2,7 +2,7 @@
|
||||
ip_provider:
|
||||
type: plain
|
||||
config:
|
||||
url: https://ifconfig.me
|
||||
url: https://api.ipify.org
|
||||
dns_provider:
|
||||
type: ionos
|
||||
config:
|
||||
@@ -20,3 +20,4 @@ domains:
|
||||
- "@"
|
||||
- www
|
||||
check_interval: 0 0 0/6 * * * *
|
||||
mode: Scheduled
|
||||
|
||||
30
main.go
30
main.go
@@ -2,9 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"realdnydns/pkg/changeDetector"
|
||||
"realdnydns/pkg/config"
|
||||
"realdnydns/pkg/dnsProvider"
|
||||
ionos "realdnydns/pkg/dnsProvider/ionos"
|
||||
@@ -13,8 +11,7 @@ import (
|
||||
"realdnydns/pkg/notificationProvider"
|
||||
notificationProviderConsole "realdnydns/pkg/notificationProvider/console"
|
||||
gotify "realdnydns/pkg/notificationProvider/gotify"
|
||||
|
||||
"github.com/go-co-op/gocron"
|
||||
"realdnydns/pkg/realDynDns"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -71,27 +68,26 @@ func main() {
|
||||
panic(err)
|
||||
}
|
||||
default:
|
||||
// Use default console notification provider
|
||||
notificationProvider = notificationProviderConsole.New()
|
||||
}
|
||||
|
||||
changeDetector := changeDetector.New(externalIpProvider, dnsProvider, notificationProvider, configClient.Domains)
|
||||
rdd := realDynDns.New(externalIpProvider, dnsProvider, notificationProvider, configClient.Domains)
|
||||
|
||||
s := gocron.NewScheduler(time.UTC)
|
||||
s.SingletonMode()
|
||||
job, err := s.CronWithSeconds(configClient.CheckInterval).DoWithJobDetails(func(job gocron.Job) {
|
||||
numberChanged, err := changeDetector.DetectAndApplyChanges()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("Number of changes: %d\n", numberChanged)
|
||||
fmt.Println("Next run:", job.NextRun())
|
||||
})
|
||||
switch configClient.Mode {
|
||||
case config.ScheduledMode:
|
||||
schedule, job, err := rdd.RunWithSchedule(configClient.CheckInterval)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println("Starting scheduler")
|
||||
fmt.Println("Next run:", job.NextRun())
|
||||
s.StartBlocking()
|
||||
schedule.StartBlocking()
|
||||
case config.RunOnceMode:
|
||||
numberOfChanges, err := rdd.RunOnce()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("Number of changes:", numberOfChanges)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user