mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
Previously the script would assemble the query URL by taking the individual parameters literally. However, for certain inputs this could lead to an invalid URL, resulting in an error 400 (Bad Request) when attempting to make this query to the server. In order to avoid these situations, the parameters are now properly encoded (quoted) before being inserted into the query URL. Thus, we ensure to always produce valid URLs.
67 lines
2.3 KiB
Python
Executable File
67 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Copyright 2022 The Mumble Developers. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file at the root of the
|
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
|
#
|
|
# This script fetches the build number for a given commit
|
|
|
|
import argparse
|
|
import urllib.request
|
|
import urllib.parse
|
|
import sys
|
|
|
|
def fetch_build_number(commit = None, version = None, password = None):
|
|
if commit is None or version is None:
|
|
return None
|
|
|
|
parameter = {
|
|
"commit": commit,
|
|
"version": version
|
|
}
|
|
|
|
if not password is None:
|
|
parameter["token"] = password
|
|
|
|
query = "https://mumble.info/get-build-number?" + urllib.parse.urlencode(parameter)
|
|
|
|
try:
|
|
request = urllib.request.urlopen(query)
|
|
answer = request.read().decode("utf-8")
|
|
|
|
return int(answer)
|
|
except urllib.error.HTTPError:
|
|
# The request failed
|
|
return None
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser("This script will fetch the build number for the given commit hash")
|
|
parser.add_argument("--commit", help="The hash of the commit to fetch the build number for", metavar="HASH", required=True)
|
|
parser.add_argument("--version", help="The Mumble version the given commit belongs to (e.g. 1.4)", metavar="VERSION", required=True)
|
|
parser.add_argument("--password", help="The password to use in order to gain write access on the server")
|
|
parser.add_argument("--default", help="The default build number to use, in case none can be fetched. Note that this will cause this script to\
|
|
always succeed.", type=int)
|
|
args = parser.parse_args()
|
|
|
|
if not args.password is None and args.password.strip() == "":
|
|
# An empty password is considered to be no password at all
|
|
args.password = None
|
|
|
|
buildNumber = fetch_build_number(commit = args.commit, version = args.version, password = args.password)
|
|
|
|
if buildNumber is None and not args.default is None:
|
|
buildNumber = args.default
|
|
|
|
if buildNumber is None:
|
|
print("[ERROR]: Failed to fetch the build number for commit " + args.commit + " in Mumble v" + args.version, file=sys.stderr)
|
|
|
|
sys.exit(1)
|
|
else:
|
|
print(buildNumber)
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|