diff options
author | Sen Jiang <senj@google.com> | 2017-09-26 15:49:45 -0700 |
---|---|---|
committer | Treehugger Robot <treehugger-gerrit@google.com> | 2017-09-30 00:30:51 +0000 |
commit | 144f9f8a49b83c9a1930d16e579059485e6ad9fb (patch) | |
tree | de9ac23e1e3f9721766805a9757d2bb5f1fe50de /scripts | |
parent | 6c863b758f1b4f367946b78f5a93ad0337924023 (diff) |
update_device.py: use the appid from request.
Recent changes in update_engine are now comparing the appid against
the product id.
Test: applied a local OTA
Change-Id: I2907e94a89bea5ebfa8236c96eec7601af8ad4e5
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/update_device.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/scripts/update_device.py b/scripts/update_device.py index a5be0a59..ca7518da 100755 --- a/scripts/update_device.py +++ b/scripts/update_device.py @@ -25,6 +25,7 @@ import socket import subprocess import sys import threading +import xml.etree.ElementTree import zipfile import update_payload.payload @@ -184,6 +185,18 @@ class UpdateHandler(BaseHTTPServer.BaseHTTPRequestHandler): self.send_error(404, 'File not found') return + content_length = int(self.headers.getheader('Content-Length')) + request_xml = self.rfile.read(content_length) + xml_root = xml.etree.ElementTree.fromstring(request_xml) + appid = None + for app in xml_root.iter('app'): + if 'appid' in app.attrib: + appid = app.attrib['appid'] + break + if not appid: + self.send_error(400, 'No appid in Omaha request') + return + self.send_response(200) self.send_header("Content-type", "text/xml") self.end_headers() @@ -194,28 +207,30 @@ class UpdateHandler(BaseHTTPServer.BaseHTTPRequestHandler): payload = update_payload.Payload(f) payload.Init() - xml = ''' + response_xml = ''' <?xml version="1.0" encoding="UTF-8"?> <response protocol="3.0"> - <app appid="appid"> + <app appid="{appid}"> <updatecheck status="ok"> <urls> - <url codebase="http://127.0.0.1:%d/"/> + <url codebase="http://127.0.0.1:{port}/"/> </urls> <manifest version="0.0.0.1"> <actions> <action event="install" run="payload"/> - <action event="postinstall" MetadataSize="%d"/> + <action event="postinstall" MetadataSize="{metadata_size}"/> </actions> <packages> - <package hash_sha256="%s" name="payload" size="%d"/> + <package hash_sha256="{payload_hash}" name="payload" size="{payload_size}"/> </packages> </manifest> </updatecheck> </app> </response> - ''' % (DEVICE_PORT, payload.metadata_size, payload_hash, stat.st_size) - self.wfile.write(xml.strip()) + '''.format(appid=appid, port=DEVICE_PORT, + metadata_size=payload.metadata_size, payload_hash=payload_hash, + payload_size=stat.st_size) + self.wfile.write(response_xml.strip()) return |