]> kaliko git repositories - mpd-sima.git/commitdiff
Controls file access for config provided path
authorkaliko <kaliko@azylum.org>
Thu, 26 Jun 2014 21:03:06 +0000 (23:03 +0200)
committerkaliko <kaliko@azylum.org>
Thu, 26 Jun 2014 21:03:06 +0000 (23:03 +0200)
setup.py
sima/utils/config.py

index 036f85e22d643b5064712cff1c3bcca5f4b5b9f6..acae87415d5c11965e2dca48bacb9886e1693a3a 100755 (executable)
--- 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
index b3a8d46a8c0c9a4d94ed001295226e631eecf61e..cd16a14482bc45008e297b219462d47cf0e5e30c 100644 (file)
@@ -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.