fix: FSM calls do_transfer_offer() correctly; resume remembers target_host/user/port

This commit is contained in:
2026-05-22 23:01:52 +04:00
parent 76b06b157a
commit a4be7c59d9
2 changed files with 35 additions and 17 deletions

View File

@@ -81,8 +81,8 @@ class FSM:
from source.source import do_stop_service
do_stop_service()
elif name == "TRANSFER":
from transfer.transfer import do_transfer
do_transfer()
from source.source import do_transfer_offer
do_transfer_offer()
elif name == "DONE":
success("Source-режим завершён")

View File

@@ -330,6 +330,24 @@ def do_stop_service():
def do_transfer_offer():
step(4, "ПЕРЕНОС НА НОВЫЙ СЕРВЕР (опционально)")
st = state.load_state()
# При resume: проверяем, были ли уже введены target-параметры
resume_host = st.get("target_host")
resume_user = st.get("target_user")
resume_port = st.get("target_port", 22)
if resume_host and resume_host not in ("", "None"):
info(f"Обнаружены ранее введённые параметры target: {resume_user}@{resume_host}:{resume_port}")
if confirm("Использовать эти параметры повторно (если ошибка была в SSH-ключе, выберите Y, после фикса)", default="y"):
host, user, port_int = resume_host, resume_user or "root", int(resume_port)
else:
# Сбрасываем, чтобы запросить заново
state.set_stage("SOURCE_STOP", target_host=None, target_user=None, target_port=None)
host = user = None
else:
host = user = None
if not host:
if not confirm("Перенести архив на новый сервер сейчас", default="y"):
success("Готово! Архив оставлен на текущем сервере.")
success(f"Manifest и архив лежат в: {_ARCHIVE_DIR}")