mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 06:33:57 +08:00
handle unregistered devices (#20728)
* handle unregistered devices
* cleanup
* no uploader or athena
* clean up
old-commit-hash: 1786d04239
This commit is contained in:
@@ -81,7 +81,7 @@ class Android(HardwareBase):
|
||||
|
||||
def get_serial(self):
|
||||
ret = getprop("ro.serialno")
|
||||
if ret == "":
|
||||
if len(ret) == 0:
|
||||
ret = "cccccccc"
|
||||
return ret
|
||||
|
||||
|
||||
@@ -91,10 +91,6 @@ kj::Array<capnp::word> logger_build_init_data() {
|
||||
}
|
||||
#endif
|
||||
|
||||
const char* dongle_id = getenv("DONGLE_ID");
|
||||
if (dongle_id) {
|
||||
init.setDongleId(std::string(dongle_id));
|
||||
}
|
||||
init.setDirty(!getenv("CLEAN"));
|
||||
|
||||
// log params
|
||||
@@ -103,6 +99,7 @@ kj::Array<capnp::word> logger_build_init_data() {
|
||||
init.setGitBranch(params.get("GitBranch"));
|
||||
init.setGitRemote(params.get("GitRemote"));
|
||||
init.setPassive(params.getBool("Passive"));
|
||||
init.setDongleId(params.get("DongleId"));
|
||||
{
|
||||
std::map<std::string, std::string> params_map;
|
||||
params.read_db_all(¶ms_map);
|
||||
|
||||
@@ -76,9 +76,11 @@ class TestLoggerd(unittest.TestCase):
|
||||
|
||||
def test_init_data_values(self):
|
||||
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 = [
|
||||
# param, initData field, value
|
||||
("DongleId", "dongleId", dongle),
|
||||
("GitCommit", "gitCommit", "commit"),
|
||||
("GitBranch", "gitBranch", "branch"),
|
||||
("GitRemote", "gitRemote", "remote"),
|
||||
@@ -91,7 +93,6 @@ class TestLoggerd(unittest.TestCase):
|
||||
initData = lr[0].initData
|
||||
|
||||
self.assertTrue(initData.dirty != bool(os.environ["CLEAN"]))
|
||||
self.assertEqual(initData.dongleId, os.environ["DONGLE_ID"])
|
||||
self.assertEqual(initData.version, VERSION)
|
||||
|
||||
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.registration import register
|
||||
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():
|
||||
|
||||
@@ -64,13 +65,18 @@ def manager_init():
|
||||
except PermissionError:
|
||||
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
|
||||
reg_res = register(show_spinner=True)
|
||||
if reg_res:
|
||||
dongle_id = reg_res
|
||||
else:
|
||||
raise Exception("server registration failed")
|
||||
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog and loggerd
|
||||
dongle_id = register(show_spinner=True)
|
||||
if dongle_id is not None:
|
||||
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog
|
||||
|
||||
if not dirty:
|
||||
os.environ['CLEAN'] = '1'
|
||||
@@ -101,7 +107,11 @@ def manager_thread():
|
||||
# save boot log
|
||||
subprocess.call("./bootlog", cwd=os.path.join(BASEDIR, "selfdrive/loggerd"))
|
||||
|
||||
params = Params()
|
||||
|
||||
ignore = []
|
||||
if params.get("DongleId") is None:
|
||||
ignore += ["uploader", "manage_athenad"]
|
||||
if os.getenv("NOBOARD") is not None:
|
||||
ignore.append("pandad")
|
||||
if os.getenv("BLOCK") is not None:
|
||||
@@ -110,7 +120,6 @@ def manager_thread():
|
||||
ensure_running(managed_processes.values(), started=False, not_run=ignore)
|
||||
|
||||
started_prev = False
|
||||
params = Params()
|
||||
sm = messaging.SubMaster(['deviceState'])
|
||||
pm = messaging.PubMaster(['managerState'])
|
||||
|
||||
|
||||
@@ -12,25 +12,16 @@ from common.file_helpers import mkdirs_exists_ok
|
||||
from common.basedir import PERSIST
|
||||
from selfdrive.hardware import HARDWARE
|
||||
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):
|
||||
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())
|
||||
|
||||
IMEI = params.get("IMEI", encoding='utf8')
|
||||
HardwareSerial = params.get("HardwareSerial", encoding='utf8')
|
||||
|
||||
needs_registration = (None in [IMEI, HardwareSerial])
|
||||
dongle_id = params.get("DongleId", encoding='utf8')
|
||||
needs_registration = None in (IMEI, HardwareSerial, dongle_id)
|
||||
|
||||
# create a key for auth
|
||||
# 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.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 show_spinner:
|
||||
spinner = Spinner()
|
||||
@@ -79,9 +63,14 @@ def register(show_spinner=False):
|
||||
cloudlog.info("getting pilotauth")
|
||||
resp = api_get("v2/pilotauth/", method='POST', timeout=15,
|
||||
imei=imei1, imei2=imei2, serial=serial, public_key=public_key, register_token=register_token)
|
||||
dongleauth = json.loads(resp.text)
|
||||
dongle_id = dongleauth["dongle_id"]
|
||||
params.put("DongleId", dongle_id)
|
||||
|
||||
if resp.status_code == 402:
|
||||
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
|
||||
except Exception:
|
||||
cloudlog.exception("failed to authenticate")
|
||||
|
||||
Reference in New Issue
Block a user