CC-3770: Make sure files in /srv/airtime/stor have world-readable permissions.

-fixed
This commit is contained in:
Martin Konecny 2012-05-07 14:25:49 -04:00
parent 91d1dfbbfa
commit d997047f5e
2 changed files with 49 additions and 50 deletions

View File

@ -152,11 +152,9 @@ class AirtimeProcessEvent(ProcessEvent):
self.logger.error("traceback: %s", traceback.format_exc()) self.logger.error("traceback: %s", traceback.format_exc())
else: else:
#ensure file is world readable (Liquidsoap and Web UI preview) #ensure file is world readable (Liquidsoap and Web UI preview)
if self.mmc.make_readable(pathname): is_recorded = self.mmc.is_parent_directory(pathname, self.config.recorded_directory)
is_recorded = self.mmc.is_parent_directory(pathname, self.config.recorded_directory) self.file_events.append({'mode': self.config.MODE_CREATE, 'filepath': pathname, 'is_recorded_show': is_recorded})
self.file_events.append({'mode': self.config.MODE_CREATE, 'filepath': pathname, 'is_recorded_show': is_recorded})
else:
self.logger.warn("Couldn't add %s because failed to change file permissions", pathname)
def process_IN_MODIFY(self, event): def process_IN_MODIFY(self, event):
# if IN_MODIFY is followed by IN_CREATE, it's not true modify event # if IN_MODIFY is followed by IN_CREATE, it's not true modify event
@ -173,7 +171,7 @@ class AirtimeProcessEvent(ProcessEvent):
self.create_dict[pathname] = time.time() self.create_dict[pathname] = time.time()
if not dir and not self.mmc.is_parent_directory(pathname, self.config.organize_directory): if not dir and not self.mmc.is_parent_directory(pathname, self.config.organize_directory):
self.logger.info("Modified: %s", pathname) self.logger.info("Modified: %s", pathname)
if self.mmc.is_audio_file(name) and self.mmc.make_readable(pathname): if self.mmc.is_audio_file(name):
self.file_events.append({'filepath': pathname, 'mode': self.config.MODE_MODIFY}) self.file_events.append({'filepath': pathname, 'mode': self.config.MODE_MODIFY})
# if change is detected on /etc/mtab, we check what mount(file system) was added/removed # if change is detected on /etc/mtab, we check what mount(file system) was added/removed
@ -237,51 +235,50 @@ class AirtimeProcessEvent(ProcessEvent):
if not event.dir: if not event.dir:
if self.mmc.is_audio_file(event.name): if self.mmc.is_audio_file(event.name):
if self.mmc.make_readable(event.pathname): if event.cookie in self.temp_files:
if event.cookie in self.temp_files: self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY})
self.file_events.append({'filepath': event.pathname, 'mode': self.config.MODE_MODIFY}) del self.temp_files[event.cookie]
del self.temp_files[event.cookie] elif event.cookie in self.cookies_IN_MOVED_FROM:
elif event.cookie in self.cookies_IN_MOVED_FROM: #files original location was also in a watched directory
#files original location was also in a watched directory del self.cookies_IN_MOVED_FROM[event.cookie]
del self.cookies_IN_MOVED_FROM[event.cookie] if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory):
if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory): filepath = self.mmc.organize_new_file(event.pathname)
filepath = self.mmc.organize_new_file(event.pathname)
#delete files from organize if they can not be read properly.
#delete files from organize if they can not be read properly. if filepath is None:
if filepath is None: try:
try: self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname)
self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname) os.remove(event.pathname)
os.remove(event.pathname) return
return except Exception, e:
except Exception, e: self.logger.error('Exception: %s', e)
self.logger.error('Exception: %s', e) self.logger.error("traceback: %s", traceback.format_exc())
self.logger.error("traceback: %s", traceback.format_exc())
else:
filepath = event.pathname
if (filepath is not None):
self.file_events.append({'filepath': filepath, 'mode': self.config.MODE_MOVED})
else: else:
if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory): filepath = event.pathname
filepath = self.mmc.organize_new_file(event.pathname)
if (filepath is not None):
#delete files from organize if they can not be read properly. self.file_events.append({'filepath': filepath, 'mode': self.config.MODE_MOVED})
if filepath is None: else:
try: if self.mmc.is_parent_directory(event.pathname, self.config.organize_directory):
self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname) filepath = self.mmc.organize_new_file(event.pathname)
os.remove(event.pathname)
return #delete files from organize if they can not be read properly.
except Exception, e: if filepath is None:
self.logger.error('Exception: %s', e) try:
self.logger.error("traceback: %s", traceback.format_exc()) self.logger.info("Deleting file because it cannot be read properly: %s", event.pathname)
os.remove(event.pathname)
return
except Exception, e:
self.logger.error('Exception: %s', e)
self.logger.error("traceback: %s", traceback.format_exc())
else:
#show dragged from unwatched folder into a watched folder. Do not "organize".:q!
if self.mmc.is_parent_directory(event.pathname, self.config.recorded_directory):
is_recorded = True
else: else:
#show dragged from unwatched folder into a watched folder. Do not "organize".:q! is_recorded = False
if self.mmc.is_parent_directory(event.pathname, self.config.recorded_directory): self.file_events.append({'mode': self.config.MODE_CREATE, 'filepath': event.pathname, 'is_recorded_show': is_recorded})
is_recorded = True
else:
is_recorded = False
self.file_events.append({'mode': self.config.MODE_CREATE, 'filepath': event.pathname, 'is_recorded_show': is_recorded})
else: else:
#When we move a directory into a watched_dir, we only get a notification that the dir was created, #When we move a directory into a watched_dir, we only get a notification that the dir was created,
#and no additional information about files that came along with that directory. #and no additional information about files that came along with that directory.

View File

@ -104,9 +104,8 @@ class MediaMonitorCommon:
original_file = pathname original_file = pathname
is_dir = False is_dir = False
try: try:
while not is_readable(original_file, is_dir): while not self.is_readable(original_file, is_dir):
#Not readable. Make appropriate permission changes. #Not readable. Make appropriate permission changes.
self.make_file_readable(pathname, is_dir) self.make_file_readable(pathname, is_dir)
dirname = os.path.dirname(pathname) dirname = os.path.dirname(pathname)
@ -315,6 +314,9 @@ class MediaMonitorCommon:
self.logger.debug("Moving from %s to %s", pathname, filepath) self.logger.debug("Moving from %s to %s", pathname, filepath)
self.move_file(pathname, filepath) self.move_file(pathname, filepath)
if not self.mmc.make_readable(filepath):
self.logger.warn("Couldn't make filepath %s readable", pathname)
filepath = None
else: else:
filepath = None filepath = None
self.logger.warn("File %s, has invalid metadata", pathname) self.logger.warn("File %s, has invalid metadata", pathname)