From 827e0ae615637851746849e46ae6d99205c4e8ae Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Fri, 12 Jan 2018 02:36:51 +0100 Subject: [PATCH] Parser for checksum.php result. --- tclcheck.py | 2 ++ tcllib.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/tclcheck.py b/tclcheck.py index 6822715..c9fc3d1 100755 --- a/tclcheck.py +++ b/tclcheck.py @@ -72,6 +72,7 @@ fileid, fileurl, slaves, encslaves, s3_fileurl, s3_slaves = fc.parse_request(req chksum_xml = fc.do_checksum(random.choice(encslaves), fileurl, fileurl) print(fc.pretty_xml(chksum_xml)) +file_addr, sha1_body, sha1_enc_footer, sha1_footer = fc.parse_checksum(chksum_xml) for s in slaves: print("http://{}{}".format(s, fileurl)) @@ -86,6 +87,7 @@ if fc.mode == fc.MODE.FULL: if not os.path.exists(headdir): os.makedirs(headdir) if len(header) == 4194320: + # TODO: Check sha1sum print("Header length check passed. Writing to {}.".format(headname)) with open(os.path.join(headdir, headname), "wb") as f: f.write(header) diff --git a/tcllib.py b/tcllib.py index f503a00..fddea80 100644 --- a/tcllib.py +++ b/tcllib.py @@ -419,3 +419,13 @@ class FotaCheck: print(repr(req.headers)) print(repr(req.text)) raise SystemExit + + @staticmethod + def parse_checksum(xmlstr): + root = ElementTree.fromstring(xmlstr) + file = root.find("FILE_CHECKSUM_LIST").find("FILE") + file_addr = file.find("ADDRESS").text + sha1_enc_footer = file.find("ENCRYPT_FOOTER").text + sha1_footer = file.find("FOOTER").text + sha1_body = file.find("BODY").text + return file_addr, sha1_body, sha1_enc_footer, sha1_footer