* bumped unpaddedbase32 version

* improved readme
* better shutdown message in ui
master
Kevin Froman 2019-11-06 18:03:38 -06:00
parent aa07d50eed
commit adcb3f31a9
8 changed files with 17 additions and 8 deletions

View File

@ -5,7 +5,7 @@
</p> </p>
<p align="center"> <p align="center">
Private P2P Communication Network 📡 Privacy Respecting Communication Network 📡
</p> </p>
<img src='https://img.shields.io/github/license/beardog108/onionr'> <img src='https://gitlab.com/beardog/Onionr/badges/master/build.svg'> <img src='https://img.shields.io/badge/docker%20%F0%9F%90%8B-supported-success'> <img src='https://img.shields.io/badge/python%20version%20%F0%9F%90%8D-3.7+-blue'> <img src='https://img.shields.io/github/commit-activity/m/beardog108/onionr'> <img src='https://img.shields.io/github/license/beardog108/onionr'> <img src='https://gitlab.com/beardog/Onionr/badges/master/build.svg'> <img src='https://img.shields.io/badge/docker%20%F0%9F%90%8B-supported-success'> <img src='https://img.shields.io/badge/python%20version%20%F0%9F%90%8D-3.7+-blue'> <img src='https://img.shields.io/github/commit-activity/m/beardog108/onionr'>
@ -30,7 +30,7 @@
Onionr ("Onion Relay") is a decentralized/distributed peer-to-peer communication network, designed to be anonymous and resistant to (meta)data analysis, spam, and corruption. Onionr ("Onion Relay") is a decentralized/distributed peer-to-peer communication network, designed to be anonymous and resistant to (meta)data analysis, spam, and corruption.
Onionr stores data in independent packages referred to as 'blocks'. The blocks are synced to all other nodes in the network. Blocks and user IDs cannot be easily proven to have been created by a particular user. Even if there is enough evidence to believe that a specific user created a block, nodes still operate behind Tor or I2P and as such cannot be trivially unmasked. The anonymity is achieved by a stateless network with no given indication of what node a block came from or even the user ID. Onionr stores data in independent packages referred to as 'blocks'. The blocks are distributed to all interested nodes. Blocks and user IDs cannot be easily proven to have been created by a particular user. Even if there is enough evidence to believe that a specific user created a block, nodes still operate behind Tor or I2P and as such cannot be trivially unmasked. The anonymity is achieved by a stateless network with no given indication of what node a block came from or even the user ID.
Through long-term traffic analysis, a well funded adversary may discover the most probable node(s) to be creating a set of related blocks, however doing so would only lead them to a node behind Tor or I2P. As the first node that a block appears on is almost always not the creator of the block, there is plausible deniability regarding the true creator of the block. Through long-term traffic analysis, a well funded adversary may discover the most probable node(s) to be creating a set of related blocks, however doing so would only lead them to a node behind Tor or I2P. As the first node that a block appears on is almost always not the creator of the block, there is plausible deniability regarding the true creator of the block.

View File

@ -202,6 +202,7 @@ class OnionrCommunicatorDaemon:
except AttributeError: except AttributeError:
pass pass
else: else:
# Stop onionr direct connection services
for server in self.service_greenlets: for server in self.service_greenlets:
server.stop() server.stop()
localcommand.local_command('shutdown') # shutdown the api localcommand.local_command('shutdown') # shutdown the api

View File

@ -47,7 +47,7 @@ def site(name: str)->Response:
# Now make sure the key is regardless a valid base32 format ed25519 key (readding padding if necessary) # Now make sure the key is regardless a valid base32 format ed25519 key (readding padding if necessary)
if stringvalidators.validate_pub_key(name): if stringvalidators.validate_pub_key(name):
name = unpaddedbase32.repad(name) name = unpaddedbase32.repad(name)
resp = sitefiles.get_file('index.html') resp = sitefiles.get_file(name, 'index.html')
elif stringvalidators.validate_hash(name): elif stringvalidators.validate_hash(name):
try: try:

