Pull request: dhcpd: imp static lease validation
Closes #2838. Updates #2834. Squashed commit of the following: commit 608dce28cf6bcbaf5a7f0bf499889ec25777e121 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Thu Mar 18 16:49:20 2021 +0300 dhcpd: fix windows; imp code commit 5e56eebf6ab85ca5fd0a0278c312674d921a3077 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Wed Mar 17 18:47:54 2021 +0300 dhcpd: imp static lease validation
This commit is contained in:
@@ -36,16 +36,23 @@ type Lease struct {
|
||||
Expiry time.Time `json:"expires"`
|
||||
}
|
||||
|
||||
// IsStatic returns true if the lease is static.
|
||||
//
|
||||
// TODO(a.garipov): Just make it a boolean field.
|
||||
func (l *Lease) IsStatic() (ok bool) {
|
||||
return l != nil && l.Expiry.Unix() == leaseExpireStatic
|
||||
}
|
||||
|
||||
// MarshalJSON implements the json.Marshaler interface for *Lease.
|
||||
func (l *Lease) MarshalJSON() ([]byte, error) {
|
||||
var expiryStr string
|
||||
if expiry := l.Expiry; expiry.Unix() != leaseExpireStatic {
|
||||
if !l.IsStatic() {
|
||||
// The front-end is waiting for RFC 3999 format of the time
|
||||
// value. It also shouldn't got an Expiry field for static
|
||||
// leases.
|
||||
//
|
||||
// See https://github.com/AdguardTeam/AdGuardHome/issues/2692.
|
||||
expiryStr = expiry.Format(time.RFC3339)
|
||||
expiryStr = l.Expiry.Format(time.RFC3339)
|
||||
}
|
||||
|
||||
type lease Lease
|
||||
@@ -203,6 +210,7 @@ func Create(conf ServerConfig) *Server {
|
||||
func (s *Server) onNotify(flags uint32) {
|
||||
if flags == LeaseChangedDBStore {
|
||||
s.dbStore()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -218,6 +226,7 @@ func (s *Server) notify(flags int) {
|
||||
if len(s.onLeaseChanged) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
for _, f := range s.onLeaseChanged {
|
||||
f(flags)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user