mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-01 03:43:46 +08:00
handle unregistered devices (#20728)
* handle unregistered devices * cleanup * no uploader or athena * clean up old-commit-hash: 1786d042396bcc079be5de33ed900f48effcec17
This commit is contained in:
@@ -81,7 +81,7 @@ class Android(HardwareBase):
|
|||||||
|
|
||||||
def get_serial(self):
|
def get_serial(self):
|
||||||
ret = getprop("ro.serialno")
|
ret = getprop("ro.serialno")
|
||||||
if ret == "":
|
if len(ret) == 0:
|
||||||
ret = "cccccccc"
|
ret = "cccccccc"
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|||||||
@@ -91,10 +91,6 @@ kj::Array<capnp::word> logger_build_init_data() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char* dongle_id = getenv("DONGLE_ID");
|
|
||||||
if (dongle_id) {
|
|
||||||
init.setDongleId(std::string(dongle_id));
|
|
||||||
}
|
|
||||||
init.setDirty(!getenv("CLEAN"));
|
init.setDirty(!getenv("CLEAN"));
|
||||||
|
|
||||||
// log params
|
// log params
|
||||||
@@ -103,6 +99,7 @@ kj::Array<capnp::word> logger_build_init_data() {
|
|||||||
init.setGitBranch(params.get("GitBranch"));
|
init.setGitBranch(params.get("GitBranch"));
|
||||||
init.setGitRemote(params.get("GitRemote"));
|
init.setGitRemote(params.get("GitRemote"));
|
||||||
init.setPassive(params.getBool("Passive"));
|
init.setPassive(params.getBool("Passive"));
|
||||||
|
init.setDongleId(params.get("DongleId"));
|
||||||
{
|
{
|
||||||
std::map<std::string, std::string> params_map;
|
std::map<std::string, std::string> params_map;
|
||||||
params.read_db_all(¶ms_map);
|
params.read_db_all(¶ms_map);
|
||||||
|
|||||||
@@ -76,9 +76,11 @@ class TestLoggerd(unittest.TestCase):
|
|||||||
|
|
||||||
def test_init_data_values(self):
|
def test_init_data_values(self):
|
||||||
os.environ["CLEAN"] = random.choice(["0", "1"])
|
os.environ["CLEAN"] = random.choice(["0", "1"])
|
||||||
os.environ["DONGLE_ID"] = ''.join(random.choice(string.printable) for n in range(random.randint(1, 100)))
|
|
||||||
|
|
||||||
|
dongle = ''.join(random.choice(string.printable) for n in range(random.randint(1, 100)))
|
||||||
fake_params = [
|
fake_params = [
|
||||||
|
# param, initData field, value
|
||||||
|
("DongleId", "dongleId", dongle),
|
||||||
("GitCommit", "gitCommit", "commit"),
|
("GitCommit", "gitCommit", "commit"),
|
||||||
("GitBranch", "gitBranch", "branch"),
|
("GitBranch", "gitBranch", "branch"),
|
||||||
("GitRemote", "gitRemote", "remote"),
|
("GitRemote", "gitRemote", "remote"),
|
||||||
@@ -91,7 +93,6 @@ class TestLoggerd(unittest.TestCase):
|
|||||||
initData = lr[0].initData
|
initData = lr[0].initData
|
||||||
|
|
||||||
self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
|
self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
|
||||||
self.assertEqual(initData.dongleId, os.environ["DONGLE_ID"])
|
|
||||||
self.assertEqual(initData.version, VERSION)
|
self.assertEqual(initData.version, VERSION)
|
||||||
|
|
||||||
if os.path.isfile("/proc/cmdline"):
|
if os.path.isfile("/proc/cmdline"):
|
||||||
|
|||||||
@@ -18,8 +18,9 @@ from selfdrive.manager.process import ensure_running
|
|||||||
from selfdrive.manager.process_config import managed_processes
|
from selfdrive.manager.process_config import managed_processes
|
||||||
from selfdrive.registration import register
|
from selfdrive.registration import register
|
||||||
from selfdrive.swaglog import cloudlog, add_file_handler
|
from selfdrive.swaglog import cloudlog, add_file_handler
|
||||||
from selfdrive.version import dirty, version, origin, branch, commit
|
from selfdrive.version import dirty, version, origin, branch, commit, \
|
||||||
|
terms_version, training_version, \
|
||||||
|
get_git_branch, get_git_remote
|
||||||
|
|
||||||
def manager_init():
|
def manager_init():
|
||||||
|
|
||||||
@@ -64,13 +65,18 @@ def manager_init():
|
|||||||
except PermissionError:
|
except PermissionError:
|
||||||
print("WARNING: failed to make /dev/shm")
|
print("WARNING: failed to make /dev/shm")
|
||||||
|
|
||||||
|
# set version params
|
||||||
|
params.put("Version", version)
|
||||||
|
params.put("TermsVersion", terms_version)
|
||||||
|
params.put("TrainingVersion", training_version)
|
||||||
|
params.put("GitCommit", commit)
|
||||||
|
params.put("GitBranch", get_git_branch(default=""))
|
||||||
|
params.put("GitRemote", get_git_remote(default=""))
|
||||||
|
|
||||||
# set dongle id
|
# set dongle id
|
||||||
reg_res = register(show_spinner=True)
|
dongle_id = register(show_spinner=True)
|
||||||
if reg_res:
|
if dongle_id is not None:
|
||||||
dongle_id = reg_res
|
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog
|
||||||
else:
|
|
||||||
raise Exception("server registration failed")
|
|
||||||
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog and loggerd
|
|
||||||
|
|
||||||
if not dirty:
|
if not dirty:
|
||||||
os.environ['CLEAN'] = '1'
|
os.environ['CLEAN'] = '1'
|
||||||
@@ -101,7 +107,11 @@ def manager_thread():
|
|||||||
# save boot log
|
# save boot log
|
||||||
subprocess.call("./bootlog", cwd=os.path.join(BASEDIR, "selfdrive/loggerd"))
|
subprocess.call("./bootlog", cwd=os.path.join(BASEDIR, "selfdrive/loggerd"))
|
||||||
|
|
||||||
|
params = Params()
|
||||||
|
|
||||||
ignore = []
|
ignore = []
|
||||||
|
if params.get("DongleId") is None:
|
||||||
|
ignore += ["uploader", "manage_athenad"]
|
||||||
if os.getenv("NOBOARD") is not None:
|
if os.getenv("NOBOARD") is not None:
|
||||||
ignore.append("pandad")
|
ignore.append("pandad")
|
||||||
if os.getenv("BLOCK") is not None:
|
if os.getenv("BLOCK") is not None:
|
||||||
@@ -110,7 +120,6 @@ def manager_thread():
|
|||||||
ensure_running(managed_processes.values(), started=False, not_run=ignore)
|
ensure_running(managed_processes.values(), started=False, not_run=ignore)
|
||||||
|
|
||||||
started_prev = False
|
started_prev = False
|
||||||
params = Params()
|
|
||||||
sm = messaging.SubMaster(['deviceState'])
|
sm = messaging.SubMaster(['deviceState'])
|
||||||
pm = messaging.PubMaster(['managerState'])
|
pm = messaging.PubMaster(['managerState'])
|
||||||
|
|
||||||
|
|||||||
+10
-21
@@ -12,25 +12,16 @@ from common.file_helpers import mkdirs_exists_ok
|
|||||||
from common.basedir import PERSIST
|
from common.basedir import PERSIST
|
||||||
from selfdrive.hardware import HARDWARE
|
from selfdrive.hardware import HARDWARE
|
||||||
from selfdrive.swaglog import cloudlog
|
from selfdrive.swaglog import cloudlog
|
||||||
from selfdrive.version import version, terms_version, training_version, get_git_commit, \
|
|
||||||
get_git_branch, get_git_remote
|
|
||||||
|
|
||||||
|
|
||||||
def register(show_spinner=False):
|
def register(show_spinner=False):
|
||||||
params = Params()
|
params = Params()
|
||||||
params.put("Version", version)
|
|
||||||
params.put("TermsVersion", terms_version)
|
|
||||||
params.put("TrainingVersion", training_version)
|
|
||||||
|
|
||||||
params.put("GitCommit", get_git_commit(default=""))
|
|
||||||
params.put("GitBranch", get_git_branch(default=""))
|
|
||||||
params.put("GitRemote", get_git_remote(default=""))
|
|
||||||
params.put("SubscriberInfo", HARDWARE.get_subscriber_info())
|
params.put("SubscriberInfo", HARDWARE.get_subscriber_info())
|
||||||
|
|
||||||
IMEI = params.get("IMEI", encoding='utf8')
|
IMEI = params.get("IMEI", encoding='utf8')
|
||||||
HardwareSerial = params.get("HardwareSerial", encoding='utf8')
|
HardwareSerial = params.get("HardwareSerial", encoding='utf8')
|
||||||
|
dongle_id = params.get("DongleId", encoding='utf8')
|
||||||
needs_registration = (None in [IMEI, HardwareSerial])
|
needs_registration = None in (IMEI, HardwareSerial, dongle_id)
|
||||||
|
|
||||||
# create a key for auth
|
# create a key for auth
|
||||||
# your private key is kept on your device persist partition and never sent to our servers
|
# your private key is kept on your device persist partition and never sent to our servers
|
||||||
@@ -44,13 +35,6 @@ def register(show_spinner=False):
|
|||||||
os.rename(PERSIST+"/comma/id_rsa.tmp", PERSIST+"/comma/id_rsa")
|
os.rename(PERSIST+"/comma/id_rsa.tmp", PERSIST+"/comma/id_rsa")
|
||||||
os.rename(PERSIST+"/comma/id_rsa.tmp.pub", PERSIST+"/comma/id_rsa.pub")
|
os.rename(PERSIST+"/comma/id_rsa.tmp.pub", PERSIST+"/comma/id_rsa.pub")
|
||||||
|
|
||||||
# make key readable by app users (ai.comma.plus.offroad)
|
|
||||||
os.chmod(PERSIST+'/comma/', 0o755)
|
|
||||||
os.chmod(PERSIST+'/comma/id_rsa', 0o744)
|
|
||||||
|
|
||||||
dongle_id = params.get("DongleId", encoding='utf8')
|
|
||||||
needs_registration = needs_registration or dongle_id is None
|
|
||||||
|
|
||||||
if needs_registration:
|
if needs_registration:
|
||||||
if show_spinner:
|
if show_spinner:
|
||||||
spinner = Spinner()
|
spinner = Spinner()
|
||||||
@@ -79,9 +63,14 @@ def register(show_spinner=False):
|
|||||||
cloudlog.info("getting pilotauth")
|
cloudlog.info("getting pilotauth")
|
||||||
resp = api_get("v2/pilotauth/", method='POST', timeout=15,
|
resp = api_get("v2/pilotauth/", method='POST', timeout=15,
|
||||||
imei=imei1, imei2=imei2, serial=serial, public_key=public_key, register_token=register_token)
|
imei=imei1, imei2=imei2, serial=serial, public_key=public_key, register_token=register_token)
|
||||||
dongleauth = json.loads(resp.text)
|
|
||||||
dongle_id = dongleauth["dongle_id"]
|
if resp.status_code == 402:
|
||||||
params.put("DongleId", dongle_id)
|
cloudlog.info("Uknown serial number while trying to register device")
|
||||||
|
dongle_id = None
|
||||||
|
else:
|
||||||
|
dongleauth = json.loads(resp.text)
|
||||||
|
dongle_id = dongleauth["dongle_id"]
|
||||||
|
params.put("DongleId", dongle_id)
|
||||||
break
|
break
|
||||||
except Exception:
|
except Exception:
|
||||||
cloudlog.exception("failed to authenticate")
|
cloudlog.exception("failed to authenticate")
|
||||||
|
|||||||
Reference in New Issue
Block a user