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