X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sima%2Futils%2Fconfig.py;h=3cd33713951ef0dbefd81a0a4849e37763a61522;hb=2ec091faa883ec52e4e42536b1b23a672ecbc64a;hp=b3a8d46a8c0c9a4d94ed001295226e631eecf61e;hpb=325e87e6aaf33974ea8bc8e4b3d2fdbbef56e9a9;p=mpd-sima.git diff --git a/sima/utils/config.py b/sima/utils/config.py index b3a8d46..3cd3371 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 @@ -52,6 +52,7 @@ DEFAULT_CONF = { 'history_duration': 8, 'queue_length': 1, 'var_dir': 'empty', + 'musicbrainzid': "true", }, 'daemon':{ 'daemon': False, @@ -120,9 +121,32 @@ 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 op, ftochk in [('log', self.config['log']['logfile']), + ('pidfile', self.config['daemon']['pidfile']),]: + if not ftochk: + continue + 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}" ({1})'.format(filedir, op)) + ok = False + else: + if not access(ftochk, W_OK): + self.log.critical('no write access to "{0}" ({1}))'.format(ftochk, op)) + ok = False + if not ok: + sys.exit(2) + def control_mod(self): """ Controls conf file permissions. @@ -191,8 +215,8 @@ class ConfMan(object): # CONFIG MANAGER CLASS chmod(conf_dir, 0o700) self.conf_file = join(conf_dir, CONF_FILE) else: - self.log.error('Can\'t find a suitable location for config folder (XDG_CONFIG_HOME)') - self.log.error('Please use "--config" to locate the conf file') + self.log.critical('Can\'t find a suitable location for config folder (XDG_CONFIG_HOME)') + self.log.critical('Please use "--config" to locate the conf file') sys.exit(1) ## Sima sqlite DB