From 91a0998ee45e826e8afd315de59c91112a562848 Mon Sep 17 00:00:00 2001 From: Uriziel Date: Sun, 27 Oct 2013 17:09:35 +0100 Subject: [PATCH] Implemented filename privacy settings --- syncplay/client.py | 24 ++++++++++++++++++++++-- syncplay/constants.py | 1 + 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index bbd0ee5..3ae2edc 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -9,6 +9,8 @@ from syncplay.protocols import SyncClientProtocol from syncplay import utils, constants from syncplay.messages import getMessage import threading +from syncplay.constants import PRIVACY_SENDHASHED_MODE, PRIVACY_DONTSEND_MODE,\ + PRIVACY_HIDDENFILENAME try: import libMal except ImportError: @@ -287,15 +289,33 @@ class SyncplayClient(object): size = os.path.getsize(path) except OSError: #file not accessible (stream?) size = 0 + filename, size = self.__executePrivacySettings(filename, size) self.userlist.currentUser.setFile(filename, duration, size) self.sendFile() self._malUpdater.fileChangeHook(filename, duration) - + + def __hashFilename(self, filename): + return hashlib.sha256(filename).hexdigest()[:12] + + def __hashFilesize(self, size): + hashlib.sha256(str(size)).hexdigest() + + def __executePrivacySettings(self, filename, size): + if (self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE): + filename = self.__hashFilename(filename) + elif (self._config['filenamePrivacyMode'] == PRIVACY_DONTSEND_MODE): + filename = PRIVACY_HIDDENFILENAME + if (self._config['filesizePrivacyMode'] == PRIVACY_SENDHASHED_MODE): + size = self.__hashFilesize(size) + elif (self._config['filesizePrivacyMode'] == PRIVACY_DONTSEND_MODE): + size = 0 + return filename, size + def sendFile(self): file_ = self.userlist.currentUser.file if(self._protocol and self._protocol.logged and file_): self._protocol.sendFileSetting(file_) - + def setUsername(self, username): self.userlist.currentUser.username = username diff --git a/syncplay/constants.py b/syncplay/constants.py index 0d4936e..0beca4f 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -85,3 +85,4 @@ SERVER_MAX_TEMPLATE_LENGTH = 10000 PRIVACY_SENDRAW_MODE = "SendRaw" PRIVACY_SENDHASHED_MODE = "SendHashed" PRIVACY_DONTSEND_MODE = "DoNotSend" +PRIVACY_HIDDENFILENAME = "**Hidden filename**"