Hello TS3-Team,

I'm currently writing a library in C# which will later be used in a Silverlight front-end to provide a Remote Control Panel of TS3 that can be used in web-pages and within the windows sidebar.

During testing the Server-Query port of my TS3 server I've noticed that the default credentials of a non authenticated user (using the query port) are too high. (That's my opinion)

- 1 Virtual Server running, which is password protected

Here are my reasons: (Tested without authentication just used telnet, no usage of "login"!!!)
- Poke Message to a user works (why the hell can I send messages to users of a password-protected server?)
- ComplainList can be retrieved
- BanList can be retrieved
- SendTextMessage to Channel and User works (wahhhhhhh, remember the server is password protected!)
- ClientList --> IP of QuerySession-Users is listed with port (Why the hell can every other query session user see my IP address?)

Just my 2 cents to the query syntax:

So far it's good, there are a few mistakes in the documentation but thats not the problem, the only thing that I think isn't perfect is the pipe-operator. Parsing the results of a query that contains pipes isn't bullet proof, because sometimes the pipes covers multiple key-value-pairs (list items) and sometimes not.

Example from the docs:

Query: servergroupclientlist sgid=16
Result: cldbid=7|cldbid=8|cldbid=9|cldbid=11|cldbid=13|cld bid=16|cldbid=18|cldbid=29|cldbid=32|cldbid=34|cld bid=37|cldbid=4
My Comment: In this case the result is a list of single key-value-pairs

Query: channellist -topic
Result: cid=15 pid=0 channel_order=0 channel_name=Default\sChannel channel_topic=Default\sChannel\shas\sno\s[b]topic[\/b]
error id=0 msg=ok
My Comment: In this case the pipe is used to seperate listitems where each listitem contains multiple key-value-pairs

Query: channelpermlist cid=2
Result: cid=2 permid=4353 permvalue=1 permnegated=0 permskip=0|permid=17276 permvalue=50
error id=0 msg=ok
My Comment: In this case the pipe is again used to seperate listitems where each listitem contains multiple key-value-pairs, but this time there is a single key-value-pair in the front of the listitems.

What did you guys thought about parsing this? I have a few ideas on how to do it, but in your docs you dont tell us which other special cases may appear. I'de like to write a generic logic to parse results but this doesn't seemed to be as easy as expected :-D. Am I missing something?

There is no hint when the pipe operator is used to separate multiple key-value-pairs or single key-value-pairs and so on.

Anyway nice work!