From 0ebb4f3efe6c1179c55e3a3fc1e06e0216593970 Mon Sep 17 00:00:00 2001 From: IceOfWraith <96364530+IceOfWraith@users.noreply.github.com> Date: Sun, 11 Sep 2022 17:01:57 -0500 Subject: [PATCH] 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. ;) --- teamspeak3.kvp | 74 ++++++ teamspeak3config.json | 491 ++++++++++++++++++++++++++++++++++++++ teamspeak3metaconfig.json | 8 + teamspeak3server.ini | 37 +++ 4 files changed, 610 insertions(+) create mode 100644 teamspeak3.kvp create mode 100644 teamspeak3config.json create mode 100644 teamspeak3metaconfig.json create mode 100644 teamspeak3server.ini diff --git a/teamspeak3.kvp b/teamspeak3.kvp new file mode 100644 index 0000000..0679e8f --- /dev/null +++ b/teamspeak3.kvp @@ -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 diff --git a/teamspeak3config.json b/teamspeak3config.json new file mode 100644 index 0000000..3f913b0 --- /dev/null +++ b/teamspeak3config.json @@ -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": {} + } +] \ No newline at end of file diff --git a/teamspeak3metaconfig.json b/teamspeak3metaconfig.json new file mode 100644 index 0000000..6f34ced --- /dev/null +++ b/teamspeak3metaconfig.json @@ -0,0 +1,8 @@ +[ + { + "ConfigFile": "teamspeak3-server_win64/teamspeak3server.ini", + "AutoMap": true, + "ConfigType": "kvp", + "ConfigFormatRegex": "^(?.+?)=(?.*?)$" + } +] \ No newline at end of file diff --git a/teamspeak3server.ini b/teamspeak3server.ini new file mode 100644 index 0000000..a09ce5c --- /dev/null +++ b/teamspeak3server.ini @@ -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 \ No newline at end of file