Skip to content

Commit

Permalink
Merge pull request #87 from hspsh/fix-mikrotik-production-settings
Browse files Browse the repository at this point in the history
whois/worker.py: fix outdated settings
  • Loading branch information
EduKav1813 authored Jan 27, 2025
2 parents 3972f3d + 4312e87 commit cd6f0cf
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 10 deletions.
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

0 comments on commit cd6f0cf

Please sign in to comment.