アクア:パル

TeamSpeak2 > tsControlを使ってオペレーション

tsControlを使う
tsControlはサードパーティーツールSDK(開発キット)のサンプルとして用意されているプログラムで、TeamSpeak2 RC2 Clientから情報取得したり、操作したりすることができるコマンドラインユーティリティです。
Windows版とLinux版があり、どちらのプラットフォームでも動作させることができます。

tsControlの実行ファイルはクライアントファイルの「client_sdk」ディレクトリ内にあります。

[teamspeak@home teamspeak]# cd /opt/TeamSpeak2RC2/client_sdk/
[teamspeak@home teamspeak]# ./tsControl

各種情報を取得・操作するには、TeamSpeak2 RC2 Clientが起動している必要があります。

例えば、接続先サーバのプレイヤーリストを取得するには、以下のように半角スペースの後にコマンドを入力します。

[teamspeak@home teamspeak]# ./tsControl GET_PLAYERS

コマンドは以下のものが用意されています。なお、コマンドを入力せずに実行するとコマンドリストを見ることができます。
*マークが付いているものは、サーバに接続していないと使用できないコマンドです。

CONNECT teamspeak://serveraddress?channelname=channel
・・・ serveraddressのTeamSpeak2サーバのchannelチャンネルに接続
DISCONNECT*
・・・ サーバから切断
QUIT
・・・ TeamSpeak2 RC2 Clientを終了
SWITCH_CHANNEL channelid password*
・・・ channelidチャンネルに移動(チャンネルパスワードがある場合はpasswordに入力)
GET_CLIENT_VERSION
・・・ TeamSpeak2 RC2 Clientのバージョン情報を表示
GET_SERVER_INFO*
・・・ 接続中のTeamSpeak2 RC2 Server情報を表示
GET_USER_INFO*
・・・ 自分のTeamSpeak接続情報を表示
GET_CHANNEL_INFO channelid*
・・・ channelidチャンネルの情報を表示
GET_PLAYER_INFO playerid*
・・・ playeridユーザの情報を表示
GET_CHANNELS*
・・・ チャンネルリストを表示
GET_PLAYERS*
・・・ 接続ユーザリストを表示
GET_SPEAKERS*
・・・ 現在発言中のユーザIDリストを表示
MUTE*
・・・ スピーカーをミュート
UNMUTE*
・・・ スピーカーのミュートを解除
SET_OPERATOR playerid flag*
・・・ playeridユーザにオペレータ属性を与える(flag=GRANT)奪う(flag=REVOKE)
SET_VOICE playerid flag*
・・・ playeridユーザにボイス属性を与える(flag=GRANT)奪う(flag=REVOKE)
KICK_PLAYER_CHANNEL playerid reson*
・・・ playeridユーザをサブチャンネルからキックし、親チャンネルに移動させる(reson=キック理由)
KICK_PLAYER_SERVER playerid reson*
・・・ playeridユーザをサーバからキックし、切断させる(reson=キック理由)
SEND_MESSAGE_CHANNEL channelid message*
・・・ chanelidチャンネルにmessageメッセージを送信
SEND_MESSAGE message*
・・・ サーバ全体にmessageメッセージを送信(不具合で動作しません)
PHPからtsControlを使う
PHPからtsControlを制御できれば、情報取得・遠隔制御のゲートウェイとして便利に利用できます。
ただし、通常の構成ではPHPが実行されるユーザ(apacheやnobody)からtsControlを実行しても、rootで実行されているTeamSpeak2 RC2 Clientにアクセスができないため、エラーになってしまいます。そこで、sudoコマンドを設定して一時的にrootでtsControlを実行できるようにしましょう。

[root@home root]# visudo

「# User privilege specification」以下を以下のように変更します。
なお、Apacheがapache以外のユーザ(nobodyなど)で実行される場合は任意で変更します。

root ALL= NOPASSWD: ALL
apache ALL= NOPASSWD: ALL

以上で設定は完了です。以下のようなPHPを作成してアクセスしてみましょう。

<?php
exec("sudo /opt/TeamSpeak2RC2/client_sdk/tsControl ".$q, $returndata);
echo $returndata;
?>

※セキュリティの観点からも、完全に自分専用のサーバ以外では使用しないほうが無難かと思います^^;

(c) 2006-2007 aqua:pal. All Rights Reserved.