def list_providers():
    """
    List all OpenVPN connections.
    """
    if not have_dbus():
        # fall back to just listing the json files
        try:
            providers = [
                i for i in os.listdir(providers_path) if i.endswith('.json')
            ]
        except (IOError, OSError) as e:
            logger.error(
                "can't list configurations in {}".format(providers_path))
            raise StopIteration
        else:
            for p in providers:
                try:
                    yield Metadata.from_uuid(p[:-5])
                except IOError as e:
                    logger.error("cant open {}: {}".format(p, e))
    else:
        all_ = NetworkManager.Settings.ListConnections()
        vpn_connections = [
            c.GetSettings()['connection'] for c in all_
            if c.GetSettings()['connection']['type'] == 'vpn'
        ]
        logger.info("There are {} VPN connections in networkmanager".format(
            len(vpn_connections)))
        for conn in vpn_connections:
            yield Metadata.from_uuid(conn['uuid'], display_name=conn['id'])
Beispiel #2
0
def list_providers():  # type: () -> Iterable[Metadata]
    """
    List all OpenVPN connections.
    """
    if not have_dbus():
        # fall back to just listing the json files
        try:
            providers = [
                i for i in os.listdir(providers_path) if i.endswith('.json')
            ]
        except (IOError, OSError) as e:
            logger.error(u"can't list configurations in"
                         "{}".format(providers_path))
            raise StopIteration
        else:
            for p in providers:
                try:
                    yield Metadata.from_uuid(p[:-5])
                except IOError as e:
                    logger.error(u"cant open {}: {}".format(p, e))
    else:
        all_ = NetworkManager.Settings.ListConnections()  # type: ignore

        # if the uuid is not set we probably can't access the object due to permission errors
        all_ = [i for i in all_ if i.uuid]

        vpn_connections = ([
            c.GetSettings()['connection'] for c in all_
            if c.GetSettings()['connection']['type'] == 'vpn'
        ])
        logger.info(u"There are {} VPN connections in"
                    "networkmanager".format(len(vpn_connections)))
        for conn in vpn_connections:
            yield Metadata.from_uuid(conn['uuid'], display_name=conn['id'])
def metadata_of_selected(builder):
    selection = builder.get_object('provider-selection')
    model, treeiter = selection.get_selected()
    if treeiter is None:
        return
    else:
        uuid_, _, _, _ = model[treeiter]
        return Metadata.from_uuid(uuid_)
 def setUpClass(cls):
     cls.meta = Metadata()
     cls.meta.uuid = cls.uuid
     cls.meta.api_base_uri = "test_url"
     cls.meta.token = {'token_endpoint': 'https://test'}
     cls.meta.api_base_uri = 'https://test'
     cls.builder = MockBuilder()
     cls.verifier = MagicMock()
Beispiel #5
0
 def test_metadata_write(self):
     metadata = Metadata()
     #with self.assertRaises(EduvpnException):
     metadata.write(
     )  # we disabled the raising of exceptions now to make it more robust
     metadata.uuid = 'test'
     metadata.write()
 def setUpClass(cls):
     cls.meta = Metadata()
     cls.meta.uuid = cls.uuid
     cls.meta.api_base_uri = "test_url"
     cls.meta.token = {'token_endpoint': 'https://test'}
     cls.meta.api_base_uri = 'https://test'
     cls.builder = MockBuilder()
     cls.oauth = MockOAuth()
     cls.dialog = MockDialog()
Beispiel #7
0
def new_provider(builder, verifier):
    """The connection type selection step"""
    logger.info("add configuration clicked")
    dialog = builder.get_object('connection-type-dialog')
    dialog.show_all()
    response = dialog.run()
    dialog.hide()

    meta = Metadata()

    if response == 0:  # cancel
        logger.info("cancel button pressed")
        return

    elif response == 1:
        logger.info("secure button pressed")
        meta.connection_type = 'Secure Internet'
        meta.discovery_uri = secure_internet_uri
        fetch_instance_step(meta=meta, builder=builder, verifier=verifier)

    elif response == 2:
        logger.info("institute button pressed")
        meta.connection_type = 'Institute Access'
        meta.discovery_uri = institute_access_uri
        fetch_instance_step(meta=meta, builder=builder, verifier=verifier)

    elif response == 3:
        logger.info("custom button pressed")
        custom_url(builder=builder, meta=meta, verifier=verifier)
