From d62b8c3db5a87accb40a49d0347255bfe467911b Mon Sep 17 00:00:00 2001 From: kaliko Date: Thu, 26 Jun 2014 23:03:06 +0200 Subject: [PATCH] Controls file access for config provided path --- setup.py | 1 + sima/utils/config.py | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 036f85e..acae874 100755 --- a/setup.py +++ b/setup.py @@ -47,6 +47,7 @@ setup(name='MPD_sima', entry_points={ 'console_scripts': ['mpd-sima = sima.launch:main',] }, + test_suite="tests", ) # VIM MODLINE diff --git a/sima/utils/config.py b/sima/utils/config.py index b3a8d46..cd16a14 100644 --- a/sima/utils/config.py +++ b/sima/utils/config.py @@ -29,8 +29,8 @@ import logging import sys from configparser import Error -from os import (makedirs, environ, stat, chmod) -from os.path import (join, isdir, isfile) +from os import (access, makedirs, environ, stat, chmod, W_OK, R_OK) +from os.path import (join, isdir, isfile, dirname, exists) from stat import (S_IMODE, ST_MODE, S_IRWXO, S_IRWXG) from . import utils @@ -120,9 +120,31 @@ class ConfMan(object): # CONFIG MANAGER CLASS ## INIT CALLS self.init_config() self.supersedes_config_with_cmd_line_options() + # Controls files access + self.control_facc() # generate dbfile self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db') + def control_facc(self): + """TODO: redundant with startopt cli args controls + """ + ok = True + for ftochk in [self.config['log']['logfile'], + self.config['daemon']['pidfile'],]: + if not exists(ftochk): + # Is parent directory writable then + filedir = dirname(ftochk) + if not access(filedir, W_OK): + self.log.critical('no write access to "{0}"'.format(filedir)) + ok = False + else: + if not access(ftochk, W_OK): + self.log.critical('no write access to "{0}"'.format(ftochk)) + ok = False + if not ok: + sys.exit(2) + + def control_mod(self): """ Controls conf file permissions. -- 2.39.5