fix: use valid ip mask in api keys when remote address is ipv6 (#2695)

This commit is contained in:
Colin Adler
2022-06-27 15:31:18 -05:00
committed by GitHub
parent 69f27efead
commit a494489ffa
2 changed files with 4 additions and 2 deletions

View File

@ -172,10 +172,11 @@ func ExtractAPIKey(db database.Store, oauth *OAuth2Configs) func(http.Handler) h
if remoteIP == nil { if remoteIP == nil {
remoteIP = net.IPv4(0, 0, 0, 0) remoteIP = net.IPv4(0, 0, 0, 0)
} }
bitlen := len(remoteIP) * 8
key.IPAddress = pqtype.Inet{ key.IPAddress = pqtype.Inet{
IPNet: net.IPNet{ IPNet: net.IPNet{
IP: remoteIP, IP: remoteIP,
Mask: remoteIP.DefaultMask(), Mask: net.CIDRMask(bitlen, bitlen),
}, },
Valid: true, Valid: true,
} }

View File

@ -815,6 +815,7 @@ func (api *API) createAPIKey(rw http.ResponseWriter, r *http.Request, params dat
if ip == nil { if ip == nil {
ip = net.IPv4(0, 0, 0, 0) ip = net.IPv4(0, 0, 0, 0)
} }
bitlen := len(ip) * 8
key, err := api.Database.InsertAPIKey(r.Context(), database.InsertAPIKeyParams{ key, err := api.Database.InsertAPIKey(r.Context(), database.InsertAPIKeyParams{
ID: keyID, ID: keyID,
UserID: params.UserID, UserID: params.UserID,
@ -822,7 +823,7 @@ func (api *API) createAPIKey(rw http.ResponseWriter, r *http.Request, params dat
IPAddress: pqtype.Inet{ IPAddress: pqtype.Inet{
IPNet: net.IPNet{ IPNet: net.IPNet{
IP: ip, IP: ip,
Mask: ip.DefaultMask(), Mask: net.CIDRMask(bitlen, bitlen),
}, },
Valid: true, Valid: true,
}, },