From 562e67d3abc7e76a7477c82c96ba192e6ef6e88e Mon Sep 17 00:00:00 2001 From: aflat Date: Tue, 20 Jan 2015 22:21:49 -0500 Subject: [PATCH 1/4] add the ability for multiple cards to upload to different directories --- etc/eyefiserver.conf | 3 ++- usr/local/bin/eyefiserver.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/etc/eyefiserver.conf b/etc/eyefiserver.conf index 701a83c..2dc69b1 100644 --- a/etc/eyefiserver.conf +++ b/etc/eyefiserver.conf @@ -36,7 +36,8 @@ geotag_accuracy:140000 # /home/myblog/pictures/%%Y-%%m-%%d # notice the double percent sign to escape % from ini interpolation -upload_dir:/home/david/Pictures/eye-fi/%%Y-%%m +upload_dirs_0:/home/david/Pictures/eye-fi/%%Y-%%m +upload_dirs_1:/home/david/Pictures/eye-fi/%%Y-%%m # The UID of the user that you want to own the uploaded images (if commented out, ownership of files will not be changed) upload_uid:0 diff --git a/usr/local/bin/eyefiserver.py b/usr/local/bin/eyefiserver.py index 1ed51d1..83d49ae 100755 --- a/usr/local/bin/eyefiserver.py +++ b/usr/local/bin/eyefiserver.py @@ -678,7 +678,10 @@ def uploadPhoto(self,postData): timeoffset = time.timezone timezone = timeoffset / 60 / 60 * -1 imageDate = datetime.fromtimestamp(member.mtime) - timedelta(hours=timezone) - uploadDir = imageDate.strftime(self.server.config.get('EyeFiServer','upload_dir')) + + mac_to_uploaddir_map = self._get_mac_uploaddir_dict() + mac = handler.extractedElements["macaddress"] + uploadDir = imageDate.strftime(mac_to_uploaddir_map[mac]) eyeFiLogger.debug("Creating folder " + uploadDir) if not os.path.isdir(uploadDir): os.makedirs(uploadDir) @@ -856,6 +859,21 @@ def getPhotoStatus(self,postData): return doc.toxml(encoding="UTF-8") + def _get_mac_uploaddir_dict(self): + macs = {} + upload_dirs = {} + for key, value in self.server.config.items('EyeFiServer'): + if key.find('upload_dirs_') == 0: + index = int(key[12:]) + upload_dirs[index] = value + elif key.find('mac_') == 0: + index = int(key[4:]) + macs[index] = value + d = {} + for key in macs.keys(): + d[macs[key]] = upload_dirs[key] + return d + def _get_mac_uploadkey_dict(self): macs = {} upload_keys = {} From 4e9ce7fba1be470c1d1a2723207677c624d1b3ab Mon Sep 17 00:00:00 2001 From: aflat Date: Tue, 20 Jan 2015 22:31:59 -0500 Subject: [PATCH 2/4] change from SIGTERM to SIGQUIT which does kill the server, no core dumps --- usr/local/bin/eyefiserver.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/usr/local/bin/eyefiserver.py b/usr/local/bin/eyefiserver.py index 83d49ae..7d58321 100755 --- a/usr/local/bin/eyefiserver.py +++ b/usr/local/bin/eyefiserver.py @@ -174,11 +174,10 @@ def stop(self): message = "pidfile %s does not exist. Daemon not running?\n" sys.stderr.write(message % self.pidfile) return 1 - # Try killing the daemon process try: while 1: - os.kill(pid, SIGTERM) + os.kill(pid, signal.SIGQUIT) time.sleep(0.1) except OSError, err: err = str(err) From 5870fbef0fee009adf8dcd9277be6908ce27d73f Mon Sep 17 00:00:00 2001 From: aflat Date: Thu, 22 Jan 2015 22:17:32 -0500 Subject: [PATCH 3/4] do a os.kill -9 instead of sending sigterm, not as clean, but it works --- usr/local/bin/eyefiserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr/local/bin/eyefiserver.py b/usr/local/bin/eyefiserver.py index 7d58321..b801bb9 100755 --- a/usr/local/bin/eyefiserver.py +++ b/usr/local/bin/eyefiserver.py @@ -177,7 +177,7 @@ def stop(self): # Try killing the daemon process try: while 1: - os.kill(pid, signal.SIGQUIT) + os.kill(pid, 9) time.sleep(0.1) except OSError, err: err = str(err) From a9a4cfc68c47926ce27f08988b2da7510e93f223 Mon Sep 17 00:00:00 2001 From: aflat Date: Mon, 26 Jan 2015 23:24:16 -0500 Subject: [PATCH 4/4] allow the use of the old conf file style, or the new --- usr/local/bin/eyefiserver.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/usr/local/bin/eyefiserver.py b/usr/local/bin/eyefiserver.py index b801bb9..819239d 100755 --- a/usr/local/bin/eyefiserver.py +++ b/usr/local/bin/eyefiserver.py @@ -861,16 +861,31 @@ def getPhotoStatus(self,postData): def _get_mac_uploaddir_dict(self): macs = {} upload_dirs = {} + uploadDir = "" + try: + uploadDir = self.server.config.get('EyeFiServer','upload_dir') + except: + uploadDir = "" for key, value in self.server.config.items('EyeFiServer'): - if key.find('upload_dirs_') == 0: - index = int(key[12:]) - upload_dirs[index] = value - elif key.find('mac_') == 0: - index = int(key[4:]) - macs[index] = value + try: + if key.find('upload_dirs_') == 0: + index = int(key[12:]) + upload_dirs[index] = value + elif key.find('mac_') == 0: + index = int(key[4:]) + macs[index] = value + except: + eyeFiLogger.info( "upload_dirs not defined, hopefully upload_dir is: ") d = {} for key in macs.keys(): - d[macs[key]] = upload_dirs[key] + if len(upload_dirs) == 0 and len(uploadDir) == 0: + eyeFiLogger.error( "Neither upload_dir or upload_dirs_0 are defined in the config file, you must define one or the other") + system.exit(1) + if len(upload_dirs) != 0: + d[macs[key]] = upload_dirs[key] + else: + d[macs[key]] = uploadDir + return d def _get_mac_uploadkey_dict(self):