View File

@ -14,9 +14,13 @@ from onionrcrypto import generate_deterministic
def find_site_gzip(user_id: str)->str: def find_site_gzip(user_id: str)->str:
sites = blockmetadb.get_blocks_by_type('osite') sites = blockmetadb.get_blocks_by_type('osite')
user_site = None
for site in sites: for site in sites:
if onionrblockapi.Block(site).isSigner(user_id): block = onionrblockapi.Block(site)
return tarfile.open(fileobj=io.BytesIO(site.bcontent), mode='r') if block.isSigner(user_id):
user_site = block
if not user_site is None:
return tarfile.open(fileobj=io.BytesIO(user_site.bcontent), mode='r')
return None return None
def get_file(user_id, file)->Union[bytes, None]: def get_file(user_id, file)->Union[bytes, None]:

View File

@ -6,7 +6,7 @@ Flask==1.1.1
PySocks==1.6.8 PySocks==1.6.8
stem==1.7.1 stem==1.7.1
deadsimplekv==0.2.0 deadsimplekv==0.2.0
unpaddedbase32==0.1.0 unpaddedbase32==0.2.0
streamedrequests==1.0.0 streamedrequests==1.0.0
jinja2==2.10.1 jinja2==2.10.1
toomanyobjs==1.1.0 toomanyobjs==1.1.0

View File

@ -178,8 +178,9 @@ streamedrequests==1.0.0 \
--hash=sha256:1d9d07394804a6e1fd66bde74a804e71cab98e6920053865574a459f1cf7d3b7 --hash=sha256:1d9d07394804a6e1fd66bde74a804e71cab98e6920053865574a459f1cf7d3b7
toomanyobjs==1.1.0 \ toomanyobjs==1.1.0 \
--hash=sha256:99e27468f9dad19127be9e2fb086b42acd69aed9ad7e63cef74d6e4389be0534 --hash=sha256:99e27468f9dad19127be9e2fb086b42acd69aed9ad7e63cef74d6e4389be0534
unpaddedbase32==0.1.0 \ unpaddedbase32==0.2.0 \
--hash=sha256:5e4143fcaf77c9c6b4f60d18301c7570f0dac561dcf9b9aed8b5ba6ead7f218c --hash=sha256:4aacee75f8fd6c8cf129842ecba45ca59c11bfb13dae19d86f32b48fa3715403 \
--hash=sha256:b7b780c31d27d55e66abf6c221216a35690ee8892c2daacff7f2528e229bd9c3
urllib3==1.24.2 \ urllib3==1.24.2 \
--hash=sha256:4c291ca23bbb55c76518905869ef34bdd5f0e46af7afe6861e8375643ffee1a0 \ --hash=sha256:4c291ca23bbb55c76518905869ef34bdd5f0e46af7afe6861e8375643ffee1a0 \
--hash=sha256:9a247273df709c4fedb38c711e44292304f73f39ab01beda9f6b9fc375669ac3 --hash=sha256:9a247273df709c4fedb38c711e44292304f73f39ab01beda9f6b9fc375669ac3

View File

@ -25,6 +25,8 @@
<div id="shutdownNotice" class='overlay'> <div id="shutdownNotice" class='overlay'>
<div> <div>
<p>Your node will shutdown. Thank you for using Onionr.</p> <p>Your node will shutdown. Thank you for using Onionr.</p>
<p>If you are using random bind IPs (default in non dev mode), Onionr will have a different URL next time.
</p>
</div> </div>
</div> </div>

View File

@ -31,6 +31,7 @@
<div id="shutdownNotice" class="overlay"> <div id="shutdownNotice" class="overlay">
<div> <div>
<p>Your node will shutdown. Thank you for using Onionr.</p> <p>Your node will shutdown. Thank you for using Onionr.</p>
<p>If you are using random bind IPs (default in non dev mode), Onionr will have a different URL next time.
</div> </div>
</div> </div>