Prevent duplicate TFTP server log messages and improve state tracking
- Add filtering mechanism to prevent repeated server start/stop log entries - Implement state tracking flags to manage server status - Remove redundant log messages in both ComConfigCopy.py and TFTPServer.py - Enhance log callback to avoid unnecessary logging of server state changes
This commit is contained in:
@@ -97,7 +97,6 @@ class TFTPServer:
|
||||
except:
|
||||
pass
|
||||
self.server_socket = None
|
||||
self.log("[INFO] TFTP сервер остановлен.")
|
||||
|
||||
def stop_server(self):
|
||||
"""
|
||||
@@ -160,7 +159,7 @@ class TFTPServer:
|
||||
self.log(f"[ERROR] Ошибка при остановке сервера: {str(e)}")
|
||||
finally:
|
||||
self.running = False # Гарантируем, что флаг running будет False
|
||||
self.log("[INFO] TFTP сервер остановлен.")
|
||||
self.log("[INFO] TFTP сервер остановлен")
|
||||
|
||||
def handle_request(self, data, client_addr):
|
||||
"""
|
||||
@@ -223,17 +222,6 @@ class TFTPServer:
|
||||
def send_file(self, file_path, client_addr):
|
||||
"""
|
||||
Передача файла клиенту по протоколу TFTP.
|
||||
|
||||
В процессе передачи обновляется состояние активной передачи, которое логируется с информацией:
|
||||
- адрес клиента,
|
||||
- имя файла,
|
||||
- размер файла,
|
||||
- количество переданных байт,
|
||||
- оставшиеся байты,
|
||||
- время передачи.
|
||||
|
||||
:param file_path: Полный путь к файлу для передачи.
|
||||
:param client_addr: Адрес клиента.
|
||||
"""
|
||||
BLOCK_SIZE = 512
|
||||
transfer_socket = None
|
||||
@@ -356,21 +344,17 @@ class TFTPServer:
|
||||
except Exception as e:
|
||||
if not self.running:
|
||||
self.log(f"[INFO] Передача файла '{file_basename}' клиенту {client_addr} прервана: сервер остановлен")
|
||||
else:
|
||||
self.log(f"[ERROR] Ошибка при передаче файла '{file_basename}' "
|
||||
f"клиенту {client_addr}: {str(e)}")
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
if not self.running:
|
||||
self.log(f"[INFO] Передача файла прервана: сервер остановлен")
|
||||
else:
|
||||
self.log(f"[ERROR] Ошибка при передаче файла '{os.path.basename(file_path)}' "
|
||||
f"клиенту {client_addr}: {str(e)}")
|
||||
try:
|
||||
self.send_error(client_addr, 0, str(e))
|
||||
except:
|
||||
pass
|
||||
return # Не логируем повторно о прерывании передачи
|
||||
self.log(f"[ERROR] Ошибка при передаче файла '{os.path.basename(file_path)}' "
|
||||
f"клиенту {client_addr}: {str(e)}")
|
||||
try:
|
||||
self.send_error(client_addr, 0, str(e))
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
# Закрываем сокет передачи
|
||||
if transfer_socket:
|
||||
|
||||
Reference in New Issue
Block a user