Example #1
0
    def get_stats(self):
        """
        Returns a tuple with the connection statistics for this dialer

        :return: (in_bytes, out_bytes)
        """
        if self.iface is not None:
            now = time()
            rx_bytes, tx_bytes = get_os_object().get_iface_stats(self.iface)
            # if any of these three are not 0, it means that this is at
            # least the second time this method is executed, thus we
            # should have cached meaningful data
            if self.__rx_bytes or self.__tx_bytes or self.__time:
                rx_delta = rx_bytes - self.__rx_bytes
                tx_delta = tx_bytes - self.__tx_bytes
                interval = now - self.__time
                raw_rx_rate = int(floor(rx_delta / interval))
                raw_tx_rate = int(floor(tx_delta / interval))
                rx_rate = raw_rx_rate if raw_rx_rate >= 0 else 0
                tx_rate = raw_tx_rate if raw_tx_rate >= 0 else 0
            else:
                # first time this is executed, we cannot reliably compute
                # the rate. It is better to lie just once
                rx_rate = tx_rate = 0

            self.__rx_bytes, self.__tx_bytes = rx_bytes, tx_bytes
            self.__time = now

            return rx_bytes, tx_bytes, rx_rate, tx_rate
Example #2
0
 def disconnect(self):
     d = self.device.sconn.disconnect_from_internet()
     osobj = get_os_object()
     osobj.delete_default_route(self.iface)
     osobj.delete_dns_info(None, self.iface)
     osobj.configure_iface(self.iface, '', 'down')
     d.addCallback(lambda _: self.Disconnected())
     return d
Example #3
0
    def _set_disconnected(self, force=False):
        if not self.__connected and not force:
            return

        osobj = get_os_object()
        osobj.delete_dns_info(self.dialer.iface)

        self.__connected = False
        self.dialer.Disconnected()
Example #4
0
 def __init__(self):
     name = BusName(consts.WADER_SERVICE,
                    bus=dbus.SystemBus(mainloop=gloop))
     super(StartupController, self).__init__(bus_name=name,
                                     object_path=consts.WADER_OBJPATH)
     from wader.common.oal import get_os_object
     self.hm = get_os_object().hw_manager
     assert self.hm is not None, "Running Wader on an unsupported OS?"
     self.hm.register_controller(self)
Example #5
0
    def _set_connected(self):
        if self.__connected:
            return

        valid, dns = validate_dns(self.dns, self.dialer.conf.staticdns,
                                [self.dialer.conf.dns1, self.dialer.conf.dns2])
        if not valid:
            if self.dialer.conf.staticdns:
                self.dialer.InvalidDNS([])
            else:
                self.dialer.InvalidDNS(self.dns)

        osobj = get_os_object()
        osobj.add_dns_info(dns, self.dialer.iface)

        self.__connected = True
        self.dialer.Connected()
        self.deferred.callback(self.dialer.opath)
Example #6
0
    def _generate_wvdial_ppp_options(self):
        if not self.conf.refuse_chap:
            wvdial_ppp_options = CHAP_TEMPLATE
        elif not self.conf.refuse_pap:
            wvdial_ppp_options = PAP_TEMPLATE
        else:
            # this could be a NOOP, but the user might have modified
            # the stock /etc/ppp/peers/wvdial file, so the safest option
            # is to overwrite with our known good options.
            wvdial_ppp_options = DEFAULT_TEMPLATE

        # There are some patched pppd implementations
        # Most systems offer 'replacedefaultroute', but not Fedora
        osobj = get_os_object()
        if hasattr(osobj, 'get_additional_wvdial_ppp_options'):
            wvdial_ppp_options += osobj.get_additional_wvdial_ppp_options()

        save_file(WVDIAL_PPPD_OPTIONS, wvdial_ppp_options)
Example #7
0
    def __init__(self, messages=None, contacts=None):
        super(MessagesModel, self).__init__(gobject.TYPE_STRING,
                                            gobject.TYPE_STRING,
                                            gobject.TYPE_STRING,
                                            gobject.TYPE_PYOBJECT)

        self.tz = None

        try:
            self.tz = get_os_object().get_tzinfo()
        except:
            pass

        self.contacts = []
        if contacts:
            self.contacts = map(struct_to_contact, contacts)
        if messages:
            map(self.add_sms, messages)
Example #8
0
# 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.
"""tap file for Wader"""

import locale
# i10n stuff
locale.setlocale(locale.LC_ALL, '')

from wader.common.consts import APP_NAME
from wader.common.startup import (create_skeleton_and_do_initial_setup,
                                  get_wader_application)
# it will just return if its not necessary
create_skeleton_and_do_initial_setup()

# check if we have an OSPlugin for this OS/Distro
from wader.common.oal import get_os_object
if get_os_object() is None:
    message = 'OS/Distro not registered'
    details = """
The OS/Distro under which you are running %s
is not registered in the OS database. Check the documentation for what
you can do in order to support your OS/Distro
""" % APP_NAME
    raise SystemExit("%s\n%s" % (message, details))

application = get_wader_application()
Example #9
0
    def load_sms_model(self, model):
        treeview = self.init_secondary_treeview()

        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Subject"), cell, text=model.COL_TEXT)
        column.set_resizable(True)
        column.set_sort_column_id(model.COL_TEXT)
        cell.set_property("editable", False)
        cell.set_property("ellipsize", pango.ELLIPSIZE_END)
        column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
        column.set_fixed_width(SMS_TEXT_WIDTH)
        treeview.append_column(column)

        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Number"), cell, text=model.COL_NUMBER)
        column.set_resizable(True)
        column.set_sort_column_id(model.COL_NUMBER)
        column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
        column.set_fixed_width(SMS_NAME_WIDTH)
        cell.set_property("editable", False)
        treeview.append_column(column)

        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_("Received at"), cell, text=model.COL_DATE)
        column.set_resizable(True)
        column.set_sort_column_id(model.COL_DATE)
        cell.set_property("editable", False)
        column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
        column.set_fixed_width(SMS_DATETIME_WIDTH)

        # render date func
        def render_date(cellview, cell, model, _iter, tz):
            if isinstance(model, gtk.TreeModelFilter):
                # we are dealing with the filtered model
                _iter = model.convert_iter_to_child_iter(_iter)
                model = model.get_model()

            sms = model.get_value(_iter, model.COL_OBJECT)
            if sms.datetime is not None:
                try:
                    delta = datetime.datetime.now(tz) - sms.datetime
                    # show date if more than one day has passed
                    # otherwise, show time of recept
                    fmt = "%x" if delta.days >= 1 else "%X"
                except TypeError:
                    # dt might be == None
                    fmt = "%x"

                cell.set_property("text", strftime(fmt, sms.datetime.timetuple()))
            else:
                # no datetime, a SMS_SUBMIT
                cell.set_property("text", _("no timestamp"))

        column.set_cell_data_func(cell, render_date, get_os_object().get_tzinfo())
        treeview.append_column(column)

        # some boilerplate to be able to sort SMS by date
        def sort_func(m, iter1, iter2, data):
            date1 = m.get_value(iter1, m.COL_DATE)
            date2 = m.get_value(iter2, m.COL_DATE)

            if date1 and not date2:
                return 1
            if date2 and not date1:
                return -1

            return cmp(date1, date2)

        model.set_sort_column_id(model.COL_DATE, gtk.SORT_DESCENDING)
        model.set_sort_func(model.COL_DATE, sort_func, None)

        treeview.set_model(model)