summaryrefslogtreecommitdiff
path: root/manifests/init.pp
blob: 6287f0494d7cb826e5e306a79beb2491588d7602 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Manage shorewall on your system
class shorewall(
  $startup                    = true,
  $conf_source                = false,
  $settings                   = {},
  $settings6                  = {},
  $shorewall6                 = 'auto',
  $ensure_version             = 'present',
  $tor_transparent_proxy_host = '127.0.0.1',
  $tor_transparent_proxy_port = '9040',
  $tor_user                   = $facts['operatingsystem'] ? {
    'Debian' => 'debian-tor',
    default  => 'tor'
  },
  $zones                      = {},
  $zones_defaults             = {},
  $interfaces                 = {},
  $interfaces_defaults        = {},
  $hosts                      = {},
  $hosts_defaults             = {},
  $policy                     = {},
  $policy4                    = {},
  $policy6                    = {},
  $policy_defaults            = {},
  $rules                      = {},
  $rules4                     = {},
  $rules6                     = {},
  $rules_defaults             = {},
  $rulesections               = {},
  $rulesections_defaults      = {},
  $masq                       = {},
  $masq_defaults              = {},
  $proxyarp                   = {},
  $proxyarp_defaults          = {},
  $nat                        = {},
  $nat_defaults               = {},
  $routestopped               = {},
  $routestopped_defaults      = {},
  $stoppedrules               = {},
  $stoppedrules_defaults      = {},
  $params                     = {},
  $params4                    = {},
  $params6                    = {},
  $params_defaults            = {},
  $tcdevices                  = {},
  $tcdevices_defaults         = {},
  $tcrules                    = {},
  $tcrules_defaults           = {},
  $tcclasses                  = {},
  $tcclasses_defaults         = {},
  $tunnels                    = {},
  $tunnels_defaults           = {},
  $rtrules                    = {},
  $rtrules_defaults           = {},
  $daily_check                = true,
) {

  # workaround https://tickets.puppetlabs.com/browse/FACT-1739
  if $shorewall6 == 'auto' {
    if $facts['ipaddress6'] and $facts['ipaddress6'] =~ /:/ {
      $with_shorewall6 = true
    } else {
      $with_shorewall6 = false
    }
  } else {
    $with_shorewall6 = str2bool($shorewall6)
  }

  $disable_ipv6 = $with_shorewall6 ? {
    false   => 'Yes',
    default => 'No',
  }
  $def_settings = {
    'LOG_MARTIANS' => 'No',
    'DISABLE_IPV6' => $disable_ipv6,
  }

  $merged_settings = merge($def_settings,$settings)

  case $facts['operatingsystem'] {
    'Gentoo': { include ::shorewall::gentoo }
    'Debian','Ubuntu': { include ::shorewall::debian }
    'CentOS': { include ::shorewall::centos }
    default: {
      notice "unknown operatingsystem: ${facts['operatingsystem']}"
      include ::shorewall::base
    }
  }

  shorewall::managed_file{
    [
      # See http://www.shorewall.net/manpages/shorewall-zones.html
      'zones',
      # See http://www.shorewall.net/manpages/shorewall-interfaces.html
      'interfaces',
      # See http://www.shorewall.net/manpages/shorewall-hosts.html
      'hosts',
      # See http://www.shorewall.net/manpages/shorewall-policy.html
      'policy',
      # See http://www.shorewall.net/manpages/shorewall-rules.html
      'rules',
      # See http://www.shorewall.net/manpages/shorewall-masq.html
      'masq',
      # See http://www.shorewall.net/manpages/shorewall-proxyarp.html
      'proxyarp',
      # See http://www.shorewall.net/manpages/shorewall-nat.html
      'nat',
      # See http://www.shorewall.net/manpages/shorewall-stoppedrules.html
      'stoppedrules',
      # Deprecated http://www.shorewall.net/4.2/manpages/shorewall-routestopped.html
      'routestopped',
      # See http://www.shorewall.net/manpages/shorewall-params.html
      'params',
      # See http://www.shorewall.net/manpages/shorewall-tcdevices.html
      'tcdevices',
      # Deprecated http://www.shorewall.net/4.6/manpages/shorewall-tcrules.htmle 
      'tcrules',
      # See http://www.shorewall.net/manpages/shorewall-tcclasses.html
      'tcclasses',
      # See http://www.shorewall.net/manpages/shorewall-providers.html
      'providers',
      # See http://www.shorewall.net/manpages/shorewall-tunnels.html
      'tunnel',
      # See http://www.shorewall.net/manpages/shorewall-rtrules.html
      'rtrules',
      # See http://shorewall.net/manpages/shorewall-conntrack.html
      'conntrack',
      # See http://www.shorewall.net/manpages/shorewall-mangle.html
      'mangle',
    ]:;
  }
  Shorewall::Managed_file['zones','interfaces','params','rules','policy']{
    shorewall6 => true,
  }

  create_resources('shorewall::zone',$zones,$zones_defaults)
  create_resources('shorewall::interface',$interfaces,$interfaces_defaults)
  create_resources('shorewall::host',$hosts,$hosts_defaults)
  create_resources('shorewall::policy',$policy,$policy_defaults)
  create_resources('shorewall::policy4',$policy4,$policy_defaults)
  create_resources('shorewall::policy6',$policy6,$policy_defaults)
  create_resources('shorewall::rule',$rules,$rules_defaults)
  create_resources('shorewall::rule4',$rules4,$rules_defaults)
  create_resources('shorewall::rule6',$rules6,$rules_defaults)
  create_resources('shorewall::rule_section',$rulesections,$rulesections_defaults)
  create_resources('shorewall::masq',$masq,$masq_defaults)
  create_resources('shorewall::proxyarp',$proxyarp,$proxyarp_defaults)
  create_resources('shorewall::nat',$nat,$nat_defaults)
  create_resources('shorewall::stoppedrules',$stoppedrules,
    $stoppedrules_defaults)
  create_resources('shorewall::routestopped',$routestopped,
    $routestopped_defaults)
  create_resources('shorewall::params',$params,$params_defaults)
  create_resources('shorewall::params4',$params4,$params_defaults)
  create_resources('shorewall::params6',$params6,$params_defaults)
  create_resources('shorewall::tcdevices',$tcdevices,$tcdevices_defaults)
  create_resources('shorewall::tcrules',$tcrules,$tcrules_defaults)
  create_resources('shorewall::tcclasses',$tcclasses,$tcclasses_defaults)
  create_resources('shorewall::tunnel',$tunnels,$tunnels_defaults)
  create_resources('shorewall::rtrules',$rtrules,$rtrules_defaults)
}