using System.Collections.Generic;
namespace axXez.TS3.Protocol
{
/// Property bag for editing virtual server settings via serveredit. Only set properties are sent.
public class EditServerProperties
{
internal Dictionary changes = new Dictionary();
/// URL opened when a client clicks the host banner.
public string HostbannerUrl { set => changes["virtualserver_hostbanner_url"] = value; }
/// Host message displayed to clients on connect.
public string HostMessage { set => changes["virtualserver_hostmessage"] = value; }
/// Server password required to connect.
public string Password { set => changes["virtualserver_password"] = value; }
/// URL of the host banner image.
public string HostbannerGFXUrl { set => changes["virtualserver_hostbanner_gfx_url"] = value; }
/// Tooltip text shown when hovering over the host button.
public string HostbuttonTooltip { set => changes["virtualserver_hostbutton_tooltip"] = value; }
/// URL opened when a client clicks the host button.
public string HostbuttonUrl { set => changes["virtualserver_hostbutton_url+"] = value; }
/// URL of the host button image.
public string HostbuttonGFXUrl { set => changes["virtualserver_hostbutton_gfx_url"] = value; }
/// Display name of the virtual server.
public string Name { set => changes["virtualserver_name"] = value; }
/// Phonetic pronunciation of the server name for text-to-speech.
public string PhoneticName { set => changes["virtualserver_name_phonetic"] = value; }
/// Welcome message shown to clients on connect.
public string WelcomeMessage { set => changes["virtualserver_welcomemessage"] = value; }
/// Minimum required client version string.
public string MinClientVersion { set => changes["virtualserver_min_client_version"] = value; }
/// Maximum number of simultaneous clients.
public int MaxClients { set => changes["virtualserver_maxclients"] = value.ToString(); }
/// Server-wide voice encryption policy.
public CodecEncryptionMode CodecEncryptionMode { set => changes["virtualserver_codec_encryption_mode"] = ((int)value).ToString(); }
/// How the host message is presented to clients.
public HostMessageMode HostMessageMode { set => changes["virtualserver_hostmessage_mode"] = ((int)value).ToString(); }
/// ID of the default server group assigned to new clients.
public int DefaultServerGroupID { set => changes["virtualserver_default_server_group"] = value.ToString(); }
/// ID of the default channel group assigned to clients in channels.
public int DefaultChannelGroupID { set => changes["virtualserver_default_channel_group"] = value.ToString(); }
/// ID of the channel group assigned to channel creators.
public int DefaultAdminChannelGroupID { set => changes["virtualserver_default_channel_admin_group"] = value.ToString(); }
/// Interval in seconds between host banner image refreshes.
public int HostbannerGFXInterval { set => changes["virtualserver_hostbanner_gfx_interval"] = value.ToString(); }
/// Number of complaints before a client is automatically banned.
public int ComplainAutoBanCount { set => changes["virtualserver_complain_autoban_count"] = value.ToString(); }
/// Duration in seconds of the auto-ban triggered by complaints.
public int ComplainAutoBanTime { set => changes["virtualserver_complain_autoban_time"] = value.ToString(); }
/// Time in seconds after which complaints are removed from the record.
public int ComplainRemoveTime { set => changes["virtualserver_complain_remove_time"] = value.ToString(); }
/// Minimum number of clients in a channel before forced silence is applied.
public int MinClientsForForcedSilence { set => changes["virtualserver_min_clients_in_channel_before_forced_silence"] = value.ToString(); }
/// Anti-flood points reduced per tick.
public int AntiFloodTickPointReduce { set => changes["virtualserver_antiflood_points_tick_reduce"] = value.ToString(); }
/// Anti-flood point threshold that triggers a command block.
public int AntiFloodCommandBlockThreshold { set => changes["virtualserver_antiflood_points_needed_command_block"] = value.ToString(); }
/// Anti-flood point threshold that triggers an IP block.
public int AntiFloodIPBlockThreshold { set => changes["virtualserver_antiflood_points_needed_ip_block"] = value.ToString(); }
/// UDP port the server listens on for voice connections.
public int Port { set => changes["virtualserver_port"] = value.ToString(); }
/// Whether the server starts automatically when the process starts.
public bool Autostart { set => changes["virtualserver_autostart"] = value ? "1" : "0"; }
/// Minimum identity security level required to connect.
public int NeededIdentitySecurityLevel { set => changes["virtualserver_needed_identity_security_level"] = value.ToString(); }
/// Whether client connect/disconnect events are logged.
public bool LogClient { set => changes["virtualserver_log_client"] = value ? "1" : "0"; }
/// Whether ServerQuery events are logged.
public bool LogQuery { set => changes["virtualserver_log_query"] = value ? "1" : "0"; }
/// Whether channel create/delete/edit events are logged.
public bool LogChannel { set => changes["virtualserver_log_channel"] = value ? "1" : "0"; }
/// Whether permission change events are logged.
public bool LogPermissions { set => changes["virtualserver_log_permissions"] = value ? "1" : "0"; }
/// Whether server edit events are logged.
public bool LogServer { set => changes["virtualserver_log_server"] = value ? "1" : "0"; }
/// Whether file transfer events are logged.
public bool LogFiletransfer { set => changes["virtualserver_log_filetransfer"] = value ? "1" : "0"; }
/// Icon ID displayed next to the server name.
public int IconID { set => changes["virtualserver_icon_id"] = value.ToString(); }
/// Number of reserved connection slots that cannot be used by regular clients.
public int ReservedSlots { set => changes["virtualserver_reserved_slots"] = value.ToString(); }
/// Whether the server is listed in the global TeamSpeak server list.
public bool WeblistEnabled { set => changes["virtualserver_weblist_enabled"] = value ? "1" : "0"; }
/// How the host banner image is scaled in the client.
public BannerMode HostbannerMode { set => changes["virtualserver_hostbanner_mode"] = ((int)value).ToString(); }
/// Default delay in seconds before empty temporary channels are deleted.
public int DefaultTempChannelDeleteDelay { set => changes["virtualserver_channel_temp_delete_delay_default"] = value.ToString(); }
/// Machine ID used to identify the physical host.
public int MachineID { set => changes["virtualserver_machine_id"] = value.ToString(); }
/// Volume modifier applied to priority speakers in decibels.
public float PrioritySpeakerDimmModifyer { set => changes["virtualserver_priority_speaker_dimm_modificator"] = value.ToString(); }
/// Maximum total download bandwidth in bytes/s; set to max ulong for unlimited.
public ulong MaxTotalDownloadBandwidth { set => changes["virtualserver_max_download_total_bandwidth"] = value.ToString(); }
/// Maximum total upload bandwidth in bytes/s; set to max ulong for unlimited.
public ulong MaxTotalUploadBandwidth { set => changes["virtualserver_max_upload_total_bandwidth"] = value.ToString(); }
/// Download quota per client in bytes; set to max ulong for unlimited.
public ulong DownloadQuota { set => changes["virtualserver_download_quota"] = value.ToString(); }
/// Upload quota per client in bytes; set to max ulong for unlimited.
public ulong UploadQuota { set => changes["virtualserver_upload_quota"] = value.ToString(); }
}
}