Fixes from review

This commit is contained in:
Arvid Norlander 2020-08-04 18:51:30 +02:00
parent d2944ba762
commit f958c6296b
No known key found for this signature in database
GPG key ID: E824A8E5D8D29AA0
4 changed files with 15 additions and 14 deletions

View file

@ -27,7 +27,7 @@ from validitysensor import init
from validitysensor.tls import tls from validitysensor.tls import tls
from validitysensor.usb import usb from validitysensor.usb import usb
from validitysensor.sid import sid_from_string 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 from validitysensor.sensor import sensor, RebootException
GLib.threads_init() GLib.threads_init()
@ -49,19 +49,19 @@ class Device(dbus.service.Object):
dbus.service.Object.__init__(self, bus_name, '/io/github/uunicorn/Fprint/Device') dbus.service.Object.__init__(self, bus_name, '/io/github/uunicorn/Fprint/Device')
self.config = config self.config = config
def user2identity(self, user: str, uid: int): def user2identity(self, user: str) -> SidIdentity:
"""Compute UID to SID mapping""" """Compute UID to SID mapping"""
pw = pwd.getpwnam(user)
uid = pw.pw_uid
if user in self.config['user_to_sid']: if user in self.config['user_to_sid']:
sidstr = self.config['user_to_sid'][user] sidstr = self.config['user_to_sid'][user]
else: else:
sidstr = 'S-1-5-21-111111111-1111111111-1111111111-%d' % uid sidstr = 'S-1-5-21-111111111-1111111111-1111111111-%d' % uid
return sid_from_string(sidstr) return sid_from_string(sidstr)
def _get_user_sid(self, user: str): def user2record(self, user: str) -> User:
"""Resolve user name to UID and SID""" """Resolve user name to database object"""
pw = pwd.getpwnam(user) return db.lookup_user(self.user2identity(user))
uid = pw.pw_uid
return db.lookup_user(self.user2identity(user, uid))
@dbus.service.method(dbus_interface=INTERFACE_NAME, @dbus.service.method(dbus_interface=INTERFACE_NAME,
in_signature="s", in_signature="s",
@ -70,7 +70,7 @@ class Device(dbus.service.Object):
try: try:
logging.debug('In ListEnrolledFingers %s' % user) logging.debug('In ListEnrolledFingers %s' % user)
usr = self._get_user_sid(user) usr = self.user2record(user)
if usr is None: if usr is None:
return [] return []
@ -86,7 +86,7 @@ class Device(dbus.service.Object):
out_signature='') out_signature='')
def DeleteEnrolledFingers(self, user): def DeleteEnrolledFingers(self, user):
logging.debug('In DeleteEnrolledFingers %s' % user) logging.debug('In DeleteEnrolledFingers %s' % user)
usr = self._get_user_sid(user) usr = self.user2record(user)
if usr is None: if usr is None:
return return
@ -99,7 +99,7 @@ class Device(dbus.service.Object):
def VerifyStart(self, user, finger): def VerifyStart(self, user, finger):
logging.debug('In VerifyStart for %s, %s' % (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: if usr is None:
raise NoEnrolledPrints() raise NoEnrolledPrints()
@ -141,7 +141,7 @@ class Device(dbus.service.Object):
def EnrollStart(self, user, finger_name): def EnrollStart(self, user, finger_name):
logging.debug('In EnrollStart %s for %s' % (finger_name, user)) 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): def update_cb(rsp, e):
if e is not None: if e is not None:

1
debian/rules vendored
View file

@ -12,4 +12,3 @@ override_dh_installsystemd:
override_dh_auto_install: override_dh_auto_install:
python3 ./setup.py install --root=$(CURDIR)/debian/tmp --prefix=/usr --install-layout=deb 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

View file

@ -6,7 +6,7 @@ import logging
from usb import core as usb_core from usb import core as usb_core
from .tls import tls from .tls import tls
from .usb import usb, CancelledException 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 .flash import write_enable, call_cleanups, read_flash, erase_flash, write_flash_all, read_flash_all
from time import sleep from time import sleep
from struct import pack, unpack from struct import pack, unpack
@ -740,7 +740,9 @@ class Sensor():
return tinfo 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): def do_create_finger(final_template, tid):
tinfo = self.make_finger_data(subtype, final_template, tid) tinfo = self.make_finger_data(subtype, final_template, tid)