summaryrefslogtreecommitdiff
path: root/src/leap/baseapp/log.py
blob: 636e5bae629deb311010389024af969d92311182 (plain)
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
import logging

from PyQt4 import QtGui
from PyQt4 import QtCore

vpnlogger = logging.getLogger('leap.openvpn')


class LogPaneMixin(object):
    """
    a simple log pane
    that writes new lines as they come
    """
    EXCLUDES = ('MANAGEMENT',)

    def createLogBrowser(self):
        """
        creates Browser widget for displaying logs
        (in debug mode only).
        """
        self.loggerBox = QtGui.QGroupBox()
        logging_layout = QtGui.QVBoxLayout()
        self.logbrowser = QtGui.QTextBrowser()

        startStopButton = QtGui.QPushButton(self.tr("&Connect"))
        self.startStopButton = startStopButton

        logging_layout.addWidget(self.logbrowser)
        logging_layout.addWidget(self.startStopButton)
        self.loggerBox.setLayout(logging_layout)

        # status box

        self.statusBox = QtGui.QGroupBox()
        grid = QtGui.QGridLayout()

        self.updateTS = QtGui.QLabel('')
        self.status_label = QtGui.QLabel(self.tr('Disconnected'))
        self.ip_label = QtGui.QLabel('')
        self.remote_label = QtGui.QLabel('')
        self.remote_country = QtGui.QLabel('')

        tun_read_label = QtGui.QLabel("tun read")
        self.tun_read_bytes = QtGui.QLabel("0")
        tun_write_label = QtGui.QLabel("tun write")
        self.tun_write_bytes = QtGui.QLabel("0")

        grid.addWidget(self.updateTS, 0, 0)
        grid.addWidget(self.status_label, 0, 1)
        grid.addWidget(self.ip_label, 1, 0)
        grid.addWidget(self.remote_label, 1, 1)
        grid.addWidget(self.remote_country, 2, 1)
        grid.addWidget(tun_read_label, 3, 0)
        grid.addWidget(self.tun_read_bytes, 3, 1)
        grid.addWidget(tun_write_label, 4, 0)
        grid.addWidget(self.tun_write_bytes, 4, 1)

        self.statusBox.setLayout(grid)

    @QtCore.pyqtSlot(str)
    def onLoggerNewLine(self, line):
        """
        simple slot: writes new line to logger Pane.
        """
        msg = line[:-1]
        if self.debugmode and all(map(lambda w: w not in msg,
                                      LogPaneMixin.EXCLUDES)):
            self.logbrowser.append(msg)
            vpnlogger.info(msg)