dhcp4d: move http.HandleFunc into logic
This commit is contained in:
parent
41985d6378
commit
3707ba290c
@ -198,6 +198,57 @@ func loadLeases(h *dhcp4d.Handler, fn string) error {
|
|||||||
h.SetLeases(leases)
|
h.SetLeases(leases)
|
||||||
updateNonExpired(leases)
|
updateNonExpired(leases)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var httpListeners = multilisten.NewPool()
|
||||||
|
|
||||||
|
func updateListeners() error {
|
||||||
|
hosts, err := gokrazy.PrivateInterfaceAddrs()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if net1, err := multilisten.IPv6Net1("/perm"); err == nil {
|
||||||
|
hosts = append(hosts, net1)
|
||||||
|
}
|
||||||
|
|
||||||
|
httpListeners.ListenAndServe(hosts, func(host string) multilisten.Listener {
|
||||||
|
return &http.Server{Addr: net.JoinHostPort(host, "8067")}
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func logic() error {
|
||||||
|
http.Handle("/metrics", promhttp.Handler())
|
||||||
|
if err := updateListeners(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
ch := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(ch, syscall.SIGUSR1)
|
||||||
|
for range ch {
|
||||||
|
if err := updateListeners(); err != nil {
|
||||||
|
log.Printf("updateListeners: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if err := os.MkdirAll("/perm/dhcp4d", 0755); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
errs := make(chan error)
|
||||||
|
ifc, err := net.InterfaceByName(*iface)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
handler, err := dhcp4d.NewHandler("/perm", ifc, *iface, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := loadLeases(handler, "/perm/dhcp4d/leases.json"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
host, _, err := net.SplitHostPort(r.RemoteAddr)
|
host, _, err := net.SplitHostPort(r.RemoteAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -259,56 +310,6 @@ func loadLeases(h *dhcp4d.Handler, fn string) error {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var httpListeners = multilisten.NewPool()
|
|
||||||
|
|
||||||
func updateListeners() error {
|
|
||||||
hosts, err := gokrazy.PrivateInterfaceAddrs()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if net1, err := multilisten.IPv6Net1("/perm"); err == nil {
|
|
||||||
hosts = append(hosts, net1)
|
|
||||||
}
|
|
||||||
|
|
||||||
httpListeners.ListenAndServe(hosts, func(host string) multilisten.Listener {
|
|
||||||
return &http.Server{Addr: net.JoinHostPort(host, "8067")}
|
|
||||||
})
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func logic() error {
|
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
|
||||||
if err := updateListeners(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
ch := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(ch, syscall.SIGUSR1)
|
|
||||||
for range ch {
|
|
||||||
if err := updateListeners(); err != nil {
|
|
||||||
log.Printf("updateListeners: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
if err := os.MkdirAll("/perm/dhcp4d", 0755); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
errs := make(chan error)
|
|
||||||
ifc, err := net.InterfaceByName(*iface)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
handler, err := dhcp4d.NewHandler("/perm", ifc, *iface, nil)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := loadLeases(handler, "/perm/dhcp4d/leases.json"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
handler.Leases = func(newLeases []*dhcp4d.Lease, latest *dhcp4d.Lease) {
|
handler.Leases = func(newLeases []*dhcp4d.Lease, latest *dhcp4d.Lease) {
|
||||||
leasesMu.Lock()
|
leasesMu.Lock()
|
||||||
defer leasesMu.Unlock()
|
defer leasesMu.Unlock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user