예제 #1
0
 def user(self, name=None, clean=False, remote=None, password=None):
     if clean:
         localdb = LocalDB(self._client_cache.localdb)
         localdb.init(clean=True)
         self._user_io.out.success("Deleted user data")
         return
     self._manager.user(remote, name, password)
예제 #2
0
    def user(self, *parameters):
        """ shows or change the current user """
        parser = argparse.ArgumentParser(description=self.user.__doc__,
                                         prog="conan user")
        parser.add_argument(
            "name",
            nargs='?',
            default=None,
            help='Username you want to use. '
            'If no name is provided it will show the current user.')
        parser.add_argument(
            "-p",
            "--password",
            help='User password. Use double quotes '
            'if password with spacing, and escape quotes if existing')
        parser.add_argument("--remote",
                            "-r",
                            help='look for in the remote storage')
        parser.add_argument('-c',
                            '--clean',
                            default=False,
                            action='store_true',
                            help='Remove user and tokens for all remotes')
        args = parser.parse_args(*parameters)  # To enable -h

        if args.clean:
            localdb = LocalDB(self._conan_paths.localdb)
            localdb.init(clean=True)
            self._user_io.out.success("Deleted user data")
            return
        self._manager.user(args.remote, args.name, args.password)
예제 #3
0
    def _init_collaborators(self, user_io=None):

        output = TestBufferConanOutput()
        self.user_io = user_io or MockedUserIO(self.users, out=output)

        self.runner = TestRunner(output, runner=self.conan_runner)

        # Check if servers are real
        real_servers = False
        for server in self.servers.values():
            if isinstance(server, str):  # Just URI
                real_servers = True

        if real_servers:
            requester = requests
        else:
            if self.requester_class:
                requester = self.requester_class(self.servers)
            else:
                requester = TestRequester(self.servers)

        # Verify client version against remotes
        self.requester = VersionCheckerRequester(requester, self.client_version,
                                                 self.min_server_compatible_version, output)

        put_headers = self.client_cache.read_put_headers()
        self.rest_api_client = RestApiClient(output, requester=self.requester, put_headers=put_headers)
        # To store user and token
        self.localdb = LocalDB(self.client_cache.localdb)
        # Wraps RestApiClient to add authentication support (same interface)
        auth_manager = ConanApiAuthManager(self.rest_api_client, self.user_io, self.localdb)
        # Handle remote connections
        self.remote_manager = RemoteManager(self.client_cache, auth_manager, self.user_io.out)
예제 #4
0
파일: tools.py 프로젝트: TyRoXx/conan
    def init_dynamic_vars(self, user_io=None):

        output = TestBufferConanOutput()

        # Migration system
        self.paths = migrate_and_get_paths(self.base_folder,
                                           output,
                                           storage_folder=self.storage_folder)

        self.user_io = user_io or MockedUserIO(self.users, out=output)

        self.runner = TestRunner(output)

        requester = TestRequester(self.servers)

        # Verify client version against remotes
        self.requester = VersionCheckerRequester(
            requester, self.client_version, self.min_server_compatible_version,
            output)

        self.rest_api_client = RestApiClient(output, requester=self.requester)
        # To store user and token
        self.localdb = LocalDB(self.paths.localdb)
        # Wraps RestApiClient to add authentication support (same interface)
        auth_manager = ConanApiAuthManager(self.rest_api_client, self.user_io,
                                           self.localdb)
        # Handle remote connections
        self.remote_manager = RemoteManager(self.paths, self.servers.items(),
                                            auth_manager, self.user_io.out)
예제 #5
0
파일: user.py 프로젝트: mathieu/conan
def user_set(client_cache, output, registry, user, remote_name=None):
    localdb = LocalDB(client_cache.localdb)
    if not remote_name:
        remote = registry.default_remote
    else:
        remote = registry.remote(remote_name)

    if user.lower() == "none":
        user = None
    update_localdb(localdb, user, None, remote, output)
예제 #6
0
def users_list(localdb_file, remotes):
    if not remotes:
        raise ConanException("No remotes defined")

    localdb = LocalDB(localdb_file)
    remotes_info = []
    for remote in remotes:
        user_info = {}
        user, token = localdb.get_login(remote.url)
        user_info["name"] = remote.name
        user_info["user_name"] = user
        user_info["authenticated"] = True if token else False
        remotes_info.append(user_info)
    return remotes_info
예제 #7
0
 def instance_remote_manager(client_cache):
     requester = requests.Session()
     requester.proxies = client_cache.conan_config.proxies
     # Verify client version against remotes
     version_checker_requester = VersionCheckerRequester(requester, Version(CLIENT_VERSION),
                                                         Version(MIN_SERVER_COMPATIBLE_VERSION),
                                                         out)
     # To handle remote connections
     rest_api_client = RestApiClient(out, requester=version_checker_requester)
     # To store user and token
     localdb = LocalDB(client_cache.localdb)
     # Wraps RestApiClient to add authentication support (same interface)
     auth_manager = ConanApiAuthManager(rest_api_client, user_io, localdb)
     # Handle remote connections
     remote_manager = RemoteManager(client_cache, auth_manager, out)
     return remote_manager
