Forum

Results 1 to 9 of 9
  1. #1
    Join Date
    September 2012
    Posts
    45

    3.0.4 Server SDK

    Wow, what a change.. *specifically* to the server_creation_params example. This will take a bit of time to digest, for sure. There are certainly several things "of note" to deal with, especially when it comes to adding proper database support. I am working on an example of "how to", and when I get some success I will post that for reference.

    Anyway, with that said.... there is certainly one issue that needs updating, dealing with the "key_pair" file. In the current sample, there is no 'write to the file when it doesn't exist' function. I tried copying the code from the 3.0.3.2 server and putting it into the same "generic" place into the new version, but that failed. I suspect that it had to do with the new creation array stuff, where the virtual server had not yet 'officially' been created... until after all of the channels have been defined and validated, and then the array is used to create the server. So, I create a local variable at the top of the code
    Code:
    #ifdef _WINDOWS
    #define SLEEP(x) Sleep(x)
    #else
    #define SLEEP(x) usleep(x*1000)
    #endif
    
    #define CHECK_ERROR(x) if((error = x) != ERROR_ok) { goto on_error; }
    
    bool found_kp = false; // <<< added this line
    In "create_VirtualServer2" I made this change
    Code:
        /* Assemble filename: keypair_<port>.txt */
        strcpy(filename, "keypair_");
        sprintf(port_str, "%d", port);
        strcat(filename, port_str);
        strcat(filename, ".txt");
    
        /* Try reading keyPair from file */
        if(readKeyPairFromFile(filename, buffer) == 0) {
            keyPair = buffer;  /* Id read from file */
    		found_kp = true; // <<< added this line
        } else {
            keyPair = "";  /* No Id saved, start virtual server with empty keyPair string */
        }
    and then at the "leave" label in the same function above, I modified it as follows
    Code:
    leave:
        /* Cleanup struct virtual server param. The included struct channel param will be automatically
         * freed when the virtual server param is freed, so you do not need to call freeMemory on
         * the channel params, too. */
        ts3server_freeMemory(vscp);
    
    	/* If we didn't load the keyPair before, query it from virtual server and save to file */
    	if (!found_kp) {
    		if ((error = ts3server_getVirtualServerKeyPair(serverID, &keyPair)) != ERROR_ok) {
    			char* errormsg;
    			if (ts3server_getGlobalErrorMessage(error, &errormsg) == ERROR_ok) {
    				printf("Error querying keyPair: %s\n\n", errormsg);
    				ts3server_freeMemory(errormsg);
    			}
    			return 0;
    		}
    
    		/* Save keyPair to file "keypair_<port>.txt"*/
    		if (writeKeyPairToFile(filename, keyPair) != 0) {
    			ts3server_freeMemory(keyPair);
    			return 0;
    		}
    		ts3server_freeMemory(keyPair);
    	}
    
        /* Finally return the virtual server ID of our just created virtual server */
        return serverID;
    Now, it's possible that the "return 0" should be -1 instead, just in case one of those 2 internal functions fails... but, it worked for me. It wrote a proper keypair code, and loaded it properly at the next run.

  2. #2
    Join Date
    September 2012
    Posts
    45
    well, I've tried 2 times to add some stuff into this thread, but it seems the forums time out... "checking browser" stuff.. and then its lost.

    I won't bother with the third time.

    I'll just say that the new server API to create channels does not work properly yet.

  3. #3
    Join Date
    September 2012
    Posts
    6,079
    Quote Originally Posted by dbsDev View Post
    well, I've tried 2 times to add some stuff into this thread, but it seems the forums time out... "checking browser" stuff.. and then its lost.

    I won't bother with the third time.

    I'll just say that the new server API to create channels does not work properly yet.
    If cloudflare decides to jump in (again) when posting, it won't work because it eats the post action or doesn't relay it properly.
    In any case you can copy your post content before clicking submit, then after the check finished go back to the thread and paste your post content then click submit. It usually works then.
    When sending PMs please make sure to include a reference link to the thread in question in the body of your message.

  4. #4
    Join Date
    September 2012
    Posts
    45
    Yeah, I figured I would have to end back up doing that. I'll wait till my mindset is in a better place. Waiting weeks for answer and support from the sdk team has driven my frustration level to an all time high.

  5. #5
    Join Date
    September 2012
    Posts
    45
    Since day 1 of the "starting" to get into the old SDK, I have encountered a ton of problems in development. The server doesn't seem to want to give the client certain variables, even though the calls to fetch that data have been sent. The biggest flaw was the auto generated channels, something which could have never ever worked in the real world.

    The new SDK came out, which addressed that to some degree, but it still doesn't work when the channels are not in numerical order (aka 1, 2, 3, 5, 9, etc).

    I have put tons of time into this, sent in a whole amount of emails to the SDK support team, most of which I would never get a response to. In my latest issues (none of them whinny in nature) I got no responses. One of the SDK members did send me some updated code after I sent them full source plus screen shots... but that code did not work.

    I've been going nuts asking questions and not getting responses, only to find out that I have reached my "free limit" of support. And I've been told that it is going to cost me to get support.

    Considering the past has been like pulling teeth... I have terminated my project. I simply can not afford the time it is going to take to get the SDK into something that even closely resembles what the real teamspeak does.
    Last edited by James; March 28th, 2017 at 06:20 PM. Reason: confidential information

  6. #6
    Join Date
    October 2013
    Posts
    2
    Hello,

    As much as we'd like to provide free support to everyone who utilizes the evaluation version of the TeamSpeak SDK, our Support and Development team must understandably focus on currently licensed SDK customers and those who are evaluating the SDK with plans to productize their game or application. The majority of our customers are able to integrate the SDK into their project with a few days of TeamSpeak's assistance and have gone live successfully. Unfortunately we are unable to dedicate resources for extended periods of time (approximately 3 years in this case) for projects that donít materialize. That being said, we are always willing to take a look at any bugs that you may encounter.

    Best Regards,
    James

  7. #7
    Join Date
    September 2012
    Posts
    45
    With all due respect...

    To start with, I have no idea where you are getting this "3 years" from. A LONG time back, we were looking at a way to run the guts of TS3 via a web interface, in order to do something better than BlogTalk was doing. After several inquiries, we were told that it would be extremely difficult, if not impossible... So that project was dropped before it even started.

    Then a few months back, a new project opportunity came along to offer a "political talk" concept, to take away from the people that were using PalTalk. A dedicated client/server solution, and it would have worked well. However the biggest problem encountered was how the default server was set to automatically generate a default channel, and then use sequential channel number assignment after that. This configuration could never work in a real world application that is database driven. The first time a channel is deleted, all of the assignments to that channel (ie file folders) would then get messed the next time the server was reloaded. Your own full system handles channels that are no longer in sequential order, and I was simply trying to get the SDK to operate like a real TS3 server would, nothing more.

    I sent in many requests that were never responded to. At no time during our development process, were we ever told that there would be "limits" on the support side. As you should be aware, my emails were full of excitement in trying to get this to work, and trying the various features out. Part of the problem was in the documentation of features. While it is clear a lot of time went into creating those documents, they were clearly written by someone who had knowledge of processes and lacked some sample code examples, especially for some of the more complex processes. But I fought through it, created by a client and server that was database driven and had a substantial amount of features working, or partially working, within a few short months. Not "years".

    I could never get the extended features to work, like getting the full client and server data to display, despite calling the functions required to load that additional data.

    There were also continued issues with the way the channel order was sent from the server to the client at login. Information would not be sent "in order", and I had to cache missed data and hold it for a few seconds, and then re-try to process the channels. One of the things lacking was some form of command that would say "ok, starting to send channel info now", followed by "ok, all channel data has been sent".

    When the new SDK was released that allowed proper channel assignment, from a database perspective, the generics worked. I was thrilled. Until of course, it came to the part of the code where channel order was determined. Yes, I could create channels with ID's of 1, 4, 15, 22... but the co-relation of the channel order would fail under the server control. I was given additional code for the server side, where all of the channels would be created without an order (which worked fine) and my own testing in doing that same concept worked before I sent in my "trouble"... followed by the channel order assignment after the fact. That failed. The code supplied did not work.

    While the SDK team has done some very awesome things, so much of what was needed, was just not there. If I can't get the server to do channels in a proper order, and create the sub channels in the proper co-relation, there is little point in continuing. I tried over and over to get help, sent in tons of code samples, including complete client and server code, and got no where.

    Should you actually get a version that works the way "life" is in the real world, I'll be most happy to get the latest versions. I can't justify spending money for support, considering the quality of support that I got along the way. No offense.. I know you need to make money. But I do too. Months of work went into it on my end, and I have nothing to show for it. All I needed, was a little bit of help.

    I have no knowledge of what other folks were doing, or what tools they were developing in. My platform was the dot net side of things. Maybe the C++ side of the code worked better, I don't know. I was at the point where I had full security and permissions set to put into the design, but I needed the database aspect to work just like the real world TS3 does... and it just never got there.
    Last edited by Chris; May 26th, 2017 at 09:21 AM. Reason: confidential

  8. #8
    Join Date
    September 2012
    Posts
    45
    Oh.. edited by Chris.. confidential.. must be the part about the support price. Yup yup.. ANYWAY.. As proof to James.. when I started this project, did some playing and testing under the console side... I started this thread http://forum.teamspeak.com/threads/1...Client-Samples in November of 2016...

    As I said, this was months, not years. I'd hate to have people thinking I was some form of "support leech" or something.

    Again, with all due respect.. some very awesome work in the SDK. Kudos to the TeamSpeak team for creating it. It's getting SO close to working, but it's just not there *yet.

    One of the things that I had suggested in emails, was the ability to create custom server commands (and of course, corresponding client side functions) that would act on a developers need to do things server related, and channel related. I know, there is that memo type area where things can be stuffed into but...

    In our case, we wanted to make some of the channels as "special" ones, where a timer type control could be added into the client side. The concept behind this (being political talk) was for the ability of a channel operator to do a debate event, where people would only be able to talk for (example) a 2 minute time period, much like televised political debates are done on TV.. When your time is up, the mic is cut off, and the next person then carries on.

    These 'custom' commands can be very generic in nature, for example to send a server id, channel id, user id, the 'command' and the 'data' for that command. It would then be up to the developer to fully implement that command, do all of the required validations etc, and then once processed, send a 'custom command' back to the client side. Clearly the TS team would not be responsible for any mistakes.

    I hope you can see that I am passionate about developing code. I worked hard on this, and the 'look and feel' of the client side was SO close to how the actual public clients worked... because if you are going to make something "team speak" related, people would expect it to look and feel as much like the real version as possible.

  9. #9
    Join Date
    May 2015
    Posts
    17

    Solved

    hi,

    Quote Originally Posted by dbsDev View Post
    I have no knowledge of what other folks were doing, or what tools they were developing in. My platform was the dot net side of things. Maybe the C++ side of the code worked better, I don't know. I was at the point where I had full security and permissions set to put into the design, but I needed the database aspect to work just like the real world TS3 does... and it just never got there.
    you are not alone with the .net development. My current project "Fox-Talk" (http://www.fox-talk.keepfree.de/) is also database and C# .NET based and i found a way to handle the SDK quit well i think. For example i use the SDK only for the voice and codec management. Everything else is done by my own command-server. When you need more controll, then maybe you should controll it all by your own code and not API based but that's just the way i do it.

    Greetings: NeoX

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •