added some more readmes

master
Kevin Froman 2019-08-07 17:46:57 -05:00
parent 636cf3a8d1
commit 76356d5e3f
6 changed files with 37 additions and 8 deletions

View File

@ -0,0 +1,9 @@
# API Servers
Contains the WSGI servers Onionr uses for remote peer communication and local daemon control
## Files
* \_\_init\_\_.py: Exposes the server classes
* private: Contains the client API (the server used to interact with the local Onionr daemon, and view the web UI)
* public: Contains the public API (the server used by remote peers to talk to our daemon)

View File

@ -0,0 +1,8 @@
# Private API Server
Private API server, used to access the web interface locally and control Onionr
## Files
* \_\_init\_\_.py: Sets up the server and a few misc functions
* register_private_blueprints.py: Adds in flask blueprints for various sub-APIs

View File

@ -72,7 +72,7 @@ class PrivateAPI:
''' '''
Validate that the client token matches the given token. Used to prevent CSRF and data exfiltration Validate that the client token matches the given token. Used to prevent CSRF and data exfiltration
''' '''
if len(self.clientToken) == 0: if not self.clientToken:
logger.error("client password needs to be set") logger.error("client password needs to be set")
return False return False
try: try:

View File

@ -5,11 +5,11 @@ Onionr communicator is the Onionr client. It "connects" to remote Onionr peers a
* Finding new peers * Finding new peers
* Uploading blocks * Uploading blocks
* Downloading blocks * Downloading blocks
* Daemon maintnence/housekeeping * Daemon maintenance/housekeeping
## Files ## Files
* \_\_init\_\_.py: Contains the main communicator code. Inits and launches the communicator and sets up the timers * \_\_init\_\_.py: Contains the main communicator code. Inits and launches the communicator and sets up the timers
* peeraction.py: contains a function to send commands to remote peers * peeraction.py: contains a function to send commands to remote peers
* bootstrappers.py: adds peers from the bootstrap list to the communicator to try to connect to them * bootstrappers.py: adds peers from the bootstrap list to the communicator to try to connect to them
* onlinepers: management of the online peer pool for the communicator * onlinepeers: management of the online peer pool for the communicator

View File

@ -0,0 +1,12 @@
# Online Peers
Manages a pool of peers to perform actions with. Since Onionr does not maintain socket connections, it holds a list of peers.
## Files
* \_\_init\_\_.py: exposes some functions to interact with the pool
* clearofflinepeer.py: Pop the oldest peer in the offline list
* onlinepeers.py: communicator timer to add new peers to the pool randomly
* pickonlinepeers.py: returns a random peer from the online pool
* removeonlinepeer.py: removes a specified peer from the online pool

View File

@ -20,16 +20,16 @@
import secrets import secrets
def pick_online_peer(comm_inst): def pick_online_peer(comm_inst):
'''randomly picks peer from pool without bias (using secrets module)''' '''randomly picks peer from pool without bias (using secrets module)'''
retData = '' ret_data = ''
while True: while True:
peerLength = len(comm_inst.onlinePeers) peer_length = len(comm_inst.onlinePeers)
if peerLength <= 0: if peer_length <= 0:
break break
try: try:
# get a random online peer, securely. May get stuck in loop if network is lost or if all peers in pool magically disconnect at once # get a random online peer, securely. May get stuck in loop if network is lost or if all peers in pool magically disconnect at once
retData = comm_inst.onlinePeers[secrets.randbelow(peerLength)] ret_data = comm_inst.onlinePeers[secrets.randbelow(peer_length)]
except IndexError: except IndexError:
pass pass
else: else:
break break
return retData return ret_data