Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
4cf4784a
Commit
4cf4784a
authored
Oct 18, 2015
by
Ad Schellevis
Committed by
Franco Fichtner
Oct 18, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(Captiveportal, new) overlay user template content in fetch_template
(cherry picked from commit
8455fef5
)
parent
f992f1b7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
4 deletions
+30
-4
fetch_template.py
...opnsense/scripts/OPNsense/CaptivePortal/fetch_template.py
+28
-2
actions_captiveportal.conf
...pnsense/service/conf/actions.d/actions_captiveportal.conf
+2
-2
No files found.
src/opnsense/scripts/OPNsense/CaptivePortal/fetch_template.py
View file @
4cf4784a
...
...
@@ -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
))
src/opnsense/service/conf/actions.d/actions_captiveportal.conf
View file @
4cf4784a
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment