#! 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))
