From e938abd9dbe24d3a6cf44ded8c13bcbdae6d0e00 Mon Sep 17 00:00:00 2001 From: John Bond Date: Wed, 23 Sep 2020 18:41:50 +0200 Subject: [PATCH] Add additional types Stdlib::Port::Dynamic,Ephemeral,Registered,User} The IANA port registery and rfc6335 specify the following port ranges o the System Ports, also known as the Well Known Ports, from 0-1023 (assigned by IANA) o the User Ports, also known as the Registered Ports, from 1024- 49151 (assigned by IANA) o the Dynamic Ports, also known as the Private or Ephemeral Ports, from 49152-65535 (never assigned) This PR adds the following types to capture this with the following typs Stdlib::Port::User Stdlib::Port::Registered (alias to Stdlib::Port::User) Stdlib::Port::Dynamic Stdlib::Port::Ephemeral (alias to Stdlib::Port::Dynamic) We can drop the aliases and just pick which ever name we prefer. My gut feeling is that most uses of the current Stdlib::Port::Unprivileged type would be better served by this newer Stdlib::Port::User type. https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml --- spec/type_aliases/port__dynamic_spec.rb | 43 +++++++++++++++++++++++++ spec/type_aliases/port__user_spec.rb | 41 +++++++++++++++++++++++ types/port/dynamic.pp | 1 + types/port/ephemeral.pp | 1 + types/port/registered.pp | 1 + types/port/user.pp | 1 + 6 files changed, 88 insertions(+) create mode 100644 spec/type_aliases/port__dynamic_spec.rb create mode 100644 spec/type_aliases/port__user_spec.rb create mode 100644 types/port/dynamic.pp create mode 100644 types/port/ephemeral.pp create mode 100644 types/port/registered.pp create mode 100644 types/port/user.pp diff --git a/spec/type_aliases/port__dynamic_spec.rb b/spec/type_aliases/port__dynamic_spec.rb new file mode 100644 index 000000000..5503e7c0d --- /dev/null +++ b/spec/type_aliases/port__dynamic_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' + +if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0 + describe 'Stdlib::Port::Ephemeral' do + describe 'valid ephemeral port' do + [ + 49_152, + 51_337, + 65_000, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + nil, + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'https', + '443', + -1, + 80, + 443, + 1023, + 1337, + 8080, + 28_080, + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end + end +end diff --git a/spec/type_aliases/port__user_spec.rb b/spec/type_aliases/port__user_spec.rb new file mode 100644 index 000000000..c34e9b227 --- /dev/null +++ b/spec/type_aliases/port__user_spec.rb @@ -0,0 +1,41 @@ +require 'spec_helper' + +if Puppet::Util::Package.versioncmp(Puppet.version, '4.5.0') >= 0 + describe 'Stdlib::Port::User' do + describe 'valid user' do + [ + 1024, + 1337, + 49_151, + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + + describe 'invalid path handling' do + context 'garbage inputs' do + [ + nil, + [nil], + [nil, nil], + { 'foo' => 'bar' }, + {}, + '', + 'https', + '443', + -1, + 80, + 443, + 1023, + 49_152, + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end + end +end diff --git a/types/port/dynamic.pp b/types/port/dynamic.pp new file mode 100644 index 000000000..5e67a868d --- /dev/null +++ b/types/port/dynamic.pp @@ -0,0 +1 @@ +type Stdlib::Port::Dynamic = Integer[49152, 65535] diff --git a/types/port/ephemeral.pp b/types/port/ephemeral.pp new file mode 100644 index 000000000..a0dd633ce --- /dev/null +++ b/types/port/ephemeral.pp @@ -0,0 +1 @@ +type Stdlib::Port::Ephemeral = Stdlib::Port::Dynamic diff --git a/types/port/registered.pp b/types/port/registered.pp new file mode 100644 index 000000000..cbbf80744 --- /dev/null +++ b/types/port/registered.pp @@ -0,0 +1 @@ +type Stdlib::Port::Registered = Stdlib::Port::User diff --git a/types/port/user.pp b/types/port/user.pp new file mode 100644 index 000000000..01b82cb46 --- /dev/null +++ b/types/port/user.pp @@ -0,0 +1 @@ +type Stdlib::Port::User = Integer[1024, 49151]