From f958c6296b414c9422b51010106ca6c97778c7b7 Mon Sep 17 00:00:00 2001 From: Arvid Norlander Date: Tue, 4 Aug 2020 18:51:30 +0200 Subject: [PATCH] Fixes from review --- dbus_service/dbus-service | 22 ++++++++++----------- debian/rules | 1 - etc/{ => python-validity}/dbus-service.yaml | 0 validitysensor/sensor.py | 6 ++++-- 4 files changed, 15 insertions(+), 14 deletions(-) rename etc/{ => python-validity}/dbus-service.yaml (100%) diff --git a/dbus_service/dbus-service b/dbus_service/dbus-service index fb4c767..db01002 100755 --- a/dbus_service/dbus-service +++ b/dbus_service/dbus-service @@ -27,7 +27,7 @@ from validitysensor import init from validitysensor.tls import tls from validitysensor.usb import usb from validitysensor.sid import sid_from_string -from validitysensor.db import subtype_to_string, db +from validitysensor.db import subtype_to_string, db, SidIdentity, User from validitysensor.sensor import sensor, RebootException GLib.threads_init() @@ -49,19 +49,19 @@ class Device(dbus.service.Object): dbus.service.Object.__init__(self, bus_name, '/io/github/uunicorn/Fprint/Device') self.config = config - def user2identity(self, user: str, uid: int): + def user2identity(self, user: str) -> SidIdentity: """Compute UID to SID mapping""" + pw = pwd.getpwnam(user) + uid = pw.pw_uid if user in self.config['user_to_sid']: sidstr = self.config['user_to_sid'][user] else: sidstr = 'S-1-5-21-111111111-1111111111-1111111111-%d' % uid return sid_from_string(sidstr) - def _get_user_sid(self, user: str): - """Resolve user name to UID and SID""" - pw = pwd.getpwnam(user) - uid = pw.pw_uid - return db.lookup_user(self.user2identity(user, uid)) + def user2record(self, user: str) -> User: + """Resolve user name to database object""" + return db.lookup_user(self.user2identity(user)) @dbus.service.method(dbus_interface=INTERFACE_NAME, in_signature="s", @@ -70,7 +70,7 @@ class Device(dbus.service.Object): try: logging.debug('In ListEnrolledFingers %s' % user) - usr = self._get_user_sid(user) + usr = self.user2record(user) if usr is None: return [] @@ -86,7 +86,7 @@ class Device(dbus.service.Object): out_signature='') def DeleteEnrolledFingers(self, user): logging.debug('In DeleteEnrolledFingers %s' % user) - usr = self._get_user_sid(user) + usr = self.user2record(user) if usr is None: return @@ -99,7 +99,7 @@ class Device(dbus.service.Object): def VerifyStart(self, user, finger): logging.debug('In VerifyStart for %s, %s' % (user, finger)) - usr = self._get_user_sid(user) + usr = self.user2record(user) if usr is None: raise NoEnrolledPrints() @@ -141,7 +141,7 @@ class Device(dbus.service.Object): def EnrollStart(self, user, finger_name): logging.debug('In EnrollStart %s for %s' % (finger_name, user)) - usr = self._get_user_sid(user) + usr = self.user2identity(user) def update_cb(rsp, e): if e is not None: diff --git a/debian/rules b/debian/rules index afdccd4..b74a3fb 100755 --- a/debian/rules +++ b/debian/rules @@ -12,4 +12,3 @@ override_dh_installsystemd: override_dh_auto_install: python3 ./setup.py install --root=$(CURDIR)/debian/tmp --prefix=/usr --install-layout=deb - install -Dm 644 etc/dbus-service.yaml $(CURDIR)/debian/tmp/etc/python-validity/dbus-service.yaml diff --git a/etc/dbus-service.yaml b/etc/python-validity/dbus-service.yaml similarity index 100% rename from etc/dbus-service.yaml rename to etc/python-validity/dbus-service.yaml diff --git a/validitysensor/sensor.py b/validitysensor/sensor.py index 0fae6d7..88baa36 100644 --- a/validitysensor/sensor.py +++ b/validitysensor/sensor.py @@ -6,7 +6,7 @@ import logging from usb import core as usb_core from .tls import tls from .usb import usb, CancelledException -from .db import db +from .db import db, SidIdentity from .flash import write_enable, call_cleanups, read_flash, erase_flash, write_flash_all, read_flash_all from time import sleep from struct import pack, unpack @@ -740,7 +740,9 @@ class Sensor(): return tinfo - def enroll(self, identity, subtype, update_cb): + # TODO: Better typing information needed. + def enroll(self, identity: SidIdentity, subtype: int, + update_cb: typing.Callable[[typing.Any, typing.Optional[Exception]], None]): def do_create_finger(final_template, tid): tinfo = self.make_finger_data(subtype, final_template, tid)