Skip to content

Commit c05019a

Browse files
committed
feat(tofs): switch to tofs
1 parent 7d4a642 commit c05019a

26 files changed

+589
-300
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
control 'UFW configuration' do
2+
3+
title 'Test UFW configuration'
4+
5+
describe directory('/etc/ufw') do
6+
it { should exist }
7+
end
8+
9+
describe file('/etc/ufw/ufw.conf') do
10+
its('content') { should include 'ENABLED=' }
11+
its('content') { should include 'LOGLEVEL=' }
12+
end
13+
14+
describe command('ufw status verbose | grep Status') do
15+
its('exit_status') { should eq 0 }
16+
its('stdout') { should match /active/ }
17+
end
18+
19+
describe command('ufw status verbose | grep Logging') do
20+
its('exit_status') { should eq 0 }
21+
its('stdout') { should match /low/ }
22+
end
23+
24+
describe command('ufw status | grep MySQL') do
25+
its('exit_status') { should eq 0 }
26+
its('stdout') { should match /ALLOW/ }
27+
end
28+
29+
describe command('ufw status | grep Postgresql') do
30+
its('exit_status') { should eq 0 }
31+
its('stdout') { should match /LIMIT/ }
32+
end
33+
34+
describe command('ufw status | grep SSH223') do
35+
its('exit_status') { should eq 0 }
36+
its('stdout') { should match /DENY/ }
37+
end
38+
39+
describe command('ufw status | grep 10.0.0.0') do
40+
its('exit_status') { should eq 0 }
41+
its('stdout') { should match /DENY/ }
42+
end
43+
44+
describe command('ufw status | grep 22/tcp') do
45+
its('exit_status') { should eq 0 }
46+
its('stdout') { should match /LIMIT/ }
47+
end
48+
49+
describe command('ufw status | grep 80/tcp') do
50+
its('exit_status') { should eq 0 }
51+
its('stdout') { should match /DENY/ }
52+
end
53+
54+
describe command('ufw status | grep 443/tcp') do
55+
its('exit_status') { should eq 0 }
56+
its('stdout') { should match /ALLOW/ }
57+
end
58+
59+
describe command('ufw status | grep 10.0.0.1') do
60+
its('exit_status') { should eq 0 }
61+
its('stdout') { should match /DENY/ }
62+
end
63+
64+
describe command('ufw status | grep 10.0.0.2') do
65+
its('exit_status') { should eq 0 }
66+
its('stdout') { should match /DENY/ }
67+
end
68+
end
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
control 'UFW package' do
2+
title 'should be installed'
3+
4+
describe package('ufw') do
5+
it { should be_installed }
6+
end
7+
end

test/integration/ufw/controls/ufw.rb

Lines changed: 0 additions & 71 deletions
This file was deleted.

ufw/config/applications.sls

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- set sls_enable_service = tplroot ~ '.service.enable' %}
8+
{%- set sls_reload_service = tplroot ~ '.service.reload' %}
9+
{%- from tplroot ~ "/map.jinja" import ufw with context %}
10+
11+
include:
12+
- {{ sls_package_install }}
13+
- {{ sls_enable_service }}
14+
- {{ sls_reload_service }}
15+
16+
# Applications
17+
{%- for app_name, app_details in ufw.get('applications', {}).items() %}
18+
19+
{%- set from_addr_raw = app_details.get('from_addr', [None]) %}
20+
{%- set from_addrs = [from_addr_raw] if from_addr_raw is string else from_addr_raw %}
21+
22+
{%- for from_addr in from_addrs %}
23+
{%- set deny = app_details.get('deny', None) %}
24+
{%- set limit = app_details.get('limit', None) %}
25+
{%- set method = 'deny' if deny else ('limit' if limit else 'allow') %}
26+
{%- set to_addr = app_details.get('to_addr', None) %}
27+
{%- set comment = app_details.get('comment', None) %}
28+
29+
{%- if from_addr is not none %}
30+
ufw-app-{{method}}-{{app_name}}-{{from_addr}}:
31+
{%- else %}
32+
ufw-app-{{method}}-{{app_name}}:
33+
{%- endif %}
34+
ufw.{{method}}:
35+
- app: '"{{app_name}}"'
36+
{%- if from_addr is not none %}
37+
- from_addr: {{from_addr}}
38+
{%- endif %}
39+
{%- if to_addr is not none %}
40+
- to_addr: {{to_addr}}
41+
{%- endif %}
42+
{%- if comment is not none %}
43+
- comment: '"{{comment}}"'
44+
{%- endif %}
45+
- listen_in:
46+
- cmd: reload-ufw
47+
48+
{%- endfor %}
49+
{%- endfor %}

ufw/config/file.sls

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- from tplroot ~ "/map.jinja" import ufw with context %}
8+
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
9+
10+
include:
11+
- {{ sls_package_install }}
12+
13+
ufw-default-file-file-managed:
14+
file.managed:
15+
- name: {{ ufw.default_file }}
16+
- user: root
17+
- group: root
18+
- template: jinja
19+
- source: {{ files_switch(['ufw.default.tmpl', 'ufw.default.tmpl.jinja'],
20+
lookup='ufw-default-file-file-managed'
21+
)
22+
}}
23+
- require:
24+
- sls: {{ sls_package_install }}
25+
- context:
26+
ufw_settings: {{ ufw.settings | json }}
27+
28+
ufw-sysctl-file-file-managed:
29+
file.managed:
30+
- name: {{ ufw.sysctl_file }}
31+
- user: root
32+
- group: root
33+
- template: jinja
34+
- source: {{ files_switch(['ufw.sysctl.tmpl', 'ufw.sysctl.tmpl.jinja'],
35+
lookup='ufw-sysctl-file-file-managed'
36+
)
37+
}}
38+
- require:
39+
- sls: {{ sls_package_install }}
40+
- context:
41+
ufw_sysctl: {{ ufw.sysctl | json }}
42+
43+
/etc/ufw/applications.d:
44+
file.recurse:
45+
- user: root
46+
- group: root
47+
- file_mode: 644
48+
- clean: False
49+
- source: salt://ufw/files/applications.d

