commit 7a4908e972a1ce842bec74e56c0158dc48cb857b Author: cclecle Date: Sun May 8 17:19:48 2022 +0200 first commit diff --git a/Help/XServerQuery_ReadMe.txt b/Help/XServerQuery_ReadMe.txt new file mode 100644 index 0000000..8279872 --- /dev/null +++ b/Help/XServerQuery_ReadMe.txt @@ -0,0 +1,227 @@ +Modname: XServerQuery +Version: 2.1.1 +Release date: 24. january 2022 +Autor: (G)ott + + + +Index: +------ +1. what is it? +2. Installation +3. Update +4. Settings +5. Changelog +6. Thanks + + + +1. What is it: +-------------- + +XServerQuery is a much-improved way of showing your server's current +information. There are new headings like "Spectators" and "Protection +Type" as well as the country of the current players. It also does more +then the same job like SecureValidate. + +To show you your server's new information, you need the latest +XBrowser for the UT installation. Remember: XServerQuery is for the +server, XBrowser is for the client. They work together to bring you +all this new information. Also, if you using a server viewer page +(like statistics displayed on a webpage), you need to modify it. + +For more information and to see how it works, follow this link: +http://wiki.beyondunreal.com/XServerQuery + +If you find bugs, strange log entries or you have feedback, ideas or +anything else.. Support pages are unrealadmin.org and UT99.org + +-> https://unrealadmin.org/forums/showthread.php?t=30595 +-> https://ut99.org/viewtopic.php?t=3284 + + +2. Installation: +---------------- + +- Extract the XServerQuery.u file to your Server's System directory. + +- Stop your Server. + +- Open your server's UnrealTournament.ini and then locate this +line in the ServerActors. When you do simply add a ';' at the front, so +your line looks like this: + +;ServerActors=IpServer.UdpServerQuery +;ServerActors=IpServer.UdpServerUplink MasterServerAddress=utmaster.epicgames.com MasterServerPort=27900 +;ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900 + + +- If you have SecureValidate installed: + +;ServerActors=SecureValidate.SVUdpServerQuery +;ServerActors=SecureValidate.SVUdpServerUplink MasterServerAddress=utmaster.epicgames.com MasterServerPort=27900 +;ServerActors=SecureValidate.SVUdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900 + + +- Now add the following new actors to your ServerActors list: + +ServerActors=XServerQuery.XServerQuery +ServerActors=XServerQuery.XServerUplink MasterServerAddress=utmaster.epicgames.com MasterServerPort=27900 +ServerActors=XServerQuery.XServerUplink MasterServerAddress=333networks.com MasterServerPort=27900 +ServerActors=XServerQuery.XServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900 + +- Now you have two options, choose one of them: + +- a) Start and stop your server for short time. This will auto install default + settings in your server's UnrealTournament.ini. + +- b) Add the following lines at the end of your server's UnrealTournament.ini: + +[XServerQuery.XServerQuery] +netAddress= +homepage=www.example-hp.com +bSendMailURL=false +bShowProtection=hidden +bShowSpectators=true +bShowPlayerCountry=true +iMaxConnPerIPPerSec=2 +iNumPacketsBeforBlock=8 +iNumSecToBlockIP=5 +bLogSpecialQuerys=true +bLogUnknownQuerys=true +bShowTimeStamp=true +bShowAdvancedTimeStamp=false + + +- Change the settings as you want them. + +- If you want to use IpToCountry to show the current country of the players +and server, then you need to install IpToCountry from the included .zip file. +If you already are running IpToCountry then you are fine. + +- Save your server's UnrealTournament.ini and restart your Server as usual. + + + +3. Update: +---------- + +- Stop your Server. + +- Overwrite the XServerQuery.u in your Server's System directory with the new one +in this zip file. + +- Update your settings as you want them (4. Settings). + +- NOTE: "iNumPacketsBeforLog" dosn't exist anymore. Rename it to "iNumPacketsBeforBlock". + +- Save your server's UnrealTournament.ini and restart your Server as usual. + + + +4. Settings: +------------ + +netAddress // This is optional and will only needed if the server don't returns + the real networkaddress for ITC. + // Server will auto set IP if found. +homepage // Returns your homepage if set. Adding "http://" or "https://" in front + of your page will enable the link function in XBrowser for it. +bSendMailURL // If true XSQ will send the admin e-mail with "mailto:" in front and + will enable the link function in XBrowser for it. +bShowProtection // Valid values are "true", "hidden" and something else mean "false". Its dependent on ACE! + // (if ACE is installed) e.g. hidden returns "ACE"; true returns "ACEv1.2f" +bShowSpectators // Spectator informations will send, if your server allows spectators. + False will hide spectators on the player list. +bShowPlayerCountry // Allow sending the players country, if IPtoCountry is installed. +iMaxConnPerIPPerSec // Spam security. How many requests can a client send per second. 2 is the minimum. +iNumPacketsBeforBlock // Spam security. After how many requests the server will block a client. 1 is the minimum. +iNumSecToBlockIP // Spam security. How many seconds before the server stops blocking a client. +bLogSpecialQuerys // Log query errors and 'secure' querys. +bLogUnknownQuerys // Log unknown querys. +bShowTimeStamp // Adds the time to the log. +bShowAdvancedTimeStamp // Additionally adds the date and milliseconds to the log (bShowTimeStamp must be true). + + +6. Changelog: +------------- + +from 210 to 211 +- fixed server will not shown, when ACE is installed and bShowProtection=true. + +from 201 to 210 +- added optional timestamp log. +- added config bShowTimeStamp & bShowAdvancedTimeStamp. +- fixed time check on query request. +- added config iNumSecToBlockIP. +- changed config iNumPacketsBeforLog to iNumPacketsBeforBlock !! +- fixed players country memory. +- removed querytype "NewNet". +- changed config bShowProtection is now by default "hidden". +- changed querytype "Protection" - it has now only focus to ACE. +- some small changes and cleanups. + +from 200 to 201 +- fixed a small bug where the server runs in a small loop and gets a timeout while receiving a unknown querytype. (vanilla servers has the same bug ;) ) +- some minor changes. + +from 110 to 200 +- added query spam security. +- added config iMaxConnPerIPPerSec & iNumPacketsBeforLog. +- changed config bShowProtection to a multi bool. +- removed config bShowCPName. +- removed config ServerCountry. +- renamed config ServerIP to NetAddress. +- added a country memory for players and server. This will stop spamming ItC. +- added "NewNet" as QueryType. If found, return the version. eg.: 0.9 +- changed the player time: the time will now return seconds instead minutes. +- changed "RemainingTime" -> if bOverTime, return ElapsedTime. +- added log prefix. +- renamed class "UdpXServerQuery" to "XServerQuery". +- added new class "XServerUplink". +--> This does the same like SecureValidate.SVUdpServerUplink. +--> changed default MasterServerAddress from master0.gamespy.com to utmaster.epicgames.com. + +from 105 to 110 +- added more info logs. +- added config bLogSpecialQuerys & bLogUnknownQuerys. +- added config ServerCountry (use it if ServerIP not set). +- fixed problem, sending players on nexgen servers befor game is started. +- fixed players time. +- added auto saving default config on first installation. +- some small changes. + +from 104 to 105 +- added crash-protection of Secure Validate. +- added \teams\ as QueryType to support the UT Watcher program. +- added new config "bSendMailURL" (link-support for the new XBrowser > 110). +- renamed "ServerAddress" to "ServerIP". + +from 103 to 104 +- fixed a bug with hidden spectators (part 2). +- fixed problems with server country. +- fixed some minor bugs. + +from 102 to 103 +- fixed a bug with hidden spectators (part 1). + +from 101 to 102 +- added querytype "RemainingTime". +- added UTPure to the protection list. +- fixed a mistake with the querytype "Protaction"/"Protection". +- fixed some minor bugs. + +from 100 to 101 +- added new optional config -> ServerAddress, to bypass a unknown bug with the + servers networkaddress. +- fixed some problems with the country support. + + +6. Thanks: +---------- + +- A big thanks goes to gopostal for creating the readme. +- The Crash-Protection of SecureValidate is working with XSQ. Thanks goes to JustDoIt. +- For the suggestion to add SecureValidate, big thanks to Face. +- Added \teams\ as QueryType to support the UT Watcher program. Thanks goes to El Muerte. +- Last but not least, the UT community. diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..2ff9317 --- /dev/null +++ b/Readme.md @@ -0,0 +1,3 @@ +# XServerQuery Release GIT repository + +checkout official release thread: https://ut99.org/viewtopic.php?f=34&t=6061 \ No newline at end of file diff --git a/Run.sh b/Run.sh new file mode 100644 index 0000000..cea1430 --- /dev/null +++ b/Run.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +OUTPUT_DIR="$2" +CFG_FILE="$3" +DEFAULT_CFG_FILE=UnrealTournament.ini + + +function install() { + cp $SCRIPT_DIR/Help $OUTPUT_DIR/Help -Rf + cp $SCRIPT_DIR/System $OUTPUT_DIR/System -Rf + + echo install ok +} + +function enable() { + # Warning: ugly hack with sed to allow multiple key instances + #crudini --set $OUTPUT_DIR/System/$CFG_FILE 'Engine.GameEngine' _ServerPackages $SSBBaseName + #sed -i 's/_ServerPackages/ServerPackages/g' $OUTPUT_DIR/System/$CFG_FILE + #crudini --set $OUTPUT_DIR/System/$CFG_FILE 'Engine.GameEngine' _ServerActors $SSBBaseName.SmartSBServerActor + #sed -i 's/_ServerActors/ServerActors/g' $OUTPUT_DIR/System/$CFG_FILE + # TODO + + echo enable ok +} + +function disable() { + #sed -i "/ServerPackages[[:space:]]*=[[:space:]]*$SSBBaseName/d" $OUTPUT_DIR/System/$CFG_FILE + #sed -i "/ServerPackages[[:space:]]*=[[:space:]]*SmartSBStats/d" $OUTPUT_DIR/System/$CFG_FILE + #sed -i "/ServerActors[[:space:]]*=[[:space:]]*$SSBBaseName.SmartSBServerActor/d" $OUTPUT_DIR/System/$CFG_FILE + # TODO + + echo disable ok +} + +function show_help() { + echo + echo "Usage: $0 { install | enable | disable } []" + echo +} + +function check_cfg_file() { + if [ -z ${CFG_FILE} ] + then + echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" + CFG_FILE=$DEFAULT_CFG_FILE + else + echo "CFG_FILE is set to '$CFG_FILE'" + fi + + if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] + then + echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" + show_help + exit 9999 # die with error code 9999 + fi +} + +function check_game_dir() { + ### Check if a directory does not exist ### + if [ ! -d $OUTPUT_DIR ] + then + echo "incorrect " + show_help + exit 9999 # die with error code 9999 + fi +} + +case "$1" in + 'install') + check_game_dir + install + ;; + 'enable') + check_game_dir + check_cfg_file + disable + enable + ;; + 'disable') + check_game_dir + check_cfg_file + disable + ;; + *) + show_help + exit 1 + ;; +esac + +exit 0 \ No newline at end of file diff --git a/System/XServerQuery.u b/System/XServerQuery.u new file mode 100644 index 0000000..2c52d5c Binary files /dev/null and b/System/XServerQuery.u differ