82 $this->parent = $squery;
92 return $this->
whoamiGet(
"virtualserver_id", 0);
102 return $this->
whoamiGet(
"virtualserver_port", 0);
132 $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
133 $getargs = func_get_args();
135 $this->
execute(
"use", array(
"sid" => $sid, $virtual ?
"-virtual" : null));
137 if($sid != 0 && $this->predefined_query_name !== null)
139 $this->
execute(
"clientupdate", array(
"client_nickname" => (
string) $this->predefined_query_name));
144 $this->
setStorage(
"_server_use", array(__FUNCTION__, $getargs));
172 $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
173 $getargs = func_get_args();
175 $this->
execute(
"use", array(
"port" => $port, $virtual ?
"-virtual" : null));
177 if($port != 0 && $this->predefined_query_name !== null)
179 $this->
execute(
"clientupdate", array(
"client_nickname" => (
string) $this->predefined_query_name));
184 $this->
setStorage(
"_server_use", array(__FUNCTION__, $getargs));
209 $sid = $this->
execute(
"serveridgetbyport", array(
"virtualserver_port" => $port))->toList();
211 return $sid[
"server_id"];
222 if(!array_key_exists((
string) $sid, $this->
serverList()))
227 return $this->
serverList[intval((
string) $sid)][
"virtualserver_port"];
277 if($server[
"virtualserver_name"] == $name)
return $server;
294 if($server[
"virtualserver_unique_identifier"] == $uid)
return $server;
314 while($part = array_shift($parts))
316 $query->prepend($part);
320 $port =
TeamSpeak3::factory(
"tsdns://" . $query .
"/?timeout=3")->resolve($tsdns)->section(
":", 1);
327 if($e->getCode() != 10060 && $e->getCode() != 10061)
throw $e;
345 $detail = $this->
execute(
"servercreate", $properties)->toList();
364 $this->
execute(
"serverdelete", array(
"sid" => $sid));
382 $this->
execute(
"serverstart", array(
"sid" => $sid));
401 $this->
execute(
"serverstop", array(
"sid" => $sid));
416 $this->
execute(
"serverprocessstop");
429 $servers = $this->
request(
"serverlist -uid")->toAssocArray(
"virtualserver_id");
433 foreach($servers as $sid =>
$server)
462 return $this->
request(
"bindinglist")->toArray();
495 $reflects =
new ReflectionClass(
"TeamSpeak3");
497 foreach($reflects->getConstants() as $key => $val)
504 $permtree[$val][
"permcatid"] = $val;
505 $permtree[$val][
"permcathex"] =
"0x" . dechex($val);
507 $permtree[$val][
"permcatparent"] = $permtree[$val][
"permcathex"]{3} == 0 ? 0 : hexdec($permtree[$val][
"permcathex"]{2} . 0);
508 $permtree[$val][
"permcatchilren"] = 0;
509 $permtree[$val][
"permcatcount"] = 0;
511 if(isset($permtree[$permtree[$val][
"permcatparent"]]))
513 $permtree[$permtree[$val][
"permcatparent"]][
"permcatchilren"]++;
516 if($permtree[$val][
"permcatname"]->contains(
"/"))
518 $permtree[$val][
"permcatname"] = $permtree[$val][
"permcatname"]->section(
"/", 1)->trim();
525 $permtree[$val][
"permcatcount"]++;
542 if(!is_array($permid))
544 $permident = (is_numeric($permid)) ?
"permid" :
"permsid";
548 $permident = (is_numeric(
current($permid))) ?
"permid" :
"permsid";
551 return $this->
execute(
"permfind", array($permident => $permid))->toArray();
599 if(!is_numeric($permid))
604 return (
int) $permid >> 8;
618 if(!is_numeric($permid))
623 return (
int) bindec(substr(decbin($permid), -8))+0xFF00;
639 if(!is_array($permid))
641 $permident = (is_numeric($permid)) ?
"permid" :
"permsid";
645 $permident = (is_numeric(
current($permid))) ?
"permid" :
"permsid";
648 $this->
execute(
"servergroupautoaddperm", array(
"sgtype" => $sgtype, $permident => $permid,
"permvalue" => $permvalue,
"permnegated" => $permnegated,
"permskip" => $permskip));
661 if(!is_array($permid))
663 $permident = (is_numeric($permid)) ?
"permid" :
"permsid";
667 $permident = (is_numeric(
current($permid))) ?
"permid" :
"permsid";
670 $this->
execute(
"servergroupautodelperm", array(
"sgtype" => $sgtype, $permident => $permid));
681 if(!is_array($permid))
683 $permident = (is_numeric($permid)) ?
"permid" :
"permsid";
687 $permident = (is_numeric(
current($permid))) ?
"permid" :
"permsid";
690 return $this->
execute(
"permget", array($permident => $permid))->toAssocArray(
"permsid");
699 public function modify(array $properties)
701 $this->
execute(
"instanceedit", $properties);
713 $this->
execute(
"gm", array(
"msg" => $msg));
725 public function logView($lines = 30, $begin_pos = null, $reverse = null, $instance = TRUE)
727 return $this->
execute(
"logview", array(
"lines" => $lines,
"begin_pos" => $begin_pos,
"instance" => $instance,
"reverse" => $reverse))->toArray();
742 $this->
execute(
"logadd", array(
"logmsg" => $logmsg,
"loglevel" => $loglevel));
753 public function login($username, $password)
755 $this->
execute(
"login", array(
"client_login_name" => $username,
"client_login_password" => $password));
761 $this->
setStorage(
"_login_pass", $crypt->encrypt($password));
789 if($this->
whoami === null)
806 if(array_key_exists($ident, $this->
whoami()))
808 return $this->
whoami[$ident];
845 return $this->
getParent()->getTransportHost();
855 return $this->
getParent()->getTransportPort();
876 $info1 = $this->
request(
"hostinfo")->toList();
877 $info2 = $this->
request(
"instanceinfo")->toList();
879 $this->nodeInfo = array_merge($this->nodeInfo, $info1, $info2);
893 $this->predefined_query_name = $name;
918 $this->exclude_query_clients = $exclude;
943 $this->start_offline_virtual = $virtual;
968 $this->sort_clients_channels = $first;
1030 $username = $this->
getStorage(
"_login_user");
1031 $password = $this->
getStorage(
"_login_pass");
1033 if($username && $password)
1037 $this->
login($username, $crypt->decrypt($password));
1040 $this->predefined_query_name = $this->
getStorage(
"_query_nick");
1041 $this->exclude_query_clients = $this->
getStorage(
"_query_hide", FALSE);
1042 $this->start_offline_virtual = $this->
getStorage(
"_do_virtual", FALSE);
1043 $this->sort_clients_channels = $this->
getStorage(
"_client_top", FALSE);
1050 call_user_func_array(array($this, $func), $args);