Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TeamSpeak 3 PHP Framework

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It’s based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Why should I use the TS3 PHP Framework rather than other PHP libraries?

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class and delivers unprecedented performance when used correctly.

Requirements

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5+ interpreter with a web server configured to handle PHP scripts correctly.

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on Apache than on other web servers.

Installation

You can either install the TS3 PHP Framework by manually downloading it or using Composer:

composer require planetteamspeak/ts3-php-framework

The above command will install the latest available release.

If you want to install the TS3 PHP Framework's master branch instead (which may not be released / tagged yet), you need to run:

composer require planetteamspeak/ts3-php-framework:dev-master

Getting Started

Connection URI (Options + IPv4 vs IPv6)

Before you can run commands like "get version of server instance" or "update some settings", you need to specify to which instance you want to connect to. This is done using the URI in TeamSpeak3::factory("$uri").

The base $uri looks always like this:

$uri = "serverquery://username:password@127.0.0.1:10011/";

Note: If a piece of your URI contains special characters, you will need to encode that piece using urlrawencode:

$uri = "serverquery://" . urlrawencode('username') . ":" . urlrawencode('password') . "@127.0.0.1:10011/";
// Example$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":" . urlrawencode('sd5kjKJ2') . "@127.0.0.1:10011/";

You also can add some options behind the last / in the URI.

To connect to a specific virtual TeamSpeak 3 server using it's virtualserver_port:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";

Additional options can be added using a simple & like in HTTP GET URLs:

$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0";

The list of available options can be found in TeamSpeak3 > factory

The TS3 PHP Framework supports connecting to IPv6 TeamSpeak hosts. An IPv6 address must be written within square brackets:

$uri = "serverquery://username:password@[fe80::250:56ff:fe16:1447]:10011/";

You can use this simple trick to always get the correct URI based on type of provided IP address $ip:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$uri = "serverquery://username:password@${ip}:10011/";
} elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$uri = "serverquery://username:password@[${ip}]:10011/";
} else {
echo"${ip} is no valid IPv4 or IPv6 address!";
}

Encoding URI Special Characters

When passing URI as argument or parameter, some parts may need to contain special characters. You should use urlrawencode on these parts:

// Bad:$uri = "serverquery://test!@#$%^&*()_+:sd5kjKJ2@127.0.0.1:10011/";
// Good:$uri = "serverquery://" . urlrawencode('test!@#$%^&*()_+') . ":sd5kjKJ2@127.0.0.1:10011/";

_Note: Encode URI components rather than entire URI string. Valid, special characters need to remain unencoded!

Special characters are defined in the newer RFC 3986 as any character not in the (ascii, latin) set:

ALPHA / DIGIT / "-" / "." / "_" / "~"

Additional:

  • Most common situation will be encoding only 'username', 'password' pieces.
  • Do not encode if not using special characters.
  • Path and query components need additional parsing, e.g. we don't want to encode valid '/' and '&'.
  • Fragment component may need to be encoded using older urlencode.
  • RFC 1738 - Old RFC used for URI encoding
  • RFC 3986 - Current URI standard
  • RFC 2396 - Section 3 - Valid URI syntax (specifically, components of)
  • PHP.net - urlrawencode

Usual PHP Code (require solution)

Usual PHP code means a simple created file.php, where you start writing your code like this:

<?phpecho"Hello World!";

When you use this solution, you'll probably start using the TS3 PHP Framework like this:

<?php// load framework filesrequire_once("libraries/TeamSpeak3/TeamSpeak3.php");
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = TeamSpeak3::factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverecho"Error " . $e->getCode() . ": " . $e->getMessage();
}

PHP Code in MVC (use solution)

When you use a MVC based software like Symfony, CakePHP, Laravel or something similar, you'll probably use something like this:

<?phpuseTeamSpeak3;
useTeamSpeak3_Exception;
class TeamspeakController extends Controller
{
publicfunctiondoSomething()
{
try
{
// IPv4 connection URI$uri = "serverquery://username:password@127.0.0.1:10011/?server_port=9987";
// Create new object of TS3 PHP Framework class$TS3PHPFramework = newTeamSpeak3();
// connect to above specified server, authenticate and spawn an object for the virtual server on port 9987$ts3_VirtualServer = $TS3PHPFramework->factory("$uri");
// spawn an object for the channel using a specified name$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
}
catch(TeamSpeak3_Exception$e)
{
// print the error message returned by the serverreturn"Error " . $e->getCode() . ": " . $e->getMessage();
}
}
}

For further information please visit the documentation (see Useful Links).

Features

Features of the TS3 PHP Framework include:

  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • Integrated full featured and customizable TSViewer interfaces
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • Powerful error handling capablities using exceptions and customizable error messages
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • Dynamic signal slots for event based scripting

Tests

To run all tests use php vendor/bin/phpunit.

Useful Links

Visit the following pages for more information about the TS3 PHP Framework:

Speed up new development and reduce maintenance costs by using this nifty piece of software!

About

Modern use-at-will framework that provides individual components to manage TeamSpeak 3 Server instances

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages