Add TeamSpeak 3 Config (#38)

* Add TeamSpeak 3 Config (draft)

This is the draft of the TeamSpeak 3 config.

* Overhaul the config

* Update teamspeak3.kvp

* Getting closer, but also tired

* Update teamspeak3.kvp

* Port changes, Config file changes, Telnet setup

* That ain't no damn ini file. It's just a plain old kvp and it is my worst enemy now. Time for a break.

* Making settings file match default values

* Greelan's OCD changes. ;)
This commit is contained in:
IceOfWraith 2022-09-11 17:01:57 -05:00 committed by GitHub
parent 380fb8f193
commit 0ebb4f3efe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 610 additions and 0 deletions

74
teamspeak3.kvp Normal file
View File

@ -0,0 +1,74 @@
Meta.DisplayName=TeamSpeak 3
Meta.Description=TeamSpeak 3 Server
Meta.OS=Windows, Linux
Meta.Author=IceOfWraith, YamiKaitou (base)
Meta.URL=https://teamspeak.com
Meta.DisplayImageSource=url:https://www.teamspeak.com/user/themes/teamspeak/images/logo_inverse.svg
Meta.EndpointURIFormat=steam://connect/{0}
Meta.ConfigManifest=teamspeak3config.json
Meta.MetaConfigManifest=teamspeak3metaconfig.json
Meta.ConfigRoot=teamspeak3.kvp
Meta.MinAMPVersion=2.3.4.4
Meta.SpecificDockerImage=
Meta.Prerequsites=[]
Meta.ConfigReleaseState=NotSpecified
App.DisplayName=TeamSpeak 3
App.RootDir=./ts3/
App.BaseDirectory=./ts3/
App.ExecutableWin=teamspeak3-server_win64\ts3server.exe
App.ExecutableLinux=teamspeak3-server_win64/ts3server
App.WorkingDir=teamspeak3-server_win64
App.LinuxCommandLineArgs=
App.WindowsCommandLineArgs=
App.CommandLineArgs={{$PlatformArgs}} inifile=teamspeak3server.ini license_accepted=1 {{$FormattedArgs}}
App.AppSettings={}
App.EnvironmentVariables={}
App.CommandLineParameterFormat={0}={1}
App.CommandLineParameterDelimiter=
App.ExitMethod=OS_CLOSE
App.ExitTimeout=30
App.ExitString=stop
App.ExitFile=app_exit.lck
App.HasWriteableConsole=True
App.HasReadableConsole=True
App.SupportsLiveSettingsChanges=False
App.LiveSettingChangeCommandFormat=set {0} "{1}"
App.ApplicationIPBinding=0.0.0.0
App.Ports=[{"Protocol":"UDP","Port":9987,"Offset":0,"Range":1,"Ref":"Voice","Name":"Voice Port","Description":"Port for voice communications","ChildPorts":null},{"Protocol":"TCP","Port":30033,"Offset":0,"Range":1,"Ref":"Filetransfer","Name":"File Transfer Port","Description":"Port for file transfers","ChildPorts":null},{"Protocol":"TCP","Port":10011,"Offset":0,"Range":1,"Ref":"ServerQueryRAW","Name":"Telnet Port","Description":"Port for Telnet administration","ChildPorts":null},{"Protocol":"TCP","Port":10022,"Offset":0,"Range":1,"Ref":"ServerQuerySSH","Name":"SSH Port","Description":"Port for SSH administration","ChildPorts":null},{"Protocol":"TCP","Port":10080,"Offset":0,"Range":1,"Ref":"WebQueryHTTP","Name":"HTTP Port","Description":"Port for HTTP administration","ChildPorts":null},{"Protocol":"TCP","Port":10443,"Offset":0,"Range":1,"Ref":"WebQueryHTTPS","Name":"HTTPS Port","Description":"Port for HTTPS administration","ChildPorts":null}]
App.AdminPortRef=ServerQueryRAW
App.PrimaryApplicationPortRef=Voice
App.UniversalSleepApplicationUDPPortRef=
App.UniversalSleepSteamQueryPortRef=
App.MaxUsers=32
App.UseRandomAdminPassword=True
App.RemoteAdminPassword=
App.AdminMethod=TelnetRCON
App.RCONConnectDelaySeconds=5
App.RCONConnectRetrySeconds=5
App.UpdateSources=[{"UpdateStageName":"TeamSpeak 3 Windows","UpdateSourcePlatform":"Windows","UpdateSource":"FetchURLFromJQ","UpdateSourceData":"https://teamspeak.com/versions/server.json","UpdateSourceArgs":"$['windows']['x86_64']['mirrors']['teamspeak.com']","UnzipUpdateSource":true,"OverwriteExistingFiles":true,"DeleteAfterExtract":true},{"UpdateStageName":"TeamSpeak 3 Linux","UpdateSourcePlatform":"Linux","UpdateSource":"FetchURLFromJQ","UpdateSourceData":"https://teamspeak.com/versions/server.json","UpdateSourceArgs":"$['linux']['x86_64']['mirrors']['teamspeak.com']","UnzipUpdateSource":true,"OverwriteExistingFiles":true,"DeleteAfterExtract":true},{"UpdateStageName":"Create Symlink","UpdateSourcePlatform":"Linux","UpdateSource":"Executable","UpdateSourceData":"/bin/ln","UpdateSourceArgs":"-s {{$FullBaseDir}}teamspeak3-server_linux_amd64 {{$FullBaseDir}}teamspeak3-server_win64"},{"UpdateStageName":"Config File Download","UpdateSourcePlatform":"All","UpdateSource":"FetchURL","UpdateSourceData":"https://github.com/IceOfWraith/AMPTemplates/raw/ts3/teamspeak3server.ini","UpdateSourceTarget":"{{$FullBaseDir}}teamspeak3-server_win64/","OverwriteExistingFiles":false}]
App.Compatibility=None
App.SteamUpdateAnonymousLogin=False
App.SteamForceLoginPrompt=False
App.RapidStartup=False
App.SupportsUniversalSleep=False
App.UniversalSleepApplicationUDPPort=0
App.UniversalSleepSteamQueryPort=0
App.WakeupMode=Any
App.ApplicationReadyMode=Immediate
App.TemplateMatchRegex={{(\$?[\w]+)}}
Console.FilterMatchRegex=
Console.FilterMatchReplacement=
Console.ThrowawayMessageRegex=^$
Console.AppReadyRegex=^$
Console.UserJoinRegex=^$
Console.UserLeaveRegex=^$
Console.UserChatRegex=^$
Console.UpdateAvailableRegex=^$
Console.SuppressLogAtStart=False
Console.ActivateLogRegex=
Console.UserActions={}
Limits.SleepMode=True
Limits.SleepOnStart=False
Limits.SleepDelayMinutes=5
Limits.DozeDelay=2
Limits.AutoRetryCount=5

491
teamspeak3config.json Normal file
View File

@ -0,0 +1,491 @@
[
{
"DisplayName": "Voice IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "voice_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "File Transfer IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "filetransfer_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "query_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query SSH IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "query_ssh_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query HTTP IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "query_http_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query HTTPS IP",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$ApplicationIPBinding",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "query_https_ip",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Remote Admin Password",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$RemoteAdminPassword",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "serveradmin_password",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Default Voice Port",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$Voice",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "default_voice_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "File Transfer Port",
"Description": "",
"Category": "Hidden Settings",
"Keywords": "",
"FieldName": "$Filetransfer",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "filetransfer_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query Port (Telnet/RAW)",
"Description": "",
"Category": "Server Settings",
"Keywords": "",
"FieldName": "$ServerQueryRAW",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query Port (SSH)",
"Description": "",
"Category": "Server Settings",
"Keywords": "",
"FieldName": "$ServerQuerySSH",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_ssh_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query Port (HTTP)",
"Description": "",
"Category": "Server Settings",
"Keywords": "",
"FieldName": "$WebQueryHTTP",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_http_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Query Port (HTTPS)",
"Description": "",
"Category": "Server Settings",
"Keywords": "",
"FieldName": "$WebQueryHTTPS",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_https_port",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {},
"Hidden": true
},
{
"DisplayName": "Machine ID",
"Description": "Optional name of this server process to identify a group of servers with the same ID.",
"Category": "Server Settings",
"Keywords": "machine,id",
"FieldName": "machine_id",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "machine_id",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {}
},
{
"DisplayName": "License File Path",
"Description": "The physical path where your license file is located.",
"Category": "Server Settings",
"Keywords": "license,path",
"FieldName": "licensepath",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "licensepath",
"IncludeInCommandLine": false,
"DefaultValue": "teamspeak3-server_win64/",
"EnumValues": {}
},
{
"DisplayName": "Query Protocols",
"Category": "Server Settings",
"Description": "Protocols that can be used to connect to the ServerQuery. You must choose a Telnet option for AMP console to function fully.",
"Keywords": "query,protocols",
"FieldName": "query_protocols",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "query_protocols",
"IncludeInCommandLine": false,
"DefaultValue": "raw",
"EnumValues": {
"": "none",
"http": "HTTP",
"raw": "Telnet",
"raw,http": "Telnet, HTTP",
"raw,ssh": "Telnet, SSH",
"raw,ssh,http": "Telnet, SSH, HTTP",
"ssh": "SSH",
"ssh,http": "SSH, HTTP"
}
},
{
"DisplayName": "Query Timeout",
"Description": "Number of seconds before a query connection is disconnected because of user inactivity.",
"Category": "Server Settings",
"Keywords": "query,timeout",
"FieldName": "query_timeout",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_timeout",
"IncludeInCommandLine": false,
"DefaultValue": "300",
"Suffix": "seconds",
"EnumValues": {}
},
{
"DisplayName": "Query Pool Size (2-32)",
"Description": "The number of threads to use for the query pool. Advanced users with large slot counts or high query usage may wish to try higher numbers here.",
"Category": "Server Settings",
"Keywords": "query,pool,size",
"FieldName": "query_pool_size",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_pool_size",
"IncludeInCommandLine": false,
"DefaultValue": "2",
"Suffix": "threads",
"EnumValues": {}
},
{
"DisplayName": "Query Buffer Size (1-20)",
"Description": "Server Query connections have a combined maximum buffer size. When this limit is exceeded, the connection using the most memory is closed.",
"Category": "Server Settings",
"Keywords": "query,buffer,size,mb",
"FieldName": "query_buffer_mb",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "query_buffer_mb",
"IncludeInCommandLine": false,
"DefaultValue": "20",
"Suffix": "MB",
"EnumValues": {}
},
{
"DisplayName": "Permit Query Access",
"Description": "A list of IP addresses permitted to access the query methods.",
"Keywords": "permit,query,access",
"FieldName": "query_ip_allowlist_list",
"Category": "Server Settings",
"InputType": "list",
"Special": "listfile:./ts3/teamspeak3-server_win64/query_ip_allowlist.txt"
},
{
"DisplayName": "Deny Query Access",
"Description": "A list of IP addresses permitted to access the query methods.",
"Keywords": "deny,query,access",
"FieldName": "query_ip_denylist_list",
"Category": "Server Settings",
"InputType": "list",
"Special": "listfile:./ts3/teamspeak3-server_win64/query_ip_denylist.txt"
},
{
"DisplayName": "DB Plugin",
"Category": "Server Settings",
"Description": "Name of the database plugin library used by the server instance.",
"Keywords": "db,database,plugin",
"FieldName": "dbplugin",
"InputType": "enum",
"IsFlagArgument": false,
"ParamFieldName": "dbplugin",
"IncludeInCommandLine": false,
"DefaultValue": "ts3db_sqlite3",
"EnumValues": {
"ts3db_mariadb": "MariaDB/MySQL",
"ts3db_postgresql": "PostgreSQL",
"ts3db_sqlite3": "SQLite3"
}
},
{
"DisplayName": "DB Plugin Parameter",
"Description": "A custom parameter passed to the database plugin library. For example, the MariaDB database plugin supports a parameter to specify the physical path of the plugins configuration file.",
"Category": "Server Settings",
"Keywords": "db,database,plugin,parameter",
"FieldName": "dbpluginparameter",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "dbpluginparameter",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {}
},
{
"DisplayName": "DB SQL Path",
"Description": "The physical path where your SQL script files are located.",
"Category": "Server Settings",
"Keywords": "db,database,sql,path",
"FieldName": "dbsqlpath",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "dbsqlpath",
"IncludeInCommandLine": false,
"DefaultValue": "sql/",
"EnumValues": {}
},
{
"DisplayName": "DB SQL Create Path",
"Description": "The physical path where your SQL installation files are located. Note that this path will be added to the value of the 'dbsqlpath' parameter.",
"Category": "Server Settings",
"Keywords": "db,database,sql,path",
"FieldName": "dbsqlcreatepath",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "dbsqlcreatepath",
"IncludeInCommandLine": false,
"DefaultValue": "create_sqlite/",
"EnumValues": {}
},
{
"DisplayName": "DB Connections (2-100)",
"Description": "The number of database connections used by the server. Please note that changing this value can have an affect on your servers performance. Possible values are 2-100.",
"Category": "Server Settings",
"Keywords": "db,database,connections",
"FieldName": "dbconnections",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "dbconnections",
"IncludeInCommandLine": false,
"DefaultValue": "10",
"Suffix": "connections",
"EnumValues": {}
},
{
"DisplayName": "Log Path",
"Description": "The physical path where the server will create logfiles.",
"Category": "Server Settings",
"Keywords": "log,path",
"FieldName": "logpath",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "logpath",
"IncludeInCommandLine": false,
"DefaultValue": "logs/",
"EnumValues": {}
},
{
"DisplayName": "Log Query Commands",
"Description": "The server will log every ServerQuery command executed by clients.",
"Category": "Server Settings",
"Keywords": "log,query,commands",
"FieldName": "logquerycommands",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "logquerycommands",
"IncludeInCommandLine": false,
"DefaultValue": "0",
"EnumValues": {
"True": "1",
"False": "0"
}
},
{
"DisplayName": "Log Query Timing Interval",
"Description": "Defines the number of seconds before ServerQuery command timing is reported.",
"Category": "Server Settings",
"Keywords": "db,client,keep,days",
"FieldName": "logquerytiminginterval",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "logquerytiminginterval",
"IncludeInCommandLine": false,
"DefaultValue": "0",
"EnumValues": {
"True": "1",
"False": "0"
}
},
{
"DisplayName": "DB Client Keep Days",
"Description": "Defines how many days to keep unused client identities. Auto-pruning is triggered on every start and on every new month while the server is running.",
"Category": "Server Settings",
"Keywords": "db,client,keep,days",
"FieldName": "dbclientkeepdays",
"InputType": "number",
"IsFlagArgument": false,
"ParamFieldName": "dbclientkeepdays",
"IncludeInCommandLine": false,
"DefaultValue": "90",
"EnumValues": {}
},
{
"DisplayName": "Log Append",
"Description": "The server will not create a new logfile on every start. Instead, the log output will be appended to the previous logfile.",
"Category": "Server Settings",
"Keywords": "log,append",
"FieldName": "logappend",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "logappend",
"IncludeInCommandLine": false,
"DefaultValue": "0",
"EnumValues": {
"True": "1",
"False": "0"
}
},
{
"DisplayName": "Skip Brute Force Check",
"Description": "The server will skip and bruteforce protection for whitelisted Ip addresses for the ServerQuery interface.",
"Category": "Server Settings",
"Keywords": "disable,skip,brute,force,check",
"FieldName": "query_skipbruteforcecheck",
"InputType": "checkbox",
"IsFlagArgument": false,
"ParamFieldName": "query_skipbruteforcecheck",
"IncludeInCommandLine": false,
"DefaultValue": "0",
"EnumValues": {
"True": "1",
"False": "0"
}
},
{
"DisplayName": "HTTP Proxy",
"Description": "If set, the server will use the specified proxy to contact the accounting server over http.",
"Category": "Server Settings",
"Keywords": "http,proxy",
"FieldName": "http_proxy",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "http_proxy",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {}
},
{
"DisplayName": "Server Query Docs Path",
"Description": "Physical location where the server is looking for the documents used for the help command in ServerQuery.",
"Category": "Server Settings",
"Keywords": "server,query,docs,path",
"FieldName": "serverquerydocs_path",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "serverquerydocs_path",
"IncludeInCommandLine": false,
"DefaultValue": "serverquerydocs/",
"EnumValues": {}
},
{
"DisplayName": "MMDB Path",
"Description": "Set to the path of an MMDB file to use this as a source for GeoIP lookups. Requires libmaxminddb installed, which can be found in most Linux distributions as a package. Windows users can use the .dll found in the redist folder.",
"Category": "Server Settings",
"Keywords": "mmdb,file,path,geoip,lookups",
"FieldName": "mmdbpath",
"InputType": "text",
"IsFlagArgument": false,
"ParamFieldName": "mmdbpath",
"IncludeInCommandLine": false,
"DefaultValue": "",
"EnumValues": {}
}
]

View File

@ -0,0 +1,8 @@
[
{
"ConfigFile": "teamspeak3-server_win64/teamspeak3server.ini",
"AutoMap": true,
"ConfigType": "kvp",
"ConfigFormatRegex": "^(?<key>.+?)=(?<value>.*?)$"
}
]

37
teamspeak3server.ini Normal file
View File

@ -0,0 +1,37 @@
machine_id=
default_voice_port=9987
voice_ip=0.0.0.0
licensepath=teamspeak3-server_win64/
filetransfer_port=30033
filetransfer_ip=0.0.0.0
query_port=10011
query_ip=0.0.0.0
query_ip_allowlist=query_ip_allowlist.txt
query_ip_denylist=query_ip_denylist.txt
serveradmin_password=
dbplugin=ts3db_sqlite3
dbpluginparameter=
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite/
dbconnections=10
logpath=logs/
logquerycommands=0
dbclientkeepdays=90
logappend=0
query_skipbruteforcecheck=0
query_buffer_mb=20
http_proxy=
license_accepted=1
serverquerydocs_path=serverquerydocs/
query_ssh_ip=0.0.0.0
query_ssh_port=10022
query_protocols=raw
query_ssh_rsa_host_key=ssh_host_rsa_key
query_timeout=300
query_http_ip=0.0.0.0
query_http_port=10080
query_https_ip=0.0.0.0
query_https_port=10443
query_pool_size=2
mmdbpath=
logquerytiminginterval=0