diff --git a/gpoa/gpupdate b/gpoa/gpupdate index 3f26f4f..6d193d7 100755 --- a/gpoa/gpupdate +++ b/gpoa/gpupdate @@ -25,6 +25,7 @@ import os import sys import pwd import signal +from storage import Dconf_registry from util.users import ( is_root @@ -83,6 +84,11 @@ def parse_cli_arguments(): type=int, default=5, help='Set logging verbosity level') + argparser.add_argument('-f', + '--force', + action='store_true', + default=False, + help='Force GPT download') argparser.add_argument('-s', '--system', action='store_true', @@ -165,6 +171,7 @@ def main(): gettext.bindtextdomain('gpoa', '/usr/lib/python3/site-packages/gpoa/locale') gettext.textdomain('gpoa') set_loglevel(args.loglevel) + Dconf_registry._force = args.force gpo_appliers = runner_factory(args, process_target(args.target)) if gpo_appliers: diff --git a/gpoa/util/dbus.py b/gpoa/util/dbus.py index 26a3bec..74551d3 100644 --- a/gpoa/util/dbus.py +++ b/gpoa/util/dbus.py @@ -20,6 +20,7 @@ import dbus from .logging import log from .users import is_root +from storage import Dconf_registry class dbus_runner: @@ -72,6 +73,7 @@ class dbus_runner: if self.username: logdata = dict({'username': self.username}) log('D6', logdata) + gpupdate = 'gpupdate' if not Dconf_registry._force else 'gpupdate_force' if is_root(): # oddjobd-gpupdate's ACL allows access to this method # only for superuser. This method is called via PAM @@ -95,7 +97,7 @@ class dbus_runner: result = self.system_bus.call_blocking(self.bus_name, self._object_path, self.interface_name, - 'gpupdate', + gpupdate, None, [], timeout=self._synchronous_timeout) @@ -106,11 +108,12 @@ class dbus_runner: raise exc else: log('D11') + gpupdate_computer = 'gpupdate_computer' if not Dconf_registry._force else 'gpupdate_computer_force' try: result = self.system_bus.call_blocking(self.bus_name, self._object_path, self.interface_name, - 'gpupdate_computer', + gpupdate_computer, None, # The following positional parameter is called "args". # There is no official documentation for it.