From e76817e77e443a934f321fa3d1e54a80606c8ee6 Mon Sep 17 00:00:00 2001 From: Jean-Marie Traissard Date: Tue, 11 Nov 2008 15:00:18 +0000 Subject: [PATCH] If an avatar or vcard filename is > 48, use its hash for filename instead. I used the md5 method already in the same file. Fixes #4273. --- src/common/helpers.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/common/helpers.py b/src/common/helpers.py index cd4d52aa7..b7c01ae00 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -841,18 +841,19 @@ def get_os_info(): return 'N/A' def sanitize_filename(filename): - '''makes sure the filename we will write does contain only - acceptable and latin characters''' + '''makes sure the filename we will write does contain only acceptable and + latin characters, and is not too long (in that case hash it)''' + # 48 is the limit + if len(filename) > 48: + hash = hash_md5(filename) + filename = base64.b64encode(hash.digest()) + filename = punycode_encode(filename) # make it latin chars only filename = filename.replace('/', '_') if os.name == 'nt': filename = filename.replace('?', '_').replace(':', '_')\ .replace('\\', '_').replace('"', "'").replace('|', '_')\ .replace('*', '_').replace('<', '_').replace('>', '_') - # 48 is the limit - if len(filename) > 48: - extension = filename.split('.')[-1] - filename = filename[0:48] return filename