From 02e144739a39b7f2a3ed165143f83f5de9807805 Mon Sep 17 00:00:00 2001 From: Franklyn Tackitt Date: Wed, 1 Jul 2020 08:16:48 -0700 Subject: [PATCH 1/4] Update Archlinux PKGBUILD to v2.6.0 --- archlinux/howdy/.SRCINFO | 7 +++---- archlinux/howdy/PKGBUILD | 13 ++++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/archlinux/howdy/.SRCINFO b/archlinux/howdy/.SRCINFO index 2240f13..b1a0539 100644 --- a/archlinux/howdy/.SRCINFO +++ b/archlinux/howdy/.SRCINFO @@ -1,6 +1,6 @@ pkgbase = howdy pkgdesc = Windows Hello for Linux - pkgver = 2.5.1 + pkgver = 2.6.0 pkgrel = 1 url = https://github.com/boltgolt/howdy arch = x86_64 @@ -11,7 +11,6 @@ pkgbase = howdy depends = opencv depends = hdf5 depends = pam-python - depends = python2 depends = python3 depends = python-pillow depends = python-dlib @@ -20,11 +19,11 @@ pkgbase = howdy depends = python-click depends = python-numpy backup = usr/lib/security/howdy/config.ini - source = https://github.com/boltgolt/howdy/archive/v2.5.1.tar.gz + source = https://github.com/boltgolt/howdy/archive/v2.6.0.tar.gz source = https://github.com/davisking/dlib-models/raw/master/dlib_face_recognition_resnet_model_v1.dat.bz2 source = https://github.com/davisking/dlib-models/raw/master/mmod_human_face_detector.dat.bz2 source = https://github.com/davisking/dlib-models/raw/master/shape_predictor_5_face_landmarks.dat.bz2 - sha256sums = 596c8d947422e6d419746784f900a4af931a6fc647e1324913c6ce66a146bf82 + sha256sums = 5bac0f32cff1358ee06d2d33a50c3cbbb5f06973747343193ce7d9926c53de23 sha256sums = abb1f61041e434465855ce81c2bd546e830d28bcbed8d27ffbe5bb408b11553a sha256sums = db9e9e40f092c118d5eb3e643935b216838170793559515541c56a2b50d9fc84 sha256sums = 6e787bbebf5c9efdb793f6cd1f023230c4413306605f24f299f12869f95aa472 diff --git a/archlinux/howdy/PKGBUILD b/archlinux/howdy/PKGBUILD index e1d13be..eb4a141 100644 --- a/archlinux/howdy/PKGBUILD +++ b/archlinux/howdy/PKGBUILD @@ -1,9 +1,10 @@ # Maintainer: Frank Tackitt # Maintainer: boltgolt +# Co-Maintainer: Raymo111 # Contributor: Kelley McChesney pkgname=howdy -pkgver=2.5.1 +pkgver=2.6.0 pkgrel=1 pkgdesc="Windows Hello for Linux" arch=('x86_64') @@ -33,12 +34,10 @@ source=( "https://github.com/davisking/dlib-models/raw/master/mmod_human_face_detector.dat.bz2" "https://github.com/davisking/dlib-models/raw/master/shape_predictor_5_face_landmarks.dat.bz2" ) -sha256sums=( - '596c8d947422e6d419746784f900a4af931a6fc647e1324913c6ce66a146bf82' - 'abb1f61041e434465855ce81c2bd546e830d28bcbed8d27ffbe5bb408b11553a' - 'db9e9e40f092c118d5eb3e643935b216838170793559515541c56a2b50d9fc84' - '6e787bbebf5c9efdb793f6cd1f023230c4413306605f24f299f12869f95aa472' -) +sha256sums=('5bac0f32cff1358ee06d2d33a50c3cbbb5f06973747343193ce7d9926c53de23' + 'abb1f61041e434465855ce81c2bd546e830d28bcbed8d27ffbe5bb408b11553a' + 'db9e9e40f092c118d5eb3e643935b216838170793559515541c56a2b50d9fc84' + '6e787bbebf5c9efdb793f6cd1f023230c4413306605f24f299f12869f95aa472') package() { # Installing the proper license files and the rest of howdy From d4623b6031c7dac214d8977c70829019d7ec19e4 Mon Sep 17 00:00:00 2001 From: Peter Onyisi Date: Wed, 29 Jul 2020 16:18:53 -0500 Subject: [PATCH 2/4] Ensure not all syslog messages are EMERG level --- src/pam.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pam.py b/src/pam.py index fda74a9..edb4412 100644 --- a/src/pam.py +++ b/src/pam.py @@ -31,11 +31,14 @@ def doAuth(pamh): if any("closed" in open(f).read() for f in glob.glob("/proc/acpi/button/lid/*/state")): return pamh.PAM_AUTHINFO_UNAVAIL + # Set up syslog + syslog.openlog("[HOWDY]", 0, syslog.LOG_AUTH) + # Alert the user that we are doing face detection if config.getboolean("core", "detection_notice"): pamh.conversation(pamh.Message(pamh.PAM_TEXT_INFO, "Attempting face detection")) - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Attempting facial authentication for user " + pamh.get_user()) + syslog.syslog(syslog.LOG_INFO, "Attempting facial authentication for user " + pamh.get_user()) # Run compare as python3 subprocess to circumvent python version and import issues status = subprocess.call(["/usr/bin/python3", os.path.dirname(os.path.abspath(__file__)) + "/compare.py", pamh.get_user()]) @@ -45,23 +48,23 @@ def doAuth(pamh): if not config.getboolean("core", "suppress_unknown"): pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "No face model known")) - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Failure, no face model known") + syslog.syslog(syslog.LOG_ERROR, "Failure, no face model known") return pamh.PAM_USER_UNKNOWN # Status 11 means we exceded the maximum retry count elif status == 11: pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Face detection timeout reached")) - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Failure, timeout reached") + syslog.syslog(syslog.LOG_WARNING, "Failure, timeout reached") return pamh.PAM_AUTH_ERR # Status 12 means we aborted elif status == 12: - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Failure, general abort") + syslog.syslog(syslog.LOG_ERROR, "Failure, general abort") return pamh.PAM_AUTH_ERR # Status 13 means the image was too dark elif status == 13: - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Failure, image too dark") + syslog.syslog(syslog.LOG_WARNING, "Failure, image too dark") pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Face detection image too dark")) return pamh.PAM_AUTH_ERR # Status 0 is a successful exit @@ -70,12 +73,12 @@ def doAuth(pamh): if not config.getboolean("core", "no_confirmation"): pamh.conversation(pamh.Message(pamh.PAM_TEXT_INFO, "Identified face as " + pamh.get_user())) - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Login approved") + syslog.syslog(syslog.LOG_INFO, "Login approved") return pamh.PAM_SUCCESS # Otherwise, we can't discribe what happend but it wasn't successful pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Unknown error: " + str(status))) - syslog.syslog(syslog.LOG_AUTH, "[HOWDY] Failure, unknown error" + str(status)) + syslog.syslog(syslog.LOG_ERROR, "Failure, unknown error" + str(status)) return pamh.PAM_SYSTEM_ERR From a5df47312d981842f6d4cba9c80e58ef1af87ab4 Mon Sep 17 00:00:00 2001 From: Peter Onyisi Date: Wed, 29 Jul 2020 16:20:43 -0500 Subject: [PATCH 3/4] Replace spaces with tabs --- src/pam.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pam.py b/src/pam.py index edb4412..d24456f 100644 --- a/src/pam.py +++ b/src/pam.py @@ -31,8 +31,8 @@ def doAuth(pamh): if any("closed" in open(f).read() for f in glob.glob("/proc/acpi/button/lid/*/state")): return pamh.PAM_AUTHINFO_UNAVAIL - # Set up syslog - syslog.openlog("[HOWDY]", 0, syslog.LOG_AUTH) + # Set up syslog + syslog.openlog("[HOWDY]", 0, syslog.LOG_AUTH) # Alert the user that we are doing face detection if config.getboolean("core", "detection_notice"): From d6b36795492e634b3cc40e65b79157ed6bdb1053 Mon Sep 17 00:00:00 2001 From: Peter Onyisi Date: Wed, 29 Jul 2020 16:37:30 -0500 Subject: [PATCH 4/4] Fix name typo, reset syslog when done --- src/pam.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pam.py b/src/pam.py index d24456f..f3ef340 100644 --- a/src/pam.py +++ b/src/pam.py @@ -48,23 +48,27 @@ def doAuth(pamh): if not config.getboolean("core", "suppress_unknown"): pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "No face model known")) - syslog.syslog(syslog.LOG_ERROR, "Failure, no face model known") + syslog.syslog(syslog.LOG_ERR, "Failure, no face model known") + syslog.closelog() return pamh.PAM_USER_UNKNOWN # Status 11 means we exceded the maximum retry count elif status == 11: pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Face detection timeout reached")) syslog.syslog(syslog.LOG_WARNING, "Failure, timeout reached") + syslog.closelog() return pamh.PAM_AUTH_ERR # Status 12 means we aborted elif status == 12: - syslog.syslog(syslog.LOG_ERROR, "Failure, general abort") + syslog.syslog(syslog.LOG_ERR, "Failure, general abort") + syslog.closelog() return pamh.PAM_AUTH_ERR # Status 13 means the image was too dark elif status == 13: syslog.syslog(syslog.LOG_WARNING, "Failure, image too dark") + syslog.closelog() pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Face detection image too dark")) return pamh.PAM_AUTH_ERR # Status 0 is a successful exit @@ -74,11 +78,13 @@ def doAuth(pamh): pamh.conversation(pamh.Message(pamh.PAM_TEXT_INFO, "Identified face as " + pamh.get_user())) syslog.syslog(syslog.LOG_INFO, "Login approved") + syslog.closelog() return pamh.PAM_SUCCESS # Otherwise, we can't discribe what happend but it wasn't successful pamh.conversation(pamh.Message(pamh.PAM_ERROR_MSG, "Unknown error: " + str(status))) - syslog.syslog(syslog.LOG_ERROR, "Failure, unknown error" + str(status)) + syslog.syslog(syslog.LOG_ERR, "Failure, unknown error" + str(status)) + syslog.closelog() return pamh.PAM_SYSTEM_ERR