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:
@@ -7,6 +7,7 @@ import sys
|
|||||||
import logging
|
import logging
|
||||||
import queue
|
import queue
|
||||||
import threading
|
import threading
|
||||||
|
import argparse
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
from seafobj.objstore_factory import SeafObjStoreFactory
|
from seafobj.objstore_factory import SeafObjStoreFactory
|
||||||
@@ -57,7 +58,7 @@ class Task(object):
|
|||||||
self.obj_id = obj_id
|
self.obj_id = obj_id
|
||||||
|
|
||||||
class ObjMigrateWorker(Thread):
|
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)
|
Thread.__init__(self)
|
||||||
self.lock = threading.Lock()
|
self.lock = threading.Lock()
|
||||||
self.dtype = dtype
|
self.dtype = dtype
|
||||||
@@ -72,6 +73,7 @@ class ObjMigrateWorker(Thread):
|
|||||||
self.fd = None
|
self.fd = None
|
||||||
self.exit_code = 0
|
self.exit_code = 0
|
||||||
self.exception = None
|
self.exception = None
|
||||||
|
self.decrypt = decrypt
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
try:
|
try:
|
||||||
@@ -147,7 +149,10 @@ class ObjMigrateWorker(Thread):
|
|||||||
|
|
||||||
if not exists:
|
if not exists:
|
||||||
try:
|
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:
|
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))
|
logging.warning('[%s] Failed to read object %s from repo %s: %s' % (self.dtype, task.obj_id, task.repo_id, e))
|
||||||
raise
|
raise
|
||||||
@@ -193,7 +198,13 @@ class ObjMigrateWorker(Thread):
|
|||||||
return True
|
return True
|
||||||
return False
|
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:
|
try:
|
||||||
orig_obj_factory = SeafObjStoreFactory()
|
orig_obj_factory = SeafObjStoreFactory()
|
||||||
os.environ['SEAFILE_CENTRAL_CONF_DIR'] = os.environ['DEST_SEAFILE_CENTRAL_CONF_DIR']
|
os.environ['SEAFILE_CENTRAL_CONF_DIR'] = os.environ['DEST_SEAFILE_CENTRAL_CONF_DIR']
|
||||||
@@ -207,7 +218,7 @@ def main():
|
|||||||
for dtype in dtypes:
|
for dtype in dtypes:
|
||||||
orig_store = orig_obj_factory.get_obj_store(dtype)
|
orig_store = orig_obj_factory.get_obj_store(dtype)
|
||||||
dest_store = dest_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__':
|
if __name__ == '__main__':
|
||||||
main()
|
main(sys.argv)
|
||||||
|
@@ -14,7 +14,7 @@ migrate=${INSTALLPATH}/migrate.py
|
|||||||
script_name=$0
|
script_name=$0
|
||||||
function usage () {
|
function usage () {
|
||||||
echo "usage : "
|
echo "usage : "
|
||||||
echo " ./$(basename ${script_name}) destination_config_file_path"
|
echo " ./$(basename ${script_name}) destination_config_file_path [--decrypt]"
|
||||||
echo ""
|
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
|
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;
|
check_python_executable;
|
||||||
@@ -68,13 +68,13 @@ then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $# -ne 1 ];
|
if [ $# -ne 1 ] && [ $# -ne 2 ];
|
||||||
then
|
then
|
||||||
usage;
|
usage;
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dest_seafile_central_conf_dir="$1"
|
dest_seafile_central_conf_dir="$1"
|
||||||
do_migrate;
|
do_migrate $@;
|
||||||
|
|
||||||
echo "Done."
|
echo "Done."
|
||||||
|
Reference in New Issue
Block a user