def __init__(self, secure_internet_uri, institute_access_uri, verify_key, lets_connect): """setup UI thingies, don't do any fetching or DBus communication yet""" self.secure_internet_uri = secure_internet_uri self.institute_access_uri = institute_access_uri self.lets_connect = lets_connect # minimal global state to pass around data between steps where otherwise difficult self.selected_meta = None self.prefix = get_prefix() self.builder = Gtk.Builder() for b in builder_files: p = os.path.join(self.prefix, 'share/eduvpn/builder', b) if not os.access(p, os.R_OK): logger.error( "Can't find {}! That is quite an important file.".format( p)) raise Exception self.builder.add_from_file(p) # the signals coming from the GTK ui handlers = { "delete_window": Gtk.main_quit, "add_config": self.add, "del_config": self.delete, "select_config": self.select, "connect_set": self.switched, } self.builder.connect_signals(handlers) self.window = self.builder.get_object('eduvpn-window') self.verifier = make_verifier(verify_key) self.window.set_position(Gtk.WindowPosition.CENTER)
def test_make_verifier(self): make_verifier( "RWSC3Lwn4f9mhG3XIwRUTEIqf7Ucu9+7/Rq+scUMxrjg5/kjskXKOJY/")
def main(): logging.basicConfig(level=logging.INFO) search_term = parse_args() verifier = make_verifier(Ed25519_PUBLIC_KEY) if isinstance(search_term, str) and search_term.lower().startswith('https://'): base_url = search_term info_url = base_url else: servers = list_servers(SERVER_URI, verifier=verifier) secure_internet = [ s for s in servers if s['server_type'] == 'secure_internet' ] institute_access = [ s for s in servers if s['server_type'] == 'institute_access' ] orgs = list_orgs(ORGANISATION_URI, verifier=verifier) choice = menu(institutes=institute_access, orgs=orgs, search_term=search_term) if not choice: exit(1) type_, base_url = choice if type_ == 'secure_internet_home': secure_internets = [ s for s in secure_internet if s['base_url'] == base_url ] info_url = secure_internet_choice(secure_internets) else: info_url = base_url exists = get_entry(base_url) if exists: token, api_base_uri, token_endpoint, authorization_endpoint = exists oauth = OAuth2Session(client_id=CLIENT_ID, token=token, auto_refresh_url=token_endpoint) else: api_base_uri, token_endpoint, auth_endpoint = get_info( info_url, verifier) oauth = get_oauth(token_endpoint, auth_endpoint) set_entry(base_url, oauth.token, api_base_uri, token_endpoint, auth_endpoint) oauth.refresh_token(token_url=token_endpoint) profiles = list_profiles(oauth, api_base_uri) profile_id = profile_choice(profiles) config = get_config(oauth, api_base_uri, profile_id) private_key, certificate = create_keypair(oauth, api_base_uri) if write_to_nm_choice(): save_connection(config, private_key, certificate) else: target = Path('eduVPN.ovpn').resolve() print(f"Writing configuration to {target}") write_config(config, private_key, certificate, target)