Add migration between instances
This commit is contained in:
parent
1db8d586f6
commit
c90144b20e
1 changed files with 63 additions and 1 deletions
|
@ -1214,12 +1214,17 @@ class NcPasswordClient:
|
||||||
'nc_password_client.log'
|
'nc_password_client.log'
|
||||||
)
|
)
|
||||||
self._init_log()
|
self._init_log()
|
||||||
|
self.timeout = timeout
|
||||||
|
self.cache_duration = cache_duration
|
||||||
|
self.https_proxy = https_proxy
|
||||||
|
self.output_format = output_format
|
||||||
|
self.field_replacements = field_replacements
|
||||||
params = {
|
params = {
|
||||||
"host": host,
|
"host": host,
|
||||||
"user": user,
|
"user": user,
|
||||||
"api_token": api_token,
|
"api_token": api_token,
|
||||||
"cse_password": cse_password,
|
"cse_password": cse_password,
|
||||||
"timeout": timeout,
|
"timeout": self.timeout,
|
||||||
"cache_duration": cache_duration,
|
"cache_duration": cache_duration,
|
||||||
"https_proxy": https_proxy,
|
"https_proxy": https_proxy,
|
||||||
"logger": self._log,
|
"logger": self._log,
|
||||||
|
@ -1227,6 +1232,7 @@ class NcPasswordClient:
|
||||||
"field_replacements": field_replacements,
|
"field_replacements": field_replacements,
|
||||||
}
|
}
|
||||||
self.nc = NextcloudHandler(params)
|
self.nc = NextcloudHandler(params)
|
||||||
|
self.destination_nc = None
|
||||||
|
|
||||||
def _safer_obj(self, obj, fields=None):
|
def _safer_obj(self, obj, fields=None):
|
||||||
if fields is None:
|
if fields is None:
|
||||||
|
@ -1609,6 +1615,31 @@ class NcPasswordClient:
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def migrate_passwords(
|
||||||
|
self,
|
||||||
|
destination_host,
|
||||||
|
destination_user,
|
||||||
|
destination_api_token,
|
||||||
|
destination_cse_password
|
||||||
|
):
|
||||||
|
'''Migrate passwords from one NextCloud instance to another'''
|
||||||
|
params = {
|
||||||
|
"host": destination_host,
|
||||||
|
"user": destination_user,
|
||||||
|
"api_token": destination_api_token,
|
||||||
|
"cse_password": destination_cse_password,
|
||||||
|
"timeout": self.timeout,
|
||||||
|
"cache_duration": self.cache_duration,
|
||||||
|
"https_proxy": self.https_proxy,
|
||||||
|
"logger": self._log,
|
||||||
|
"output_format": self.output_format,
|
||||||
|
"field_replacements": self.field_replacements,
|
||||||
|
}
|
||||||
|
self.destination_nc = NextcloudHandler(params)
|
||||||
|
for password in self.nc.list_passwords():
|
||||||
|
self.destination_nc.create_password(password, update=True)
|
||||||
|
return True
|
||||||
|
|
||||||
def _init_log(self):
|
def _init_log(self):
|
||||||
''' Initialize log object '''
|
''' Initialize log object '''
|
||||||
self._log = logging.getLogger("nc_password_client")
|
self._log = logging.getLogger("nc_password_client")
|
||||||
|
@ -1707,6 +1738,37 @@ def cli(
|
||||||
timeout, cache_duration, https_proxy, output_format, field_replacements
|
timeout, cache_duration, https_proxy, output_format, field_replacements
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@cli.command()
|
||||||
|
@click.option(
|
||||||
|
'--destination-host', '-D',
|
||||||
|
required=True,
|
||||||
|
help='Destination host'
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
'--destination-user', '-U',
|
||||||
|
required=True,
|
||||||
|
help='Destination host user name'
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
'--destination-api-token', '-A',
|
||||||
|
required=True,
|
||||||
|
help="Destination host user's API token "
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
'--destination-cse-password', '-C',
|
||||||
|
help='Destination Nextcloud host user\'s end-to-end encryption password'
|
||||||
|
)
|
||||||
|
@click_config_file.configuration_option()
|
||||||
|
@click.pass_context
|
||||||
|
def migrate_passwords(ctx, destination_host, destination_user, destination_api_token, destination_cse_password):
|
||||||
|
'''Migrate passwords between two NextCloud Password instances'''
|
||||||
|
ctx.obj['NcPasswordClient'].migrate_passwords(
|
||||||
|
destination_host,
|
||||||
|
destination_user,
|
||||||
|
destination_api_token,
|
||||||
|
destination_cse_password
|
||||||
|
)
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.option('--name', '-n', required=True, help='Name of the password to show')
|
@click.option('--name', '-n', required=True, help='Name of the password to show')
|
||||||
@click.option(
|
@click.option(
|
||||||
|
|
Loading…
Reference in a new issue