import std/[strutils, options, times] import types proc parseLeaseFile* (file: string): (string, seq[Lease]) = var mode : Type = v4 leases : seq[Lease] duid : string for line in file.lines: if line == "": continue let fields = line.split(" ") if fields[0] != "duid": if mode != v6: leases.add(Lease( type : v4, expiry : fields[0].parseInt.fromUnix.inZone(local()), macAddress : fields[1], address : fields[2], hostname : if fields[3] != "*": some(fields[3]) else: none(string), clientId : if fields[4] != "*": some(fields[4]) else: none(string) )) else: leases.add(Lease( type : v6, expiry : fields[0].parseInt.fromUnix.inZone(local()), iaid : fields[1], address : fields[2], hostname : if fields[3] != "*": some(fields[3]) else: none(string), clientId : if fields[4] != "*": some(fields[4]) else: none(string) )) else: duid = fields[1] mode = v6 return (duid, leases)