1. | I cannot start multiple server processes? I cannot start more than one virtual server? | |||
You don't have a valid license key in the correct location. The file
Please contact
| ||||
2. | How can I configure the maximum number of slots? | |||
The number of slots per virtual server can be changed by setting the virtual server property Example to set 100 slots on the specified virtual server: ts3server_setVirtualServerVariableAsInt(serverID, VIRTUALSERVER_MAXCLIENTS, 100); // Set value ts3server_flushVirtualServerVariable(serverID); // Flush value
| ||||
3. | I get "Accounting | | sid=1 is running" "initializing shutdown" in the log | |||
This error does not occur because you are exceeding your licensed server or slot count, but rather because you are running more than one instance of a virtual server with the same server keypair. When creating a new virtual server, a keypair must be passed to However, above problem can happen if the virtual server is started with a stored keypair, then the entire folder including the stored keypair is copied to another PC and also started there with the same key. In this case the licensing server will notice the same key is used more than once after one hour and shutdown the most recently started server which tried to steal the identity of an already running server. The fix, in the server sample case, would be to delete the keypair_*.txt files from the copied directory before starting the second server, that way a new key would be generated and the licensing server would see the two servers as two valid different entities. The accounting server would now only complain if the number of simultaneously running servers exceeds your number of slots.
| ||||
4. | How to implement a name/password authentication? | |||
Although TeamSpeak 3 offers an authentication system based on public/private keys, an often made request is to use an additional login name/password mechanism to authenticate clients with the TeamSpeak 3 server. Here we will suggest a possibility to implement this authentication on top of the existing public/private key mechanism. When connecting to the TeamSpeak 3 server, a client might make use of the CLIENT_META_DATA property and fill this with a name/password combination to let the server validate this this data in the servers The client-side code: // In the client, set CLIENT_META_DATA before connecting if(ts3client_setClientSelfVariableAsString(scHandlerID, CLIENT_META_DATA, "NAME#PASSWORD") != ERROR_ok) { printf("Failed setting client meta data\n"); return; } // Call ts3client_startConnection In the server implement the onClientConnected callback, which validates the name/password meta data and refuses the connection if not validated: void onClientConnected(uint64 serverID, anyID clientID, uint64 channelID, unsigned int* removeClientError) { // Query CLIENT_META_DATA char* metaData; if(ts3server_getClientVariableAsString(serverID, clientID, CLIENT_META_DATA, &metaData) != ERROR_ok) { printf("Failed querying client meta data\n"); *removeClientError = ERROR_client_not_logged_in; // Block client return; } // Validate name/password if(!validateNamePassword(metaData)) { *removeClientError = ERROR_client_not_logged_in; // Block client } // Client is allowed to connect if removeClientError is not changed // (defaults is ERROR_ok) ts3server_freeMemory(metaData); // Release previously allocated memory } |