/usr/bin/blueman-report is in blueman 2.0.4-1ubuntu2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #! /usr/bin/python3
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from __future__ import unicode_literals
import json
import os
import signal
import subprocess
import time
from threading import Thread, Lock
from blueman.Constants import VERSION
from blueman.Functions import get_lockfile, get_pid, is_running
import sys
if sys.version_info.major == 2:
input = raw_input
import urllib2
else:
import urllib.request as urllib2
for program in 'adapters', 'applet', 'manager', 'services':
name = 'blueman-' + program
lockfile = get_lockfile(name)
if os.path.exists(lockfile):
pid = get_pid(lockfile)
if pid and is_running(name, pid):
print('Terminating ' + name)
os.kill(pid, signal.SIGTERM)
applet = subprocess.Popen(['blueman-applet'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
log = ''
actions = []
lines = 0
lock = Lock()
def copy_output():
global lines, log
for line in iter(applet.stdout.readline, b''):
lock.acquire()
lines += 1
log += line.decode('UTF-8')
lock.release()
t = Thread(target=copy_output)
t.daemon = True
t.start()
while True:
action = input('Describe your next action (keep empty if done): ')
if not action:
break
lock.acquire()
lines += 1
log += "DEBUG ACTION: " + action + "\n"
lock.release()
actions.append((lines, action))
print('Perform the described action')
time.sleep(5)
lock.acquire()
data = json.dumps({'files': {'log': {'content': log}}})
response = urllib2.urlopen('https://api.github.com/gists', data.encode('UTF-8')).read()
url = json.loads(response.decode('UTF-8'))['html_url']
print("")
print("=====================================")
print("")
print("Use this data in your report:")
print("")
print("=====================================")
print("")
print("blueman: " + VERSION)
v = subprocess.Popen(['/usr/sbin/bluetoothd', '-v'], stdout=subprocess.PIPE).stdout.read().decode('UTF-8')[:-1]
print("BlueZ: " + v)
print("Distribution: ")
print("Desktop: " + os.environ.get('XDG_CURRENT_DESKTOP'))
print("")
for line, action in actions:
print(url + '#file-log-L' + str(line) + " " + action)
|