diff options
Diffstat (limited to 'src/leap/bitmask')
-rw-r--r-- | src/leap/bitmask/backend.py | 205 |
1 files changed, 184 insertions, 21 deletions
diff --git a/src/leap/bitmask/backend.py b/src/leap/bitmask/backend.py index c71553a3..c7fc3dc4 100644 --- a/src/leap/bitmask/backend.py +++ b/src/leap/bitmask/backend.py @@ -82,7 +82,7 @@ class ILEAPService(ILEAPComponent): def start(self): """ - Starts the service. + Start the service. """ pass @@ -94,13 +94,13 @@ class ILEAPService(ILEAPComponent): def terminate(self): """ - Terminates the service, not necessarily in a nice way. + Terminate the service, not necessarily in a nice way. """ pass def status(self): """ - Returns a json object with the current status for the service. + Return a json object with the current status for the service. :rtype: object (list, str, dict) """ @@ -111,7 +111,7 @@ class ILEAPService(ILEAPComponent): def set_configs(self, keyval): """ - Sets the config parameters for this Service. + Set the config parameters for this Service. :param keyval: values to configure :type keyval: dict, {str: str} @@ -120,7 +120,7 @@ class ILEAPService(ILEAPComponent): def get_configs(self, keys): """ - Returns the configuration values for the list of keys. + Return the configuration values for the list of keys. :param keys: keys to retrieve :type keys: list of str @@ -158,7 +158,7 @@ class Provider(object): def setup_provider(self, provider): """ - Initiates the setup for a provider + Initiate the setup for a provider :param provider: URL for the provider :type provider: unicode @@ -280,7 +280,7 @@ class EIP(object): def setup_eip(self, domain): """ - Initiates the setup for a provider + Initiate the setup for a provider :param domain: URL for the provider :type domain: unicode @@ -308,7 +308,7 @@ class EIP(object): def _start_eip(self): """ - Starts EIP + Start EIP """ provider_config = self._provider_config eip_config = eipconfig.EIPConfig() @@ -331,7 +331,7 @@ class EIP(object): def start(self): """ - Starts the service. + Start the service. """ signaler = self._signaler @@ -366,19 +366,19 @@ class EIP(object): def stop(self, shutdown=False): """ - Stops the service. + Stop the service. """ self._vpn.terminate(shutdown) def terminate(self): """ - Terminates the service, not necessarily in a nice way. + Terminate the service, not necessarily in a nice way. """ self._vpn.killit() def status(self): """ - Returns a json object with the current status for the service. + Return a json object with the current status for the service. :rtype: object (list, str, dict) """ @@ -389,7 +389,7 @@ class EIP(object): def _provider_is_initialized(self, domain): """ - Returns if the given domain is initialized or not. + Return whether the given domain is initialized or not. :param domain: the domain to check :type domain: str @@ -405,12 +405,13 @@ class EIP(object): def get_initialized_providers(self, domains): """ - Signals a list of the given domains and if they are initialized or not. + Signal a list of the given domains and if they are initialized or not. :param domains: the list of domains to check. :type domain: list of str - :signal type: list of tuples (str, bool) + Signals: + eip_get_initialized_providers -> list of tuple(unicode, bool) """ filtered_domains = [] for domain in domains: @@ -423,12 +424,15 @@ class EIP(object): def get_gateways_list(self, domain): """ - Signals a list of gateways for the given provider. + Signal a list of gateways for the given provider. :param domain: the domain to get the gateways. :type domain: str - :signal type: list of str + Signals: + eip_get_gateways_list -> list of unicode + eip_get_gateways_list_error + eip_uninitialized_provider """ if not self._provider_is_initialized(domain): if self._signaler is not None: @@ -479,7 +483,7 @@ class Authenticate(object): def login(self, domain, username, password): """ - Executes the whole authentication process for a user + Execute the whole authentication process for a user :param domain: the domain where we need to authenticate. :type domain: unicode @@ -511,7 +515,7 @@ class Authenticate(object): def change_password(self, current_password, new_password): """ - Changes the user's password. + Change the user's password. :param current_password: the current password of the user. :type current_password: str @@ -530,7 +534,7 @@ class Authenticate(object): def logout(self): """ - Logs out the current session. + Log out the current session. Expects a session_id to exists, might raise AssertionError """ if not self._is_logged_in(): @@ -550,7 +554,7 @@ class Authenticate(object): def get_logged_in_status(self): """ - Signals if the user is currently logged in or not. + Signal if the user is currently logged in or not. """ if self._signaler is None: return @@ -947,55 +951,214 @@ class Backend(object): # send_multipart and this backend class will be really simple. def setup_provider(self, provider): + """ + Initiate the setup for a provider. + + :param provider: URL for the provider + :type provider: unicode + + Signals: + prov_unsupported_client + prov_unsupported_api + prov_name_resolution -> { PASSED_KEY: bool, ERROR_KEY: str } + prov_https_connection -> { PASSED_KEY: bool, ERROR_KEY: str } + prov_download_provider_info -> { PASSED_KEY: bool, ERROR_KEY: str } + """ self._call_queue.put(("provider", "setup_provider", None, provider)) def cancel_setup_provider(self): + """ + Cancel the ongoing setup provider (if any). + """ self._call_queue.put(("provider", "cancel_setup_provider", None)) def provider_bootstrap(self, provider): + """ + Second stage of bootstrapping for a provider. + + :param provider: URL for the provider + :type provider: unicode + + Signals: + prov_problem_with_provider + prov_download_ca_cert -> {PASSED_KEY: bool, ERROR_KEY: str} + prov_check_ca_fingerprint -> {PASSED_KEY: bool, ERROR_KEY: str} + prov_check_api_certificate -> {PASSED_KEY: bool, ERROR_KEY: str} + """ self._call_queue.put(("provider", "bootstrap", None, provider)) def register_user(self, provider, username, password): + """ + Register a user using the domain and password given as parameters. + + :param domain: the domain we need to register the user. + :type domain: unicode + :param username: the user name + :type username: unicode + :param password: the password for the username + :type password: unicode + + Signals: + srp_registration_finished + srp_registration_taken + srp_registration_failed + """ self._call_queue.put(("register", "register_user", None, provider, username, password)) def setup_eip(self, provider): + """ + Initiate the setup for a provider + + :param domain: URL for the provider + :type domain: unicode + + Signals: + eip_config_ready -> {PASSED_KEY: bool, ERROR_KEY: str} + eip_client_certificate_ready -> {PASSED_KEY: bool, ERROR_KEY: str} + eip_cancelled_setup + """ self._call_queue.put(("eip", "setup_eip", None, provider)) def cancel_setup_eip(self): + """ + Cancel the ongoing setup EIP (if any). + """ self._call_queue.put(("eip", "cancel_setup_eip", None)) def start_eip(self): + """ + Start the EIP service. + + Signals: + backend_bad_call + eip_alien_open_vpn_already_running + eip_connected + eip_connection_aborted + eip_network_unreachable + eip_no_pkexec_error + eip_no_polkit_agent_error + eip_no_tun_kext_error + eip_open_vpn_already_running + eip_open_vpn_not_found_error + eip_process_finished + eip_process_restart_ping + eip_process_restart_tls + eip_state_changed -> str + eip_status_changed -> str + eip_vpn_launcher_exception + """ self._call_queue.put(("eip", "start", None)) def stop_eip(self, shutdown=False): + """ + Stop the EIP service. + """ self._call_queue.put(("eip", "stop", None, shutdown)) def terminate_eip(self): + """ + Terminate the EIP service, not necessarily in a nice way. + """ self._call_queue.put(("eip", "terminate", None)) def eip_get_gateways_list(self, domain): + """ + Signal a list of gateways for the given provider. + + :param domain: the domain to get the gateways. + :type domain: str + + # TODO discuss how to document the expected result object received of + # the signal + :signal type: list of str + + Signals: + eip_get_gateways_list -> list of unicode + eip_get_gateways_list_error + eip_uninitialized_provider + """ self._call_queue.put(("eip", "get_gateways_list", None, domain)) def eip_get_initialized_providers(self, domains): + """ + Signal a list of the given domains and if they are initialized or not. + + :param domains: the list of domains to check. + :type domain: list of str + + Signals: + eip_get_initialized_providers -> list of tuple(unicode, bool) + + """ self._call_queue.put(("eip", "get_initialized_providers", None, domains)) def login(self, provider, username, password): + """ + Execute the whole authentication process for a user + + :param domain: the domain where we need to authenticate. + :type domain: unicode + :param username: username for this session + :type username: str + :param password: password for this user + :type password: str + + Signals: + srp_auth_error + srp_auth_ok + srp_auth_bad_user_or_password + srp_auth_server_error + srp_auth_connection_error + srp_auth_error + """ self._call_queue.put(("authenticate", "login", None, provider, username, password)) def logout(self): + """ + Log out the current session. + + Signals: + srp_logout_ok + srp_logout_error + srp_not_logged_in_error + """ self._call_queue.put(("authenticate", "logout", None)) def cancel_login(self): + """ + Cancel the ongoing login (if any). + """ self._call_queue.put(("authenticate", "cancel_login", None)) def change_password(self, current_password, new_password): + """ + Change the user's password. + + :param current_password: the current password of the user. + :type current_password: str + :param new_password: the new password for the user. + :type new_password: str + + Signals: + srp_not_logged_in_error + srp_password_change_ok + srp_password_change_badpw + srp_password_change_error + """ self._call_queue.put(("authenticate", "change_password", None, current_password, new_password)) def get_logged_in_status(self): + """ + Signal if the user is currently logged in or not. + + Signals: + srp_status_logged_in + srp_status_not_logged_in + """ self._call_queue.put(("authenticate", "get_logged_in_status", None)) ########################################################################### |