templating - road to web ui
This commit is contained in:
@@ -3,37 +3,45 @@ import jinja2, glob, os, pathlib, copy, crypt, random, string
|
||||
class Templator :
|
||||
|
||||
def __init__(self, config, input_path, output_path, target_path) :
|
||||
self.__config = config
|
||||
self.__config_global = copy.deepcopy(config)
|
||||
if config["MULTISITE"] == "yes" and config["SERVER_NAME"] != "" :
|
||||
self.__config_sites = {}
|
||||
for server_name in config["SERVER_NAME"].split(" ") :
|
||||
self.__config_sites[server_name] = {}
|
||||
for k, v in config.items() :
|
||||
if k.startswith(server_name + "_") :
|
||||
self.__config_sites[server_name][k.replace(server_name + "_", "", 1)] = v
|
||||
del self.__config_global[k]
|
||||
self.__input_path = input_path
|
||||
self.__output_path = output_path
|
||||
self.__target_path = target_path
|
||||
if not self.__target_path.endswith("/") :
|
||||
self.__target_path += "/"
|
||||
self.__template_env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=self.__input_path), trim_blocks=True, lstrip_blocks=True)
|
||||
self.__template_env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=self.__input_path), lstrip_blocks=True)
|
||||
|
||||
def render_global(self) :
|
||||
return self.__render("global")
|
||||
|
||||
def render_site(self, server_name=None, first_server=None) :
|
||||
if server_name is None :
|
||||
server_name = self.__config["SERVER_NAME"]
|
||||
server_name = self.__config_global["SERVER_NAME"]
|
||||
if first_server is None :
|
||||
first_server = self.__config["SERVER_NAME"].split(" ")[0]
|
||||
first_server = self.__config_global["SERVER_NAME"].split(" ")[0]
|
||||
return self.__render("site", server_name, first_server)
|
||||
|
||||
def __prepare_config(self, type, server_name=None, first_server=None) :
|
||||
real_config = copy.deepcopy(self.__config)
|
||||
real_config = copy.deepcopy(self.__config_global)
|
||||
if type == "site" and self.__config_global["MULTISITE"] == "yes" :
|
||||
site_config = copy.deepcopy(self.__config_sites[first_server])
|
||||
real_config.update(site_config)
|
||||
if not server_name is None :
|
||||
real_config["SERVER_NAME"] = server_name
|
||||
if not first_server is None :
|
||||
real_config["FIRST_SERVER"] = first_server
|
||||
real_config["NGINX_PREFIX"] = self.__target_path
|
||||
if real_config["MULTISITE"] == "yes" and type == "site" :
|
||||
if self.__config_global["MULTISITE"] == "yes" and type == "site" :
|
||||
real_config["NGINX_PREFIX"] += first_server + "/"
|
||||
real_config["ROOT_FOLDER"] += "/" + first_server
|
||||
for variable, value in self.__config.items() :
|
||||
if variable.startswith(first_server + "_") :
|
||||
real_config[variable.replace(first_server + "_", "", 1)] = value
|
||||
if real_config["ROOT_SITE_SUBFOLDER"] != "" :
|
||||
real_config["ROOT_FOLDER"] += "/" + real_config["ROOT_SITE_SUBFOLDER"]
|
||||
return real_config
|
||||
|
||||
@@ -1 +1 @@
|
||||
./main.py --settings /opt/work/bunkerized-nginx/settings.json --templates /opt/work/bunkerized-nginx/confs2 --output /tmp/debug --variables /tmp/variables.env
|
||||
./main.py --settings /opt/work/bunkerized-nginx/settings.json --templates /opt/work/bunkerized-nginx/confs --output /tmp/debug --variables /tmp/variables.env
|
||||
|
||||
Reference in New Issue
Block a user