diff --git a/SOURCES/main/kf2-srv b/SOURCES/main/kf2-srv index f59fb8e..0ed06e9 100755 --- a/SOURCES/main/kf2-srv +++ b/SOURCES/main/kf2-srv @@ -43,7 +43,7 @@ readonly InstanceConfigTemplate="/etc/kf2-srv/instance.conf.template" readonly AppServerNum="232130" readonly AppClientNum="232090" -readonly StrangeConstUID="17825793" +readonly SteamConstB='17825793' readonly ServerBotLogin="srvbot" declare -a DiffNames diff --git a/SOURCES/main/lib/ban.lib b/SOURCES/main/lib/ban.lib index 24d136b..17be557 100644 --- a/SOURCES/main/lib/ban.lib +++ b/SOURCES/main/lib/ban.lib @@ -108,7 +108,7 @@ function ban_ID3 () # $1: ID3 do ( local Config="$InstanceConfigDir/$Instance/LinuxServer-KFGame.ini" - local BanStr="(Uid=(A=$ID3,B=$StrangeConstUID))" + local BanStr="(Uid=(A=$ID3,B=$SteamConstB))" local Service=$(service_name "$Instance") if ! multini -gq "$Config" "Engine.AccessControl" "BannedIDs" "$BanStr"; then echo "Add ban $ID3 to $Instance" @@ -137,7 +137,7 @@ function unban_ID3 () # $1: ID3 do ( local Config="$InstanceConfigDir/$Instance/LinuxServer-KFGame.ini" - local BanStr="(Uid=(A=$ID3,B=$StrangeConstUID))" + local BanStr="(Uid=(A=$ID3,B=$SteamConstB))" local Service=$(service_name "$Instance") if systemctl -q is-active $Service ; then local PlainID=0 diff --git a/SOURCES/main/lib/playerids.lib b/SOURCES/main/lib/playerids.lib index 1443fcc..5d50069 100644 --- a/SOURCES/main/lib/playerids.lib +++ b/SOURCES/main/lib/playerids.lib @@ -19,35 +19,42 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# conversion algorithm taken from here: -# https://github.com/noobient/killinuxfloor/blob/master/share/killinuxfloor -# thank bviktor for that :) -function steamID3_to_steamID64 () # $1: ID3 +# WARNING: +# Conversion works correctly for positive A/B for EGS, +# but still gives incorrect results if there are negative ones + +function steamID3_to_steamID64 () # $1: ID3 (A), $2: B { - # steamID64 = "7656" + (steamID3 + 1197960265728) - ID64=$1 - ((ID64+=1197960265728)) - ID64="7656${ID64}" - echo "$ID64" + local ID3="$1" + if [[ -z $2 ]]; then + local B="$SteamConstB" + else + local B="$2" + fi + + # SteamID64=B*2^32+SteamID3 + echo $(($B*(2**32)+$ID3)) } -function steamID64_to_steamID3 () # $1: ID4 +function steamID64_to_steamID3 () # $1: ID64, $2: B { - # steamID3 = substr(steamID64, 4) - 1197960265728 - ID3=${1:4} - ((ID3-=1197960265728)) - echo "$ID3" + local ID64="$1" + if [[ -z $2 ]]; then + local B="$SteamConstB" + else + local B="$2" + fi + + # SteamID3=SteamID64-B*2^32 + echo $(($ID64-$B*(2**32))) } function any_to_ID3 () # $1: ID3/ID64/Url { if echo "$1" | grep -qP '^http.+'; then - local Xml=$(mktemp) - curl -ss "$1/?xml=1" > "$Xml" - local ID64=$(xmllint --xpath 'string(//steamID64/text())' "$Xml") + local ID64=$(curl -ss "$1/?xml=1" | xmllint --xpath 'string(//steamID64/text())' -) local ID3=$(steamID64_to_steamID3 "$ID64") - rm -f "$Xml" - elif [[ $(echo "$1" | wc -m) -eq 18 ]] && echo "$1" | grep -qP '^76561[0-9]+' ; then + elif [[ $(echo "$1" | wc -m) -eq 18 ]] && echo "$1" | grep -qP '^7656[0-9]+' ; then local ID3=$(steamID64_to_steamID3 "$1") else local ID3="$1" diff --git a/SPECS/kf2-srv.spec b/SPECS/kf2-srv.spec index 95fa527..761ae09 100644 --- a/SPECS/kf2-srv.spec +++ b/SPECS/kf2-srv.spec @@ -1,7 +1,7 @@ %global steamuser steam Name: kf2-srv -Version: 0.15.3 +Version: 0.15.4 Release: 1%{dist} Summary: Killing Floor 2 server Group: Amusements/Games @@ -101,6 +101,9 @@ if [[ $1 == 1 ]]; then # Install fi %changelog +* Sat Aug 15 2020 GenZmeY - 0.15.4-1 +- replaced steamID3/steamID64 conversation algorithm. + * Sat Aug 15 2020 GenZmeY - 0.15.3-1 - fix 'find: Failed to restore initial working directory'.