From 689d4e94fe905a0db71c738e043c734c513eec0e Mon Sep 17 00:00:00 2001 From: bashrc Date: Thu, 7 May 2026 13:26:36 +0100 Subject: [PATCH] Extra debug for uploading images --- daemon_post_image.py | 5 +++-- daemon_post_receive.py | 37 +++++++++++++++++++++++++++++++++++-- scripts/images | 2 +- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/daemon_post_image.py b/daemon_post_image.py index 960255525..4fb0d69e6 100644 --- a/daemon_post_image.py +++ b/daemon_post_image.py @@ -16,6 +16,7 @@ from utils import binary_is_image from formats import get_image_extension_from_mime_type from data import save_binary from data import is_a_dir +from data import is_a_file def receive_image_attachment(self, length: int, path: str, base_dir: str, @@ -73,8 +74,8 @@ def receive_image_attachment(self, length: int, path: str, base_dir: str, 'EX: receive_image_attachment unable to write ' + media_filename) if debug: - if os.path.isfile(media_filename): - file_size = os.path.getsize(media_filename) + if is_a_file(media_filename): + file_size: int = os.path.getsize(media_filename) print('DEBUG: image saved to ' + media_filename + ' ' + str(file_size) + ' bytes') else: diff --git a/daemon_post_receive.py b/daemon_post_receive.py index c8c760536..f61e21c95 100644 --- a/daemon_post_receive.py +++ b/daemon_post_receive.py @@ -7,9 +7,11 @@ __email__ = "bob@libreserver.org" __status__ = "Production" __module_group__ = "Daemon POST" +import os import time import copy import errno +from shutil import copyfile from socket import error as SocketError from shares import add_share from languages import get_understood_languages @@ -1894,22 +1896,53 @@ def _receive_new_post_process(self, post_type: str, path: str, headers: {}, if low_bandwidth: print('Converting to low bandwidth ' + filename) convert_image_to_low_bandwidth(filename) + backup_filename = filename + '.backup' + copyfile(filename, backup_filename) + file_size_original: int = os.path.getsize(filename) apply_watermark_to_image(base_dir, nickname, domain, filename, watermark_width_percent, watermark_position, watermark_opacity) - post_image_filename = filename.replace('.temp', '') + file_size_watermark: int = os.path.getsize(filename) + if debug: + print('DEBUG: image size before watermark ' + + str(file_size_original) + ' and after ' + + str(file_size_watermark)) + if file_size_watermark < file_size_original / 2: + print('WARN: watermark failed, restoring backup') + erase_file(filename, + 'EX: failed to erase watermarked file ' + + filename) + move_file(backup_filename, filename) + post_image_filename: str = filename.replace('.temp', '') print('Removing metadata from ' + post_image_filename) city = get_spoofed_city(city, base_dir, nickname, domain) process_meta_data(base_dir, nickname, domain, filename, post_image_filename, city, content_license_url, exif_json, debug) if is_a_file(post_image_filename): - print('POST media saved to ' + post_image_filename) + file_size_meta_data: int = \ + os.path.getsize(post_image_filename) + if debug: + print('DEBUG: image size before metadata removal ' + + str(file_size_original) + ' and after ' + + str(file_size_meta_data)) + if file_size_meta_data < file_size_watermark / 2: + print('WARN: image metadata removal failed, ' + + 'restoring backup') + erase_file(filename, 'EX: ' + + 'failed to erase metadata processed image ' + + post_image_filename) + move_file(backup_filename, post_image_filename) + print('POST media saved to ' + post_image_filename + + ' ' + str(file_size_meta_data) + ' bytes') else: exif_json = [] print('ERROR: POST media could not be saved to ' + post_image_filename) + erase_file(backup_filename, + 'EX: failed to delete backup image ' + + backup_filename) else: if is_a_file(filename): new_filename = filename.replace('.temp', '') diff --git a/scripts/images b/scripts/images index 4aa3ddd0a..7b49bc55a 100755 --- a/scripts/images +++ b/scripts/images @@ -1,5 +1,5 @@ #!/bin/bash -journalctl -u epicyon | grep 'image binary\|favicon is not an image' > .image.txt +journalctl -u epicyon | grep 'image binary\|favicon is not an image\|image size before\|watermark failed\|image metadata removal\|media saved to' > .image.txt if [ ! -f .image.txt ]; then echo 'No image warnings' else