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
f763963c
Commit
f763963c
authored
Feb 01, 2016
by
Ad Schellevis
Committed by
Franco Fichtner
Feb 17, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(configd) code style cleanups
(cherry picked from commit
9c84f2b4
)
parent
52093041
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
93 additions
and
67 deletions
+93
-67
__init__.py
src/opnsense/service/modules/__init__.py
+5
-0
template_helpers.py
src/opnsense/service/modules/addons/template_helpers.py
+3
-1
config.py
src/opnsense/service/modules/config.py
+10
-9
daemonize.py
src/opnsense/service/modules/daemonize.py
+1
-0
ph_inline_actions.py
src/opnsense/service/modules/ph_inline_actions.py
+2
-2
processhandler.py
src/opnsense/service/modules/processhandler.py
+54
-39
template.py
src/opnsense/service/modules/template.py
+18
-16
No files found.
src/opnsense/service/modules/__init__.py
View file @
f763963c
...
...
@@ -24,12 +24,17 @@
POSSIBILITY OF SUCH DAMAGE.
"""
def
singleton
(
cls
,
*
args
,
**
kwargs
):
""" singleton pattern, use ad decorator
:param cls:
"""
instances
=
{}
# noinspection PyShadowingNames
def
getinstance
(
*
args
,
**
kwargs
):
if
cls
not
in
instances
:
instances
[
cls
]
=
cls
(
*
args
,
**
kwargs
)
return
instances
[
cls
]
return
getinstance
src/opnsense/service/modules/addons/template_helpers.py
View file @
f763963c
...
...
@@ -30,6 +30,8 @@
from
operator
import
itemgetter
# noinspection PyPep8Naming
class
Helpers
(
object
):
def
__init__
(
self
,
template_in_data
):
""" initialize template helpers
...
...
@@ -82,7 +84,7 @@ class Helpers(object):
return
result
else
:
# resort list by tag
return
sorted
(
result
,
key
=
itemgetter
(
sortBy
))
return
sorted
(
result
,
key
=
itemgetter
(
sortBy
))
def
getUUIDtag
(
self
,
uuid
):
""" retrieve tag name of registered uuid, returns __not_found__ if none available
...
...
src/opnsense/service/modules/config.py
View file @
f763963c
...
...
@@ -28,14 +28,14 @@
package : configd
function: config handler
"""
__author__
=
'Ad Schellevis'
import
os
import
stat
import
collections
import
copy
import
xml.etree.cElementTree
as
ElementTree
__author__
=
'Ad Schellevis'
class
Config
(
object
):
def
__init__
(
self
,
filename
):
...
...
@@ -62,14 +62,14 @@ class Config(object):
self
.
_config_data
[
'__uuid_tags__'
]
=
self
.
__uuid_tags
self
.
_file_mod
=
mod_time
def
_traverse
(
self
,
xml
N
ode
):
def
_traverse
(
self
,
xml
_n
ode
):
""" traverse xml node and return ordered dictionary structure
:param xml
N
ode: ElementTree node
:param xml
_n
ode: ElementTree node
:return: collections.OrderedDict
"""
this_item
=
collections
.
OrderedDict
()
if
len
(
list
(
xml
N
ode
))
>
0
:
for
item
in
list
(
xml
N
ode
):
if
len
(
list
(
xml
_n
ode
))
>
0
:
for
item
in
list
(
xml
_n
ode
):
item_content
=
self
.
_traverse
(
item
)
if
'uuid'
in
item
.
attrib
:
self
.
__uuid_data
[
item
.
attrib
[
'uuid'
]]
=
item_content
...
...
@@ -88,7 +88,7 @@ class Config(object):
this_item
[
item
.
tag
]
=
self
.
_traverse
(
item
)
else
:
# last node, return text
return
xml
N
ode
.
text
return
xml
_n
ode
.
text
return
this_item
...
...
@@ -98,14 +98,15 @@ class Config(object):
@param elem: cElementTree
@param level: Currentlevel
"""
i
=
"
\n
"
+
level
*
" "
i
=
"
\n
"
+
level
*
" "
if
len
(
elem
):
if
not
elem
.
text
or
not
elem
.
text
.
strip
():
elem
.
text
=
i
+
" "
for
e
in
elem
:
self
.
indent
(
e
,
level
+
1
)
self
.
indent
(
e
,
level
+
1
)
if
not
e
.
tail
or
not
e
.
tail
.
strip
():
e
.
tail
=
i
+
" "
# noinspection PyUnboundLocalVariable
if
not
e
.
tail
or
not
e
.
tail
.
strip
():
e
.
tail
=
i
else
:
...
...
src/opnsense/service/modules/daemonize.py
View file @
f763963c
...
...
@@ -58,6 +58,7 @@ class Daemonize(object):
def
sigterm
(
self
,
signum
,
frame
):
"""
These actions will be done after SIGTERM.
:param frame:
"""
self
.
logger
.
warn
(
"Caught signal
%
s. Stopping daemon."
%
signum
)
os
.
remove
(
self
.
pid
)
...
...
src/opnsense/service/modules/ph_inline_actions.py
View file @
f763963c
...
...
@@ -48,7 +48,7 @@ def execute(action, parameters):
# generate template
tmpl
=
template
.
Template
(
action
.
root_dir
)
conf
=
config
.
Config
(
action
.
config
)
tmpl
.
set
C
onfig
(
conf
.
get
())
tmpl
.
set
_c
onfig
(
conf
.
get
())
filenames
=
tmpl
.
generate
(
parameters
)
del
conf
...
...
@@ -78,7 +78,7 @@ def execute(action, parameters):
# list all available configd actions
from
processhandler
import
ActionHandler
act_handler
=
ActionHandler
()
actions
=
act_handler
.
list
A
ctions
([
'message'
,
'description'
])
actions
=
act_handler
.
list
_a
ctions
([
'message'
,
'description'
])
if
unicode
(
parameters
)
.
lower
()
==
'json'
:
import
json
...
...
src/opnsense/service/modules/processhandler.py
View file @
f763963c
This diff is collapsed.
Click to expand it.
src/opnsense/service/modules/template.py
View file @
f763963c
...
...
@@ -28,9 +28,6 @@
package : configd
function: template handler, generate configuration files using templates
"""
__author__
=
'Ad Schellevis'
import
os
import
os.path
import
syslog
...
...
@@ -40,9 +37,10 @@ import codecs
import
jinja2
import
addons.template_helpers
__author__
=
'Ad Schellevis'
class
Template
(
object
):
class
Template
(
object
):
def
__init__
(
self
,
target_root_directory
=
"/"
):
""" constructor
:return:
...
...
@@ -54,11 +52,12 @@ class Template(object):
self
.
_target_root_directory
=
target_root_directory
# setup jinja2 environment
self
.
_template_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
__file__
))
+
'/../templates/'
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
,
extensions
=
[
"jinja2.ext.do"
,])
extensions
=
[
"jinja2.ext.do"
,
])
def
_read_manifest
(
self
,
filename
):
@
staticmethod
def
_read_manifest
(
filename
):
"""
:param filename: manifest filename (path/+MANIFEST)
...
...
@@ -72,7 +71,8 @@ class Template(object):
return
result
def
_read_targets
(
self
,
filename
):
@
staticmethod
def
_read_targets
(
filename
):
""" read raw target filename masks
:param filename: targets filename (path/+TARGETS)
...
...
@@ -118,18 +118,19 @@ class Template(object):
return
result
def
set
C
onfig
(
self
,
config_data
):
def
set
_c
onfig
(
self
,
config_data
):
""" set config data
:param config_data: config data as dictionary/list structure
:return: None
"""
if
type
(
config_data
)
in
(
dict
,
collections
.
OrderedDict
):
if
type
(
config_data
)
in
(
dict
,
collections
.
OrderedDict
):
self
.
_config
=
config_data
else
:
# no data given, reset
self
.
_config
=
{}
def
__find_string_tags
(
self
,
instr
):
@
staticmethod
def
__find_string_tags
(
instr
):
"""
:param instr: string with optional tags [field.$$]
:return:
...
...
@@ -195,7 +196,8 @@ class Template(object):
return
result
def
_create_directory
(
self
,
filename
):
@
staticmethod
def
_create_directory
(
filename
):
""" create directory
:param filename: create path for filename ( if not existing )
:return: None
...
...
@@ -232,7 +234,7 @@ class Template(object):
result_filenames
[
new_filename
]
=
copy
.
deepcopy
(
result_filenames
[
filename
])
result_filenames
[
new_filename
][
key
]
=
target_filters
[
target_filter
][
key
]
template_filename
=
'
%
s/
%
s'
%
(
module_name
.
replace
(
'.'
,
'/'
),
src_template
)
template_filename
=
'
%
s/
%
s'
%
(
module_name
.
replace
(
'.'
,
'/'
),
src_template
)
# parse template, make sure issues can be traced back to their origin
try
:
j2_page
=
self
.
_j2_env
.
get_template
(
template_filename
)
...
...
@@ -269,8 +271,8 @@ class Template(object):
# it was in the original template.
# It looks like Jinja sometimes isn't consistent on placing this last end-of-line in.
if
len
(
content
)
>
1
and
content
[
-
1
]
!=
'
\n
'
:
src_file
=
'
%
s
%
s'
%
(
self
.
_template_dir
,
template_filename
)
src_file_handle
=
open
(
src_file
,
'r'
)
src_file
=
'
%
s
%
s'
%
(
self
.
_template_dir
,
template_filename
)
src_file_handle
=
open
(
src_file
,
'r'
)
src_file_handle
.
seek
(
-
1
,
os
.
SEEK_END
)
last_bytes_template
=
src_file_handle
.
read
()
src_file_handle
.
close
()
...
...
@@ -299,7 +301,7 @@ class Template(object):
# direct match
do_generate
=
True
elif
wildcard_pos
==
-
1
and
len
(
module_name
)
<
len
(
template_name
)
\
and
'
%
s.'
%
module_name
==
template_name
[
0
:
len
(
module_name
)
+
1
]:
and
'
%
s.'
%
module_name
==
template_name
[
0
:
len
(
module_name
)
+
1
]:
# match child item
do_generate
=
True
...
...
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