ufw/config/init.sls

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
include:
5+
- .file
6+
- .services
7+
- .applications
8+
- .interfaces
9+
- .open

ufw/config/interfaces.sls

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- set sls_enable_service = tplroot ~ '.service.enable' %}
8+
{%- set sls_reload_service = tplroot ~ '.service.reload' %}
9+
{%- from tplroot ~ "/map.jinja" import ufw with context %}
10+
11+
include:
12+
- {{ sls_package_install }}
13+
- {{ sls_enable_service }}
14+
- {{ sls_reload_service }}
15+
16+
# Interfaces
17+
{%- for interface_name, interface_details in ufw.get('interfaces', {}).items() %}
18+
{%- set comment = interface_details.get('comment', None) %}
19+
20+
ufw-interface-{{interface_name}}:
21+
ufw.allowed:
22+
- interface: {{interface_name}}
23+
{%- if comment is not none %}
24+
- comment: '"{{comment}}"'
25+
{%- endif %}
26+
- listen_in:
27+
- cmd: reload-ufw
28+
29+
{%- endfor %}

ufw/config/open.sls

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- set sls_enable_service = tplroot ~ '.service.enable' %}
8+
{%- set sls_reload_service = tplroot ~ '.service.reload' %}
9+
{%- from tplroot ~ "/map.jinja" import ufw with context %}
10+
11+
include:
12+
- {{ sls_package_install }}
13+
- {{ sls_enable_service }}
14+
- {{ sls_reload_service }}
15+
16+
# Open
17+
{%- for open_addr, open_details in ufw.get('open', {}).items() %}
18+
{%- set comment = open_details.get('comment', None) %}
19+
20+
ufw-open-{{open_addr}}:
21+
ufw.allowed:
22+
- from_addr: {{open_addr}}
23+
{%- if comment is not none %}
24+
- comment: '"{{comment}}"'
25+
{%- endif %}
26+
- listen_in:
27+
- cmd: reload-ufw
28+
29+
{%- endfor %}

ufw/config/services.sls

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=sls
3+
4+
{#- Get the `tplroot` from `tpldir` #}
5+
{%- set tplroot = tpldir.split('/')[0] %}
6+
{%- set sls_package_install = tplroot ~ '.package.install' %}
7+
{%- set sls_enable_service = tplroot ~ '.service.enable' %}
8+
{%- set sls_reload_service = tplroot ~ '.service.reload' %}
9+
{%- from tplroot ~ "/map.jinja" import ufw with context %}
10+
11+
include:
12+
- {{ sls_package_install }}
13+
- {{ sls_enable_service }}
14+
- {{ sls_reload_service }}
15+
16+
# Services
17+
{%- for service_name, service_details in ufw.get('services', {}).items() %}
18+
19+
{%- set from_addr_raw = service_details.get('from_addr', [None]) %}
20+
{%- set from_addrs = [from_addr_raw] if from_addr_raw is string else from_addr_raw %}
21+
22+
{%- for from_addr in from_addrs %}
23+
{%- set protocol = service_details.get('protocol', None) %}
24+
{%- set deny = service_details.get('deny', None) %}
25+
{%- set limit = service_details.get('limit', None) %}
26+
{%- set method = 'deny' if deny else ('limit' if limit else 'allow') %}
27+
{%- set from_port = service_details.get('from_port', None) %}
28+
{%- set to_addr = service_details.get('to_addr', None) %}
29+
{%- set to_port = service_details.get('to_port', service_name) %}
30+
{%- set comment = service_details.get('comment', None) %}
31+
32+
ufw-svc-{{method}}-{{service_name}}-{{from_addr}}:
33+
ufw.{{method}}:
34+
{%- if protocol is not none %}
35+
- protocol: {{protocol}}
36+
{%- endif %}
37+
{%- if from_addr is not none %}
38+
- from_addr: {{from_addr}}
39+
{%- endif %}
40+
{%- if from_port is not none %}
41+
- from_port: "{{from_port}}"
42+
{%- endif %}
43+
{%- if to_addr is not none %}
44+
- to_addr: {{to_addr}}
45+
{%- endif %}
46+
{%- if comment is not none %}
47+
- comment: '"{{comment}}"'
48+
{%- endif %}
49+
- to_port: "{{to_port}}"
50+
- listen_in:
51+
- cmd: reload-ufw
52+
53+
{%- endfor %}
54+
{%- endfor %}

ufw/defaults.yaml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,17 @@
1-
ufwmap:
2-
pkg: ufw
1+
# -*- coding: utf-8 -*-
2+
# vim: ft=yaml
3+
---
4+
ufw:
5+
package: ufw
6+
packages: []
7+
service:
8+
name: ufw
9+
default_file: /etc/default/ufw
10+
sysctl_file: /etc/ufw/sysctl.conf
11+
enabled: false
12+
settings: {}
13+
sysctl: {}
14+
services: {}
15+
applications: {}
16+
interfaces: {}
17+
open: {}

0 commit comments

Comments
 (0)