From 5f38b93d67c641598d816712ef2a77db6876ceac Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 20 Feb 2015 14:45:56 +0100 Subject: [PATCH] add alternate root location for template generation (for local testing) --- src/opnsense/service/conf/actions_template.conf | 1 + src/opnsense/service/modules/ph_inline_actions.py | 2 +- src/opnsense/service/modules/template.py | 9 ++++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/opnsense/service/conf/actions_template.conf b/src/opnsense/service/conf/actions_template.conf index 409b85ce6..c26387b47 100644 --- a/src/opnsense/service/conf/actions_template.conf +++ b/src/opnsense/service/conf/actions_template.conf @@ -4,3 +4,4 @@ parameters:%s type:inline message:generate template %s config:/conf/config.xml +root_dir:/ diff --git a/src/opnsense/service/modules/ph_inline_actions.py b/src/opnsense/service/modules/ph_inline_actions.py index e9695cf1e..118d65a16 100644 --- a/src/opnsense/service/modules/ph_inline_actions.py +++ b/src/opnsense/service/modules/ph_inline_actions.py @@ -47,7 +47,7 @@ def execute(action,parameters): if action.command == 'template.reload': import template import config - tmpl = template.Template() + tmpl = template.Template(action.root_dir) conf = config.Config(action.config) tmpl.setConfig(conf.get()) filenames = tmpl.generate(parameters) diff --git a/src/opnsense/service/modules/template.py b/src/opnsense/service/modules/template.py index a8eb4d0e0..38c589302 100644 --- a/src/opnsense/service/modules/template.py +++ b/src/opnsense/service/modules/template.py @@ -42,11 +42,16 @@ import jinja2 class Template(object): - def __init__(self): + def __init__(self,target_root_directory="/"): """ constructor :return: """ + # init config (config.xml) data self._config = {} + + # set target root + self._target_root_directory = target_root_directory + # setup jinja2 environment self._template_dir = os.path.dirname(os.path.abspath(__file__))+'/../templates/' self._j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(self._template_dir),trim_blocks=True) @@ -229,6 +234,8 @@ class Template(object): # render page and write to disc content = j2_page.render(cnf_data) + # prefix filename with defined root directory + filename = ('%s/%s'%(self._target_root_directory, filename)).replace('//','/') if create_directory: # make sure the target directory exists self._create_directory(filename)