From: simon75j Date: Mon, 14 Jun 2010 19:39:37 +0000 (+0000) Subject: Add contrib/ sub-directory and contrib/programming.sh from David Dindorp. X-Git-Tag: yubikey-personalisation_1.3.5-1~5^2~20 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e76110136f37ca74b6b26932243c9f9ef41cedc;p=yubikey-personalization.old Add contrib/ sub-directory and contrib/programming.sh from David Dindorp. git-svn-id: https://yubikey-personalization.googlecode.com/svn/trunk@251 b62f149e-849f-11dd-9899-c7ba65f7c4c7 --- diff --git a/Makefile.am b/Makefile.am index a431e01..bc7371e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -79,6 +79,9 @@ TESTS = $(ctests) # Dist docs from wiki. EXTRA_DIST = doc/Compatibility.wiki doc/MakeRelease.wiki doc/ReadMe.wiki doc/UsbhidIssue.wiki +# Dist contrib stuff. +EXTRA_DIST += contrib/README contrib/programming.sh + # Release PROJECT = yubikey-personalization diff --git a/NEWS b/NEWS index bdec2ef..9362685 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,8 @@ Yubikey-personalize NEWS -- History of user-visible changes. -*- outline -*- * Version 1.3.4 (unreleased) - +** Add contrib/ sub-directory and contrib/programming.sh from David Dindorp. +See contrib/README for more information. * Version 1.3.3 (released 2010-05-20) diff --git a/contrib/README b/contrib/README new file mode 100644 index 0000000..5fe9b88 --- /dev/null +++ b/contrib/README @@ -0,0 +1,7 @@ +This directory holds some add-ons to the core package for convenience. + +programming.sh + + A simple shell script to automate HID unbinding when + programming many Yubikeys. Contributed by "David Dindorp" + . diff --git a/contrib/programming.sh b/contrib/programming.sh new file mode 100644 index 0000000..70f49f4 --- /dev/null +++ b/contrib/programming.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Copyright (c) 2010 David Dindorp +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +for arg in $*; do + if [ "$arg" == "--help" ]; then + echo "Usage:" + echo " Insert Yubikeys while this program is running to enable programming mode." + return 1 2>/dev/null + exit 1 + fi +done + +if [ `id -u` -ne 0 ]; then + echo "ERROR: Use 'sudo' to run this program. It's a Unix thing.">&2 + return 1 2>/dev/null + exit 1 +fi + +grep -q Yubico /sys/bus/usb/devices/*/product; if [ $? -eq 0 ]; then + echo "Note: Replug existing keys to switch them from keyboard to programming mode." +fi + +echo "Waiting for keys..." +tail -n0 -f /var/log/messages | grep --line-buffered Yubikey | while read line; do + # Should probably use a simpler tool such as sed or awk, but alas, + # for once Perl has won the least cryptic syntax competition. + devid=`echo $line|perl -nle 'print $1 if /(\d+-\d+:\d+\.\d+)/'` + if [ "$devid" == "" ]; then continue; fi + echo "Key plugged in. Unbinding HID driver from device $devid." + echo $devid > /sys/bus/usb/drivers/usbhid/unbind +done