예제 #1
0
def _2fa_check(meta, builder, oauth, config_dict, info, lets_connect):
    # type: (Metadata, Gtk.builder, str, dict, dict, bool) -> None
    if meta.two_factor and not info['two_factor_enrolled']:
        # 2fa is required, but the user is not enroled anymore
        two_auth_step(builder, oauth, meta, config_dict, lets_connect)
    else:
        connect_provider(meta.uuid)
예제 #2
0
 def test_two_auth_step(self, *_):
     response_2fa = MockResponse()
     response_2fa.content_json['user_info']['data'][
         'two_factor_enrolled'] = True
     oauth_2fa = MockOAuth(response_2fa)
     two_auth_step(builder=self.builder,
                   meta=self.meta,
                   oauth=oauth_2fa,
                   config_dict=mock_config_dict,
                   lets_connect=False)
예제 #3
0
def _background(meta, oauth, dialog, builder, lets_connect):
    try:
        cert, key = create_keypair(oauth, meta.api_base_uri)
        meta.cert = cert
        meta.key = key
        meta.config = get_profile_config(oauth, meta.api_base_uri,
                                         meta.profile_id)
        ovpn_text = format_like_ovpn(meta.config, meta.cert, meta.key)
        config_dict = parse_ovpn(ovpn_text)
        if meta.two_factor:
            GLib.idle_add(lambda: two_auth_step(builder,
                                                oauth,
                                                meta,
                                                config_dict=config_dict,
                                                lets_connect=lets_connect))
        else:
            GLib.idle_add(lambda: finalizing_step(meta=meta,
                                                  builder=builder,
                                                  config_dict=config_dict,
                                                  lets_connect=lets_connect))
        GLib.idle_add(lambda: dialog.hide())

    except Exception as e:
        error = e
        GLib.idle_add(lambda: error_helper(
            dialog, "can't finalize configuration", "{}: {}".format(
                type(error).__name__, str(error))))
        GLib.idle_add(lambda: dialog.hide())
        raise
예제 #4
0
def _background(oauth, meta, builder, dialog):
    try:
        profiles = list_profiles(oauth, meta.api_base_uri)
        logger.info("There are {} profiles on {}".format(len(profiles), meta.api_base_uri))
        if len(profiles) > 1:
            GLib.idle_add(lambda: dialog.hide())
            GLib.idle_add(lambda: select_profile_step(builder=builder, profiles=profiles, meta=meta, oauth=oauth))
        elif len(profiles) == 1:
            meta.profile_display_name, meta.profile_id, meta.two_factor = profiles[0]
            two_auth_step(builder=builder, oauth=oauth, meta=meta)
        else:
            raise EduvpnException("Either there are no VPN profiles defined, or this account does not have the "
                                  "required permissions to create a new VPN configurations for any of the "
                                  "available profiles.")

    except Exception as e:
        GLib.idle_add(lambda: error_helper(dialog, "Can't fetch profile list", str(e)))
        GLib.idle_add(lambda: dialog.hide())
        raise
예제 #5
0
def select_profile_step(builder, profiles, meta, oauth):
    """the profile selection step, doesn't do anything if only one profile"""
    logger.info("opening profile dialog")

    dialog = builder.get_object('profiles-dialog')
    model = builder.get_object('profiles-model')
    selection = builder.get_object('profiles-selection')
    dialog.show_all()
    model.clear()
    [model.append(p) for p in profiles]
    response = dialog.run()
    dialog.hide()

    if response == 0:  # cancel
        logger.info("cancel button pressed")
        return
    else:
        model, treeiter = selection.get_selected()
        if treeiter:
            meta.profile_display_name, meta.profile_id, meta.two_factor = model[treeiter]
            two_auth_step(builder=builder, oauth=oauth, meta=meta)
        else:
            logger.error("nothing selected")
            return
def _2fa_check(meta, builder, oauth, config_dict, info):
    if meta.two_factor and not info['two_factor_enrolled']:
        # 2fa is required, but the user is not enroled anymore
        two_auth_step(builder, oauth, meta, config_dict)
    else:
        connect_provider(meta.uuid)