mirror of
https://github.com/mbirth/tcl_ota_check.git
synced 2024-11-09 22:06:47 +00:00
Moved device-specific settings to own class. Only used in
tclcheck_allfull for now.
This commit is contained in:
parent
ba99c104d0
commit
808282c347
@ -13,12 +13,13 @@ import tcllib
|
|||||||
import tcllib.argparser
|
import tcllib.argparser
|
||||||
from tcllib import ansi
|
from tcllib import ansi
|
||||||
from tcllib import devlist
|
from tcllib import devlist
|
||||||
|
from tcllib.devices import DesktopDevice
|
||||||
|
|
||||||
|
|
||||||
|
dev = DesktopDevice()
|
||||||
|
|
||||||
fc = tcllib.FotaCheck()
|
fc = tcllib.FotaCheck()
|
||||||
fc.serid = "3531510"
|
fc.mode = fc.MODE.FULL # still needed to set User-Agent
|
||||||
fc.fv = "AAA000"
|
|
||||||
fc.mode = fc.MODE.FULL
|
|
||||||
|
|
||||||
dpdesc = """
|
dpdesc = """
|
||||||
Checks for the latest FULL updates for all PRD numbers or only for
|
Checks for the latest FULL updates for all PRD numbers or only for
|
||||||
@ -28,10 +29,6 @@ dp = tcllib.argparser.DefaultParser(__file__, dpdesc)
|
|||||||
dp.add_argument("-p", "--prd", help="CU Reference # to filter scan results", dest="tocheck", nargs="?", default=None, metavar="PRD")
|
dp.add_argument("-p", "--prd", help="CU Reference # to filter scan results", dest="tocheck", nargs="?", default=None, metavar="PRD")
|
||||||
args = dp.parse_args(sys.argv[1:])
|
args = dp.parse_args(sys.argv[1:])
|
||||||
|
|
||||||
# CLTP = 10 (only show actual updates or HTTP 206) / 2010 (always show latest version for MODE.FULL)
|
|
||||||
#fc.cltp = fc.CLTP.MOBILE
|
|
||||||
fc.cltp = fc.CLTP.DESKTOP
|
|
||||||
|
|
||||||
prdcheck = "" if args.tocheck is None else args.tocheck
|
prdcheck = "" if args.tocheck is None else args.tocheck
|
||||||
|
|
||||||
print("Loading list of devices.")
|
print("Loading list of devices.")
|
||||||
@ -45,8 +42,8 @@ for prd, variant in prds.items():
|
|||||||
if prdcheck in prd:
|
if prdcheck in prd:
|
||||||
try:
|
try:
|
||||||
fc.reset_session()
|
fc.reset_session()
|
||||||
fc.curef = prd
|
dev.curef = prd
|
||||||
check_xml = fc.do_check(max_tries=20)
|
check_xml = fc.do_check(dev, max_tries=20)
|
||||||
curef, fv, tv, fw_id, fileid, fn, fsize, fhash = fc.parse_check(check_xml)
|
curef, fv, tv, fw_id, fileid, fn, fsize, fhash = fc.parse_check(check_xml)
|
||||||
txt_tv = tv
|
txt_tv = tv
|
||||||
if tv != lastver:
|
if tv != lastver:
|
||||||
|
@ -10,7 +10,7 @@ import enum
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
from . import (dumpmgr, servervote, tclcheck,
|
from . import (dumpmgr, servervote, tclcheck,
|
||||||
tclchecksum, tclencheader, tclrequest, xmltools)
|
tclchecksum, tclencheader, tclrequest)
|
||||||
|
|
||||||
|
|
||||||
def default_enum(enumname, vardict, qualroot="tcllib.FotaCheck"):
|
def default_enum(enumname, vardict, qualroot="tcllib.FotaCheck"):
|
||||||
|
71
tcllib/devices.py
Normal file
71
tcllib/devices.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""Pseudo-devices for desktop/mobile requests"""
|
||||||
|
|
||||||
|
class Device():
|
||||||
|
CLTP_STATES = {
|
||||||
|
"MOBILE": 10, # only show actual newer versions or HTTP 206
|
||||||
|
"DESKTOP": 2010, # always show latest version for FULL updates
|
||||||
|
}
|
||||||
|
MODE_STATES = {"OTA": 2, "FULL": 4}
|
||||||
|
CHNL_STATES = {"3G": 1, "WIFI": 2}
|
||||||
|
CKTP_STATES = {"AUTO": 1, "MANUAL": 2}
|
||||||
|
CKOT_STATES = {"ALL": 1, "AOTA_ONLY": 2, "FOTA_ONLY": 3}
|
||||||
|
|
||||||
|
def __init__(self, curef, fwver):
|
||||||
|
self.curef = curef
|
||||||
|
self.imei = ""
|
||||||
|
self.osver = "7.1.1"
|
||||||
|
self.fwver = fwver
|
||||||
|
self.rtd = 0
|
||||||
|
self.cltp = self.CLTP_STATES["DESKTOP"]
|
||||||
|
self.mode = self.MODE_STATES["FULL"]
|
||||||
|
self.type = "Firmware"
|
||||||
|
self.chnl = self.CHNL_STATES["WIFI"]
|
||||||
|
self.cktp = self.CKTP_STATES["MANUAL"]
|
||||||
|
self.ckot = self.CKOT_STATES["ALL"]
|
||||||
|
self.ua = "tcl"
|
||||||
|
|
||||||
|
def is_rooted(self):
|
||||||
|
return (self.rtd == 1)
|
||||||
|
|
||||||
|
def set_rooted(self, new_state: bool):
|
||||||
|
if new_state:
|
||||||
|
self.rtd = 1
|
||||||
|
else:
|
||||||
|
self.rtd = 0
|
||||||
|
|
||||||
|
def set_cltp(self, new_cltp: str):
|
||||||
|
# (Numerical CLTPs can be set by direct assigns.)
|
||||||
|
# Throws exception when invalid cltp given:
|
||||||
|
self.cltp = self.CLTP_STATES[new_cltp]
|
||||||
|
|
||||||
|
def set_mode(self, new_mode: str):
|
||||||
|
# (Numerical MODEs can be set by direct assigns.)
|
||||||
|
# Throws exception when invalid mode given:
|
||||||
|
self.mode = self.MODE_STATES[new_mode]
|
||||||
|
|
||||||
|
def set_chnl(self, new_chnl: str):
|
||||||
|
# (Numerical CHNLs can be set by direct assigns.)
|
||||||
|
# Throws exception when invalid mode given:
|
||||||
|
self.chnl = self.CHNL_STATES[new_chnl]
|
||||||
|
|
||||||
|
def set_ckot(self, new_ckot: str):
|
||||||
|
# (Numerical CKOTs can be set by direct assigns.)
|
||||||
|
# Throws exception when invalid mode given:
|
||||||
|
self.ckot = self.CKOT_STATES[new_ckot]
|
||||||
|
|
||||||
|
class MobileDevice(Device):
|
||||||
|
def __init__(self, curef="PRD-63117-011", fwver="AAO472"):
|
||||||
|
super().__init__(curef, fwver)
|
||||||
|
self.imei = "3531510"
|
||||||
|
self.set_cltp("MOBILE")
|
||||||
|
self.set_mode("OTA")
|
||||||
|
self.ua = "com.tcl.fota/5.1.0.2.0029.0, Android"
|
||||||
|
|
||||||
|
class DesktopDevice(Device):
|
||||||
|
def __init__(self, curef="PRD-63117-011", fwver="AAA000"):
|
||||||
|
super().__init__(curef, fwver)
|
||||||
|
self.imei = "543212345000000"
|
||||||
|
self.set_cltp("DESKTOP")
|
||||||
|
self.set_mode("FULL")
|
@ -14,22 +14,36 @@ from defusedxml import ElementTree
|
|||||||
|
|
||||||
class TclCheckMixin:
|
class TclCheckMixin:
|
||||||
"""A mixin component for TCL's update request API."""
|
"""A mixin component for TCL's update request API."""
|
||||||
def do_check(self, https=True, timeout=10, max_tries=5):
|
def do_check(self, device=None, https=True, timeout=10, max_tries=5):
|
||||||
"""Perform update request with given parameters."""
|
"""Perform update request with given parameters."""
|
||||||
protocol = "https://" if https else "http://"
|
protocol = "https://" if https else "http://"
|
||||||
url = protocol + self.g2master + "/check.php"
|
url = protocol + self.g2master + "/check.php"
|
||||||
params = OrderedDict()
|
params = OrderedDict()
|
||||||
params["id"] = self.serid
|
if device:
|
||||||
params["curef"] = self.curef
|
# Need to support both ways for now
|
||||||
params["fv"] = self.fv
|
params["id"] = device.imei
|
||||||
params["mode"] = self.mode.value
|
params["curef"] = device.curef
|
||||||
params["type"] = self.ftype
|
params["fv"] = device.fwver
|
||||||
params["cltp"] = self.cltp.value
|
params["mode"] = device.mode
|
||||||
params["cktp"] = self.cktp.value
|
params["type"] = device.type
|
||||||
params["rtd"] = self.rtd.value
|
params["cltp"] = device.cltp
|
||||||
params["chnl"] = self.chnl.value
|
params["cktp"] = device.cktp
|
||||||
#params["osvs"] = self.osvs
|
params["rtd"] = device.rtd
|
||||||
#params["ckot"] = self.ckot.value
|
params["chnl"] = device.chnl
|
||||||
|
#params["osvs"] = device.osvs
|
||||||
|
#params["ckot"] = device.ckot
|
||||||
|
else:
|
||||||
|
params["id"] = self.serid
|
||||||
|
params["curef"] = self.curef
|
||||||
|
params["fv"] = self.fv
|
||||||
|
params["mode"] = self.mode.value
|
||||||
|
params["type"] = self.ftype
|
||||||
|
params["cltp"] = self.cltp.value
|
||||||
|
params["cktp"] = self.cktp.value
|
||||||
|
params["rtd"] = self.rtd.value
|
||||||
|
params["chnl"] = self.chnl.value
|
||||||
|
#params["osvs"] = self.osvs
|
||||||
|
#params["ckot"] = self.ckot.value
|
||||||
|
|
||||||
last_response = None
|
last_response = None
|
||||||
for _ in range(0, max_tries):
|
for _ in range(0, max_tries):
|
||||||
|
Loading…
Reference in New Issue
Block a user