{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Lightsail.Types.PortInfo -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.Lightsail.Types.PortInfo where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Lightsail.Types.NetworkProtocol import qualified Amazonka.Prelude as Prelude -- | Describes ports to open on an instance, the IP addresses allowed to -- connect to the instance through the ports, and the protocol. -- -- /See:/ 'newPortInfo' smart constructor. data PortInfo = PortInfo' { -- | An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. cidrListAliases :: Prelude.Maybe [Prelude.Text], -- | The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. cidrs :: Prelude.Maybe [Prelude.Text], -- | The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . fromPort :: Prelude.Maybe Prelude.Int, -- | The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. ipv6Cidrs :: Prelude.Maybe [Prelude.Text], -- | The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. protocol :: Prelude.Maybe NetworkProtocol, -- | The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . toPort :: Prelude.Maybe Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'PortInfo' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'cidrListAliases', 'portInfo_cidrListAliases' - An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. -- -- 'cidrs', 'portInfo_cidrs' - The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. -- -- 'fromPort', 'portInfo_fromPort' - The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . -- -- 'ipv6Cidrs', 'portInfo_ipv6Cidrs' - The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. -- -- 'protocol', 'portInfo_protocol' - The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. -- -- 'toPort', 'portInfo_toPort' - The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . newPortInfo :: PortInfo newPortInfo = PortInfo' { cidrListAliases = Prelude.Nothing, cidrs = Prelude.Nothing, fromPort = Prelude.Nothing, ipv6Cidrs = Prelude.Nothing, protocol = Prelude.Nothing, toPort = Prelude.Nothing } -- | An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. portInfo_cidrListAliases :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_cidrListAliases = Lens.lens (\PortInfo' {cidrListAliases} -> cidrListAliases) (\s@PortInfo' {} a -> s {cidrListAliases = a} :: PortInfo) Prelude.. Lens.mapping Lens.coerced -- | The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. portInfo_cidrs :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_cidrs = Lens.lens (\PortInfo' {cidrs} -> cidrs) (\s@PortInfo' {} a -> s {cidrs = a} :: PortInfo) Prelude.. Lens.mapping Lens.coerced -- | The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . portInfo_fromPort :: Lens.Lens' PortInfo (Prelude.Maybe Prelude.Int) portInfo_fromPort = Lens.lens (\PortInfo' {fromPort} -> fromPort) (\s@PortInfo' {} a -> s {fromPort = a} :: PortInfo) -- | The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- -- on /Wikipedia/. portInfo_ipv6Cidrs :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_ipv6Cidrs = Lens.lens (\PortInfo' {ipv6Cidrs} -> ipv6Cidrs) (\s@PortInfo' {} a -> s {ipv6Cidrs = a} :: PortInfo) Prelude.. Lens.mapping Lens.coerced -- | The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. portInfo_protocol :: Lens.Lens' PortInfo (Prelude.Maybe NetworkProtocol) portInfo_protocol = Lens.lens (\PortInfo' {protocol} -> protocol) (\s@PortInfo' {} a -> s {protocol = a} :: PortInfo) -- | The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- . portInfo_toPort :: Lens.Lens' PortInfo (Prelude.Maybe Prelude.Int) portInfo_toPort = Lens.lens (\PortInfo' {toPort} -> toPort) (\s@PortInfo' {} a -> s {toPort = a} :: PortInfo) instance Prelude.Hashable PortInfo where hashWithSalt _salt PortInfo' {..} = _salt `Prelude.hashWithSalt` cidrListAliases `Prelude.hashWithSalt` cidrs `Prelude.hashWithSalt` fromPort `Prelude.hashWithSalt` ipv6Cidrs `Prelude.hashWithSalt` protocol `Prelude.hashWithSalt` toPort instance Prelude.NFData PortInfo where rnf PortInfo' {..} = Prelude.rnf cidrListAliases `Prelude.seq` Prelude.rnf cidrs `Prelude.seq` Prelude.rnf fromPort `Prelude.seq` Prelude.rnf ipv6Cidrs `Prelude.seq` Prelude.rnf protocol `Prelude.seq` Prelude.rnf toPort instance Data.ToJSON PortInfo where toJSON PortInfo' {..} = Data.object ( Prelude.catMaybes [ ("cidrListAliases" Data..=) Prelude.<$> cidrListAliases, ("cidrs" Data..=) Prelude.<$> cidrs, ("fromPort" Data..=) Prelude.<$> fromPort, ("ipv6Cidrs" Data..=) Prelude.<$> ipv6Cidrs, ("protocol" Data..=) Prelude.<$> protocol, ("toPort" Data..=) Prelude.<$> toPort ] )