Commit 56aefb0cf42f91aa5aa792b03532463e782ffbc6

Authored by Earth Ugat
0 parents

v0.1.0. Initial cookbook release.

  1 +*~
  2 +*#
  3 +.#*
  4 +\#*#
  5 +.*.sw[a-z]
  6 +*.un~
  7 +pkg/
  8 +
  9 +# Berkshelf
  10 +.vagrant
  11 +/cookbooks
  12 +Berksfile.lock
  13 +
  14 +# Bundler
  15 +Gemfile.lock
  16 +bin/*
  17 +.bundle/*
  18 +
  19 +.kitchen/
  20 +.kitchen.local.yml
... ...
  1 +---
  2 +driver:
  3 + name: ec2
  4 + aws_ssh_key_id: cfe_stg_20160222
  5 + security_group_ids: ["sg-7f6fda18"]
  6 + region: us-west-2
  7 + availability_zone: b
  8 + subnet_id: subnet-d530d8b1
  9 + instance_type: t2.micro
  10 + associate_public_ip: true
  11 + require_chef_omnibus: 12.12.15
  12 + shared_credentials_profile: earth
  13 +
  14 +provisioner:
  15 + name: chef_zero
  16 +
  17 +platforms:
  18 + - name: ubuntu-14.04
  19 + driver:
  20 + image_id: ami-d732f0b7
  21 + transport:
  22 + username: ubuntu
  23 + ssh_key: ~/.ssh/cfe_stg_20160222.pem
  24 +
  25 +suites:
  26 + - name: default
  27 + run_list:
  28 + - recipe[cfe-simple-iptables::default]
  29 + attributes:
... ...
  1 +source "https://supermarket.chef.io"
  2 +
  3 +metadata
... ...
  1 +## 0.1.0 - 2016-11-01
  2 +### Added
  3 +- Initial release of cfe-simple-iptables
  4 +
  5 +---
  6 +Changelog format reference: http://keepachangelog.com/en/0.3.0/
... ...
  1 +source 'https://rubygems.org'
  2 +
  3 +gem "test-kitchen"
  4 +gem "kitchen-vagrant"
  5 +gem "ec2"
... ...
  1 + Apache License
  2 + Version 2.0, January 2004
  3 + http://www.apache.org/licenses/
  4 +
  5 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
  6 +
  7 + 1. Definitions.
  8 +
  9 + "License" shall mean the terms and conditions for use, reproduction,
  10 + and distribution as defined by Sections 1 through 9 of this document.
  11 +
  12 + "Licensor" shall mean the copyright owner or entity authorized by
  13 + the copyright owner that is granting the License.
  14 +
  15 + "Legal Entity" shall mean the union of the acting entity and all
  16 + other entities that control, are controlled by, or are under common
  17 + control with that entity. For the purposes of this definition,
  18 + "control" means (i) the power, direct or indirect, to cause the
  19 + direction or management of such entity, whether by contract or
  20 + otherwise, or (ii) ownership of fifty percent (50%) or more of the
  21 + outstanding shares, or (iii) beneficial ownership of such entity.
  22 +
  23 + "You" (or "Your") shall mean an individual or Legal Entity
  24 + exercising permissions granted by this License.
  25 +
  26 + "Source" form shall mean the preferred form for making modifications,
  27 + including but not limited to software source code, documentation
  28 + source, and configuration files.
  29 +
  30 + "Object" form shall mean any form resulting from mechanical
  31 + transformation or translation of a Source form, including but
  32 + not limited to compiled object code, generated documentation,
  33 + and conversions to other media types.
  34 +
  35 + "Work" shall mean the work of authorship, whether in Source or
  36 + Object form, made available under the License, as indicated by a
  37 + copyright notice that is included in or attached to the work
  38 + (an example is provided in the Appendix below).
  39 +
  40 + "Derivative Works" shall mean any work, whether in Source or Object
  41 + form, that is based on (or derived from) the Work and for which the
  42 + editorial revisions, annotations, elaborations, or other modifications
  43 + represent, as a whole, an original work of authorship. For the purposes
  44 + of this License, Derivative Works shall not include works that remain
  45 + separable from, or merely link (or bind by name) to the interfaces of,
  46 + the Work and Derivative Works thereof.
  47 +
  48 + "Contribution" shall mean any work of authorship, including
  49 + the original version of the Work and any modifications or additions
  50 + to that Work or Derivative Works thereof, that is intentionally
  51 + submitted to Licensor for inclusion in the Work by the copyright owner
  52 + or by an individual or Legal Entity authorized to submit on behalf of
  53 + the copyright owner. For the purposes of this definition, "submitted"
  54 + means any form of electronic, verbal, or written communication sent
  55 + to the Licensor or its representatives, including but not limited to
  56 + communication on electronic mailing lists, source code control systems,
  57 + and issue tracking systems that are managed by, or on behalf of, the
  58 + Licensor for the purpose of discussing and improving the Work, but
  59 + excluding communication that is conspicuously marked or otherwise
  60 + designated in writing by the copyright owner as "Not a Contribution."
  61 +
  62 + "Contributor" shall mean Licensor and any individual or Legal Entity
  63 + on behalf of whom a Contribution has been received by Licensor and
  64 + subsequently incorporated within the Work.
  65 +
  66 + 2. Grant of Copyright License. Subject to the terms and conditions of
  67 + this License, each Contributor hereby grants to You a perpetual,
  68 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  69 + copyright license to reproduce, prepare Derivative Works of,
  70 + publicly display, publicly perform, sublicense, and distribute the
  71 + Work and such Derivative Works in Source or Object form.
  72 +
  73 + 3. Grant of Patent License. Subject to the terms and conditions of
  74 + this License, each Contributor hereby grants to You a perpetual,
  75 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  76 + (except as stated in this section) patent license to make, have made,
  77 + use, offer to sell, sell, import, and otherwise transfer the Work,
  78 + where such license applies only to those patent claims licensable
  79 + by such Contributor that are necessarily infringed by their
  80 + Contribution(s) alone or by combination of their Contribution(s)
  81 + with the Work to which such Contribution(s) was submitted. If You
  82 + institute patent litigation against any entity (including a
  83 + cross-claim or counterclaim in a lawsuit) alleging that the Work
  84 + or a Contribution incorporated within the Work constitutes direct
  85 + or contributory patent infringement, then any patent licenses
  86 + granted to You under this License for that Work shall terminate
  87 + as of the date such litigation is filed.
  88 +
  89 + 4. Redistribution. You may reproduce and distribute copies of the
  90 + Work or Derivative Works thereof in any medium, with or without
  91 + modifications, and in Source or Object form, provided that You
  92 + meet the following conditions:
  93 +
  94 + (a) You must give any other recipients of the Work or
  95 + Derivative Works a copy of this License; and
  96 +
  97 + (b) You must cause any modified files to carry prominent notices
  98 + stating that You changed the files; and
  99 +
  100 + (c) You must retain, in the Source form of any Derivative Works
  101 + that You distribute, all copyright, patent, trademark, and
  102 + attribution notices from the Source form of the Work,
  103 + excluding those notices that do not pertain to any part of
  104 + the Derivative Works; and
  105 +
  106 + (d) If the Work includes a "NOTICE" text file as part of its
  107 + distribution, then any Derivative Works that You distribute must
  108 + include a readable copy of the attribution notices contained
  109 + within such NOTICE file, excluding those notices that do not
  110 + pertain to any part of the Derivative Works, in at least one
  111 + of the following places: within a NOTICE text file distributed
  112 + as part of the Derivative Works; within the Source form or
  113 + documentation, if provided along with the Derivative Works; or,
  114 + within a display generated by the Derivative Works, if and
  115 + wherever such third-party notices normally appear. The contents
  116 + of the NOTICE file are for informational purposes only and
  117 + do not modify the License. You may add Your own attribution
  118 + notices within Derivative Works that You distribute, alongside
  119 + or as an addendum to the NOTICE text from the Work, provided
  120 + that such additional attribution notices cannot be construed
  121 + as modifying the License.
  122 +
  123 + You may add Your own copyright statement to Your modifications and
  124 + may provide additional or different license terms and conditions
  125 + for use, reproduction, or distribution of Your modifications, or
  126 + for any such Derivative Works as a whole, provided Your use,
  127 + reproduction, and distribution of the Work otherwise complies with
  128 + the conditions stated in this License.
  129 +
  130 + 5. Submission of Contributions. Unless You explicitly state otherwise,
  131 + any Contribution intentionally submitted for inclusion in the Work
  132 + by You to the Licensor shall be under the terms and conditions of
  133 + this License, without any additional terms or conditions.
  134 + Notwithstanding the above, nothing herein shall supersede or modify
  135 + the terms of any separate license agreement you may have executed
  136 + with Licensor regarding such Contributions.
  137 +
  138 + 6. Trademarks. This License does not grant permission to use the trade
  139 + names, trademarks, service marks, or product names of the Licensor,
  140 + origin of the Work and reproducing the content of the NOTICE file.
  141 +
  142 + 7. Disclaimer of Warranty. Unless required by applicable law or
  143 + agreed to in writing, Licensor provides the Work (and each
  144 + Contributor provides its Contributions) on an "AS IS" BASIS,
  145 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  146 + implied, including, without limitation, any warranties or conditions
  147 + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
  148 + PARTICULAR PURPOSE. You are solely responsible for determining the
  149 + appropriateness of using or redistributing the Work and assume any
  150 + risks associated with Your exercise of permissions under this License.
  151 +
  152 + 8. Limitation of Liability. In no event and under no legal theory,
  153 + whether in tort (including negligence), contract, or otherwise,
  154 + unless required by applicable law (such as deliberate and grossly
  155 + negligent acts) or agreed to in writing, shall any Contributor be
  156 + liable to You for damages, including any direct, indirect, special,
  157 + incidental, or consequential damages of any character arising as a
  158 + result of this License or out of the use or inability to use the
  159 + Work (including but not limited to damages for loss of goodwill,
  160 + work stoppage, computer failure or malfunction, or any and all
  161 + other commercial damages or losses), even if such Contributor
  162 + has been advised of the possibility of such damages.
  163 +
  164 + 9. Accepting Warranty or Additional Liability. While redistributing
  165 + the Work or Derivative Works thereof, You may choose to offer,
  166 + and charge a fee for, acceptance of support, warranty, indemnity,
  167 + or other liability obligations and/or rights consistent with this
  168 + License. However, in accepting such obligations, You may act only
  169 + on Your own behalf and on Your sole responsibility, not on behalf
  170 + of any other Contributor, and only if You agree to indemnify,
  171 + defend, and hold each Contributor harmless for any liability
  172 + incurred by, or claims asserted against, such Contributor by reason
  173 + of your accepting any such warranty or additional liability.
  174 +
  175 + END OF TERMS AND CONDITIONS
  176 +
  177 + APPENDIX: How to apply the Apache License to your work.
  178 +
  179 + To apply the Apache License to your work, attach the following
  180 + boilerplate notice, with the fields enclosed by brackets "{}"
  181 + replaced with your own identifying information. (Don't include
  182 + the brackets!) The text should be enclosed in the appropriate
  183 + comment syntax for the file format. We also recommend that a
  184 + file or class name and description of purpose be included on the
  185 + same "printed page" as the copyright notice for easier
  186 + identification within third-party archives.
  187 +
  188 + Copyright 2016, Chromedia Far East, Inc.
  189 +
  190 + Licensed under the Apache License, Version 2.0 (the "License");
  191 + you may not use this file except in compliance with the License.
  192 + You may obtain a copy of the License at
  193 +
  194 + http://www.apache.org/licenses/LICENSE-2.0
  195 +
  196 + Unless required by applicable law or agreed to in writing, software
  197 + distributed under the License is distributed on an "AS IS" BASIS,
  198 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  199 + See the License for the specific language governing permissions and
  200 + limitations under the License.
... ...
  1 +# cfe-simple-iptables-cookbook
  2 +
  3 +Just a wrapper around [`simple_iptables`](https://supermarket.chef.io/cookbooks/simple_iptables) to lessen typing.
  4 +
  5 +## Supported Platforms
  6 +
  7 +The cookbook `simple_iptables` supports the most common Linux distros.
  8 +
  9 +## Attributes
  10 +
  11 +<table>
  12 + <tr>
  13 + <th>Key</th>
  14 + <th>Type</th>
  15 + <th>Description</th>
  16 + <th>Default</th>
  17 + </tr>
  18 + <tr>
  19 + <td><tt>['cfe-simple-iptables']['filter']</tt></td>
  20 + <td>Array</td>
  21 + <td>Array of hashes that designate the rules to be added to table 'filter'</td>
  22 + <td><tt>[]</tt></td>
  23 + </tr>
  24 + <tr>
  25 + <td><tt>['cfe-simple-iptables']['nat']</tt></td>
  26 + <td>Array</td>
  27 + <td>Array of hashes that designate the rules to be added to table 'nat'</td>
  28 + <td><tt>[]</tt></td>
  29 + </tr>
  30 + <tr>
  31 + <td><tt>['cfe-simple-iptables']['mangle']</tt></td>
  32 + <td>Array</td>
  33 + <td>Array of hashes that designate the rules to be added to table 'mangle'</td>
  34 + <td><tt>[]</tt></td>
  35 + </tr>
  36 + <tr>
  37 + <td><tt>['cfe-simple-iptables']['raw']</tt></td>
  38 + <td>Array</td>
  39 + <td>Array of hashes that designate the rules to be added to table 'raw'</td>
  40 + <td><tt>[]</tt></td>
  41 + </tr>
  42 +</table>
  43 +
  44 +## Usage
  45 +
  46 +### cfe-simple-iptables::default
  47 +
  48 +Each element in the array attributes above is a hash with the following keys:
  49 +```
  50 + :name # Mandatory. Must not be the chain name.
  51 + :jump # Defaults to 'ACCEPT'
  52 + :chain # Defaults to 'INPUT'
  53 + :direction # Defaults to the value of :chain
  54 + :rule # Defaults to ''
  55 + :weight # Defaults to 50
  56 +```
  57 +
  58 +Each of the above keys correspond to a similarly-named attribute in the `simple_iptables_rule` LWRP provided by the `simple_iptables` cookbook. This LWRP will then be called for each of those hashes.
  59 +
  60 +The hash keys can also be shortened to just their first letters. For example:
  61 +```
  62 +default['cfe-simple-iptables']['filter'] = [
  63 + {
  64 + :n => 'http',
  65 + :r => ['--proto tcp --dport 80', '--proto tcp --dport 443'],
  66 + :w => 20
  67 + }
  68 +]
  69 +```
  70 +
  71 +After setting proper node attributes, include `cfe-simple-iptables` in your node's `run_list`:
  72 +
  73 +```json
  74 +{
  75 + "run_list": [
  76 + "recipe[cfe-simple-iptables::default]"
  77 + ]
  78 +}
  79 +```
  80 +
  81 +## License and Authors
  82 +
  83 +Author:: Earth U. (<sysadmin @ chromedia.com>)
... ...
  1 +#
  2 +# Author:: Earth U (<sysadmin @ chromedia.com>)
  3 +# Cookbook Name:: cfe-simple-iptables
  4 +# Attribute:: default
  5 +#
  6 +# Copyright (C) 2016, Chromedia Far East, Inc.
  7 +#
  8 +# Licensed under the Apache License, Version 2.0 (the "License");
  9 +# you may not use this file except in compliance with the License.
  10 +# You may obtain a copy of the License at
  11 +#
  12 +# http://www.apache.org/licenses/LICENSE-2.0
  13 +#
  14 +# Unless required by applicable law or agreed to in writing, software
  15 +# distributed under the License is distributed on an "AS IS" BASIS,
  16 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 +# See the License for the specific language governing permissions and
  18 +# limitations under the License.
  19 +#
  20 +
  21 +default['cfe-simple-iptables']['filter'] = []
  22 +default['cfe-simple-iptables']['nat'] = []
  23 +default['cfe-simple-iptables']['mangle'] = []
  24 +default['cfe-simple-iptables']['raw'] = []
... ...
  1 +# Put files/directories that should be ignored in this file when uploading
  2 +# or sharing to the community site.
  3 +# Lines that start with '# ' are comments.
  4 +
  5 +# OS generated files #
  6 +######################
  7 +.DS_Store
  8 +Icon?
  9 +nohup.out
  10 +ehthumbs.db
  11 +Thumbs.db
  12 +
  13 +# SASS #
  14 +########
  15 +.sass-cache
  16 +
  17 +# EDITORS #
  18 +###########
  19 +\#*
  20 +.#*
  21 +*~
  22 +*.sw[a-z]
  23 +*.bak
  24 +REVISION
  25 +TAGS*
  26 +tmtags
  27 +*_flymake.*
  28 +*_flymake
  29 +*.tmproj
  30 +.project
  31 +.settings
  32 +mkmf.log
  33 +
  34 +## COMPILED ##
  35 +##############
  36 +a.out
  37 +*.o
  38 +*.pyc
  39 +*.so
  40 +*.com
  41 +*.class
  42 +*.dll
  43 +*.exe
  44 +*/rdoc/
  45 +
  46 +# Testing #
  47 +###########
  48 +.watchr
  49 +.rspec
  50 +spec/*
  51 +spec/fixtures/*
  52 +test/*
  53 +features/*
  54 +Guardfile
  55 +Procfile
  56 +
  57 +# SCM #
  58 +#######
  59 +.git
  60 +*/.git
  61 +.gitignore
  62 +.gitmodules
  63 +.gitconfig
  64 +.gitattributes
  65 +.svn
  66 +*/.bzr/*
  67 +*/.hg/*
  68 +*/.svn/*
  69 +
  70 +# Berkshelf #
  71 +#############
  72 +cookbooks/*
  73 +tmp
  74 +
  75 +# Cookbooks #
  76 +#############
  77 +CONTRIBUTING
  78 +CHANGELOG*
  79 +
  80 +# Strainer #
  81 +############
  82 +Colanderfile
  83 +Strainerfile
  84 +.colander
  85 +.strainer
  86 +
  87 +# Vagrant #
  88 +###########
  89 +.vagrant
  90 +Vagrantfile
  91 +
  92 +# Travis #
  93 +##########
  94 +.travis.yml
... ...
  1 +name 'cfe-simple-iptables'
  2 +maintainer 'Chromedia Far East, Inc.'
  3 +maintainer_email 'sysadmin@chromedia.com'
  4 +license 'Apache License'
  5 +description 'Simplifies setup of local iptables in Chromedia'
  6 +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
  7 +version '0.1.0'
  8 +
  9 +depends 'simple_iptables', '~> 0.7.5'
... ...
  1 +#
  2 +# Author:: Earth U (<sysadmin @ chromedia.com>)
  3 +# Cookbook Name:: cfe-simple-iptables
  4 +# Recipe:: default
  5 +#
  6 +# Copyright (C) 2016, Chromedia Far East, Inc.
  7 +#
  8 +# Licensed under the Apache License, Version 2.0 (the "License");
  9 +# you may not use this file except in compliance with the License.
  10 +# You may obtain a copy of the License at
  11 +#
  12 +# http://www.apache.org/licenses/LICENSE-2.0
  13 +#
  14 +# Unless required by applicable law or agreed to in writing, software
  15 +# distributed under the License is distributed on an "AS IS" BASIS,
  16 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 +# See the License for the specific language governing permissions and
  18 +# limitations under the License.
  19 +#
  20 +
  21 +include_recipe 'simple_iptables'
  22 +
  23 +def form_rules(tablex)
  24 + node[cookbook_name][tablex].each do |e|
  25 + n = e[:name] || e[:n]
  26 + j = e[:jump] || ( e[:j] || 'ACCEPT' )
  27 + c = e[:chain] || ( e[:c] || 'INPUT' )
  28 + d = e[:direction] || ( e[:d] || c )
  29 + r = e[:rule] || ( e[:r] || '' )
  30 + w = e[:weight] || ( e[:w] || 50 )
  31 +
  32 + simple_iptables_rule n do
  33 + table tablex
  34 + jump j
  35 + chain c
  36 + direction d
  37 + rule r
  38 + weight w
  39 + end
  40 + end
  41 +end
  42 +
  43 +form_rules 'filter'
  44 +form_rules 'nat'
  45 +form_rules 'mangle'
  46 +form_rules 'raw'
... ...