fix: pruning wifi clients not seen in the last 5 minutes

This commit is contained in:
evilsocket 2018-07-31 17:20:47 +02:00
parent 81fb3fe1a6
commit db30cfdd6a
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
2 changed files with 24 additions and 4 deletions

View file

@ -29,11 +29,21 @@ func (w *WiFiModule) stationPruner() {
log.Debug("WiFi stations pruner started.") log.Debug("WiFi stations pruner started.")
for w.Running() { for w.Running() {
for _, s := range w.Session.WiFi.List() { // loop every AP
sinceLastSeen := time.Since(s.LastSeen) for _, ap := range w.Session.WiFi.List() {
sinceLastSeen := time.Since(ap.LastSeen)
if sinceLastSeen > maxStationTTL { if sinceLastSeen > maxStationTTL {
log.Debug("Station %s not seen in %s, removing.", s.BSSID(), sinceLastSeen) log.Debug("Station %s not seen in %s, removing.", ap.BSSID(), sinceLastSeen)
w.Session.WiFi.Remove(s.BSSID()) w.Session.WiFi.Remove(ap.BSSID())
continue
}
// loop every AP client
for _, c := range ap.Clients() {
sinceLastSeen := time.Since(c.LastSeen)
if sinceLastSeen > maxStationTTL {
log.Debug("Client %s of station %s not seen in %s, removing.", c.String(), ap.BSSID(), sinceLastSeen)
ap.RemoveClient(c.BSSID())
}
} }
} }
time.Sleep(1 * time.Second) time.Sleep(1 * time.Second)

View file

@ -49,6 +49,16 @@ func (ap *AccessPoint) Get(bssid string) (*Station, bool) {
return nil, false return nil, false
} }
func (ap *AccessPoint) RemoveClient(mac string) {
ap.Lock()
defer ap.Unlock()
bssid := NormalizeMac(mac)
if _, found := ap.clients[bssid]; found {
delete(ap.clients, bssid)
}
}
func (ap *AccessPoint) AddClient(bssid string, frequency int, rssi int8) *Station { func (ap *AccessPoint) AddClient(bssid string, frequency int, rssi int8) *Station {
ap.Lock() ap.Lock()
defer ap.Unlock() defer ap.Unlock()