/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the transfer-2018-11-05.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Transfer.Model
{
///
/// The protocol settings that are configured for your server.
///
public partial class ProtocolDetails
{
private List _as2Transports = new List();
private string _passiveIp;
private SetStatOption _setStatOption;
private TlsSessionResumptionMode _tlsSessionResumptionMode;
///
/// Gets and sets the property As2Transports.
///
/// Indicates the transport method for the AS2 messages. Currently, only HTTP is supported.
///
///
[AWSProperty(Min=1, Max=1)]
public List As2Transports
{
get { return this._as2Transports; }
set { this._as2Transports = value; }
}
// Check to see if As2Transports property is set
internal bool IsSetAs2Transports()
{
return this._as2Transports != null && this._as2Transports.Count > 0;
}
///
/// Gets and sets the property PassiveIp.
///
/// Indicates passive mode, for FTP and FTPS protocols. Enter a single IPv4 address,
/// such as the public IP address of a firewall, router, or load balancer. For example:
///
///
///
///
/// aws transfer update-server --protocol-details PassiveIp=0.0.0.0
///
///
///
/// Replace 0.0.0.0
in the example above with the actual IP address you want
/// to use.
///
///
///
/// If you change the PassiveIp
value, you must stop and then restart your
/// Transfer Family server for the change to take effect. For details on using passive
/// mode (PASV) in a NAT environment, see Configuring
/// your FTPS server behind a firewall or NAT with Transfer Family.
///
///
///
/// Special values
///
///
///
/// The AUTO
and 0.0.0.0
are special values for the PassiveIp
/// parameter. The value PassiveIp=AUTO
is assigned by default to FTP and
/// FTPS type servers. In this case, the server automatically responds with one of the
/// endpoint IPs within the PASV response. PassiveIp=0.0.0.0
has a more unique
/// application for its usage. For example, if you have a High Availability (HA) Network
/// Load Balancer (NLB) environment, where you have 3 subnets, you can only specify a
/// single IP address using the PassiveIp
parameter. This reduces the effectiveness
/// of having High Availability. In this case, you can specify PassiveIp=0.0.0.0
.
/// This tells the client to use the same IP address as the Control connection and utilize
/// all AZs for their connections. Note, however, that not all FTP clients support the
/// PassiveIp=0.0.0.0
response. FileZilla and WinSCP do support it. If you
/// are using other clients, check to see if your client supports the PassiveIp=0.0.0.0
/// response.
///
///
[AWSProperty(Max=15)]
public string PassiveIp
{
get { return this._passiveIp; }
set { this._passiveIp = value; }
}
// Check to see if PassiveIp property is set
internal bool IsSetPassiveIp()
{
return this._passiveIp != null;
}
///
/// Gets and sets the property SetStatOption.
///
/// Use the SetStatOption
to ignore the error that is generated when the
/// client attempts to use SETSTAT
on a file you are uploading to an S3 bucket.
///
///
///
/// Some SFTP file transfer clients can attempt to change the attributes of remote files,
/// including timestamp and permissions, using commands, such as SETSTAT
/// when uploading the file. However, these commands are not compatible with object storage
/// systems, such as Amazon S3. Due to this incompatibility, file uploads from these clients
/// can result in errors even when the file is otherwise successfully uploaded.
///
///
///
/// Set the value to ENABLE_NO_OP
to have the Transfer Family server ignore
/// the SETSTAT
command, and upload files without needing to make any changes
/// to your SFTP client. While the SetStatOption
ENABLE_NO_OP
/// setting ignores the error, it does generate a log entry in Amazon CloudWatch Logs,
/// so you can determine when the client is making a SETSTAT
call.
///
///
///
/// If you want to preserve the original timestamp for your file, and modify other file
/// attributes using SETSTAT
, you can use Amazon EFS as backend storage with
/// Transfer Family.
///
///
///
public SetStatOption SetStatOption
{
get { return this._setStatOption; }
set { this._setStatOption = value; }
}
// Check to see if SetStatOption property is set
internal bool IsSetSetStatOption()
{
return this._setStatOption != null;
}
///
/// Gets and sets the property TlsSessionResumptionMode.
///
/// A property used with Transfer Family servers that use the FTPS protocol. TLS Session
/// Resumption provides a mechanism to resume or share a negotiated secret key between
/// the control and data connection for an FTPS session. TlsSessionResumptionMode
/// determines whether or not the server resumes recent, negotiated sessions through a
/// unique session ID. This property is available during CreateServer
and
/// UpdateServer
calls. If a TlsSessionResumptionMode
value
/// is not specified during CreateServer
, it is set to ENFORCED
/// by default.
///
/// -
///
///
DISABLED
: the server does not process TLS session resumption client
/// requests and creates a new TLS session for each request.
///
/// -
///
///
ENABLED
: the server processes and accepts clients that are performing
/// TLS session resumption. The server doesn't reject client data connections that do
/// not perform the TLS session resumption client processing.
///
/// -
///
///
ENFORCED
: the server processes and accepts clients that are performing
/// TLS session resumption. The server rejects client data connections that do not perform
/// the TLS session resumption client processing. Before you set the value to ENFORCED
,
/// test your clients.
///
///
///
/// Not all FTPS clients perform TLS session resumption. So, if you choose to enforce
/// TLS session resumption, you prevent any connections from FTPS clients that don't perform
/// the protocol negotiation. To determine whether or not you can use the ENFORCED
/// value, you need to test your clients.
///
///
///
public TlsSessionResumptionMode TlsSessionResumptionMode
{
get { return this._tlsSessionResumptionMode; }
set { this._tlsSessionResumptionMode = value; }
}
// Check to see if TlsSessionResumptionMode property is set
internal bool IsSetTlsSessionResumptionMode()
{
return this._tlsSessionResumptionMode != null;
}
}
}