Exemple #1
0
def select_instance_step(meta, instances, builder, verifier):
    """prompt user with instance dialog"""
    logger.info("presenting instances to user")
    dialog = builder.get_object('instances-dialog')
    model = builder.get_object('instances-model')
    selection = builder.get_object('instances-selection')
    model.clear()
    dialog.show_all()

    for display_name, url, icon_data in instances:
        icon = bytes2pixbuf(icon_data)
        model.append((display_name, url, icon,
                      base64.b64encode(icon_data).decode('ascii')))

    response = dialog.run()
    dialog.hide()

    if response == 0:  # cancel
        logger.info("cancel button pressed")
    else:
        model, treeiter = selection.get_selected()
        if treeiter:
            display_name, instance_base_uri, icon_pixbuf, icon_data = model[
                treeiter]
            meta.display_name = display_name
            meta.instance_base_uri = instance_base_uri
            meta.icon_data = icon_data
            browser_step(builder, meta, verifier)
        else:
            logger.info("nothing selected")
def select_instance_step(
    meta, instances, builder, verifier, lets_connect
):  # type: (Metadata, List[Tuple[str, str, Optional[bytes]]], Gtk.builder, str, bool) -> None
    """prompt user with instance dialog"""
    logger.info("presenting instances to user")
    dialog = builder.get_object('instances-dialog')
    model = builder.get_object('instances-model')
    selection = builder.get_object('instances-selection')
    window = builder.get_object('eduvpn-window')
    dialog.set_transient_for(window)
    model.clear()
    dialog.show_all()

    for display_name, url, icon_data in instances:
        icon = bytes2pixbuf(icon_data)  # type: ignore
        model.append(
            (display_name, url, icon,
             base64.b64encode(icon_data).decode('ascii')))  # type: ignore

    response = dialog.run()
    dialog.hide()

    if response == 0:  # cancel
        logger.info("cancel button pressed")
    else:
        model, treeiter = selection.get_selected()
        if treeiter:
            display_name, instance_base_uri, icon_pixbuf, icon_data = model[
                treeiter]
            meta.display_name = display_name
            meta.instance_base_uri = instance_base_uri
            meta.icon_data = str(icon_data)
            browser_step(builder, meta, verifier, lets_connect=lets_connect)
        else:
            logger.info("nothing selected")
Exemple #3
0
def custom_url(builder, meta, verifier, lets_connect):  # type: (Gtk.builder, Metadata, str, bool) -> None
    """the custom URL dialog where a user can enter a custom instance URL"""
    dialog = builder.get_object('custom-url-dialog')
    window = builder.get_object('eduvpn-window')
    dialog.set_transient_for(window)
    entry = builder.get_object('custom-url-entry')
    # entry.set_text('https://debian-vpn.tuxed.net')
    entry.set_position(len(entry.get_text()))
    dialog.show_all()
    while True:
        response = dialog.run()
        if response == 1:
            url = entry.get_text().strip()
            logger.info("ok pressed, entry text: {}".format(url))
            if not url.startswith('https://'):
                error_helper(dialog, "Invalid URL", "URL should start with https://")
            elif url == 'https://':
                error_helper(dialog, "Invalid URL", "Please enter a URL")
            else:
                dialog.hide()
                meta.display_name = url[8:].split('/')[0]
                logger.info("using {} for display name".format(meta.display_name))
                meta.instance_base_uri = url
                meta.connection_type = 'Custom Instance'
                meta.authorization_type = 'local'
                meta.icon_data = None
                browser_step(builder=builder, meta=meta, verifier=verifier, lets_connect=lets_connect)
                break
        else:  # cancel or close
            logger.info("cancel or close button pressed (response {})".format(response))
            dialog.hide()
            return
def reauth(meta, verifier, builder):
    """called when the authorization is expired"""
    logger.info("looks like authorization is expired or removed")
    window = builder.get_object('eduvpn-window')
    dialog = Gtk.MessageDialog(window, Gtk.DialogFlags.MODAL, Gtk.MessageType.QUESTION,
                               Gtk.ButtonsType.YES_NO,
                               "Authorization for {}is expired or removed.".format(meta.display_name))
    dialog.format_secondary_text("Do you want to re-authorize?")
    response = dialog.run()
    if response == Gtk.ResponseType.YES:
        browser_step(builder, meta, verifier)
        delete_provider(meta.uuid)
    elif response == Gtk.ResponseType.NO:
        pass
    dialog.destroy()
Exemple #5
0
def reauth(meta, verifier, builder, lets_connect):  # type: (Metadata, str, Gtk.builder, bool) -> None
    """called when the authorization is expired"""
    logger.info("looks like authorization is expired or removed")
    window = builder.get_object('eduvpn-window')
    dialog = Gtk.MessageDialog(window, Gtk.DialogFlags.MODAL, Gtk.MessageType.QUESTION,
                               Gtk.ButtonsType.YES_NO,
                               "Authorization for {} is expired or removed.".format(meta.display_name))
    dialog.format_secondary_text("Do you want to re-authorize?")
    response = dialog.run()
    if response == Gtk.ResponseType.YES:
        meta.token = {None: None}
        browser_step(builder, meta, verifier, force_token_refresh=True, lets_connect=lets_connect)
    elif response == Gtk.ResponseType.NO:
        pass
    dialog.hide()
def custom_url(builder, meta, verifier):
    """the custom URL dialog where a user can enter a custom instance URL"""
    dialog = builder.get_object('custom-url-dialog')
    entry = builder.get_object('custom-url-entry')
    dialog.show_all()
    while True:
        response = dialog.run()
        if response == 1:
            url = entry.get_text()
            logger.info("ok pressed, entry text: {}".format(url))
            if not url.startswith('https://'):
                GLib.idle_add(lambda: error_helper(
                    dialog, "Invalid URL", "URL should start with https://"))
            else:
                GLib.idle_add(lambda: dialog.hide())
                meta.display_name = url[8:].split('/')[0]
                logger.info("using {} for display name".format(
                    meta.display_name))
                meta.instance_base_uri = url
                meta.connection_type = 'Custom Instance'
                meta.authorization_type = 'local'
                meta.icon_data = None
                GLib.idle_add(lambda: browser_step(
                    builder=builder, meta=meta, verifier=verifier))
                break
        else:  # cancel or close
            logger.info("cancel or close button pressed (response {})".format(
                response))
            dialog.hide()
            return
 def test_browser_step(self, *_):
     browser_step(builder=self.builder, meta=self.meta, verifier=self.verifier)
Exemple #8
0
 def test_browser_step(self, *_):
     browser_step(builder=self.builder,
                  meta=self.meta,
                  verifier=self.verifier,
                  lets_connect=False)