Справочная система CleanVoice

Teamspeak 3 — Настройка сервера — ServerQuery

Подключение через ServerQuery

Интерфейс ServerQuery предоставляет возможность расширенного управления сервером, автоматизации сбора информации и различных действий.
Например, можно подключить через него скрипт, который будет автоматически проверять время неактивности пользователей, и перетаскивать неактивных в AFK комнату.

Как правило, непосредственный доступ через командную строку мало мало кем используется, поскольку существуют более удобные программы с визуальным интерфейсом. Например, YaTQa.
Наша веб панель управления тоже работает через ServerQuery.

На разных языках программирования написаны вспомогательные библиотеки-обертки, упрощающие взаимодействие с сервером ServerQuery:

Ниже рассматривается прямое подключение через текстовый терминал.

Данные для доступа

1. Через Teamspeak клиент в меню Инструменты > Вход ServerQuery введите имя логина, с ним на сервере будет создан аккаунт и отобразится сгенерированный пароль:

Получение аккаунта ServerQuery
После создания этот аккаунт не будет нигде отображаться. Все созданные аккаунты ServerQuery привязываются к идентификатору пользователя, его создавшему, и могут быть удалены только через удаление его идентификатора с сервера.
В нашей веб панели управления идентификатор любого пользователя можно удалить в разделе Управление > Clients.
По-умолчанию возможность создания ServerQuery аккаунта есть только у группы Server Admin.

2. Вам понадобится прямой IP адрес и порт сервера. Узнать их можно на https://tools.cleanvoice.ru/ts3status
Обратите внимание, что часто IP и порт отличаются от тех, через которые вы подключаетесь на TS сервер.

3. Query порт по-умолчанию 10011

Начиная с версии сервера 3.1.x доступно защищенное подключение SSH на порту 10022. Не на всех серверах оно включено.

Подключение

Соединиться к ServerQuery серверу можно через любой Telnet клиент. В последних версиях Windows такой клиент не установлен, но его можно добавить через "Программы и Компоненты", и затем использовать через командную строку следующим образом: telnet адрес порт

Либо можно соединиться через утилиту Putty.
В окне соединения заполните IP адрес сервера и порт ServerQuery, полученные на предыдущих шагах, а так же переключите тип соединения на Telnet:

Putty настройки соединения

После нажатия "Open" при успешном соединении появится приветственное сообщение сервера:

Приветственное сообщение ServerQuery

Авторизация

Теперь можно войти под логином и паролем, полученными выше через TS клиент, командой:
login аккаунт пароль
Если они правильные, то появится сообщение о выполнении команды. Такое же сообщение выводится при успешном выполнении любой команды:
error id=0 msg=ok

Авторизация ServerQuery

Теперь необходимо выбрать ваш виртуальный сервер. Это можно сделать по порту TS сервера, который вы получили выше вместе с IP адресом:
use port=9987
Либо по ID сервера, который нужно узнать у хостинга:
use sid=123
Как правило, работает первый вариант, но если на хостинге несколько виртуальных серверов с одним и тем же портом (один активен, другие остановлены), то вход не удастся и необходимо использовать второй способ.

После успешного выбора сервера можно выполнять различные манипуляции с сервером. Например, serverinfo выводит основные параметры виртуального сервера.

Для получения полного списка доступных команд введите help.

Существует две группы: "Admin ServerQuery" и "Guest ServerQuery". Для первой группы по-умолчанию единственный аккаунт "serveradmin" используется хостингом для управления всеми виртуальными TS серверами, которые работают по данному адресу. Ваш аккаунт принадлежит ко второй группе, и у него ограниченные привилегии, позволяющие управлять только одним своим сервером. Для Guest аккаунта ряд команд недоступен по понятным причинам безопасности (например, изменение слотов или развертывание своего бэкапа, в котором тоже может быть установлено другое количество слотов, или повышенные привилегии).
Список привилегий Guest ServerQuery зависит от изначальных настроек хостинга, и обычно сводится к просмотру общей информации сервера, пользователей и комнат. В дополнение к нему прибавляются привилегии идентификатора пользователя, для которого был создан ServerQuery аккаунт. Например, если при создании пользователь был в группе Server Admin, но потом был исключен из неё, то через созданный ранее ServerQuery так же не будет прав админа.
Тем не менее, злоумышленник, пока у него есть права админа, может заранее войти на сервер с новым идентификатором, установить на него скрытые привилегии и через него же создать ServerQuery. По этой причине не рекомендуется никому выдавать группу Server Admin.
По-умолчанию на сервере установлено ограничение по количеству передаваемых команд в секунду. По достижении лимита происходит временный бан по IP на 5-10 минут во время которого соединения на ServerQuery порт сбрасываются.
Чтобы не было банов настройте скрипт на более редкое выполнение команд. Если это невозможно, то обратитесь в техподдержку хостинга для добавления IP в белый список.