Feat: location data at /v1/publicip/ip

This commit is contained in:
Quentin McGaw (desktop)
2021-09-05 22:54:10 +00:00
parent 82ac568ee3
commit f9cb71027c
9 changed files with 62 additions and 42 deletions

View File

@@ -1,29 +1,26 @@
package state
import (
"net"
"github.com/qdm12/gluetun/internal/publicip/models"
)
type PublicIPGetSetter interface {
PublicIPGetter
SetPublicIP(publicIP net.IP)
type DataGetSetter interface {
DataGetter
SetData(data models.IPInfoData)
}
type PublicIPGetter interface {
GetPublicIP() (publicIP net.IP)
type DataGetter interface {
GetData() (data models.IPInfoData)
}
func (s *State) GetPublicIP() (publicIP net.IP) {
s.publicIPMu.RLock()
defer s.publicIPMu.RUnlock()
publicIP = make(net.IP, len(s.publicIP))
copy(publicIP, s.publicIP)
return publicIP
func (s *State) GetData() (data models.IPInfoData) {
s.ipDataMu.RLock()
defer s.ipDataMu.RUnlock()
return s.ipData.Copy()
}
func (s *State) SetPublicIP(publicIP net.IP) {
s.settingsMu.Lock()
defer s.settingsMu.Unlock()
s.publicIP = make(net.IP, len(publicIP))
copy(s.publicIP, publicIP)
func (s *State) SetData(data models.IPInfoData) {
s.ipDataMu.Lock()
defer s.ipDataMu.Unlock()
s.ipData = data.Copy()
}