ctucx.git: dnsmasq-lease-overview

web-overview for dhcp-leases from dnsmasq

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 

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)