1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-12 21:30:39 +00:00

Add --decrypt option for migrate.sh (#5146)

* Add --decrypt option for migrate.sh

* Use read_obj to get data of decrypted

* Use read_decrypted to get decrypted data

* Modify help info
This commit is contained in:
feiniks
2022-03-22 15:15:08 +08:00
committed by GitHub
parent ace219fbf7
commit a80aa00e46
2 changed files with 20 additions and 9 deletions

View File

@@ -7,6 +7,7 @@ import sys
import logging
import queue
import threading
import argparse
from threading import Thread
from uuid import UUID
from seafobj.objstore_factory import SeafObjStoreFactory
@@ -57,7 +58,7 @@ class Task(object):
self.obj_id = obj_id
class ObjMigrateWorker(Thread):
def __init__(self, orig_store, dest_store, dtype, repo_id = None):
def __init__(self, orig_store, dest_store, dtype, repo_id = None, decrypt = False):
Thread.__init__(self)
self.lock = threading.Lock()
self.dtype = dtype
@@ -72,6 +73,7 @@ class ObjMigrateWorker(Thread):
self.fd = None
self.exit_code = 0
self.exception = None
self.decrypt = decrypt
def run(self):
try:
@@ -147,7 +149,10 @@ class ObjMigrateWorker(Thread):
if not exists:
try:
data = self.orig_store.read_obj_raw(task.repo_id, task.repo_version, task.obj_id)
if self.decrypt:
data = self.orig_store.read_decrypted(task.repo_id, task.repo_version, task.obj_id)
else:
data = self.orig_store.read_obj_raw(task.repo_id, task.repo_version, task.obj_id)
except Exception as e:
logging.warning('[%s] Failed to read object %s from repo %s: %s' % (self.dtype, task.obj_id, task.repo_id, e))
raise
@@ -193,7 +198,13 @@ class ObjMigrateWorker(Thread):
return True
return False
def main():
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('--decrypt', action='store_true', help='decrypt data from source storage and write to destination in plain text')
args = parser.parse_args()
decrypt = args.decrypt
try:
orig_obj_factory = SeafObjStoreFactory()
os.environ['SEAFILE_CENTRAL_CONF_DIR'] = os.environ['DEST_SEAFILE_CENTRAL_CONF_DIR']
@@ -207,7 +218,7 @@ def main():
for dtype in dtypes:
orig_store = orig_obj_factory.get_obj_store(dtype)
dest_store = dest_obj_factory.get_obj_store(dtype)
ObjMigrateWorker(orig_store, dest_store, dtype).start()
ObjMigrateWorker(orig_store, dest_store, dtype, decrypt=decrypt).start()
if __name__ == '__main__':
main()
main(sys.argv)

View File

@@ -14,7 +14,7 @@ migrate=${INSTALLPATH}/migrate.py
script_name=$0
function usage () {
echo "usage : "
echo " ./$(basename ${script_name}) destination_config_file_path"
echo " ./$(basename ${script_name}) destination_config_file_path [--decrypt]"
echo ""
}
@@ -51,7 +51,7 @@ function do_migrate () {
export PYTHONPATH=${INSTALLPATH}/seafile/lib/python3/site-packages:${INSTALLPATH}/seafile/lib64/python3/site-packages:${INSTALLPATH}/seahub/thirdpart:$PYTHONPATH
$PYTHON ${migrate}
$PYTHON ${migrate} $@
}
check_python_executable;
@@ -68,13 +68,13 @@ then
done
fi
if [ $# -ne 1 ];
if [ $# -ne 1 ] && [ $# -ne 2 ];
then
usage;
exit 1;
fi
dest_seafile_central_conf_dir="$1"
do_migrate;
do_migrate $@;
echo "Done."