예제 #8
0
    def localdb_test(self):
        tmp_dir = temp_folder()
        db_file = os.path.join(tmp_dir, "dbfile")
        localdb = LocalDB(db_file)

        # Test write and read login
        localdb.init()
        login, token = localdb.get_login()
        self.assertIsNone(login)
        self.assertIsNone(token)

        localdb.set_login(("pepe", "token"))
        login, token = localdb.get_login()
        self.assertEquals("pepe", login)
        self.assertEquals("token", token)
        self.assertEquals("pepe", localdb.get_username())
예제 #9
0
 def instance_remote_manager(client_cache):
     requester = get_basic_requester(client_cache)
     # Verify client version against remotes
     version_checker_req = VersionCheckerRequester(requester, Version(client_version),
                                                   Version(MIN_SERVER_COMPATIBLE_VERSION),
                                                   out)
     # To handle remote connections
     put_headers = client_cache.read_put_headers()
     rest_api_client = RestApiClient(out, requester=version_checker_req,
                                     put_headers=put_headers)
     # To store user and token
     localdb = LocalDB(client_cache.localdb)
     # Wraps RestApiClient to add authentication support (same interface)
     auth_manager = ConanApiAuthManager(rest_api_client, user_io, localdb)
     # Handle remote connections
     remote_manager = RemoteManager(client_cache, auth_manager, out)
     return remote_manager
예제 #10
0
파일: user.py 프로젝트: mathieu/conan
def users_list(client_cache, registry, remote_name=None):
    # List all users from required remotes
    if remote_name:
        remotes = [registry.remote(remote_name)]
    else:
        remotes = registry.remotes

    if not remotes:
        raise ConanException("No remotes defined")

    localdb = LocalDB(client_cache.localdb)
    result = []
    for remote in remotes:
        prev_user = localdb.get_username(remote.url)
        username = prev_user or "None (anonymous)"
        result.append((remote.name, username))
    return result
예제 #11
0
파일: command.py 프로젝트: TyRoXx/conan
def main(args):
    """ main entry point of the conans application, using a Command to
    parse parameters
    """
    if hasattr(sys.stdout, "isatty") and sys.stdout.isatty():
        import colorama
        colorama.init()
        color = True
    else:
        color = False
    out = ConanOutput(sys.stdout, color)
    user_io = UserIO(out=out)

    user_folder = os.path.expanduser("~")
    paths = migrate_and_get_paths(user_folder, out)

    # Verify client version against remotes
    version_checker_requester = VersionCheckerRequester(
        requests, Version(CLIENT_VERSION),
        Version(MIN_SERVER_COMPATIBLE_VERSION), out)
    # To handle remote connections
    rest_api_client = RestApiClient(out, requester=version_checker_requester)
    # To store user and token
    localdb = LocalDB(paths.localdb)
    # Wraps RestApiClient to add authentication support (same interface)
    auth_manager = ConanApiAuthManager(rest_api_client, user_io, localdb)
    # Handle remote connections
    remote_manager = RemoteManager(paths, paths.conan_config.remotes,
                                   auth_manager, out)

    command = Command(paths, user_io, os.system, remote_manager, localdb)
    current_dir = os.getcwd()
    try:
        import signal

        def sigint_handler(signal, frame):
            print('You pressed Ctrl+C!')
            sys.exit(0)

        signal.signal(signal.SIGINT, sigint_handler)
        error = command.run(args)
    finally:
        os.chdir(current_dir)
    sys.exit(error)
예제 #12
0
    def instance_remote_manager(requester, client_cache, user_io, _client_version,
                                min_server_compatible_version):

        # Verify client version against remotes
        version_checker_req = VersionCheckerRequester(requester, _client_version,
                                                      min_server_compatible_version,
                                                      user_io.out)

        # To handle remote connections
        put_headers = client_cache.read_put_headers()
        rest_api_client = RestApiClient(user_io.out, requester=version_checker_req,
                                        put_headers=put_headers)
        # To store user and token
        localdb = LocalDB(client_cache.localdb)
        # Wraps RestApiClient to add authentication support (same interface)
        auth_manager = ConanApiAuthManager(rest_api_client, user_io, localdb)
        # Handle remote connections
        remote_manager = RemoteManager(client_cache, auth_manager, user_io.out)
        return localdb, rest_api_client, remote_manager
예제 #13
0
def user_set(localdb_file, user, remote_name=None):
    localdb = LocalDB(localdb_file)

    if user.lower() == "none":
        user = None
    return update_localdb(localdb, user, None, remote_name)
예제 #14
0
def users_clean(localdb_file):
    localdb = LocalDB(localdb_file)
    localdb.init(clean=True)
예제 #15
0
파일: user.py 프로젝트: mathieu/conan
def users_clean(client_cache):
    localdb = LocalDB(client_cache.localdb)
    localdb.init(clean=True)