gokrazy/cmd/ntp/ntp.go

35 lines
575 B
Go

// ntp is a minimal NTP client for gokrazy.
package main
import (
"log"
"math/rand"
"syscall"
"time"
"github.com/beevik/ntp"
)
func set() error {
r, err := ntp.Query("0.gokrazy.pool.ntp.org")
if err != nil {
return err
}
tv := syscall.NsecToTimeval(r.Time.UnixNano())
return syscall.Settimeofday(&tv)
}
func main() {
log.SetFlags(log.LstdFlags | log.Lshortfile)
mustDropPrivileges()
for {
if err := set(); err != nil {
log.Fatalf("setting time failed: %v", err)
}
time.Sleep(1*time.Hour + time.Duration(rand.Int63n(250))*time.Millisecond)
}
}