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
diff --git a/scripts/update_device.py b/scripts/update_device.py
index a5be0a5..ca7518d 100755
--- a/scripts/update_device.py
+++ b/scripts/update_device.py
@@ -25,6 +25,7 @@
import subprocess
import sys
import threading
+import xml.etree.ElementTree
import zipfile
import update_payload.payload
@@ -184,6 +185,18 @@
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 @@
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