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'])
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()
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()
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()
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)
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()