Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
djnro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
itminedu
djnro
Commits
bd53a1a0
Commit
bd53a1a0
authored
Nov 22, 2016
by
Zenon Mousmoulas
Committed by
GitHub
Nov 22, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #33 from zmousm/fix/master/servdata_deduplist
Servdata consumer templates: server list handling fixes
parents
09445189
ce84d060
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
13 deletions
+26
-13
extras/freeradius-proxy.tpl
extras/freeradius-proxy.tpl
+18
-10
extras/radsecproxy.tpl
extras/radsecproxy.tpl
+8
-3
No files found.
extras/freeradius-proxy.tpl
View file @
bd53a1a0
...
...
@@ -17,6 +17,9 @@ def wildcard_realm_least_precedence(a, b):
return
1
else:
return
0
def
deduplicated_list
(
seq
)
:
seen =
set()
return
[
x
for
x
in
seq
if
not
(
x
in
seen
or
seen.add
(
x
))]
%
>
\
% for inst in insts:
% if inst['type'] in (1, 3) and 'realms' in inst:
...
...
@@ -24,13 +27,15 @@ def wildcard_realm_least_precedence(a, b):
<%
doc
>
The
following
one
-
liner
does
the
equivalent
of
:
inst_servers
=
set
()
inst_servers
=
[]
for
r
in
inst
[
'realms'
]:
if
'proxy_to'
in
inst
[
'realms'
][
r
]:
inst_servers
.
update
(
inst
[
'realms'
][
r
][
'proxy_to'
])
inst_servers
.
append
(
inst
[
'realms'
][
r
][
'proxy_to'
])
#
deduplicate
like
set
,
but
preserve
order
inst_servers
=
deduplicated_list
(
inst_servers
)
for
srv
in
inst_servers
:
</%
doc
>
\
%
for
srv
in
se
t
([
s
for
r
in
inst
[
'realms'
]
for
s
in
inst
[
'realms'
][
r
][
'proxy_to'
]
if
'proxy_to'
in
inst
[
'realms'
][
r
]]):
%
for
srv
in
deduplicated_lis
t
([
s
for
r
in
inst
[
'realms'
]
for
s
in
inst
[
'realms'
][
r
][
'proxy_to'
]
if
'proxy_to'
in
inst
[
'realms'
][
r
]]):
%
if
'seen'
in
servers
[
srv
]:
#
server
$
{
srv
}
defined
previously
%
else
:
...
...
@@ -59,10 +64,14 @@ servers[srv]['seen'] = True
<
%
realm_servers =
{}
for
t
in
['
auth
',
'
acct
',
'
auth
+
acct
']
:
realm_servers[t] =
se
t([s
for
s
in
inst
['
realms
'][
realm
]['
proxy_to
']
realm_servers[t] =
deduplicated_lis
t([s
for
s
in
inst
['
realms
'][
realm
]['
proxy_to
']
if
servers
[
s
]['
rad_pkt_type
'
] =
=
t
])
if
len
(
realm_servers
['
auth
+
acct
'])
!=
len
(
inst
['
realms
'][
realm
]['
proxy_to
'])
:
realm_servers
['
auth
']
+=
realm_servers
['
auth
+
acct
']
realm_servers
['
acct
']
+=
realm_servers
['
auth
+
acct
']
realm_servers
['
auth
+
acct
'
] =
[]
%
>
\
% if len(realm_servers['auth+acct'])
== len(inst['realms'][realm]['proxy_to'])
:
% if len(realm_servers['auth+acct'])
> 0
:
home_server_pool $
{
realm
|
realm_disarm
}
{
type = fail-over
% for srv in realm_servers['auth+acct']:
...
...
@@ -81,16 +90,15 @@ home_server_pool ${realm | realm_disarm}_auth {
% if len(realm_servers['acct']) > 0:
home_server_pool $
{
realm
|
realm_disarm
}
_acct {
type = fail-over
% for srv in realm_servers['a
uth
']:
% for srv in realm_servers['a
cct
']:
home_server = $
{
srv
}
% endfor
}
% endif
% endif
% if len(realm_servers['auth+acct']) == len(inst['realms'][realm]['proxy_to']) \
or len(realm_servers['auth']) > 0:
% if len(realm_servers['auth+acct']) > 0 or len(realm_servers['auth']) > 0:
realm $
{
realm
|
realm_regex
}
{
% if len(realm_servers['auth+acct'])
== len(inst['realms'][realm]['proxy_to'])
:
% if len(realm_servers['auth+acct'])
> 0
:
pool = $
{
realm
|
realm_disarm
}
% else:
auth_pool = $
{
realm
|
realm_disarm
}
_auth
...
...
extras/radsecproxy.tpl
View file @
bd53a1a0
...
...
@@ -17,6 +17,9 @@ def wildcard_realm_least_precedence(a, b):
return
1
else:
return
0
def
deduplicated_list
(
seq
)
:
seen =
set()
return
[
x
for
x
in
seq
if
not
(
x
in
seen
or
seen.add
(
x
))]
%
>
\
<
%
for
inst
in
insts:
...
...
@@ -62,13 +65,15 @@ clients[client]['seen'] = True
<
%
doc
>
The following one-liner does the equivalent of:
inst_servers =
set()
inst_servers =
[]
for r in inst['realms']:
if 'proxy_to' in inst['realms'][r]:
inst_servers.update(inst['realms'][r]['proxy_to'])
inst_servers.append(inst['realms'][r]['proxy_to'])
# deduplicate like set, but preserve order
inst_servers = deduplicated_list(inst_servers)
for srv in inst_servers:
</
%
doc>
\
% for srv in
se
t([s for r in inst['realms'] for s in inst['realms'][r]['proxy_to'] if 'proxy_to' in inst['realms'][r]]):
% for srv in
deduplicated_lis
t([s for r in inst['realms'] for s in inst['realms'][r]['proxy_to'] if 'proxy_to' in inst['realms'][r]]):
% if 'seen' in servers[srv]:
# server $
{
srv
}
defined previously
% else:
...
...
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