From f6e149a90c3e362c56aa74a8817860a794b084c9 Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Thu, 28 Dec 2006 22:55:39 +0000 Subject: [PATCH] adm -> conf --- tools/pusb_adm | 174 ------------------------------------------------- 1 file changed, 174 deletions(-) delete mode 100755 tools/pusb_adm diff --git a/tools/pusb_adm b/tools/pusb_adm deleted file mode 100755 index da3889a..0000000 --- a/tools/pusb_adm +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env python2.4 -# -# Copyright (c) 2003-2006 Andrea Luzzardi -# -# This file is part of the pam_usb project. pam_usb is free software; -# you can redistribute it and/or modify it under the terms of the GNU General -# Public License version 2, as published by the Free Software Foundation. -# -# pam_usb is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 59 Temple -# Place, Suite 330, Boston, MA 02111-1307 USA - - -import dbus -import sys -import os -from xml.dom import minidom - -class Device: - def __init__(self, udi): - self.__udi = udi - self.__findStorageDevice() - deviceObj = bus.get_object('org.freedesktop.Hal', - udi) - deviceProperties = deviceObj.GetAllProperties( - dbus_interface = 'org.freedesktop.Hal.Device') - self.vendor = deviceProperties['usb_device.vendor'] - self.product = deviceProperties['info.product'] - self.serialNumber = deviceProperties['usb_device.serial'] - - def __findStorageDevice(self): - for child in halManager.FindDeviceByCapability('storage'): - obj = bus.get_object('org.freedesktop.Hal', - child) - properties = obj.GetAllProperties( - dbus_interface = 'org.freedesktop.Hal.Device') - if properties['storage.physical_device'] == self.__udi + '_if0': - self.__storageUdi = child - return - raise Exception, '%s is not a storage device.' % self.__udi - - def __repr__(self): - return "%s %s (%s)" % (self.vendor, self.product, self.serialNumber) - - def volumes(self): - vols = [] - for volume in halManager.FindDeviceByCapability('volume'): - deviceObj = bus.get_object('org.freedesktop.Hal', - volume) - deviceProperties = deviceObj.GetAllProperties( - dbus_interface = 'org.freedesktop.Hal.Device') - if deviceProperties['block.storage_device'] != self.__storageUdi: - continue - vols.append({'uuid' : deviceProperties['volume.uuid'], - 'device' : deviceProperties['block.device']}) - return vols - -def listOptions(question, options, force = False): - if force == False and len(options) == 1: - return 0 - while True: - try: - print question - for i in range(len(options)): - print "%d) %s" % (i, options[i]) - print - sys.stdout.write('[%s-%s]: ' % (0, len(options) - 1)) - optionId = int(sys.stdin.readline()) - print - if optionId not in range(len(options)): - raise Exception - return optionId - except KeyboardInterrupt: sys.exit() - except Exception: pass - else: break - -def addDevice(options): - devices = [] - - for udi in halManager.FindDeviceStringMatch('info.bus', 'usb_device'): - try: - devices.append(Device(udi)) - except Exception, ex: - pass - - if len(devices) == 0: - print 'No devices detected.' - sys.exit() - - device = devices[listOptions("Please select the device you wish to add.", - devices, force = options['force'])] - volumes = device.volumes() - volume = volumes[listOptions("Which volume would you like to use for " \ - "storing data ?", - ["%s (UUID: %s)" % (volume['device'], - volume['uuid']) - for volume in volumes], - force = options['force'])] - - print 'Name\t\t: %s' % options['deviceName'] - print 'Vendor\t\t: %s' % device.vendor - print 'Model\t\t: %s' % device.product - print 'Serial\t\t: %s' % device.serialNumber - print 'Volume UUID\t: %s (%s)' % (volume['uuid'], volume['device']) - print - print 'Save device to %s ?' % options['configFile'] - - sys.stdout.write('[y/n] ') - if sys.stdin.readline().strip() != 'y': - sys.exit(1) - - doc = minidom.parse(options['configFile']) - devs = doc.getElementsByTagName('devices') - dev = doc.createElement('device') - dev.attributes['id'] = options['deviceName'] - devs[0].appendChild(dev) - - for name, value in (('vendor', device.vendor), - ('model', device.product), - ('serial', device.serialNumber), - ('volume_uuid', volume['uuid'])): - e = doc.createElement(name) - t = doc.createTextNode(value) - e.appendChild(t) - dev.appendChild(e) - - f = open(options['configFile'], 'w') - f.write(doc.toxml()) - f.close() - print 'Done.' - -def usage(): - print 'Usage: %s [--config file] --add-device [--no-autodetect]' % os.path.basename(__file__) - sys.exit(1) - -import getopt - -try: - opts, args = getopt.getopt(sys.argv[1:], "ha:nc:", - ["help", "add-device=", "no-autodetect", - "config="]) -except getopt.GetoptError: - usage() - -if len(args) != 0: - usage() - -options = { 'force' : False, 'deviceName' : None, - 'configFile' : '/etc/pusb/pusb.conf' } - -for o, a in opts: - if o in ("-h", "--help"): - usage() - if o in ("-a", "--add-device"): - options['deviceName'] = a - if o in ("-n", "--no-autodetect"): - options['force'] = True - if o in ("-c", "--config"): - options['configFile'] = a - -if options['deviceName'] is None: - usage() - -bus = dbus.SystemBus() -halService = bus.get_object('org.freedesktop.Hal', - '/org/freedesktop/Hal/Manager') -halManager = dbus.Interface(halService, 'org.freedesktop.Hal.Manager') - -addDevice(options)