session id belongs to server, client id belongs to client

This commit is contained in:
rgarcia-herrera 2022-07-05 12:59:56 -05:00
parent f8a37d5b65
commit 644974a51c

53
main.py
View File

@ -19,9 +19,8 @@ from dateutil.parser import isoparse
from geopy.distance import geodesic
from os import path
import pickle
import hashlib
#FLOCK_SERVER="http://192.168.0.8:5000"
#FLOCK_SERVER="http://awelo.ath.cx:5000"
class IconButton(ButtonBehavior, Image):
pass
@ -74,7 +73,7 @@ class FlockompassApp(App):
'bgcolor': "#336645"})
def read_settings(self):
app_folder = os.path.dirname(os.path.abspath(__file__))
app_folder = path.dirname(path.abspath(__file__))
pickle_path = path.join(app_folder, 'settings.pickle')
if path.isfile(pickle_path):
@ -99,7 +98,7 @@ class FlockompassApp(App):
def save_settings(self):
app_folder = os.path.dirname(os.path.abspath(__file__))
app_folder = path.dirname(path.abspath(__file__))
pickle_path = path.join(app_folder, 'settings.pickle')
settings = {k: self.session_data[k]
@ -217,12 +216,11 @@ class FlockompassApp(App):
self.dashboard_flock = "%s @ %s\nvel: %0.1f km/h" % (self.session_data['flock_size'],
flock_distance,
self.session_data['flock_avg_speed'] * 1.609344)
self.session_data['flock_avg_speed'] * km_per_mile)
else:
self.dashboard_flock = "no flocks"
self.session_data.update({'speed': self.gps_data['speed'] * 1.609344,
self.session_data.update({'speed': self.gps_data['speed'] * km_per_mile,
'bearing': self.gps_data['bearing'],
'lat': self.gps_data['lat'],
'lon': self.gps_data['lon']})
@ -318,34 +316,45 @@ class FlockompassApp(App):
self.gps_start(1000, 0)
def flock_server_register(self):
Logger.info("Unique ID: %s" % uniqueid.get_uid())
try:
register_url = "{server}/register/?dest_lon={dest_lon}&dest_lat={dest_lat}"
r = requests.get(register_url.format(server=self.session_data['settings_flock_server'],
dest_lon=self.session_data['dest_lon'],
dest_lat=self.session_data['dest_lat']),
# flush session data
self.session_data.pop('session_id', None)
self.session_data.pop('client_id', None)
self.session_data.pop('speed', None)
self.session_data.pop('bearing', None)
Logger.info("Unique ID: %s" % uniqueid.get_uid())
client_id = hashlib.sha256(b"%s/%s/%s" % (uniqueid.get_uid(),
self.session_data['dest_lon'],
self.session_data['dest_lat'],
)).hexdigest()
try:
register_url = "{server}/register/" % self.session_data['settings_flock_server']
r = requests.get(register_url,
params={'dest_lon': self.session_data['dest_lon'],
'dest_lat': self.session_data['dest_lat'],
'client_id': client_id},
timeout=0.5)
# TODO: check for response code, only proceed if 200
self.session_data['bike_id'] = r.json()['bike_id']
Logger.info('registered! got bike_id: %s' % self.session_data['bike_id'])
self.session_data['session_id'] = r.json()['session_id']
self.session_data['client_id'] = client_id
Logger.info('registered! got session_id: %s' % self.session_data['session_id'])
self.flock_server_update()
except requests.exceptions.Timeout:
Logger.info('comm timeout while registering with flock server')
except requests.exceptions.ConnectionError:
Logger.info('unable to connect while registering with flock server')
# finally:
# self.session_data.pop('bike_id', None)
# self.session_data.pop('speed', None)
# self.session_data.pop('bearing', None)
def flock_server_update(self):
Logger.info("Unique ID: %s" % uniqueid.get_uid())
try:
update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
update_url = "{server}/update/{client_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
req = requests.get(update_url.format(server=self.session_data['settings_flock_server'],
bike_id=self.session_data['bike_id'],
client_id=self.session_data['client_id'],
speed=self.session_data.get('speed', 0),
bearing=self.session_data.get('bearing', 0),
lat=self.session_data['lat'],
@ -379,7 +388,7 @@ class FlockompassApp(App):
def flock(self, dt):
if ('bike_id' in self.session_data
if ('session_id' in self.session_data
and (self.session_data.get('last_update') + self.get_session_timeout()) > datetime.now()):
self.flock_server_update()
else: