53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
"net/http"
|
||
|
|
||
|
"github.com/Luzifer/ots/pkg/metrics"
|
||
|
"github.com/Luzifer/ots/pkg/storage"
|
||
|
"github.com/sirupsen/logrus"
|
||
|
)
|
||
|
|
||
|
func requestInSubnetList(r *http.Request, subnets []string) bool {
|
||
|
if len(subnets) == 0 {
|
||
|
// No subnets specififed: None allowed (without doing the parsing)
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
remote, _, err := net.SplitHostPort(r.RemoteAddr)
|
||
|
if err != nil {
|
||
|
logrus.WithError(err).Error("parsing remote address")
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
remoteIP := net.ParseIP(remote)
|
||
|
if remoteIP == nil {
|
||
|
logrus.WithError(err).Error("parsing remote address")
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
for _, sn := range subnets {
|
||
|
_, netw, err := net.ParseCIDR(sn)
|
||
|
if err != nil {
|
||
|
logrus.WithError(err).WithField("subnet", sn).Warn("invalid subnet specified")
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
if netw.Contains(remoteIP) {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
func updateStoredSecretsCount(store storage.Storage, collector *metrics.Collector) {
|
||
|
n, err := store.Count()
|
||
|
if err != nil {
|
||
|
logrus.WithError(err).Error("counting stored secrets")
|
||
|
return
|
||
|
}
|
||
|
collector.UpdateSecretsCount(n)
|
||
|
}
|