Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

whois/worker.py: fix outdated settings #87

Merged
merged 9 commits into from
Jan 27, 2025
5 changes: 4 additions & 1 deletion whois/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,10 @@ def now_at_space(self):
recent = self.device_repository.get_recent(
timedelta(**self.app_settings.RECENT_TIME)
)
users = self.helpers.filter_hidden(self.helpers.owners_from_devices(recent))
owners = self.helpers.owners_from_devices(recent)
users = self.helpers.filter_hidden(
[self.user_repository.get_by_id(owner) for owner in owners]
)

data = {
"users": sorted(map(str, self.helpers.filter_anon_names(users))),
Expand Down
4 changes: 2 additions & 2 deletions whois/data/db/mapper/device_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
def device_to_devicetable_mapper(device: Device) -> DeviceTable:
return DeviceTable(
mac_address=device.mac_address,
hostname=device.username,
hostname=device.hostname,
last_seen=device.last_seen,
owner=device.owner,
flags=device.flags,
Expand All @@ -15,7 +15,7 @@ def device_to_devicetable_mapper(device: Device) -> DeviceTable:
def devicetable_to_device_mapper(device: DeviceTable) -> Device:
return Device(
mac_address=device.mac_address,
hostname=device.username,
hostname=device.hostname,
last_seen=device.last_seen,
owner=device.owner,
flags=device.flags,
Expand Down
4 changes: 2 additions & 2 deletions whois/data/repository/device_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def update(self, device: Device) -> None:
.one()
)
device_orm.hostname = device.hostname
device_orm.last_seen = device.last_seen
device_orm.last_seen = device.last_seen.python_value
device_orm.owner = device.owner
device_orm.flags = device.flags
session.commit()
Expand All @@ -42,7 +42,7 @@ def get_by_mac_address(self, mac_address: str) -> Device:
.where(DeviceTable.mac_address == mac_address)
.one()
)
return map(devicetable_to_device_mapper, device_orm)
return next(map(devicetable_to_device_mapper, [device_orm]))

def get_all(self) -> List[Device]:
with Session(self.database.engine) as session:
Expand Down
4 changes: 4 additions & 0 deletions whois/entity/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,7 @@ class Device:
last_seen: IsoDateTimeField
owner: int
flags: BitField

@property
def is_hidden(self) -> bool:
return self.flags.has_flag(DeviceFlags.is_hidden.value)
11 changes: 6 additions & 5 deletions whois/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@

from whois.data.db.database import Database
from whois.data.repository.device_repository import DeviceRepository, Device
from whois.data.type.bitfield import BitField
from whois.mikrotik import fetch_leases
from whois.settings import production
from whois.settings.production import mikrotik_settings

logger = logging.getLogger("mikrotik-worker")
database = Database()
device_repository = DeviceRepository(database)

def update_devices() -> int:
leases = fetch_leases(
production.MIKROTIK_URL, production.MIKROTIK_USER, production.MIKROTIK_PASS
mikrotik_settings.MIKROTIK_URL, mikrotik_settings.MIKROTIK_USER, mikrotik_settings.MIKROTIK_PASS
)

for lease in leases:
device = Device(lease.mac_address, lease.host_name, lease.last_seen)
device = Device(lease.mac_address, lease.host_name, lease.last_seen, lease.client_id, BitField()) #TODO figure out how to pass flags
if device_repository.get_by_mac_address(lease.mac_address):
device_repository.update(device)
else:
Expand All @@ -27,7 +28,7 @@ def update_devices() -> int:

def run_worker():
if not all(
[production.MIKROTIK_URL, production.MIKROTIK_USER, production.MIKROTIK_PASS]
[mikrotik_settings.MIKROTIK_URL, mikrotik_settings.MIKROTIK_USER, mikrotik_settings.MIKROTIK_PASS]
):
raise ValueError("Mikrotik settings not set")

Expand All @@ -39,7 +40,7 @@ def run_worker():
except Exception:
logger.exception("Could not update device information")

time.sleep(production.worker_frequency_s)
time.sleep(mikrotik_settings.WORKER_FREQUENCY_S)


if __name__ == "__main__":
Expand Down
Loading