viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. # -*- coding: utf-8 -*-
  2. ## Some useful function to help DrPrint to
  3.  
  4. import paramiko, gobject, select, time, re
  5.  
  6. class PrintingError(Exception):
  7.  
  8. def __init__(self, value):
  9. self.value = value
  10.  
  11. def __str__(self):
  12. return repr(self.value)
  13.  
  14.  
  15. class Backend(gobject.GObject):
  16.  
  17. def __init__(self):
  18. super(Backend, self).__init__()
  19.  
  20. def get_queue(self, printer, remote_host, username, password):
  21. """
  22. Obtain the queue of jobs on selected printer. It opens an SSH
  23. connection to the server and parse lpq -Pprinter output
  24. """
  25.  
  26. try:
  27. client = paramiko.SSHClient()
  28. client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  29. except:
  30. raise RuntimeError('Impossibile inizializzare paramiko')
  31.  
  32. try:
  33. client.connect(remote_host,
  34. port = 22,
  35. username = username,
  36. password = password)
  37. except:
  38. raise RuntimeError('Impossibile connettersi a %s' % remote_host)
  39.  
  40. stdin, stdout, stderr = client.exec_command("lpq -P%s" % printer)
  41. output = stdout.read()
  42.  
  43. print output
  44.  
  45. # Parse output
  46. jobs = []
  47. for line in re.findall(r"active\s+(\w+)\s+(\d+)\s+(.+)\s+(\d+) bytes", output):
  48. job = {
  49. 'position': 1,
  50. 'user': line[0],
  51. 'id': line[1],
  52. 'filename': line[2],
  53. 'size': line[3],
  54. }
  55. jobs.append (job)
  56.  
  57. for line in re.findall(r"(\d)\w*\s+(\w+)\s+(\d+)\s+(.+)\s+(\d+) bytes",
  58. output):
  59. pos = int(line[0]) + 1
  60. job = {
  61. 'position': pos,
  62. 'user': line[1],
  63. 'id': line[2],
  64. 'filename': line[3].strip(),
  65. 'size': line[4]
  66. }
  67. jobs.append(job)
  68. return jobs
  69.  
  70.  
  71.  
  72.  
  73. def send_print(self, printer, username, password, page_per_page,
  74. filename, page_range, copies, orientation, sides, remote_host):
  75.  
  76. # Get printer name
  77. print "Selected printer: %s" % printer
  78.  
  79. # Get connection
  80. try:
  81. client = paramiko.SSHClient()
  82. client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  83. except:
  84. raise PrintingError('Impossibili inizializzare paramiko')
  85.  
  86. try:
  87. client.connect(remote_host,
  88. port=22,
  89. username=username,
  90. password=password)
  91. except paramiko.AuthenticationException, e:
  92. raise PrintingError('Autenticazione fallita')
  93. except Exception, e:
  94. raise PrintingError('Connessione fallita (%s)' % e)
  95.  
  96. t = client.get_transport()
  97. sftp = paramiko.SFTPClient.from_transport(t)
  98.  
  99. print "Printing %s" % filename
  100.  
  101. # Questo è inevitabile.. :)
  102. cmd = "lpr -P%s " % printer
  103.  
  104. # Numero di pagine
  105. try:
  106. copies = int(float(copies))
  107. except ValueError:
  108. copies = 1
  109. if copies is not 1:
  110. cmd = cmd + "-# %s " % copies
  111.  
  112.  
  113. cmd_opts = ""
  114.  
  115. ## Pagine logiche per pagine
  116. if not page_per_page == 1:
  117. cmd_opts += "-o number-up=%s " % str(page_per_page)
  118.  
  119. ## Da a
  120. if not page_range == None:
  121. cmd_opts += "-o page-ranges=%s " % page_range
  122.  
  123. ## Orientazione (se è vuoto è verticale)
  124. if not orientation == "":
  125. cmd_opts += "-o %s " % orientation
  126.  
  127. ## Long edge, short edge ed amici vari
  128. cmd_opts += "-o sides=%s " % sides
  129.  
  130. ## Se ci sono opzioni dai il -o e specificale
  131. if not cmd_opts == "":
  132. cmd = cmd + "%s" % cmd_opts + " /tmp/drprint_tmp_%s" % username
  133.  
  134. try:
  135. attr = sftp.put(filename, "/tmp/drprint_tmp_%s" % username)
  136. except OSError:
  137. raise PrintingError('Errore nel trasferimento del file')
  138. else:
  139. print "File trasferito, dimensione: %d bytes" % attr.st_size
  140.  
  141. # Apriamo la sessione.
  142. chan = t.open_session()
  143.  
  144. # Diamo il comando sul canale
  145. print "Eseguo %s" % cmd
  146. chan.exec_command(cmd)
  147.  
  148. exit_status = chan.recv_exit_status()
  149. chan.close()
  150. if exit_status == 0:
  151. sftp.remove("/tmp/drprint_tmp_%s" % username)
  152.  
  153. print "Printed %s on %s (exit status = %d)" % (filename, printer, exit_status)
  154. if exit_status != 0:
  155. raise PrintingError('Il comando <b>lpr</b> non e\' andato a buon fine (Exit status = %d)' % exit_status)