Changeset 195 for cleverbox/trunk

Show
Ignore:
Timestamp:
08/16/07 19:54:20 (5 years ago)
Author:
trivoallan
Message:

cleverbox :

  • created permissions helper
Location:
cleverbox/trunk/cleverbox
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • cleverbox/trunk/cleverbox/client.py

    r194 r195  
    6969     
    7070    collected_infos['home_dir'] = os.path.join(environment.config.get('general', 'clients_root'), client_name) 
     71    client_dir = collected_infos['home_dir'] 
    7172 
    7273    # A few checks before effectively creating client 
    7374    # -- homedir 
    74     parent_dir = os.path.normpath(os.path.join(collected_infos['home_dir'], os.pardir)) 
    75     dir_is_ok = os.access(parent_dir, os.W_OK) and os.access(collected_infos['home_dir'], os.R_OK) 
    76     print parent_dir 
    77     if not dir_is_ok: 
    78         raise os.error, "Directory %s is not writable or already exists, aborting." % collected_infos['home_dir'] 
     75#    parent_dir = os.path.normpath(os.path.join(collected_infos['home_dir'], os.pardir)) 
     76#    dir_is_ok = os.access(parent_dir, os.W_OK) and os.access(collected_infos['home_dir'], os.R_OK) 
     77#    print parent_dir 
     78#    if not dir_is_ok: 
     79#        raise os.error, "Directory %s is not writable or already exists, aborting." % collected_infos['home_dir'] 
    7980 
    8081    # Client creation 
     
    106107 
    107108    # -- Fix permissions 
    108     filesystem.chowntree(collected_infos['home_dir'], 
    109                          filesystem.get_uid_from_name(environment.config.get('general', 'ssh_user')), 
    110                          filesystem.get_gid_from_name(environment.config.get('general', 'ssh_group'))) 
    111      
    112     os.chown(os.path.join(collected_infos['home_dir'], 'logs'), 
    113              filesystem.get_uid_from_name(environment.config.get('general', 'ssh_user')),  
    114              filesystem.get_gid_from_name(environment.config.get('general', 'apache_group')) ) 
    115      
    116     os.chmod(os.path.join(collected_infos['home_dir'], 'logs'), 0775) 
    117      
    118     os.chown(os.path.join(collected_infos['home_dir'], 'uploads'), 
    119              filesystem.get_uid_from_name(environment.config.get('general', 'ssh_user')), 
    120              filesystem.get_gid_from_name(environment.config.get('general', 'apache_group'))) 
    121      
    122     os.chmod(os.path.join(collected_infos['home_dir'], 'uploads'), 0775) 
    123  
     109    user  = environment.config.get('general', 'ssh_user') 
     110    group = environment.config.get('general', 'apache_group') 
     111     
     112    permissions = {os.path.join(environment.path, 'clients-available', client_name)    : (0640, user, group), 
     113                   os.path.join(client_dir)                                            : (0750, user, group), 
     114                   os.path.join(client_dir, 'htdocs')                                  : (0770, user, group), 
     115                   os.path.join(client_dir, 'logs')                                    : (0770, user, group), 
     116                   os.path.join(client_dir, 'tmp')                                     : (0770, user, group), 
     117                   os.path.join(client_dir, 'var')                                     : (0750, user, group), 
     118                   os.path.join(client_dir, 'var', 'svn')                              : (0750, user, group), 
     119                   os.path.join(client_dir, 'var', 'trac')                             : (0750, user, group)} 
     120     
     121    filesystem.set_permissions(permissions) 
     122     
    124123    logging.info("  Fixed permissions in %s" % collected_infos['home_dir']) 
    125124 
  • cleverbox/trunk/cleverbox/environment.py

    r194 r195  
    5454            map(os.makedirs, env_dirs) 
    5555             
    56             # Create VERSION file 
     56            # Create VERSION file 
    5757            try: 
    5858                print 
    59                 logging.info("  Creating VERSION file") 
    60                 print 
     59                logging.info("  Creating VERSION file") 
     60                print 
    6161 
    6262                fd = open(self.get_path('VERSION'), 'w') 
     
    6666 
    6767            # Create data directory 
    68             os.makedirs(self.config.get('general', 'clients_root')) 
    69             os.chmod(self.config.get('general', 'clients_root'), 0750) 
    70             os.chown(self.config.get('general', 'clients_root'),  
    71                      filesystem.get_gid_from_name('root'), 
    72                      filesystem.get_gid_from_name(parameters['general']['apache_group'])) 
     68            os.makedirs(self.config.get('general', 'clients_root')) 
    7369 
    7470            print 
    75             logging.info('  Created data directory in "%s"' % self.config.get('general', 'clients_root')) 
    76             print 
     71            logging.info('  Created data directory in "%s"' % self.config.get('general', 'clients_root')) 
     72            print 
    7773 
    7874            # Create default configuration profile 
     
    8985            self.config.write(open(self.get_path('cleverbox.ini'), 'w+')) 
    9086 
    91             # Setting permissions 
    92             for entry in os.listdir(self.path): 
    93                 entry_path = self.get_path(entry) 
    94                 if filesystem.is_file(entry_path): 
    95                     os.chmod(entry_path, 0640) 
    96                 else: 
    97                     os.chmod(entry_path, 0750) 
    98            
    99             profile_path = os.path.join(self.get_path('profiles'), 'default') 
    100             os.chmod(profile_path, 0750) 
    101             for entry in os.listdir(profile_path): 
    102                 os.chmod(os.path.join(profile_path, entry), 0640) 
    103  
    104             filesystem.chowntree(self.path, 0, filesystem.get_gid_from_name(parameters['general']['apache_group'])) 
     87            # Set permissions 
     88            permissions = {self.get_path('VERSION')                               : (0640, 'root', 'www-data'),  
     89                           self.get_path('cleverbox.ini')                         : (0640, 'root', 'www-data'),  
     90                           self.get_path('clients-available')                     : (0750, 'root', 'www-data'),  
     91                           self.get_path('clients-enabled')                       : (0750, 'root', 'www-data'),  
     92                           self.get_path('projects-available')                    : (0750, 'root', 'www-data'),  
     93                           self.get_path('projects-enabled')                      : (0750, 'root', 'www-data'),  
     94                           self.get_path('profiles')                              : (0750, 'root', 'www-data'),  
     95                           self.get_path('profiles/default')                      : (0750, 'root', 'www-data'),  
     96                           self.get_path('profiles/default/trac-defaults.ini')    : (0640, 'root', 'www-data'),  
     97                           self.get_path('profiles/default/project.apache.conf')  : (0640, 'root', 'www-data'),  
     98                           self.get_path('profiles/default/permissions.ini')      : (0640, 'root', 'www-data'), 
     99                           self.config.get('general', 'clients_root')             : (0750, 'root', 'www-data')} 
     100             
     101            filesystem.set_permissions(permissions) 
    105102 
    106103        except Exception, exception: 
  • cleverbox/trunk/cleverbox/tests/__init__.py

    r194 r195  
    3636    parameters = {'general' : 
    3737                     {'clients_root' : os.path.join(test_root, 'var', 'cleverbox'), 
    38                       'assets_dir'   : os.path.join('/root/tmp/cleverbox-trunk/assets'), 
    39                       'apache_group' : 'www-data'}} 
     38                      'assets_dir'   : os.path.join('/home/trivoallan/workspace/cleverbox-trunk/assets'), 
     39                      'apache_group' : 'www-data', 
     40                      'ssh_user'     : 'root', 
     41                      'ssh_group'    : 'root'}} 
    4042    env.create(version, parameters) 
    4143 
  • cleverbox/trunk/cleverbox/tests/client.py

    r194 r195  
    2020    def tearDown(self): 
    2121        shutil.rmtree(self.env.path) 
     22        shutil.rmtree(self.env.config.get('general', 'clients_root')) 
    2223 
    2324    # client add 
     
    2526        client_name = 'testclient' 
    2627        client.add(self.env, client_name)  
    27         client_root = self.env.config.get('general', 'clients_root') 
    28         expected = {os.path.join(self.env.path, 'clients-available')          : ('S_ISREG', '0640', 'root', 'www-data'), 
    29                     os.path.join(clients_root, client_name)                   : ('S_ISDIR', '0750', 'root', 'www-data'), 
    30                     os.path.join(clients_root, client_name, 'htdocs')         : ('S_ISDIR', '0770', 'root', 'www-data'), 
    31                     os.path.join(clients_root, client_name, 'logs')           : ('S_ISDIR', '0770', 'root', 'www-data'), 
    32                     os.path.join(clients_root, client_name, 'tmp')            : ('S_ISDIR', '0770', 'root', 'www-data'), 
    33                     os.path.join(clients_root, client_name, 'var')            : ('S_ISDIR', '0750', 'root', 'www-data'), 
    34                     os.path.join(clients_root, client_name, 'var', 'svn')     : ('S_ISDIR', '0750', 'root', 'www-data'), 
    35                     os.path.join(clients_root, client_name, 'var', 'trac')    : ('S_ISDIR', '0750', 'root', 'www-data')} 
     28        clients_root = self.env.config.get('general', 'clients_root') 
     29        expected = {os.path.join(self.env.path, 'clients-available', client_name)          : ('S_ISREG', '0640', 'root', 'www-data'), 
     30                        os.path.join(clients_root, client_name)                                : ('S_ISDIR', '0750', 'root', 'www-data'), 
     31                    os.path.join(clients_root, client_name, 'htdocs')                      : ('S_ISDIR', '0770', 'root', 'www-data'), 
     32                    os.path.join(clients_root, client_name, 'logs')                        : ('S_ISDIR', '0770', 'root', 'www-data'), 
     33                    os.path.join(clients_root, client_name, 'tmp')                         : ('S_ISDIR', '0770', 'root', 'www-data'), 
     34                    os.path.join(clients_root, client_name, 'var')                         : ('S_ISDIR', '0750', 'root', 'www-data'), 
     35                    os.path.join(clients_root, client_name, 'var', 'svn')                  : ('S_ISDIR', '0750', 'root', 'www-data'), 
     36                    os.path.join(clients_root, client_name, 'var', 'trac')                 : ('S_ISDIR', '0750', 'root', 'www-data')} 
    3637 
    3738        cleverbox.tests.validate_layout(expected) 
  • cleverbox/trunk/cleverbox/tests/environment.py

    r194 r195  
    1414    def tearDown(self): 
    1515        shutil.rmtree(self.env.path) 
    16         shutil.rmtree(self.env.config.get('general', 'clients_root')) 
     16        shutil.rmtree(self.env.config.get('general', 'clients_root')) 
    1717     
    1818    def test_create(self): 
     
    3030                    self.env.get_path('profiles/default/project.apache.conf')  : ('S_ISREG', '0640', 'root', 'www-data'),  
    3131                    self.env.get_path('profiles/default/permissions.ini')      : ('S_ISREG', '0640', 'root', 'www-data'), 
    32                     self.env.config.get('general', 'clients_root')             : ('S_ISDIR', '0750', 'root', 'www-data')} 
     32                    self.env.config.get('general', 'clients_root')             : ('S_ISDIR', '0750', 'root', 'www-data')} 
    3333 
    3434        cleverbox.tests.validate_layout(expected)