1
0
mirror of https://github.com/altlinux/gpupdate.git synced 2025-03-21 18:50:38 +03:00

Firefox and Chromium appliers refactored to avoid setting its own defaults

This commit is contained in:
Игорь Чудов 2019-12-13 01:16:02 +04:00
parent 039a5f4c85
commit 788877b1ad
Signed by untrusted user: nir
GPG Key ID: 0F3883600CAE7AAC
2 changed files with 38 additions and 25 deletions

View File

@ -3,6 +3,7 @@ from .applier_frontend import applier_frontend
import logging
import json
import os
import util
class chromium_applier(applier_frontend):
@ -43,8 +44,9 @@ class chromium_applier(applier_frontend):
return defval
def set_policy(self, name, obj):
self.policies[name] = obj
logging.info('Chromium policy \'{}\' set to {}'.format(name, obj))
if obj:
self.policies[name] = obj
logging.info('Chromium policy \'{}\' set to {}'.format(name, obj))
def set_user_policy(self, name, obj):
'''
@ -56,18 +58,25 @@ class chromium_applier(applier_frontend):
os.makedirs(prefdir, exist_ok=True)
prefpath = os.path.join(prefdir, 'Preferences')
util.mk_homedir_path(self.username, self.__user_settings)
settings = dict()
with open(prefpath, 'r') as f:
settings = json.load(f)
try:
with open(prefpath, 'r') as f:
settings = json.load(f)
except FileNotFoundError as exc:
logging.error('Chromium preferences file {} does not exist at the moment'.format(prefpath))
except:
logging.error('Error during attempt to read Chromium preferences for user {}'.format(self.username))
settings[name] = obj
if obj:
settings[name] = obj
with open(prefpath, 'w') as f:
json.dump(settings, f)
logging.info('Set user ({}) property \'{}\' to {}'.format(self.username, name, obj))
with open(prefpath, 'w') as f:
json.dump(settings, f)
logging.info('Set user ({}) property \'{}\' to {}'.format(self.username, name, obj))
def get_home_page(self, hkcu=False):
return self.get_hklm_string_entry_default('HomepageLocation', 'about:blank')
return self.get_hklm_string_entry('HomepageLocation')
def machine_apply(self):
'''
@ -80,7 +89,7 @@ class chromium_applier(applier_frontend):
os.makedirs(self.__managed_policies_path, exist_ok=True)
with open(destfile, 'w') as f:
json.dump(self.policies, f)
logging.info('Wrote Chromium preferences to {}'.format(destfile))
logging.debug('Wrote Chromium preferences to {}'.format(destfile))
def user_apply(self):
'''
@ -94,6 +103,5 @@ class chromium_applier(applier_frontend):
'''
self.machine_apply()
if not self._is_machine_name:
logging.info('Running user applier for Chromium')
logging.debug('Running user applier for Chromium')
self.user_apply()

View File

@ -65,8 +65,9 @@ class firefox_applier(applier_frontend):
'''
Add entry to policy set.
'''
self.policies[name] = obj
logging.info('Firefox policy \'{}\' set to {}'.format(name, obj))
if obj:
self.policies[name] = obj
logging.info('Firefox policy \'{}\' set to {}'.format(name, obj))
def get_home_page(self):
'''
@ -77,19 +78,23 @@ class firefox_applier(applier_frontend):
'Locked': False,
'StartPage': 'homepage'
})
response = self.get_hklm_string_entry_default('Homepage\\URL', 'about:config')
homepage['URL'] = response
return homepage
response = self.get_hklm_string_entry('Homepage\\URL')
if response:
homepage['URL'] = response
return homepage
return None
def get_block_about_config(self):
'''
Query BlockAboutConfig boolean property from the storage.
'''
response = self.get_hklm_string_entry_default('BlockAboutConfig', False)
if response.lower() in ['0', 'false', False, None, 'None']:
return False
return True
response = self.get_hklm_string_entry('BlockAboutConfig')
if response:
if response.lower() in ['0', 'false', False, None, 'None']:
return False
return True
return None
def machine_apply(self):
'''
@ -103,18 +108,18 @@ class firefox_applier(applier_frontend):
os.makedirs(self.__firefox_installdir, exist_ok=True)
with open(destfile, 'w') as f:
json.dump(self.policies_json, f)
logging.info('Wrote Firefox preferences to {}'.format(destfile))
logging.debug('Wrote Firefox preferences to {}'.format(destfile))
def user_apply(self):
profiles = self.get_profiles()
profiledir = os.path.join(util.get_homedir(self.username), self.__user_settings_dir)
for profile in profiles:
logging.info('Found Firefox profile in {}/{}'.format(profiledir, profile))
logging.debug('Found Firefox profile in {}/{}'.format(profiledir, profile))
def apply(self):
self.machine_apply()
if not self._is_machine_name:
logging.info('Running user applier for Firefox')
logging.debug('Running user applier for Firefox')
self.user_apply()