nikeee / TeamSpeak3QueryApi

.NET wrapper for the TeamSpeak 3 Query API
https://nikeee.github.io/TeamSpeak3QueryAPI
GNU General Public License v3.0
60 stars 16 forks source link

SSH Support #58

Closed lgund closed 4 years ago

lgund commented 4 years ago

Telnet isnt very safty. Are you planing to add ssh support? Teamspeak will remove for sure telnet support in the future.

nikeee commented 4 years ago

Do you have a reference for their raw TCP removal?

lgund commented 4 years ago

The syntax is still the same. You just need to use the ssh protocol and for sure you need to login first. So you can't connect to the query without a valid login. It´s look like there is currently no c# lib that support this functionality. If you want I can try to add them and make a pull request.

Here is a example picture with ssh: image

nikeee commented 4 years ago

Do you have a reference on the website of teamspeak or their docs that says that SSH is supported?

lgund commented 4 years ago

This picture is a ssh connection. You know that teamspeak hasn't god documents. But you can look over the official changelog of the latest server here. SSH was added long ago at the begining of the year. Currently they have also added webquery via http and https since march. In my ini file you can add this line to activate all of them query_protocols=raw,ssh,http,https.

Edit: I found the post. SSH will be there now by default and raw will be by default disabled. But I am sure this is just a question of time when it will be removed.

lgund commented 4 years ago

I´ve added ssh support here. I would make a pr but it would be better in a other branch? There you can check the code and you can publish it as version 2.0 if it works stable enough.

I hope this is a deal. Please let me know if you create a branch.

I´ve added a little prefix so you can see which mode is currently used (SSH or TELNET): image

Only diffrence is in the login code. All other codes work like before. You just have here the diffrence:

    // Ssh connection
    var rc = new TeamSpeakClient(host, TeamspeakConnectionType.SSH);
    rc.ConnectSsh(user, password);

    // Telnet connection
    var rc = new TeamSpeakClient(host);
    await rc.ConnectTelnetAsync();
    await rc.LoginAsync(user, password);