pull/20/head
quadrismegistus 4 years ago
parent 409d2a0818
commit fa91a1c536

@ -1,13 +1,20 @@
DEFAULT_URI='/login/'
import random
import random,platform
HORIZONTAL = False #random.choice([True,True,True,False])
FACTOR=1
WINDOW_SIZE = (1136*FACTOR,640*FACTOR) if HORIZONTAL else (640*FACTOR,1136*FACTOR)
PLAYING_CARDS = (2.5,3.5)
ASPECT_RATIO = PLAYING_CARDS[0]/PLAYING_CARDS[1]
HEIGHT = 800
WINDOW_SIZE=700,700
if platform.platform().startswith('Linux'):
HEIGHT *= 1.5
WINDOW_SIZE=int(HEIGHT * ASPECT_RATIO),int(HEIGHT)
BG_IMG='assets/bg-brown.png'

@ -3,6 +3,7 @@ from kivy.properties import ObjectProperty
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
from kivy.app import App
import asyncio
@ -27,5 +28,9 @@ class BaseScreen(MDScreen):
class ProtectedScreen(BaseScreen):
def on_pre_enter(self):
if not self.channel in self.app.keys:
return
async def guard():
keys=await self.app.get_keys()
if not self.channel in keys:
self.root.change_screen('login')
return
asyncio.create_task(guard())

@ -560,26 +560,34 @@ class Api(object):
self.log('!!',e)
return {'error':'Incorrect password'}
async def add_world_key(self,fn=PATH_WORLD_KEY):
def add_world_key(self,fn=PATH_WORLD_KEY):
import shutil
name='.'.join(os.path.basename(PATH_WORLD_KEY).split('.')[1:-1])
thisdir=os.path.dirname(__file__)
fnfn=os.path.join(thisdir,fn)
self.log('getting',fnfn)
name='.'.join(os.path.basename(fn).split('.')[1:-1])
priv_key=load_privkey_fn(fn)
priv_key=load_privkey_fn(fnfn)
pub_key=priv_key.public_key()
pub_key_b=serialize_pubkey(pub_key)
if await self.set_person(name,pub_key_b):
ofn=os.path.join(KEYDIR,f'.{name}.key')
shutil.copyfile(fn,ofn)
ofn=os.path.join(KEYDIR,f'.{name}.key')
shutil.copyfile(fnfn,ofn)
asyncio.create_task(self.add_world_key_to_net(name,pub_key_b))
async def add_world_key_to_net(self,name,pub_key_b):
await self.set_person(name,pub_key_b)
#@property
async def get_keys(self):
def get_keys(self):
res={}
key_files = os.listdir(KEYDIR)
world_key_fn = os.path.basename(PATH_WORLD_KEY)
if not world_key_fn in key_files:
self.log('[first time?] adding world key')
await self.add_world_key()
self.log('[first time?] adding world key:',world_key_fn)
self.add_world_key()
for priv_key_fn in key_files:
if (not priv_key_fn.startswith('.') or not priv_key_fn.endswith('.key')): continue
@ -594,11 +602,13 @@ class Api(object):
@property
async def keys(self):
#if not hasattr(self,'_keys'): self._keys = self.get_keys()
#return self._keys
return await self.get_keys()
def keys(self):
self.load_keys()
return self._keys
def load_keys(self):
self._keys = self.get_keys()
async def append_json(self,key,data):

Loading…
Cancel
Save