fwupd/contrib/upload-smc-license.py
Kai Michaelis 6519f28d26
Explain the smc bmc license issue
Add documentation and a helper license script.
2022-11-04 12:55:48 +00:00

69 lines
1.6 KiB
Python

#!/usr/bin/python3
# SPDX-License-Identifier: LGPL-2.1+
import sys
import argparse
from urllib import request, parse
import base64
import ssl
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"-u",
"--user",
type=str,
help="Redfish user name",
default="ADMIN",
)
parser.add_argument(
"-p",
"--password",
type=str,
help="Redfish user password",
default="ADMIN",
)
parser.add_argument(
"-f",
"--file",
type=str,
help="License file",
)
parser.add_argument("hostname", type=str, help="BMC IP of hostname")
args = parser.parse_args()
license = ""
if len(sys.argv) == 1:
print("hostname required")
sys.exit(1)
if not args.file:
print("License:")
license = sys.stdin.read()
else:
with open(args.file, "r") as fd:
license = fd.read()
sslctx = ssl.create_default_context()
sslctx.check_hostname = False
sslctx.verify_mode = ssl.CERT_NONE
url = (
f"https://{args.hostname}/redfish/v1/Managers/1/LicenseManager/ActivateLicense"
)
auth = str(
base64.b64encode(bytes(f"{args.user}:{args.password}", "latin1")),
encoding="latin1",
)
headers = {
"Content-Type": "application/json",
"Authorization": f"Basic {auth}",
}
req = request.Request(url, headers=headers, data=bytes(license, "latin1"))
resp = request.urlopen(req, context=sslctx)
if resp.status < 300:
print("Success")
else:
print("Failed")
sys.exit(-1)