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(); } } }