Class used to transfer server settings to/from FileZilla server
상속: IBinarySerializable
        /// <summary>
        /// Get state of FileZilla server
        /// </summary>
        /// <returns>True if Success</returns>
        public bool SetSettings(Settings settings)
        {
            // Check options
            if(ProtocolVersion < ProtocolVersions.TLS 
                ? settings.Options.Count != (int)OptionId.V11_OPTIONS_NUM
                : settings.Options.Count != (int)OptionId.V12_OPTIONS_NUM)
                throw new ApiException("Bad option count");
            
            // Before serializing, give Admin Password option special treatment. 
            // If password is null, then set it to invalid ("*").
            // That way server can distinguish between 
            //   - Not set (Null, serialized as "*")
            //   - Blank password ("")
            //   - Actual password
            var adminPassword = settings.GetOption(OptionId.ADMINPASS);
            if (adminPassword.TextValue == null) adminPassword.TextValue = "*";

            SendCommand(MessageType.Settings, writer => settings.Serialize(writer, ProtocolVersion));
            return Receive<bool>(MessageType.Settings);
        }