moros/dsk/bin/ntp

22 lines
554 B
Common Lisp

#!lisp
(load "/lib/lisp/core.lsp")
(var config "/ini/ntp")
(var default-server "time.cloudflare.com")
(var server (if (not (nil? args))
(first args)
(if (file/exists? config) (str/trim (read config)) default-server)))
(var addr (or (host server) server))
(var port 123)
(var socket (socket/connect "udp" addr port))
(var req (map (fun (i) (if (eq? i 0) 0x23 0)) (range 0 48)))
(file/write socket req)
(var res (file/read socket 48))
(var buf (slice res 40 4))
(var num (- (bin->num (concat '(0 0 0 0) buf) "int") 2208988800))
(print (date num))