mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
Merge pull request #8263 from Security-Onion-Solutions/kilo
Remove Jinja from yaml files before parsing
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
@@ -26,6 +27,7 @@ hostgroupsFilename = "/opt/so/saltstack/local/salt/firewall/hostgroups.local.yam
|
|||||||
portgroupsFilename = "/opt/so/saltstack/local/salt/firewall/portgroups.local.yaml"
|
portgroupsFilename = "/opt/so/saltstack/local/salt/firewall/portgroups.local.yaml"
|
||||||
defaultPortgroupsFilename = "/opt/so/saltstack/default/salt/firewall/portgroups.yaml"
|
defaultPortgroupsFilename = "/opt/so/saltstack/default/salt/firewall/portgroups.yaml"
|
||||||
supportedProtocols = ['tcp', 'udp']
|
supportedProtocols = ['tcp', 'udp']
|
||||||
|
readonly = False
|
||||||
|
|
||||||
def showUsage(options, args):
|
def showUsage(options, args):
|
||||||
print('Usage: {} [OPTIONS] <COMMAND> [ARGS...]'.format(sys.argv[0]))
|
print('Usage: {} [OPTIONS] <COMMAND> [ARGS...]'.format(sys.argv[0]))
|
||||||
@@ -70,10 +72,26 @@ def checkApplyOption(options):
|
|||||||
return apply(None, None)
|
return apply(None, None)
|
||||||
|
|
||||||
def loadYaml(filename):
|
def loadYaml(filename):
|
||||||
|
global readonly
|
||||||
|
|
||||||
file = open(filename, "r")
|
file = open(filename, "r")
|
||||||
return yaml.safe_load(file.read())
|
content = file.read()
|
||||||
|
|
||||||
|
# Remove Jinja templating (for read-only operations)
|
||||||
|
if "{%" in content or "{{" in content:
|
||||||
|
content = content.replace("{{ ssh_port }}", "22")
|
||||||
|
pattern = r'.*({%|{{|}}|%}).*'
|
||||||
|
content = re.sub(pattern, "", content)
|
||||||
|
readonly = True
|
||||||
|
|
||||||
|
return yaml.safe_load(content)
|
||||||
|
|
||||||
def writeYaml(filename, content):
|
def writeYaml(filename, content):
|
||||||
|
global readonly
|
||||||
|
|
||||||
|
if readonly:
|
||||||
|
raise Exception("Cannot write yaml file that has been flagged as read-only")
|
||||||
|
|
||||||
file = open(filename, "w")
|
file = open(filename, "w")
|
||||||
return yaml.dump(content, file)
|
return yaml.dump(content, file)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user