aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Erdmann <dywi@mailerd.de>2013-07-16 00:29:05 +0200
committerAndré Erdmann <dywi@mailerd.de>2013-07-16 00:29:05 +0200
commit6e32f77915e8bf388059f79750a5a30bf8d2fb49 (patch)
tree8888b01b1618dd75fd63ecbad17417e91548150f
parentroverlay/config/defconfig: set EVENT_HOOK_RESTRICT (diff)
downloadR_overlay-6e32f77915e8bf388059f79750a5a30bf8d2fb49.tar.gz
R_overlay-6e32f77915e8bf388059f79750a5a30bf8d2fb49.tar.bz2
R_overlay-6e32f77915e8bf388059f79750a5a30bf8d2fb49.zip
--run-script: respect EvENT_HOOK_RESTRICT
-rw-r--r--roverlay/hook.py4
-rw-r--r--roverlay/main.py25
2 files changed, 17 insertions, 12 deletions
diff --git a/roverlay/hook.py b/roverlay/hook.py
index e56aa33..262d3c2 100644
--- a/roverlay/hook.py
+++ b/roverlay/hook.py
@@ -32,12 +32,12 @@ _EVENT_POLICY = 0
class HookException ( Exception ):
pass
-def setup():
+def setup ( force=False ):
global _EVENT_SCRIPT
global _EVENT_POLICY
global _EVENT_RESTRICT
- if roverlay.config.get ( 'write_disabled', False ):
+ if roverlay.config.get ( 'write_disabled', False ) and not force:
_EVENT_SCRIPT = False
return
diff --git a/roverlay/main.py b/roverlay/main.py
index 24c02c6..7a88171 100644
--- a/roverlay/main.py
+++ b/roverlay/main.py
@@ -497,16 +497,21 @@ def main (
if do_runscript:
import roverlay.tools.shenv
- sys.exit (
- roverlay.tools.shenv.run_script (
- script = extra_opts ['run_script'],
- phase = "user",
- argv = extra_opts ['run_script_args'],
- return_success = False,
- log_output = False,
- initial_dir = os.getcwd(),
- ).returncode
- )
+ import roverlay.hook
+ roverlay.hook.setup ( force=True )
+ if roverlay.hook.phase_allowed ( "user" ):
+ sys.exit (
+ roverlay.tools.shenv.run_script (
+ script = extra_opts ['run_script'],
+ phase = "user",
+ argv = extra_opts ['run_script_args'],
+ return_success = False,
+ log_output = False,
+ initial_dir = os.getcwd(),
+ ).returncode
+ )
+ else:
+ die ( "--run-script: 'user' phase is not allowed." )
elif do_setupdirs:
sys.exit ( run_setupdirs (
conf, extra_opts['target_uid'], extra_opts['target_gid']