session id belongs to server, client id belongs to client
This commit is contained in:
parent
f8a37d5b65
commit
644974a51c
53
main.py
53
main.py
@ -19,9 +19,8 @@ from dateutil.parser import isoparse
|
|||||||
from geopy.distance import geodesic
|
from geopy.distance import geodesic
|
||||||
from os import path
|
from os import path
|
||||||
import pickle
|
import pickle
|
||||||
|
import hashlib
|
||||||
|
|
||||||
#FLOCK_SERVER="http://192.168.0.8:5000"
|
|
||||||
#FLOCK_SERVER="http://awelo.ath.cx:5000"
|
|
||||||
|
|
||||||
class IconButton(ButtonBehavior, Image):
|
class IconButton(ButtonBehavior, Image):
|
||||||
pass
|
pass
|
||||||
@ -74,7 +73,7 @@ class FlockompassApp(App):
|
|||||||
'bgcolor': "#336645"})
|
'bgcolor': "#336645"})
|
||||||
|
|
||||||
def read_settings(self):
|
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')
|
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||||
|
|
||||||
if path.isfile(pickle_path):
|
if path.isfile(pickle_path):
|
||||||
@ -99,7 +98,7 @@ class FlockompassApp(App):
|
|||||||
|
|
||||||
|
|
||||||
def save_settings(self):
|
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')
|
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||||
|
|
||||||
settings = {k: self.session_data[k]
|
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'],
|
self.dashboard_flock = "%s @ %s\nvel: %0.1f km/h" % (self.session_data['flock_size'],
|
||||||
flock_distance,
|
flock_distance,
|
||||||
self.session_data['flock_avg_speed'] * 1.609344)
|
self.session_data['flock_avg_speed'] * km_per_mile)
|
||||||
else:
|
else:
|
||||||
self.dashboard_flock = "no flocks"
|
self.dashboard_flock = "no flocks"
|
||||||
|
|
||||||
|
self.session_data.update({'speed': self.gps_data['speed'] * km_per_mile,
|
||||||
self.session_data.update({'speed': self.gps_data['speed'] * 1.609344,
|
|
||||||
'bearing': self.gps_data['bearing'],
|
'bearing': self.gps_data['bearing'],
|
||||||
'lat': self.gps_data['lat'],
|
'lat': self.gps_data['lat'],
|
||||||
'lon': self.gps_data['lon']})
|
'lon': self.gps_data['lon']})
|
||||||
@ -318,34 +316,45 @@ class FlockompassApp(App):
|
|||||||
self.gps_start(1000, 0)
|
self.gps_start(1000, 0)
|
||||||
|
|
||||||
def flock_server_register(self):
|
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'],
|
# flush session data
|
||||||
dest_lon=self.session_data['dest_lon'],
|
self.session_data.pop('session_id', None)
|
||||||
dest_lat=self.session_data['dest_lat']),
|
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)
|
timeout=0.5)
|
||||||
# TODO: check for response code, only proceed if 200
|
# TODO: check for response code, only proceed if 200
|
||||||
self.session_data['bike_id'] = r.json()['bike_id']
|
self.session_data['session_id'] = r.json()['session_id']
|
||||||
Logger.info('registered! got bike_id: %s' % self.session_data['bike_id'])
|
self.session_data['client_id'] = client_id
|
||||||
|
Logger.info('registered! got session_id: %s' % self.session_data['session_id'])
|
||||||
self.flock_server_update()
|
self.flock_server_update()
|
||||||
except requests.exceptions.Timeout:
|
except requests.exceptions.Timeout:
|
||||||
Logger.info('comm timeout while registering with flock server')
|
Logger.info('comm timeout while registering with flock server')
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
Logger.info('unable to connect while registering with flock server')
|
Logger.info('unable to connect while registering with flock server')
|
||||||
# finally:
|
# 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):
|
def flock_server_update(self):
|
||||||
Logger.info("Unique ID: %s" % uniqueid.get_uid())
|
|
||||||
try:
|
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'],
|
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),
|
speed=self.session_data.get('speed', 0),
|
||||||
bearing=self.session_data.get('bearing', 0),
|
bearing=self.session_data.get('bearing', 0),
|
||||||
lat=self.session_data['lat'],
|
lat=self.session_data['lat'],
|
||||||
@ -379,7 +388,7 @@ class FlockompassApp(App):
|
|||||||
|
|
||||||
|
|
||||||
def flock(self, dt):
|
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()):
|
and (self.session_data.get('last_update') + self.get_session_timeout()) > datetime.now()):
|
||||||
self.flock_server_update()
|
self.flock_server_update()
|
||||||
else:
|
else:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user