mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-15 09:04:39 +00:00
(Captiveportal, new) overlay user template content in fetch_template
This commit is contained in:
parent
cb08c27509
commit
8455fef593
@ -29,21 +29,47 @@
|
||||
fetch template files as base64 encoded zipfile
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import ujson
|
||||
import binascii
|
||||
import zipfile
|
||||
import StringIO
|
||||
from lib import OPNSenseConfig
|
||||
|
||||
response = dict()
|
||||
source_directory = '/usr/local/opnsense/scripts/OPNsense/CaptivePortal/htdocs_default'
|
||||
|
||||
output_data = StringIO.StringIO()
|
||||
|
||||
with zipfile.ZipFile(output_data, mode='w', compression=zipfile.ZIP_DEFLATED) as zf:
|
||||
# overlay user template data
|
||||
user_filenames = list()
|
||||
if len(sys.argv) > 1:
|
||||
# search for user template, using fileid
|
||||
cnf = OPNSenseConfig()
|
||||
template_content = cnf.get_template(sys.argv[1])
|
||||
if template_content is not None:
|
||||
try:
|
||||
input_data = StringIO.StringIO(template_content.decode('base64'))
|
||||
with zipfile.ZipFile(input_data, mode='r', compression=zipfile.ZIP_DEFLATED) as zf_in:
|
||||
for zf_info in zf_in.infolist():
|
||||
user_filenames.append(zf_info.filename)
|
||||
zf.writestr(zf_info.filename, zf_in.read(zf_info.filename))
|
||||
except zipfile.BadZipfile:
|
||||
# not in zip format
|
||||
response['error'] = 'internal xml data not in zip format, user data discarded'
|
||||
except binascii.Error:
|
||||
# not base64 encoded
|
||||
response['error'] = 'internal xml data not in base64 format, user data discarded'
|
||||
|
||||
# read standard template from disk
|
||||
for root, dirs, files in os.walk(source_directory):
|
||||
for filename in files:
|
||||
filename = '%s/%s' % (root,filename)
|
||||
output_filename = filename[len(source_directory)+1:]
|
||||
zf.writestr(output_filename, open(filename,'rb').read())
|
||||
if output_filename not in user_filenames:
|
||||
zf.writestr(output_filename, open(filename,'rb').read())
|
||||
|
||||
response = {'payload': output_data.getvalue().encode('base64')}
|
||||
response['payload'] = output_data.getvalue().encode('base64')
|
||||
response['size'] = len(response['payload'])
|
||||
print(ujson.dumps(response))
|
||||
|
||||
@ -36,9 +36,9 @@ message:restarting captiveportal services
|
||||
|
||||
[fetch_template]
|
||||
command:/usr/local/opnsense/scripts/OPNsense/CaptivePortal/fetch_template.py
|
||||
parameters:
|
||||
parameters:%s
|
||||
type:script_output
|
||||
message:fetch captiveportal web template package
|
||||
message:fetch captiveportal web template package %s
|
||||
|
||||
[strip_template]
|
||||
command:/usr/local/opnsense/scripts/OPNsense/CaptivePortal/strip_template.py
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user