def new_provider(builder, verifier, secure_internet_uri, institute_access_uri,
                 lets_connect):
    # type : (Gtk.Builder, verifier, str, str, bool) -> None
    """The connection type selection step"""
    logger.info("add configuration clicked")
    meta = Metadata()

    # lets connect mode only supports custom URL
    if lets_connect:
        custom_url(builder=builder,
                   meta=meta,
                   verifier=verifier,
                   lets_connect=lets_connect)
        return

    dialog = builder.get_object('connection-type-dialog')
    window = builder.get_object('eduvpn-window')
    dialog.set_transient_for(window)
    dialog.show_all()
    response = dialog.run()
    dialog.hide()

    if response == 0:  # cancel
        logger.info("cancel button pressed")
        return

    elif response == 1:
        logger.info("secure button pressed")
        meta.connection_type = 'Secure Internet'
        meta.discovery_uri = secure_internet_uri
        fetch_instance_step(meta=meta,
                            builder=builder,
                            verifier=verifier,
                            lets_connect=lets_connect)

    elif response == 2:
        logger.info("institute button pressed")
        meta.connection_type = 'Institute Access'
        meta.discovery_uri = institute_access_uri
        fetch_instance_step(meta=meta,
                            builder=builder,
                            verifier=verifier,
                            lets_connect=lets_connect)

    elif response == 3:
        logger.info("custom button pressed")
        custom_url(builder=builder,
                   meta=meta,
                   verifier=verifier,
                   lets_connect=lets_connect)
def get_oauth_token(user, password, instance_uri):
    meta = Metadata()
    meta.api_base_uri, meta.authorization_endpoint, meta.token_endpoint = get_instance_info(
        instance_uri=instance_uri)
    meta.refresh_token()
    code_verifier = gen_code_verifier()
    port = get_open_port()
    oauth = create_oauth_session(port, auto_refresh_url=meta.token_endpoint)
    auth_url, state = get_auth_url(oauth, code_verifier,
                                   meta.authorization_endpoint)

    with ThreadPoolExecutor(max_workers=1) as executor:
        future = executor.submit(get_oauth_token_code, port, timeout=5)
        authorize(auth_url, user, password)
        code, other_state = future.result()

    assert (state == other_state)
    meta.token = oauth.fetch_token(meta.token_endpoint,
                                   code=code,
                                   code_verifier=code_verifier)
    return oauth, meta
    def setUpClass(cls):
        cls.meta = Metadata()
        cls.meta.uuid = cls.uuid

        cls.builder = MockBuilder()
        cls.verifier = MagicMock()
Beispiel #11
0
 def test_metadata_from_uuid_invalid(self, _):
     uuid = "test"
     display_name = "end_of_the_world"
     metadata = Metadata.from_uuid(uuid=uuid, display_name=display_name)
     self.assertEqual(metadata.display_name, display_name)
Beispiel #12
0
 def test_metadata_from(self, _):
     uuid = "test"
     metadata = Metadata.from_uuid(uuid=uuid)
     self.assertEqual(metadata.display_name, "correct")
     self.assertEqual(metadata.uuid, "correct")
 def setUp(cls):
     cls.meta = Metadata()
     cls.meta.uuid = 'test'
 def setUp(self):
     self.meta = Metadata()
     self.meta.uuid = make_unique_id()
     self.meta.cert = "testcert"
     self.meta.key = "testkey"
     self.meta.config = mock_config
from eduvpn.main import init
from eduvpn.steps.custom_url import custom_url
from eduvpn.metadata import Metadata
from gi.repository import Gtk

edu_vpn_app = init()
custom_url(builder=edu_vpn_app.builder,
           meta=Metadata(),
           verifier=edu_vpn_app.verifier)
Gtk.main()
 def setUp(cls):
     cls.builder = MockBuilder()
     cls.meta = Metadata()
     cls.meta.api_base_uri = "https://bla.bla/bla"
     cls.oauth = MockOAuth()
 def test_metadata_write(self):
     metadata = Metadata()
     with self.assertRaises(EduvpnException):
         metadata.write()
     metadata.uuid = 'test'
     metadata.write()