#!/bin/bash # kf2-srv is a command line tool for managing a set of Killing Floor 2 servers. # Copyright (C) 2019, 2020 GenZmeY # mailto: genzmey@gmail.com # # This file is part of kf2-srv. # # kf2-srv is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # 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 { 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: ID64, $2: B { 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 ID64=$(curl -ss "$1/?xml=1" | xmllint --xpath 'string(//steamID64/text())' -) local ID3=$(steamID64_to_steamID3 "$ID64") 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" fi echo "$ID3" }