mirror of
https://github.com/lucaspalomodevelop/opnsense-core.git
synced 2026-03-13 00:07:27 +00:00
configd: support "errors:no" clause on actions, closes https://github.com/opnsense/core/issues/8525
This commit is contained in:
parent
8d3d392ae6
commit
9f7a1fa062
@ -42,6 +42,7 @@ class BaseAction:
|
||||
self.parameters = action_parameters.get('parameters', None)
|
||||
self.message = action_parameters.get('message', None)
|
||||
self.description = action_parameters.get('description', '')
|
||||
self.disable_errors = action_parameters.get('errors', '').lower().strip() == 'no'
|
||||
if action_parameters.get('cache_ttl', '').isdigit():
|
||||
self.cache_ttl = int(action_parameters['cache_ttl'])
|
||||
else:
|
||||
|
||||
@ -37,18 +37,10 @@ class Action(BaseAction):
|
||||
except TypeError as e:
|
||||
return str(e)
|
||||
|
||||
try:
|
||||
exit_status = subprocess.call(script_command, env=self.config_environment, shell=True)
|
||||
# send response
|
||||
if exit_status == 0:
|
||||
return 'OK'
|
||||
else:
|
||||
syslog_error('[%s] returned exit status %d' % (message_uuid, exit_status))
|
||||
return 'Error (%d)' % exit_status
|
||||
except Exception as script_exception:
|
||||
syslog_error('[%s] Script action failed with %s at %s' % (
|
||||
message_uuid,
|
||||
script_exception,
|
||||
traceback.format_exc()
|
||||
))
|
||||
return 'Execute error'
|
||||
proc = subprocess.run(script_command, env=self.config_environment, shell=True)
|
||||
# send response
|
||||
if proc.returncode == 0 or self.disable_errors:
|
||||
return 'OK'
|
||||
else:
|
||||
syslog_error('[%s] returned exit status %d' % (message_uuid, proc.returncode))
|
||||
return 'Error (%d)' % proc.returncode
|
||||
|
||||
@ -75,8 +75,8 @@ class Action(BaseAction):
|
||||
'filename': output_stream.name,
|
||||
'expire': time.time() + self.cache_ttl
|
||||
}
|
||||
subprocess.check_call(script_command, env=self.config_environment, shell=True,
|
||||
stdout=output_stream, stderr=error_stream)
|
||||
subprocess.run(script_command, env=self.config_environment, shell=True,
|
||||
check=not self.disable_errors, stdout=output_stream, stderr=error_stream)
|
||||
output_stream.seek(0)
|
||||
error_stream.seek(0)
|
||||
script_output = output_stream.read()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user