/// <summary> /// Serialise object into FileZilla binary data /// </summary> /// <param name="writer">Binary writer to write data to</param> /// <param name="protocolVersion">Current FileZilla protocol version</param> /// <param name="index">The 0 based index of this item in relation to any parent list</param> public void Serialize(BinaryWriter writer, int protocolVersion, int index) { var options = (byte)(((byte)SpeedLimitType & 0x3) | ((byte)BypassServerSpeedLimit << 2)); writer.Write(options); writer.WriteBigEndianInt16(ConstantSpeedLimit); writer.WriteList16(SpeedLimitRules, protocolVersion); }
/// <summary> /// Serialise object into FileZilla binary data /// </summary> /// <param name="writer">Binary writer to write data to</param> /// <param name="protocolVersion">Current FileZilla protocol version</param> /// <param name="index">The 0 based index of this item in relation to any parent list</param> public void Serialize(BinaryWriter writer, int protocolVersion, int index = 0) { // Check Uniqueness of groups if(Groups.GroupBy(x=>x.GroupName).Any(x => x.Count() > 1)) throw new ApiException("Group names must be unique"); if(protocolVersion < ProtocolVersions.User16M) writer.WriteList16(Groups, protocolVersion); else writer.WriteList24(Groups, protocolVersion); // Check Uniqueness of users if (Users.GroupBy(x => x.UserName).Any(x => x.Count() > 1)) throw new ApiException("User names must be unique"); if (protocolVersion < ProtocolVersions.User16M) writer.WriteList16(Users, protocolVersion); else writer.WriteList24(Users, protocolVersion); }
/// <summary> /// Serialise object into FileZilla binary data /// </summary> /// <param name="writer">Binary writer to write data to</param> /// <param name="protocolVersion">Current FileZilla protocol version</param> /// <param name="index">The 0 based index of this item in relation to any parent list</param> public virtual void Serialize(BinaryWriter writer, int protocolVersion, int index) { writer.WriteText(GroupName); writer.Write(IpLimit); writer.Write(UserLimit); byte options = (byte)(((byte)BypassUserLimit & 0x3) | ((byte)Enabled << 2)); writer.Write(options); writer.WriteTextList(DisallowedIPs); writer.WriteTextList(AllowedIPs); writer.Write(EightPlusThree); writer.WriteList16(SharedFolders, protocolVersion); writer.Write(DownloadSpeedLimit, protocolVersion); writer.Write(UploadSpeedLimit, protocolVersion); writer.WriteText(Comment); writer.Write(ForceSsl); }
/// <summary> /// Serialise object into FileZilla binary data /// </summary> /// <param name="writer">Binary writer to write data to</param> /// <param name="protocolVersion">Current FileZilla protocol version</param> /// <param name="index">The 0 based index of this item in relation to any parent list</param> public virtual void Serialize(BinaryWriter writer, int protocolVersion, int index) { // Switch user Enabled 'Default' to 'Yes' when not assigned a group. if (Enabled == TriState.Default && GetType() == typeof(User) && string.IsNullOrEmpty(GroupName)) Enabled=TriState.Yes; writer.WriteText(GroupName); writer.Write(IpLimit); writer.Write(UserLimit); byte options = (byte)(((byte)BypassUserLimit & 0x3) | ((byte)Enabled << 2)); writer.Write(options); writer.WriteTextList(DisallowedIPs); writer.WriteTextList(AllowedIPs); if (protocolVersion < ProtocolVersions.Sha512) { writer.Write(EightPlusThree); } writer.WriteList16(SharedFolders, protocolVersion); writer.Write(DownloadSpeedLimit, protocolVersion); writer.Write(UploadSpeedLimit, protocolVersion); writer.WriteText(Comment); writer.Write(ForceSsl); }
/// <summary> /// Serialise object into FileZilla binary data /// </summary> /// <param name="writer">Binary writer to write data to</param> /// <param name="protocolVersion">Current FileZilla protocol version</param> /// <param name="index">The 0 based index of this item in relation to any parent list</param> public void Serialize(BinaryWriter writer, int protocolVersion, int index = 0) { writer.WriteList16(Options, protocolVersion); writer.WriteList16(DownloadSpeedLimitRule, protocolVersion); writer.WriteList16(UploadSpeedLimitRule, protocolVersion); }