Stabily sort matches
OpenSSH's Match declarations are applied first-match-wins. However, we can't safely define two Matches that might overlap unless we first sort the keys, as Python (and Jinja) dicts don't guarantee the order of dict keys, We also won't scramble the match sequence every time the user adds, removes or renames a match, and so we give the user clearer, more concise diffs as when they apply changes. Finally, we leave a comment on the Match line identifying where the Match rule came from, to assist in troubleshooting.
This commit is contained in:
parent
710175799b
commit
6229a6d122
@ -227,12 +227,12 @@
|
|||||||
|
|
||||||
{# Handle matches last as they need to go at the bottom #}
|
{# Handle matches last as they need to go at the bottom #}
|
||||||
{%- if 'matches' in sshd_config %}
|
{%- if 'matches' in sshd_config %}
|
||||||
{%- for match in sshd_config['matches'].values() %}
|
{%- for name, match in sshd_config['matches']|dictsort %}
|
||||||
Match
|
Match
|
||||||
{#- Set up the match criteria -#}
|
{#- Set up the match criteria -#}
|
||||||
{%- for criteria in match['type'].keys()|sort() -%}
|
{%- for criteria in match['type'].keys()|sort() -%}
|
||||||
{{- ' ' }}{{criteria }} {{ join_to_string(match['type'], criteria) -}}
|
{{- ' ' }}{{criteria }} {{ join_to_string(match['type'], criteria) -}}
|
||||||
{%- endfor -%}
|
{%- endfor %} #{{ name }}
|
||||||
{#- Set up the applied options -#}
|
{#- Set up the applied options -#}
|
||||||
{%- for keyword in match['options'].keys() %}
|
{%- for keyword in match['options'].keys() %}
|
||||||
{{ render_option(keyword, '', config_dict=match['options']) }}
|
{{ render_option(keyword, '', config_dict=match['options']) }}
|
||||||
|
Loading…
Reference in New Issue
Block a user