Added manpage and commented recent additions
This commit is contained in:
parent
e15ef74439
commit
353463eebd
6 changed files with 60 additions and 60 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
# Howdy for Ubuntu [](https://travis-ci.org/Boltgolt/howdy)  [](https://github.com/Boltgolt/howdy/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement)
|
# Howdy for Ubuntu [](https://travis-ci.org/Boltgolt/howdy)  [](https://github.com/Boltgolt/howdy/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement)
|
||||||
|
|
||||||
Windows Hello™ style authentication for Ubuntu. Use your built-in IR emitters and camera in combination with face recognition to prove who you are.
|
Windows Hello™ style authentication for Ubuntu. Use your built-in IR emitters and camera in combination with face recognition to prove who you are.
|
||||||
|
|
||||||
|
|
|
||||||
73
debian/howdy.1
vendored
73
debian/howdy.1
vendored
|
|
@ -1,54 +1,31 @@
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
.TH HOWDY SECTION "April 9, 2018"
|
.TH HOWDY 1 "April 9, 2018" "Howdy help" "User Commands"
|
||||||
.\" Some roff macros, for reference:
|
|
||||||
.\" .nh disable hyphenation
|
|
||||||
.\" .hy enable hyphenation
|
|
||||||
.\" .ad l left justify
|
|
||||||
.\" .ad b justify to both left and right margins
|
|
||||||
.\" .nf disable filling
|
|
||||||
.\" .fi enable filling
|
|
||||||
.\" .br insert line break
|
|
||||||
.\" .sp <n> insert n+1 empty lines
|
|
||||||
.\" for manpage-specific macros, see man(7)
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
howdy \- Windows Hello style authentication for Ubuntu
|
howdy \- Windows Hello style authentication for Ubuntu
|
||||||
.SH SYNOPSIS
|
|
||||||
.B howdy
|
|
||||||
.RI [ options ] " files" ...
|
|
||||||
.br
|
|
||||||
.B bar
|
|
||||||
.RI [ options ] " files" ...
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
This manual page documents briefly the
|
Howdy IR face recognition implements a PAM module to use your face as a authentication method.
|
||||||
.B nwsmtp
|
.SS "Usage:"
|
||||||
and
|
.IP
|
||||||
.B bar
|
howdy <command> [user] [argument]
|
||||||
commands.
|
.SS "Commands:"
|
||||||
|
.TP
|
||||||
|
help
|
||||||
|
Show this help page
|
||||||
|
.TP
|
||||||
|
list
|
||||||
|
List all saved face models for the current user
|
||||||
|
.TP
|
||||||
|
add
|
||||||
|
Add a new face model for the current user
|
||||||
|
.TP
|
||||||
|
remove
|
||||||
|
Remove a specific model
|
||||||
|
.TP
|
||||||
|
clear
|
||||||
|
Remove all face models for the current user
|
||||||
|
.TP
|
||||||
|
test
|
||||||
|
Test the camera and recognition methods
|
||||||
.PP
|
.PP
|
||||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
|
||||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
|
||||||
.\" respectively.
|
|
||||||
\fBnwsmtp\fP is a program that...
|
|
||||||
.SH OPTIONS
|
|
||||||
These programs follow the usual GNU command line syntax, with long
|
|
||||||
options starting with two dashes (`-').
|
|
||||||
A summary of options is included below.
|
|
||||||
For a complete description, see the Info files.
|
|
||||||
.TP
|
|
||||||
.B \-h, \-\-help
|
|
||||||
Show summary of options.
|
|
||||||
.TP
|
|
||||||
.B \-v, \-\-version
|
|
||||||
Show version of program.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR bar (1),
|
|
||||||
.BR baz (1).
|
|
||||||
.br
|
|
||||||
The programs are documented fully by
|
|
||||||
.IR "The Rise and Fall of a Fooish Bar" ,
|
|
||||||
available via the Info system.
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
nwsmtp was written by <upstream author>.
|
Howdy was written by boltgolt. For more information visit https://github.com/Boltgolt/howdy
|
||||||
.PP
|
|
||||||
This manual page was written by Alexei Moisseev <alexmois@ya.ru>,
|
|
||||||
for the Debian project (and may be used by others).
|
|
||||||
|
|
|
||||||
1
debian/howdy.manpages
vendored
Normal file
1
debian/howdy.manpages
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
debian/howdy.1
|
||||||
29
debian/postinst
vendored
29
debian/postinst
vendored
|
|
@ -2,6 +2,13 @@
|
||||||
# Installation script to install howdy
|
# Installation script to install howdy
|
||||||
# Executed after primary apt install
|
# Executed after primary apt install
|
||||||
|
|
||||||
|
def col(id):
|
||||||
|
"""Add color escape sequences"""
|
||||||
|
if id == 1: return "\033[32m"
|
||||||
|
if id == 2: return "\033[33m"
|
||||||
|
if id == 3: return "\033[31m"
|
||||||
|
return "\033[0m"
|
||||||
|
|
||||||
# Import required modules
|
# Import required modules
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
|
|
@ -12,29 +19,34 @@ import signal
|
||||||
import fileinput
|
import fileinput
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
|
# Don't run unless we need to configure the install
|
||||||
|
# Will also happen on upgrade but we will catch that later on
|
||||||
if "configure" not in sys.argv:
|
if "configure" not in sys.argv:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
def log(text):
|
def log(text):
|
||||||
"""Print a nicely formatted line to stdout"""
|
"""Print a nicely formatted line to stdout"""
|
||||||
print("\n>>> \033[32m" + text + "\033[0m\n")
|
print("\n>>> " + col(1) + text + col(0)"\n")
|
||||||
|
|
||||||
def handleStatus(status):
|
def handleStatus(status):
|
||||||
"""Abort if a command fails"""
|
"""Abort if a command fails"""
|
||||||
if (status != 0):
|
if (status != 0):
|
||||||
print("\033[31mError while running last command\033[0m")
|
print(col(3) + "Error while running last command" + col(0))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
# We're not in fresh configuration mode, so exit
|
# We're not in fresh configuration mode (probably an upgrade), so exit
|
||||||
if not os.path.exists("/tmp/howdy_picked_device"):
|
if not os.path.exists("/tmp/howdy_picked_device"):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Open the temporary file containing the device ID
|
||||||
in_file = open("/tmp/howdy_picked_device", "r")
|
in_file = open("/tmp/howdy_picked_device", "r")
|
||||||
# Should be a string
|
# Load it in, it should be a string
|
||||||
picked = in_file.read()
|
picked = in_file.read()
|
||||||
in_file.close()
|
in_file.close()
|
||||||
|
|
||||||
|
# Remove the temporary file
|
||||||
subprocess.call(["rm /tmp/howdy_picked_device"], shell=True)
|
subprocess.call(["rm /tmp/howdy_picked_device"], shell=True)
|
||||||
|
|
||||||
log("Upgrading pip to the latest version")
|
log("Upgrading pip to the latest version")
|
||||||
|
|
@ -44,7 +56,7 @@ handleStatus(subprocess.call(["pip3 install --upgrade pip"], shell=True))
|
||||||
|
|
||||||
log("Cloning dlib")
|
log("Cloning dlib")
|
||||||
|
|
||||||
# Clone the git to /tmp
|
# Clone the dlib git to /tmp, but only the last commit
|
||||||
handleStatus(subprocess.call(["git", "clone", "--depth", "1", "https://github.com/davisking/dlib.git", "/tmp/dlib_clone"]))
|
handleStatus(subprocess.call(["git", "clone", "--depth", "1", "https://github.com/davisking/dlib.git", "/tmp/dlib_clone"]))
|
||||||
|
|
||||||
log("Building dlib")
|
log("Building dlib")
|
||||||
|
|
@ -86,10 +98,7 @@ print("Permissions set")
|
||||||
# Make the CLI executable as howdy
|
# Make the CLI executable as howdy
|
||||||
handleStatus(subprocess.call(["ln -s /lib/security/howdy/cli.py /usr/local/bin/howdy"], shell=True))
|
handleStatus(subprocess.call(["ln -s /lib/security/howdy/cli.py /usr/local/bin/howdy"], shell=True))
|
||||||
handleStatus(subprocess.call(["chmod +x /usr/local/bin/howdy"], shell=True))
|
handleStatus(subprocess.call(["chmod +x /usr/local/bin/howdy"], shell=True))
|
||||||
print("Installing howdy command")
|
print("Howdy command installed")
|
||||||
|
|
||||||
# Install the command autocomplete, don't error on failure
|
|
||||||
# subprocess.call(["sudo cp /lib/security/howdy/autocomplete.sh /etc/bash_completion.d/howdy"], shell=True)
|
|
||||||
|
|
||||||
log("Adding howdy as PAM module")
|
log("Adding howdy as PAM module")
|
||||||
|
|
||||||
|
|
@ -192,4 +201,4 @@ if "HOWDY_NO_PROMPT" not in os.environ:
|
||||||
|
|
||||||
# Let the user know what to do with the link
|
# Let the user know what to do with the link
|
||||||
print("Installation complete.")
|
print("Installation complete.")
|
||||||
print("\033[33mIf you want to help the development, please use the link above to post some camera-related information to github!\033[0m")
|
print(col(2) + "If you want to help the development, please use the link above to post some camera-related information to github!" + col(0))
|
||||||
|
|
|
||||||
6
debian/preinst
vendored
6
debian/preinst
vendored
|
|
@ -3,6 +3,7 @@
|
||||||
# Executed before primary apt install of files
|
# Executed before primary apt install of files
|
||||||
|
|
||||||
def col(id):
|
def col(id):
|
||||||
|
"""Add color escape sequences"""
|
||||||
if id == 1: return "\033[32m"
|
if id == 1: return "\033[32m"
|
||||||
if id == 2: return "\033[33m"
|
if id == 2: return "\033[33m"
|
||||||
if id == 3: return "\033[31m"
|
if id == 3: return "\033[31m"
|
||||||
|
|
@ -15,10 +16,11 @@ import os
|
||||||
import re
|
import re
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
|
# Don't run if we're not trying to install fresh
|
||||||
if "install" not in sys.argv:
|
if "install" not in sys.argv:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# The picked video device id
|
# The default picked video device id
|
||||||
picked = -1
|
picked = -1
|
||||||
|
|
||||||
print(col(1) + "Starting IR camera check...\n" + col(0))
|
print(col(1) + "Starting IR camera check...\n" + col(0))
|
||||||
|
|
@ -27,6 +29,7 @@ print(col(1) + "Starting IR camera check...\n" + col(0))
|
||||||
if "HOWDY_NO_PROMPT" in os.environ:
|
if "HOWDY_NO_PROMPT" in os.environ:
|
||||||
print(col(2) + "AUTOMATED INSTALL, YOU WILL NOT BE ASKED FOR INPUT AND CHECKS WILL BE SKIPPED" + col(0))
|
print(col(2) + "AUTOMATED INSTALL, YOU WILL NOT BE ASKED FOR INPUT AND CHECKS WILL BE SKIPPED" + col(0))
|
||||||
|
|
||||||
|
# Write the default device to disk and exit
|
||||||
with open("/tmp/howdy_picked_device", "w") as out_file:
|
with open("/tmp/howdy_picked_device", "w") as out_file:
|
||||||
out_file.write("0")
|
out_file.write("0")
|
||||||
|
|
||||||
|
|
@ -83,6 +86,7 @@ if picked == -1:
|
||||||
print(col(3) + "No suitable IR camera found, aborting install." + col(0))
|
print(col(3) + "No suitable IR camera found, aborting install." + col(0))
|
||||||
sys.exit(23)
|
sys.exit(23)
|
||||||
|
|
||||||
|
# Write the result to disk so postinst can have a look at it
|
||||||
with open("/tmp/howdy_picked_device", "w") as out_file:
|
with open("/tmp/howdy_picked_device", "w") as out_file:
|
||||||
out_file.write(str(picked))
|
out_file.write(str(picked))
|
||||||
|
|
||||||
|
|
|
||||||
9
debian/prerm
vendored
9
debian/prerm
vendored
|
|
@ -3,6 +3,7 @@
|
||||||
# Completely remove howdy from the system
|
# Completely remove howdy from the system
|
||||||
|
|
||||||
def col(id):
|
def col(id):
|
||||||
|
"""Add color escape sequences"""
|
||||||
if id == 1: return "\033[32m"
|
if id == 1: return "\033[32m"
|
||||||
if id == 2: return "\033[33m"
|
if id == 2: return "\033[33m"
|
||||||
if id == 3: return "\033[31m"
|
if id == 3: return "\033[31m"
|
||||||
|
|
@ -11,6 +12,14 @@ def col(id):
|
||||||
# Import required modules
|
# Import required modules
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
# Only run when we actually want to remove
|
||||||
|
if "remove" not in sys.argv and "purge" not in sys.argv:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Don't try running this if it's already gome
|
||||||
|
if not os.path.exists("/lib/security/howdy/cli"):
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
# Remove files and symlinks
|
# Remove files and symlinks
|
||||||
try:
|
try:
|
||||||
subprocess.call(["rm /usr/local/bin/howdy"], shell=True)
|
subprocess.call(["rm /usr/local/bin/howdy"], shell=True)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue