Exemple #1
0
    def create_character(self,
                         emitter,
                         config_file,
                         json_ipc,
                         load_seednodes=True):

        # TODO: embed compatibility layer?
        ursula_config = self.config_options.create_config(emitter, config_file)
        is_clef = ClefSigner.is_valid_clef_uri(self.config_options.signer_uri)

        # TODO: Oh
        client_password = None
        if not ursula_config.federated_only:
            if not self.config_options.dev and not json_ipc and not is_clef:
                client_password = get_client_password(
                    checksum_address=ursula_config.worker_address,
                    envvar=NUCYPHER_ENVVAR_WORKER_ETH_PASSWORD)

        try:
            URSULA = make_cli_character(
                character_config=ursula_config,
                emitter=emitter,
                min_stake=self.min_stake,
                teacher_uri=self.teacher_uri,
                unlock_keyring=not self.config_options.dev,
                lonely=self.config_options.lonely,
                client_password=client_password,
                start_learning_now=load_seednodes)
            return ursula_config, URSULA

        except NucypherKeyring.AuthenticationFailed as e:
            emitter.echo(str(e), color='red', bold=True)
            # TODO: Exit codes (not only for this, but for other exceptions)
            return click.get_current_context().exit(1)
Exemple #2
0
    def create_character(self, emitter, config_file, json_ipc, load_seednodes=True):

        config = self.config_options.create_config(emitter, config_file)

        client_password = None
        is_clef = ClefSigner.is_valid_clef_uri(self.config_options.signer_uri)
        eth_password_is_needed = not config.federated_only and not self.hw_wallet and not config.dev_mode and not is_clef
        if eth_password_is_needed:
            if json_ipc:
                client_password = os.environ.get(NUCYPHER_ENVVAR_ALICE_ETH_PASSWORD, NO_PASSWORD)
                if client_password is NO_PASSWORD:
                    message = f"--json-ipc implies the {NUCYPHER_ENVVAR_ALICE_ETH_PASSWORD} envvar must be set."
                    click.BadOptionUsage(option_name='--json-ipc', message=message)
            else:
                client_password = get_client_password(checksum_address=config.checksum_address,
                                                      envvar=NUCYPHER_ENVVAR_ALICE_ETH_PASSWORD)

        try:
            ALICE = make_cli_character(character_config=config,
                                       emitter=emitter,
                                       unlock_keyring=not config.dev_mode,
                                       teacher_uri=self.teacher_uri,
                                       min_stake=self.min_stake,
                                       client_password=client_password,
                                       start_learning_now=load_seednodes,
                                       lonely=self.config_options.lonely)
            return ALICE
        except NucypherKeyring.AuthenticationFailed as e:
            emitter.echo(str(e), color='red', bold=True)
            click.get_current_context().exit(1)
Exemple #3
0
 def create_character(self, emitter, config_file):
     config = self.config_options.create_config(emitter, config_file)
     return make_cli_character(character_config=config,
                               emitter=emitter,
                               unlock_keyring=not self.config_options.dev,
                               teacher_uri=self.teacher_uri,
                               min_stake=self.min_stake)
Exemple #4
0
    def create_character(self,
                         emitter,
                         config_file,
                         json_ipc,
                         load_seednodes=True):
        ursula_config = self.config_options.create_config(emitter, config_file)
        is_clef = ClefSigner.is_valid_clef_uri(self.config_options.signer_uri)
        password_required = all(
            (not ursula_config.federated_only, not self.config_options.dev,
             not json_ipc, not is_clef))
        __password = None
        if password_required:
            __password = get_client_password(
                checksum_address=ursula_config.worker_address,
                envvar=NUCYPHER_ENVVAR_WORKER_ETH_PASSWORD)

        try:
            URSULA = make_cli_character(
                character_config=ursula_config,
                emitter=emitter,
                min_stake=self.min_stake,
                teacher_uri=self.teacher_uri,
                unlock_keyring=not self.config_options.dev,
                client_password=__password,
                unlock_signer=
                False,  # Ursula's unlock is managed separately using client_password.
                lonely=self.config_options.lonely,
                start_learning_now=load_seednodes,
                json_ipc=json_ipc)
            return ursula_config, URSULA

        except NucypherKeyring.AuthenticationFailed as e:
            emitter.echo(str(e), color='red', bold=True)
            # TODO: Exit codes (not only for this, but for other exceptions)
            return click.get_current_context().exit(1)
Exemple #5
0
 def create_character(self, emitter, config_file, json_ipc):
     config = self.config_options.create_config(emitter, config_file)
     BOB = make_cli_character(character_config=config,
                              emitter=emitter,
                              unlock_keyring=not self.config_options.dev,
                              unlock_signer=not config.federated_only and config.signer_uri,
                              teacher_uri=self.teacher_uri,
                              min_stake=self.min_stake,
                              json_ipc=json_ipc)
     return BOB
Exemple #6
0
 def create_character(self, emitter, config_file, json_ipc, load_seednodes=True):
     config = self.config_options.create_config(emitter, config_file)
     try:
         ALICE = make_cli_character(character_config=config,
                                    emitter=emitter,
                                    unlock_keystore=not config.dev_mode,
                                    unlock_signer=not config.federated_only,
                                    teacher_uri=self.teacher_uri,
                                    min_stake=self.min_stake,
                                    start_learning_now=load_seednodes,
                                    lonely=self.config_options.lonely,
                                    json_ipc=json_ipc)
         return ALICE
     except Keystore.AuthenticationFailed as e:
         emitter.echo(str(e), color='red', bold=True)
         click.get_current_context().exit(1)