From 30ee988c3e3477d07f2d917c4efad3581a7707b6 Mon Sep 17 00:00:00 2001 From: WolverinDEV Date: Thu, 5 Mar 2020 14:11:24 +0100 Subject: [PATCH] Some updates --- src/Definitions.h | 1 + src/Properties.h | 105 ++++++++++++++++++++++++---------------------- 2 files changed, 56 insertions(+), 50 deletions(-) diff --git a/src/Definitions.h b/src/Definitions.h index a3e6699..8921f34 100644 --- a/src/Definitions.h +++ b/src/Definitions.h @@ -11,6 +11,7 @@ namespace ts { typedef int32_t OptionalServerId; constexpr auto EmptyServerId = (OptionalServerId) -1; + typedef uint16_t VirtualServerId; typedef uint64_t ClientDbId; typedef uint16_t ClientId; typedef std::string ClientUid; diff --git a/src/Properties.h b/src/Properties.h index 6744781..e14cee8 100644 --- a/src/Properties.h +++ b/src/Properties.h @@ -144,11 +144,11 @@ namespace ts { VIRTUALSERVER_HOSTMESSAGE, //available when connected, not updated while connected VIRTUALSERVER_HOSTMESSAGE_MODE, //available when connected, not updated while connected VIRTUALSERVER_FILEBASE, //not available to clients, stores the folder used for file transfers - VIRTUALSERVER_DEFAULT_SERVER_GROUP, //the manager permissions server group that a new manager gets assigned - VIRTUALSERVER_DEFAULT_MUSIC_GROUP, //the manager permissions server group that a new manager gets assigned - VIRTUALSERVER_DEFAULT_CHANNEL_GROUP, //the channel permissions group that a new manager gets assigned when joining a channel + VIRTUALSERVER_DEFAULT_SERVER_GROUP, //the manager permissions server group that a new client gets assigned + VIRTUALSERVER_DEFAULT_MUSIC_GROUP, //the client permissions server group that a new client gets assigned + VIRTUALSERVER_DEFAULT_CHANNEL_GROUP, //the channel permissions group that a new client gets assigned when joining a channel VIRTUALSERVER_FLAG_PASSWORD, //only available on request (=> requestServerVariables) - VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP, //the channel permissions group that a manager gets assigned when creating a channel + VIRTUALSERVER_DEFAULT_CHANNEL_ADMIN_GROUP, //the channel permissions group that a client gets assigned when creating a channel VIRTUALSERVER_MAX_DOWNLOAD_TOTAL_BANDWIDTH, //only available on request (=> requestServerVariables) VIRTUALSERVER_MAX_UPLOAD_TOTAL_BANDWIDTH, //only available on request (=> requestServerVariables) VIRTUALSERVER_HOSTBANNER_URL, //available when connected, always up-to-date @@ -235,7 +235,7 @@ namespace ts { CHANNEL_NAME, //Available for all channels that are "in view", always up-to-date CHANNEL_TOPIC, //Available for all channels that are "in view", always up-to-date CHANNEL_DESCRIPTION, //Must be requested (=> requestChannelDescription) - CHANNEL_PASSWORD, //not available manager side + CHANNEL_PASSWORD, //not available client side CHANNEL_CODEC, //Available for all channels that are "in view", always up-to-date CHANNEL_CODEC_QUALITY, //Available for all channels that are "in view", always up-to-date CHANNEL_MAXCLIENTS, //Available for all channels that are "in view", always up-to-date @@ -247,13 +247,13 @@ namespace ts { CHANNEL_FLAG_PASSWORD, //Available for all channels that are "in view", always up-to-date CHANNEL_CODEC_LATENCY_FACTOR, //Available for all channels that are "in view", always up-to-date CHANNEL_CODEC_IS_UNENCRYPTED, //Available for all channels that are "in view", always up-to-date - CHANNEL_SECURITY_SALT, //Not available manager side, not used in teamspeak, only SDK. Sets the options+salt for security hash. + CHANNEL_SECURITY_SALT, //Not available client side, not used in teamspeak, only SDK. Sets the options+salt for security hash. CHANNEL_DELETE_DELAY, //How many seconds to wait before deleting this channel CHANNEL_FLAG_MAXCLIENTS_UNLIMITED, //Available for all channels that are "in view", always up-to-date CHANNEL_FLAG_MAXFAMILYCLIENTS_UNLIMITED,//Available for all channels that are "in view", always up-to-date CHANNEL_FLAG_MAXFAMILYCLIENTS_INHERITED,//Available for all channels that are "in view", always up-to-date - CHANNEL_FLAG_ARE_SUBSCRIBED, //Only available manager side, stores whether we are subscribed to this channel - CHANNEL_FILEPATH, //not available manager side, the folder used for file-transfers for this channel + CHANNEL_FLAG_ARE_SUBSCRIBED, //Only available client side, stores whether we are subscribed to this channel + CHANNEL_FILEPATH, //not available client side, the folder used for file-transfers for this channel CHANNEL_NEEDED_TALK_POWER, //Available for all channels that are "in view", always up-to-date CHANNEL_FORCED_SILENCE, //Available for all channels that are "in view", always up-to-date CHANNEL_NAME_PHONETIC, //Available for all channels that are "in view", always up-to-date @@ -286,62 +286,62 @@ namespace ts { enum ClientProperties { CLIENT_UNDEFINED, CLIENT_BEGINMARKER, - CLIENT_UNIQUE_IDENTIFIER = CLIENT_BEGINMARKER, //automatically up-to-date for any manager "in view", can be used to identify this particular manager installation - CLIENT_NICKNAME, //automatically up-to-date for any manager "in view" + CLIENT_UNIQUE_IDENTIFIER = CLIENT_BEGINMARKER, //automatically up-to-date for any client "in view", can be used to identify this particular client installation + CLIENT_NICKNAME, //automatically up-to-date for any client "in view" CLIENT_VERSION, //for other clients than ourself, this needs to be requested (=> requestClientVariables) CLIENT_PLATFORM, //for other clients than ourself, this needs to be requested (=> requestClientVariables) - CLIENT_FLAG_TALKING, //automatically up-to-date for any manager that can be heard (in room / whisper) - CLIENT_INPUT_MUTED, //automatically up-to-date for any manager "in view", this clients microphone mute status - CLIENT_OUTPUT_MUTED, //automatically up-to-date for any manager "in view", this clients headphones/speakers/mic combined mute status - CLIENT_OUTPUTONLY_MUTED, //automatically up-to-date for any manager "in view", this clients headphones/speakers only mute status - CLIENT_INPUT_HARDWARE, //automatically up-to-date for any manager "in view", this clients microphone hardware status (is the capture device opened?) - CLIENT_OUTPUT_HARDWARE, //automatically up-to-date for any manager "in view", this clients headphone/speakers hardware status (is the playback device opened?) + CLIENT_FLAG_TALKING, //automatically up-to-date for any client that can be heard (in room / whisper) + CLIENT_INPUT_MUTED, //automatically up-to-date for any client "in view", this clients microphone mute status + CLIENT_OUTPUT_MUTED, //automatically up-to-date for any client "in view", this clients headphones/speakers/mic combined mute status + CLIENT_OUTPUTONLY_MUTED, //automatically up-to-date for any client "in view", this clients headphones/speakers only mute status + CLIENT_INPUT_HARDWARE, //automatically up-to-date for any client "in view", this clients microphone hardware status (is the capture device opened?) + CLIENT_OUTPUT_HARDWARE, //automatically up-to-date for any client "in view", this clients headphone/speakers hardware status (is the playback device opened?) CLIENT_DEFAULT_CHANNEL, //only usable for ourself, the default channel we used to connect on our last connection attempt CLIENT_DEFAULT_CHANNEL_PASSWORD, //internal use CLIENT_SERVER_PASSWORD, //internal use - CLIENT_META_DATA, //automatically up-to-date for any manager "in view", not used by TeamSpeak, free storage for sdk users - CLIENT_IS_RECORDING, //automatically up-to-date for any manager "in view" + CLIENT_META_DATA, //automatically up-to-date for any client "in view", not used by TeamSpeak, free storage for sdk users + CLIENT_IS_RECORDING, //automatically up-to-date for any client "in view" CLIENT_VERSION_SIGN, //sign - CLIENT_SECURITY_HASH, //SDK use, not used by teamspeak. Hash is provided by an outside source. A channel will use the security salt + other manager data to calculate a hash, which must be the same as the one provided here. + CLIENT_SECURITY_HASH, //SDK use, not used by teamspeak. Hash is provided by an outside source. A channel will use the security salt + other client data to calculate a hash, which must be the same as the one provided here. //Rare properties CLIENT_KEY_OFFSET, //internal use CLIENT_LOGIN_NAME, //used for serverquery clients, makes no sense on normal clients currently CLIENT_LOGIN_PASSWORD, //used for serverquery clients, makes no sense on normal clients currently - CLIENT_DATABASE_ID, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds database manager id + CLIENT_DATABASE_ID, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds database client id CLIENT_ID, //clid! CLIENT_HARDWARE_ID, //hwid! - CLIENT_CHANNEL_GROUP_ID, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds database manager id - CLIENT_SERVERGROUPS, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds all servergroups manager belongs too - CLIENT_CREATED, //this needs to be requested (=> requestClientVariables), first time this manager connected to this server - CLIENT_LASTCONNECTED, //this needs to be requested (=> requestClientVariables), last time this manager connected to this server - CLIENT_TOTALCONNECTIONS, //this needs to be requested (=> requestClientVariables), how many times this manager connected to this server - CLIENT_AWAY, //automatically up-to-date for any manager "in view", this clients away status - CLIENT_AWAY_MESSAGE, //automatically up-to-date for any manager "in view", this clients away message - CLIENT_TYPE, //automatically up-to-date for any manager "in view", determines if this is a real manager or a server-query connection - CLIENT_TYPE_EXACT, //automatically up-to-date for any manager "in view", determines if this is a real manager or a server-query connection - CLIENT_FLAG_AVATAR, //automatically up-to-date for any manager "in view", this manager got an avatar - CLIENT_TALK_POWER, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds database manager id - CLIENT_TALK_REQUEST, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds timestamp where manager requested to talk - CLIENT_TALK_REQUEST_MSG, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, holds matter for the request - CLIENT_DESCRIPTION, //automatically up-to-date for any manager "in view" - CLIENT_IS_TALKER, //automatically up-to-date for any manager "in view" + CLIENT_CHANNEL_GROUP_ID, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds database client id + CLIENT_SERVERGROUPS, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds all servergroups client belongs too + CLIENT_CREATED, //this needs to be requested (=> requestClientVariables), first time this client connected to this server + CLIENT_LASTCONNECTED, //this needs to be requested (=> requestClientVariables), last time this client connected to this server + CLIENT_TOTALCONNECTIONS, //this needs to be requested (=> requestClientVariables), how many times this client connected to this server + CLIENT_AWAY, //automatically up-to-date for any client "in view", this clients away status + CLIENT_AWAY_MESSAGE, //automatically up-to-date for any client "in view", this clients away message + CLIENT_TYPE, //automatically up-to-date for any client "in view", determines if this is a real client or a server-query connection + CLIENT_TYPE_EXACT, //automatically up-to-date for any client "in view", determines if this is a real client or a server-query connection + CLIENT_FLAG_AVATAR, //automatically up-to-date for any client "in view", this client got an avatar + CLIENT_TALK_POWER, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds database client id + CLIENT_TALK_REQUEST, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds timestamp where client requested to talk + CLIENT_TALK_REQUEST_MSG, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, holds matter for the request + CLIENT_DESCRIPTION, //automatically up-to-date for any client "in view" + CLIENT_IS_TALKER, //automatically up-to-date for any client "in view" CLIENT_MONTH_BYTES_UPLOADED, //this needs to be requested (=> requestClientVariables) CLIENT_MONTH_BYTES_DOWNLOADED, //this needs to be requested (=> requestClientVariables) CLIENT_TOTAL_BYTES_UPLOADED, //this needs to be requested (=> requestClientVariables) CLIENT_TOTAL_BYTES_DOWNLOADED, //this needs to be requested (=> requestClientVariables) CLIENT_TOTAL_ONLINE_TIME, CLIENT_MONTH_ONLINE_TIME, - CLIENT_IS_PRIORITY_SPEAKER, //automatically up-to-date for any manager "in view" - CLIENT_UNREAD_MESSAGES, //automatically up-to-date for any manager "in view" - CLIENT_NICKNAME_PHONETIC, //automatically up-to-date for any manager "in view" - CLIENT_NEEDED_SERVERQUERY_VIEW_POWER, //automatically up-to-date for any manager "in view" + CLIENT_IS_PRIORITY_SPEAKER, //automatically up-to-date for any client "in view" + CLIENT_UNREAD_MESSAGES, //automatically up-to-date for any client "in view" + CLIENT_NICKNAME_PHONETIC, //automatically up-to-date for any client "in view" + CLIENT_NEEDED_SERVERQUERY_VIEW_POWER, //automatically up-to-date for any client "in view" CLIENT_DEFAULT_TOKEN, //only usable for ourself, the default token we used to connect on our last connection attempt - CLIENT_ICON_ID, //automatically up-to-date for any manager "in view" - CLIENT_IS_CHANNEL_COMMANDER, //automatically up-to-date for any manager "in view" - CLIENT_COUNTRY, //automatically up-to-date for any manager "in view" - CLIENT_CHANNEL_GROUP_INHERITED_CHANNEL_ID, //automatically up-to-date for any manager "in view", only valid with PERMISSION feature, contains channel_id where the channel_group_id is set from - CLIENT_BADGES, //automatically up-to-date for any manager "in view", stores icons for partner badges + CLIENT_ICON_ID, //automatically up-to-date for any client "in view" + CLIENT_IS_CHANNEL_COMMANDER, //automatically up-to-date for any client "in view" + CLIENT_COUNTRY, //automatically up-to-date for any client "in view" + CLIENT_CHANNEL_GROUP_INHERITED_CHANNEL_ID, //automatically up-to-date for any client "in view", only valid with PERMISSION feature, contains channel_id where the channel_group_id is set from + CLIENT_BADGES, //automatically up-to-date for any client "in view", stores icons for partner badges CLIENT_MYTEAMSPEAK_ID, CLIENT_INTEGRATIONS, @@ -371,11 +371,11 @@ namespace ts { CONNECTION_PING = CONNECTION_BEGINMARKER, //average latency for a round trip through and back this connection CONNECTION_PING_DEVIATION, //standard deviation of the above average latency CONNECTION_CONNECTED_TIME, //how long the connection exists already - CONNECTION_IDLE_TIME, //how long since the last action of this manager - CONNECTION_CLIENT_IP, //NEED DB SAVE! //IP of this manager (as seen from the server side) - CONNECTION_CLIENT_PORT, //Port of this manager (as seen from the server side) - CONNECTION_SERVER_IP, //IP of the server (seen from the manager side) - only available on yourself, not for remote clients, not available server side - CONNECTION_SERVER_PORT, //Port of the server (seen from the manager side) - only available on yourself, not for remote clients, not available server side + CONNECTION_IDLE_TIME, //how long since the last action of this client + CONNECTION_CLIENT_IP, //NEED DB SAVE! //IP of this client (as seen from the server side) + CONNECTION_CLIENT_PORT, //Port of this client (as seen from the server side) + CONNECTION_SERVER_IP, //IP of the server (seen from the client side) - only available on yourself, not for remote clients, not available server side + CONNECTION_SERVER_PORT, //Port of the server (seen from the client side) - only available on yourself, not for remote clients, not available server side CONNECTION_PACKETS_SENT_SPEECH, //how many Speech packets were sent through this connection CONNECTION_PACKETS_SENT_KEEPALIVE, CONNECTION_PACKETS_SENT_CONTROL, @@ -396,7 +396,7 @@ namespace ts { CONNECTION_PACKETLOSS_KEEPALIVE, CONNECTION_PACKETLOSS_CONTROL, CONNECTION_PACKETLOSS_TOTAL, //the probability with which a packet round trip failed because a packet was lost - CONNECTION_SERVER2CLIENT_PACKETLOSS_SPEECH, //the probability with which a speech packet failed from the server to the manager + CONNECTION_SERVER2CLIENT_PACKETLOSS_SPEECH, //the probability with which a speech packet failed from the server to the client CONNECTION_SERVER2CLIENT_PACKETLOSS_KEEPALIVE, CONNECTION_SERVER2CLIENT_PACKETLOSS_CONTROL, CONNECTION_SERVER2CLIENT_PACKETLOSS_TOTAL, @@ -821,6 +821,11 @@ namespace ts { bool isSaveEnabled(){ return this->save; } + template ::value, int>::type = 0> + PropertyWrapper find(T type) { + return this->find(property::impl::type(), type); + } + PropertyWrapper find(property::PropertyType type, int index); bool has(property::PropertyType type, int index);