X7ROOT File Manager
Current Path:
/usr/share/system-config-printer/troubleshoot
usr
/
share
/
system-config-printer
/
troubleshoot
/
📁
..
📄
CheckLocalServerPublishing.py
(3.1 KB)
📄
CheckLocalServerPublishing.pyc
(2.75 KB)
📄
CheckLocalServerPublishing.pyo
(2.75 KB)
📄
CheckNetworkServerSanity.py
(7.93 KB)
📄
CheckNetworkServerSanity.pyc
(5.02 KB)
📄
CheckNetworkServerSanity.pyo
(5.02 KB)
📄
CheckPPDSanity.py
(6.33 KB)
📄
CheckPPDSanity.pyc
(5.54 KB)
📄
CheckPPDSanity.pyo
(5.54 KB)
📄
CheckPrinterSanity.py
(5.57 KB)
📄
CheckPrinterSanity.pyc
(3.66 KB)
📄
CheckPrinterSanity.pyo
(3.66 KB)
📄
CheckSELinux.py
(2.77 KB)
📄
CheckSELinux.pyc
(2.44 KB)
📄
CheckSELinux.pyo
(2.44 KB)
📄
CheckUSBPermissions.py
(5.97 KB)
📄
CheckUSBPermissions.pyc
(4.42 KB)
📄
CheckUSBPermissions.pyo
(4.42 KB)
📄
ChooseNetworkPrinter.py
(6.07 KB)
📄
ChooseNetworkPrinter.pyc
(5.85 KB)
📄
ChooseNetworkPrinter.pyo
(5.85 KB)
📄
ChoosePrinter.py
(5.71 KB)
📄
ChoosePrinter.pyc
(5.84 KB)
📄
ChoosePrinter.pyo
(5.84 KB)
📄
DeviceListed.py
(6.49 KB)
📄
DeviceListed.pyc
(6.09 KB)
📄
DeviceListed.pyo
(6.09 KB)
📄
ErrorLogCheckpoint.py
(8.02 KB)
📄
ErrorLogCheckpoint.pyc
(6.84 KB)
📄
ErrorLogCheckpoint.pyo
(6.84 KB)
📄
ErrorLogFetch.py
(4.63 KB)
📄
ErrorLogFetch.pyc
(3.89 KB)
📄
ErrorLogFetch.pyo
(3.89 KB)
📄
ErrorLogParse.py
(1.93 KB)
📄
ErrorLogParse.pyc
(1.67 KB)
📄
ErrorLogParse.pyo
(1.67 KB)
📄
LocalOrRemote.py
(1.46 KB)
📄
LocalOrRemote.pyc
(1.09 KB)
📄
LocalOrRemote.pyo
(1.09 KB)
📄
Locale.py
(4.9 KB)
📄
Locale.pyc
(3.5 KB)
📄
Locale.pyo
(3.5 KB)
📄
NetworkCUPSPrinterShared.py
(2.9 KB)
📄
NetworkCUPSPrinterShared.pyc
(2.41 KB)
📄
NetworkCUPSPrinterShared.pyo
(2.41 KB)
📄
PrintTestPage.py
(20.3 KB)
📄
PrintTestPage.pyc
(16.26 KB)
📄
PrintTestPage.pyo
(16.26 KB)
📄
PrinterStateReasons.py
(4.34 KB)
📄
PrinterStateReasons.pyc
(3.72 KB)
📄
PrinterStateReasons.pyo
(3.72 KB)
📄
QueueNotEnabled.py
(2.83 KB)
📄
QueueNotEnabled.pyc
(2.38 KB)
📄
QueueNotEnabled.pyo
(2.38 KB)
📄
QueueRejectingJobs.py
(2.9 KB)
📄
QueueRejectingJobs.pyc
(2.47 KB)
📄
QueueRejectingJobs.pyo
(2.47 KB)
📄
RemoteAddress.py
(2.41 KB)
📄
RemoteAddress.pyc
(2.06 KB)
📄
RemoteAddress.pyo
(2.06 KB)
📄
SchedulerNotRunning.py
(2.23 KB)
📄
SchedulerNotRunning.pyc
(2.11 KB)
📄
SchedulerNotRunning.pyo
(2.11 KB)
📄
ServerFirewalled.py
(2.13 KB)
📄
ServerFirewalled.pyc
(1.76 KB)
📄
ServerFirewalled.pyo
(1.76 KB)
📄
Shrug.py
(4.37 KB)
📄
Shrug.pyc
(3.66 KB)
📄
Shrug.pyo
(3.66 KB)
📄
VerifyPackages.py
(2.65 KB)
📄
VerifyPackages.pyc
(2.23 KB)
📄
VerifyPackages.pyo
(2.23 KB)
📄
Welcome.py
(2.69 KB)
📄
Welcome.pyc
(2.69 KB)
📄
Welcome.pyo
(2.69 KB)
📄
__init__.py
(11.96 KB)
📄
__init__.pyc
(10.93 KB)
📄
__init__.pyo
(10.93 KB)
📄
base.py
(3.44 KB)
📄
base.pyc
(4.02 KB)
📄
base.pyo
(4.02 KB)
Editing: CheckUSBPermissions.py
#!/usr/bin/python ## Printing troubleshooter ## Copyright (C) 2008, 2009, 2010 Red Hat, Inc. ## Authors: ## Tim Waugh <twaugh@redhat.com> ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## This program 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import glob import os import subprocess from timedops import TimedSubprocess import urllib from base import * from gi.repository import Gtk class CheckUSBPermissions(Question): def __init__ (self, troubleshooter): Question.__init__ (self, troubleshooter, "Check USB permissions") troubleshooter.new_page (Gtk.Label (), self) def display (self): self.answers = {} answers = self.troubleshooter.answers if answers['cups_queue_listed']: if answers['is_cups_class']: return False cups_printer_dict = answers['cups_printer_dict'] device_uri = cups_printer_dict['device-uri'] elif answers.get ('cups_device_listed', False): device_uri = answers['cups_device_uri'] else: return False (scheme, rest) = urllib.splittype (device_uri) if scheme not in ['hp', 'hpfax', 'usb', 'hal']: return False LSUSB = "/sbin/lsusb" if not os.access (LSUSB, os.X_OK): return False GETFACL = "/usr/bin/getfacl" if not os.access (GETFACL, os.X_OK): return False new_environ = os.environ.copy() new_environ['LC_ALL'] = "C" # Run lsusb parent = self.troubleshooter.get_window () try: self.op = TimedSubprocess (parent=parent, args=[LSUSB, "-v"], close_fds=True, env=new_environ, stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=subprocess.PIPE) (lsusb_stdout, lsusb_stderr, result) = self.op.run () except: # Problem executing command. return False # Now parse it. dev_by_id = {} this_dev = None for line in lsusb_stdout: if (this_dev != None and ((line.find ("bInterfaceClass") != -1 and line.find ("7 Printer") != -1) or (line.find ("bInterfaceSubClass") != -1 and line.find ("1 Printer") != -1))): mfr = dev_by_id.get (this_mfr_id, {}) mdl = mfr.get (this_mdl_id, []) mdl.append (this_dev) mfr[this_mdl_id] = mdl dev_by_id[this_mfr_id] = mfr this_dev = None continue separators = [ ('Bus ', 3), (' Device ', 3), (': ID ', 4), (':', 4), (' ', -1)] fields = [] i = 0 p = line while i < len (separators): (sep, length) = separators[i] if not p.startswith (sep): break start = len (sep) if length == -1: end = len (p) fields.append (p[start:]) else: end = start + length fields.append (p[start:end]) p = p[end:] i += 1 if i < len (separators): continue if not scheme.startswith ('hp') and fields[2] != '03f0': # Skip non-HP printers if we know we're using HPLIP. continue this_dev = { 'bus': fields[0], 'dev': fields[1], 'name': fields[4], 'full': line } this_mfr_id = fields[2] this_mdl_id = fields[3] infos = {} paths = [] if not scheme.startswith ('hp'): paths.extend (glob.glob ("/dev/usb/lp?")) for mfr_id, mdls in dev_by_id.iteritems (): for mdl_id, devs in mdls.iteritems (): for dev in devs: path = "/dev/bus/usb/%s/%s" % (dev['bus'], dev['dev']) paths.append (path) infos[path] = dev['full'] perms = [] for path in paths: try: self.op = TimedSubprocess (parent=parent, args=[GETFACL, path], close_fds=True, env=new_environ, stdin=file("/dev/null"), stdout=subprocess.PIPE, stderr=subprocess.PIPE) (getfacl_stdout, getfacl_stderr, result) = self.op.run () output = filter (lambda x: len (x) > 0, getfacl_stdout) except: # Problem executing command. output = [] info = infos.get (path, path) perms.append ((info, output)) self.answers['getfacl_output'] = perms # Don't actually display anything, just collect information. return False def collect_answer (self): return self.answers def cancel_operation (self): self.op.cancel ()
Upload File
Create Folder