diff --git a/.env b/.env
new file mode 100644
index 00000000..d65b3d24
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+PYTHONPATH=./venv/bin/python3.7
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index d88ce58f..db0720a0 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,22 @@
__pycache__/
-onionr/data/config.ini
-onionr/data/*.db
-onionr/data-old/*
-onionr/data*
-onionr/tor
-onionr/tor.exe
-onionr/testdata
-onionr/*.pyc
-onionr/*.log
-onionr/data/hs/hostname
-onionr/data/*
-onionr/data-backup/*
-onionr/gnupg/*
+src/data/config.ini
+src/data/*.db
+src/data-old/*
+src/data*
+src/tor
+src/tor.exe
+src/testdata
+src/*.pyc
+src/*.log
+src/data/hs/hostname
+src/data/*
+src/data-backup/*
run.sh
-onionr/data-encrypted.dat
-onionr/.onionr-lock
-core
+src/.onionr-lock
.vscode/*
venv/*
-onionr/fs*
-onionr/tmp/*
+src/fs*
+src/tmp/*
testdata/*
*.dll
*.exe
@@ -29,13 +26,12 @@ dist/*
# log files
output.log
*.log
-onionr/output.log
-onionr/*.log
-onionr/data/output.log
-onionr/data/*.log
+src/output.log
+src/*.log
+src/data/output.log
+src/data/*.log
# package files
onionr-*.pkg.tar.gz
pkg/
-src/
spawnnodes.py
diff --git a/make-release.sh b/make-release.sh
index 36b02700..67175ebc 100755
--- a/make-release.sh
+++ b/make-release.sh
@@ -2,7 +2,7 @@
rm -rf dist
mkdir dist
mkdir dist/onionr/
-cp -t dist/onionr/ -r docs static-data install onionr onionr.sh start-daemon.sh setprofile.sh
+cp -t dist/onionr/ -r docs static-data install src onionr.sh start-daemon.sh setprofile.sh
cp *.md dist/onionr/
PIP_USER=false
export PIP_USER
diff --git a/onionr.sh b/onionr.sh
index 461da32a..0b7d898c 100755
--- a/onionr.sh
+++ b/onionr.sh
@@ -2,5 +2,5 @@
ORIG_ONIONR_RUN_DIR=`pwd`
export ORIG_ONIONR_RUN_DIR
cd "$(dirname "$0")"
-cd onionr
+cd src
./__init__.py "$@"
\ No newline at end of file
diff --git a/onionr/etc/cleanup/__init__.py b/onionr/etc/cleanup/__init__.py
deleted file mode 100644
index cd4a9474..00000000
--- a/onionr/etc/cleanup/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import os, filepaths
-
-def _safe_remove(path):
- try:
- os.remove(path)
- except FileNotFoundError:
- pass
-
-def delete_run_files():
- _safe_remove(filepaths.public_API_host_file)
- _safe_remove(filepaths.private_API_host_file)
- _safe_remove(filepaths.daemon_mark_file)
- _safe_remove(filepaths.lock_file)
diff --git a/run-windows-dev.bat b/run-windows-dev.bat
index 2fbae3d7..eeed5e9c 100755
--- a/run-windows-dev.bat
+++ b/run-windows-dev.bat
@@ -3,5 +3,5 @@ echo This script is only intended for use in Onionr development, as it uses a ra
set ONIONR_HOME=data%random%
echo Using profile: %ONIONR_HOME%
setlocal
-chdir onionr
+chdir src
python __init__.py %*
diff --git a/run-windows.bat b/run-windows.bat
index 0e209ba0..71afd897 100755
--- a/run-windows.bat
+++ b/run-windows.bat
@@ -1,4 +1,4 @@
@echo off
setlocal
-chdir onionr
+chdir src
python __init__.py %*
diff --git a/onionr/__init__.py b/src/__init__.py
similarity index 74%
rename from onionr/__init__.py
rename to src/__init__.py
index a48d6fd2..b0b2f889 100755
--- a/onionr/__init__.py
+++ b/src/__init__.py
@@ -22,30 +22,29 @@
'''
# Set the user's locale for encoding reasons
-import locale
+import locale # noqa
locale.setlocale(locale.LC_ALL, '')
ran_as_script = False
if __name__ == "__main__": ran_as_script = True
# Import standard libraries
-import sys
+import sys # noqa
-# 3rd party lib imports
-# Ensure that PySocks is installed
try:
- from urllib3.contrib.socks import SOCKSProxyManager
-except ModuleNotFoundError:
- # check here or else we get error when onionr runs with tor
- raise ModuleNotFoundError("You need the PySocks module (for use with socks5 proxy to use Tor)")
+ from etc import dependencycheck # noqa
+except ModuleNotFoundError as e:
+ print('Onionr needs ' + str(e) + ' installed')
# Onionr imports
from etc import onionrvalues # For different Onionr related constants such as versions
import onionrsetup as setup
+min_ver = onionrvalues.MIN_PY_VERSION
+
# Ensure we have at least the minimum python version
-if sys.version_info[0] == 2 or sys.version_info[1] < onionrvalues.MIN_PY_VERSION:
- sys.stderr.write('Error, Onionr requires Python 3.%s+\n' % (onionrvalues.MIN_PY_VERSION,))
+if sys.version_info[0] == 2 or sys.version_info[1] < min_ver:
+ sys.stderr.write('Error, Onionr requires Python 3.' + str(min_ver) + '\n')
sys.exit(1)
# Create Onionr data directories, must be done before most imports
@@ -58,19 +57,21 @@ from onionrplugins import onionrevents as events
setup.setup_config()
setup.setup_default_plugins()
+
def onionr_main():
"""Onionr entrypoint, start command processor"""
parser.register()
+
if ran_as_script:
onionr_main()
# Cleanup standard out/err because Python refuses to do it itsself
try:
sys.stderr.close()
- except (IOError, BrokenPipeError) as e:
+ except (IOError, BrokenPipeError):
pass
try:
sys.stdout.close()
- except (IOError, BrokenPipeError) as e:
+ except (IOError, BrokenPipeError):
pass
diff --git a/onionr/apiservers/README.md b/src/apiservers/README.md
similarity index 100%
rename from onionr/apiservers/README.md
rename to src/apiservers/README.md
diff --git a/onionr/apiservers/__init__.py b/src/apiservers/__init__.py
similarity index 100%
rename from onionr/apiservers/__init__.py
rename to src/apiservers/__init__.py
diff --git a/onionr/apiservers/private/README.md b/src/apiservers/private/README.md
similarity index 100%
rename from onionr/apiservers/private/README.md
rename to src/apiservers/private/README.md
diff --git a/onionr/apiservers/private/__init__.py b/src/apiservers/private/__init__.py
similarity index 100%
rename from onionr/apiservers/private/__init__.py
rename to src/apiservers/private/__init__.py
diff --git a/onionr/apiservers/private/register_private_blueprints.py b/src/apiservers/private/register_private_blueprints.py
similarity index 100%
rename from onionr/apiservers/private/register_private_blueprints.py
rename to src/apiservers/private/register_private_blueprints.py
diff --git a/onionr/apiservers/public/__init__.py b/src/apiservers/public/__init__.py
similarity index 100%
rename from onionr/apiservers/public/__init__.py
rename to src/apiservers/public/__init__.py
diff --git a/onionr/communicator/README.md b/src/communicator/README.md
similarity index 100%
rename from onionr/communicator/README.md
rename to src/communicator/README.md
diff --git a/onionr/communicator/__init__.py b/src/communicator/__init__.py
similarity index 100%
rename from onionr/communicator/__init__.py
rename to src/communicator/__init__.py
diff --git a/onionr/communicator/bootstrappeers.py b/src/communicator/bootstrappeers.py
similarity index 100%
rename from onionr/communicator/bootstrappeers.py
rename to src/communicator/bootstrappeers.py
diff --git a/onionr/communicator/onlinepeers/README.md b/src/communicator/onlinepeers/README.md
similarity index 100%
rename from onionr/communicator/onlinepeers/README.md
rename to src/communicator/onlinepeers/README.md
diff --git a/onionr/communicator/onlinepeers/__init__.py b/src/communicator/onlinepeers/__init__.py
similarity index 100%
rename from onionr/communicator/onlinepeers/__init__.py
rename to src/communicator/onlinepeers/__init__.py
diff --git a/onionr/communicator/onlinepeers/clearofflinepeer.py b/src/communicator/onlinepeers/clearofflinepeer.py
similarity index 100%
rename from onionr/communicator/onlinepeers/clearofflinepeer.py
rename to src/communicator/onlinepeers/clearofflinepeer.py
diff --git a/onionr/communicator/onlinepeers/onlinepeers.py b/src/communicator/onlinepeers/onlinepeers.py
similarity index 100%
rename from onionr/communicator/onlinepeers/onlinepeers.py
rename to src/communicator/onlinepeers/onlinepeers.py
diff --git a/onionr/communicator/onlinepeers/pickonlinepeers.py b/src/communicator/onlinepeers/pickonlinepeers.py
similarity index 100%
rename from onionr/communicator/onlinepeers/pickonlinepeers.py
rename to src/communicator/onlinepeers/pickonlinepeers.py
diff --git a/onionr/communicator/onlinepeers/removeonlinepeer.py b/src/communicator/onlinepeers/removeonlinepeer.py
similarity index 100%
rename from onionr/communicator/onlinepeers/removeonlinepeer.py
rename to src/communicator/onlinepeers/removeonlinepeer.py
diff --git a/onionr/communicator/peeraction.py b/src/communicator/peeraction.py
similarity index 100%
rename from onionr/communicator/peeraction.py
rename to src/communicator/peeraction.py
diff --git a/onionr/communicator/uploadqueue/__init__.py b/src/communicator/uploadqueue/__init__.py
similarity index 100%
rename from onionr/communicator/uploadqueue/__init__.py
rename to src/communicator/uploadqueue/__init__.py
diff --git a/onionr/communicatorutils/README.md b/src/communicatorutils/README.md
similarity index 100%
rename from onionr/communicatorutils/README.md
rename to src/communicatorutils/README.md
diff --git a/onionr/communicatorutils/__init__.py b/src/communicatorutils/__init__.py
similarity index 100%
rename from onionr/communicatorutils/__init__.py
rename to src/communicatorutils/__init__.py
diff --git a/onionr/communicatorutils/announcenode.py b/src/communicatorutils/announcenode.py
similarity index 100%
rename from onionr/communicatorutils/announcenode.py
rename to src/communicatorutils/announcenode.py
diff --git a/onionr/communicatorutils/connectnewpeers.py b/src/communicatorutils/connectnewpeers.py
similarity index 100%
rename from onionr/communicatorutils/connectnewpeers.py
rename to src/communicatorutils/connectnewpeers.py
diff --git a/onionr/communicatorutils/cooldownpeer.py b/src/communicatorutils/cooldownpeer.py
similarity index 100%
rename from onionr/communicatorutils/cooldownpeer.py
rename to src/communicatorutils/cooldownpeer.py
diff --git a/onionr/communicatorutils/daemonqueuehandler.py b/src/communicatorutils/daemonqueuehandler.py
similarity index 100%
rename from onionr/communicatorutils/daemonqueuehandler.py
rename to src/communicatorutils/daemonqueuehandler.py
diff --git a/onionr/communicatorutils/deniableinserts.py b/src/communicatorutils/deniableinserts.py
similarity index 100%
rename from onionr/communicatorutils/deniableinserts.py
rename to src/communicatorutils/deniableinserts.py
diff --git a/onionr/communicatorutils/downloadblocks/__init__.py b/src/communicatorutils/downloadblocks/__init__.py
similarity index 100%
rename from onionr/communicatorutils/downloadblocks/__init__.py
rename to src/communicatorutils/downloadblocks/__init__.py
diff --git a/onionr/communicatorutils/downloadblocks/shoulddownload.py b/src/communicatorutils/downloadblocks/shoulddownload.py
similarity index 100%
rename from onionr/communicatorutils/downloadblocks/shoulddownload.py
rename to src/communicatorutils/downloadblocks/shoulddownload.py
diff --git a/onionr/communicatorutils/housekeeping.py b/src/communicatorutils/housekeeping.py
similarity index 100%
rename from onionr/communicatorutils/housekeeping.py
rename to src/communicatorutils/housekeeping.py
diff --git a/onionr/communicatorutils/lookupadders.py b/src/communicatorutils/lookupadders.py
similarity index 100%
rename from onionr/communicatorutils/lookupadders.py
rename to src/communicatorutils/lookupadders.py
diff --git a/onionr/communicatorutils/lookupblocks.py b/src/communicatorutils/lookupblocks.py
similarity index 100%
rename from onionr/communicatorutils/lookupblocks.py
rename to src/communicatorutils/lookupblocks.py
diff --git a/onionr/communicatorutils/netcheck.py b/src/communicatorutils/netcheck.py
similarity index 100%
rename from onionr/communicatorutils/netcheck.py
rename to src/communicatorutils/netcheck.py
diff --git a/onionr/communicatorutils/onionrcommunicatortimers.py b/src/communicatorutils/onionrcommunicatortimers.py
similarity index 100%
rename from onionr/communicatorutils/onionrcommunicatortimers.py
rename to src/communicatorutils/onionrcommunicatortimers.py
diff --git a/onionr/communicatorutils/proxypicker.py b/src/communicatorutils/proxypicker.py
similarity index 100%
rename from onionr/communicatorutils/proxypicker.py
rename to src/communicatorutils/proxypicker.py
diff --git a/onionr/communicatorutils/restarttor.py b/src/communicatorutils/restarttor.py
similarity index 100%
rename from onionr/communicatorutils/restarttor.py
rename to src/communicatorutils/restarttor.py
diff --git a/onionr/communicatorutils/servicecreator.py b/src/communicatorutils/servicecreator.py
similarity index 100%
rename from onionr/communicatorutils/servicecreator.py
rename to src/communicatorutils/servicecreator.py
diff --git a/onionr/communicatorutils/uploadblocks/__init__.py b/src/communicatorutils/uploadblocks/__init__.py
similarity index 100%
rename from onionr/communicatorutils/uploadblocks/__init__.py
rename to src/communicatorutils/uploadblocks/__init__.py
diff --git a/onionr/communicatorutils/uploadblocks/session.py b/src/communicatorutils/uploadblocks/session.py
similarity index 100%
rename from onionr/communicatorutils/uploadblocks/session.py
rename to src/communicatorutils/uploadblocks/session.py
diff --git a/onionr/communicatorutils/uploadblocks/sessionmanager.py b/src/communicatorutils/uploadblocks/sessionmanager.py
similarity index 100%
rename from onionr/communicatorutils/uploadblocks/sessionmanager.py
rename to src/communicatorutils/uploadblocks/sessionmanager.py
diff --git a/onionr/config.py b/src/config.py
similarity index 100%
rename from onionr/config.py
rename to src/config.py
diff --git a/onionr/coredb/__init__.py b/src/coredb/__init__.py
similarity index 100%
rename from onionr/coredb/__init__.py
rename to src/coredb/__init__.py
diff --git a/onionr/coredb/blockmetadb/__init__.py b/src/coredb/blockmetadb/__init__.py
similarity index 100%
rename from onionr/coredb/blockmetadb/__init__.py
rename to src/coredb/blockmetadb/__init__.py
diff --git a/onionr/coredb/blockmetadb/add.py b/src/coredb/blockmetadb/add.py
similarity index 100%
rename from onionr/coredb/blockmetadb/add.py
rename to src/coredb/blockmetadb/add.py
diff --git a/onionr/coredb/blockmetadb/expiredblocks.py b/src/coredb/blockmetadb/expiredblocks.py
similarity index 100%
rename from onionr/coredb/blockmetadb/expiredblocks.py
rename to src/coredb/blockmetadb/expiredblocks.py
diff --git a/onionr/coredb/blockmetadb/updateblockinfo.py b/src/coredb/blockmetadb/updateblockinfo.py
similarity index 100%
rename from onionr/coredb/blockmetadb/updateblockinfo.py
rename to src/coredb/blockmetadb/updateblockinfo.py
diff --git a/onionr/coredb/daemonqueue/__init__.py b/src/coredb/daemonqueue/__init__.py
similarity index 100%
rename from onionr/coredb/daemonqueue/__init__.py
rename to src/coredb/daemonqueue/__init__.py
diff --git a/onionr/coredb/dbfiles.py b/src/coredb/dbfiles.py
similarity index 100%
rename from onionr/coredb/dbfiles.py
rename to src/coredb/dbfiles.py
diff --git a/onionr/coredb/keydb/__init__.py b/src/coredb/keydb/__init__.py
similarity index 100%
rename from onionr/coredb/keydb/__init__.py
rename to src/coredb/keydb/__init__.py
diff --git a/onionr/coredb/keydb/addkeys.py b/src/coredb/keydb/addkeys.py
similarity index 100%
rename from onionr/coredb/keydb/addkeys.py
rename to src/coredb/keydb/addkeys.py
diff --git a/onionr/coredb/keydb/listkeys.py b/src/coredb/keydb/listkeys.py
similarity index 100%
rename from onionr/coredb/keydb/listkeys.py
rename to src/coredb/keydb/listkeys.py
diff --git a/onionr/coredb/keydb/removekeys.py b/src/coredb/keydb/removekeys.py
similarity index 100%
rename from onionr/coredb/keydb/removekeys.py
rename to src/coredb/keydb/removekeys.py
diff --git a/onionr/coredb/keydb/transportinfo.py b/src/coredb/keydb/transportinfo.py
similarity index 100%
rename from onionr/coredb/keydb/transportinfo.py
rename to src/coredb/keydb/transportinfo.py
diff --git a/onionr/coredb/keydb/userinfo.py b/src/coredb/keydb/userinfo.py
similarity index 100%
rename from onionr/coredb/keydb/userinfo.py
rename to src/coredb/keydb/userinfo.py
diff --git a/onionr/etc/README.md b/src/etc/README.md
similarity index 100%
rename from onionr/etc/README.md
rename to src/etc/README.md
diff --git a/onionr/etc/__init__.py b/src/etc/__init__.py
similarity index 100%
rename from onionr/etc/__init__.py
rename to src/etc/__init__.py
diff --git a/onionr/onionrutils/updater/__init__.py b/src/etc/cleanup/__init__.py
similarity index 58%
rename from onionr/onionrutils/updater/__init__.py
rename to src/etc/cleanup/__init__.py
index c3db94f3..1a5b651b 100644
--- a/onionr/onionrutils/updater/__init__.py
+++ b/src/etc/cleanup/__init__.py
@@ -1,7 +1,7 @@
"""
Onionr - Private P2P Communication
- Lib to keep Onionr up to date
+ cleanup files
"""
"""
This program is free software: you can redistribute it and/or modify
@@ -17,14 +17,16 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
"""
-from onionrtypes import RestartRequiredStatus
-from onionrblocks import onionrblockapi
+import os, filepaths
-from etc import onionrvalues
-import onionrexceptions
-import notifier
+def _safe_remove(path):
+ try:
+ os.remove(path)
+ except FileNotFoundError:
+ pass
-def update_event(bl)->RestartRequiredStatus:
- """Show update notification if available, return bool of if update happend"""
- if not bl.isSigner(onionrvalues.UPDATE_SIGN_KEY): raise onionrexceptions.InvalidUpdate
- notifier.notify(message="A new Onionr update is available. Stay updated to remain secure.")
+def delete_run_files():
+ _safe_remove(filepaths.public_API_host_file)
+ _safe_remove(filepaths.private_API_host_file)
+ _safe_remove(filepaths.daemon_mark_file)
+ _safe_remove(filepaths.lock_file)
diff --git a/src/etc/dependencycheck.py b/src/etc/dependencycheck.py
new file mode 100644
index 00000000..6b83ebc2
--- /dev/null
+++ b/src/etc/dependencycheck.py
@@ -0,0 +1 @@
+from urllib3.contrib.socks import SOCKSProxyManager # noqa
\ No newline at end of file
diff --git a/onionr/etc/humanreadabletime.py b/src/etc/humanreadabletime.py
similarity index 100%
rename from onionr/etc/humanreadabletime.py
rename to src/etc/humanreadabletime.py
diff --git a/onionr/etc/onionrvalues.py b/src/etc/onionrvalues.py
similarity index 100%
rename from onionr/etc/onionrvalues.py
rename to src/etc/onionrvalues.py
diff --git a/onionr/etc/powchoice.py b/src/etc/powchoice.py
similarity index 100%
rename from onionr/etc/powchoice.py
rename to src/etc/powchoice.py
diff --git a/onionr/etc/waitforsetvar.py b/src/etc/waitforsetvar.py
similarity index 100%
rename from onionr/etc/waitforsetvar.py
rename to src/etc/waitforsetvar.py
diff --git a/onionr/filepaths/__init__.py b/src/filepaths/__init__.py
similarity index 100%
rename from onionr/filepaths/__init__.py
rename to src/filepaths/__init__.py
diff --git a/onionr/httpapi/README.md b/src/httpapi/README.md
similarity index 100%
rename from onionr/httpapi/README.md
rename to src/httpapi/README.md
diff --git a/onionr/httpapi/__init__.py b/src/httpapi/__init__.py
similarity index 100%
rename from onionr/httpapi/__init__.py
rename to src/httpapi/__init__.py
diff --git a/onionr/httpapi/apiutils/__init__.py b/src/httpapi/apiutils/__init__.py
similarity index 100%
rename from onionr/httpapi/apiutils/__init__.py
rename to src/httpapi/apiutils/__init__.py
diff --git a/onionr/httpapi/apiutils/getblockdata.py b/src/httpapi/apiutils/getblockdata.py
similarity index 100%
rename from onionr/httpapi/apiutils/getblockdata.py
rename to src/httpapi/apiutils/getblockdata.py
diff --git a/onionr/httpapi/apiutils/setbindip.py b/src/httpapi/apiutils/setbindip.py
similarity index 100%
rename from onionr/httpapi/apiutils/setbindip.py
rename to src/httpapi/apiutils/setbindip.py
diff --git a/onionr/httpapi/apiutils/shutdown.py b/src/httpapi/apiutils/shutdown.py
similarity index 100%
rename from onionr/httpapi/apiutils/shutdown.py
rename to src/httpapi/apiutils/shutdown.py
diff --git a/onionr/httpapi/configapi/__init__.py b/src/httpapi/configapi/__init__.py
similarity index 100%
rename from onionr/httpapi/configapi/__init__.py
rename to src/httpapi/configapi/__init__.py
diff --git a/onionr/httpapi/directconnections/__init__.py b/src/httpapi/directconnections/__init__.py
similarity index 100%
rename from onionr/httpapi/directconnections/__init__.py
rename to src/httpapi/directconnections/__init__.py
diff --git a/onionr/httpapi/fdsafehandler.py b/src/httpapi/fdsafehandler.py
similarity index 100%
rename from onionr/httpapi/fdsafehandler.py
rename to src/httpapi/fdsafehandler.py
diff --git a/onionr/httpapi/friendsapi/__init__.py b/src/httpapi/friendsapi/__init__.py
similarity index 100%
rename from onionr/httpapi/friendsapi/__init__.py
rename to src/httpapi/friendsapi/__init__.py
diff --git a/onionr/httpapi/insertblock.py b/src/httpapi/insertblock.py
similarity index 100%
rename from onionr/httpapi/insertblock.py
rename to src/httpapi/insertblock.py
diff --git a/onionr/httpapi/miscclientapi/__init__.py b/src/httpapi/miscclientapi/__init__.py
similarity index 100%
rename from onionr/httpapi/miscclientapi/__init__.py
rename to src/httpapi/miscclientapi/__init__.py
diff --git a/onionr/httpapi/miscclientapi/endpoints.py b/src/httpapi/miscclientapi/endpoints.py
similarity index 100%
rename from onionr/httpapi/miscclientapi/endpoints.py
rename to src/httpapi/miscclientapi/endpoints.py
diff --git a/onionr/httpapi/miscclientapi/getblocks.py b/src/httpapi/miscclientapi/getblocks.py
similarity index 100%
rename from onionr/httpapi/miscclientapi/getblocks.py
rename to src/httpapi/miscclientapi/getblocks.py
diff --git a/onionr/httpapi/miscclientapi/motd/__init__.py b/src/httpapi/miscclientapi/motd/__init__.py
similarity index 100%
rename from onionr/httpapi/miscclientapi/motd/__init__.py
rename to src/httpapi/miscclientapi/motd/__init__.py
diff --git a/onionr/httpapi/miscclientapi/staticfiles.py b/src/httpapi/miscclientapi/staticfiles.py
similarity index 100%
rename from onionr/httpapi/miscclientapi/staticfiles.py
rename to src/httpapi/miscclientapi/staticfiles.py
diff --git a/onionr/httpapi/miscpublicapi/__init__.py b/src/httpapi/miscpublicapi/__init__.py
similarity index 100%
rename from onionr/httpapi/miscpublicapi/__init__.py
rename to src/httpapi/miscpublicapi/__init__.py
diff --git a/onionr/httpapi/miscpublicapi/announce.py b/src/httpapi/miscpublicapi/announce.py
similarity index 100%
rename from onionr/httpapi/miscpublicapi/announce.py
rename to src/httpapi/miscpublicapi/announce.py
diff --git a/onionr/httpapi/miscpublicapi/endpoints.py b/src/httpapi/miscpublicapi/endpoints.py
similarity index 100%
rename from onionr/httpapi/miscpublicapi/endpoints.py
rename to src/httpapi/miscpublicapi/endpoints.py
diff --git a/onionr/httpapi/miscpublicapi/getblocks.py b/src/httpapi/miscpublicapi/getblocks.py
similarity index 100%
rename from onionr/httpapi/miscpublicapi/getblocks.py
rename to src/httpapi/miscpublicapi/getblocks.py
diff --git a/onionr/httpapi/miscpublicapi/upload.py b/src/httpapi/miscpublicapi/upload.py
similarity index 100%
rename from onionr/httpapi/miscpublicapi/upload.py
rename to src/httpapi/miscpublicapi/upload.py
diff --git a/onionr/httpapi/onionrsitesapi/__init__.py b/src/httpapi/onionrsitesapi/__init__.py
similarity index 100%
rename from onionr/httpapi/onionrsitesapi/__init__.py
rename to src/httpapi/onionrsitesapi/__init__.py
diff --git a/onionr/httpapi/onionrsitesapi/findsite.py b/src/httpapi/onionrsitesapi/findsite.py
similarity index 70%
rename from onionr/httpapi/onionrsitesapi/findsite.py
rename to src/httpapi/onionrsitesapi/findsite.py
index 77e5e484..28c2f4db 100644
--- a/onionr/httpapi/onionrsitesapi/findsite.py
+++ b/src/httpapi/onionrsitesapi/findsite.py
@@ -3,6 +3,16 @@
view and interact with onionr sites
"""
+
+from typing import Union
+
+import onionrexceptions
+from onionrutils import mnemonickeys
+from onionrutils import stringvalidators
+from coredb import blockmetadb
+from onionrblocks.onionrblockapi import Block
+from onionrtypes import BlockHash
+
"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,21 +27,21 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
"""
-from typing import Union
-import onionrexceptions
-from onionrutils import mnemonickeys
-from onionrutils import stringvalidators
-from coredb import blockmetadb
-from onionrblocks.onionrblockapi import Block
-def find_site(user_id: str)->Union[str, None]:
- """Returns block hash string for latest block for a site by a given user id"""
- if '-' in user_id: user_id = mnemonickeys.get_base32(user_id)
- if not stringvalidators.validate_pub_key(user_id): raise onionrexceptions.InvalidPubkey
+def find_site(user_id: str) -> Union[BlockHash, None]:
+ """Returns block hash str for latest block for a site by a given user id"""
+ # If mnemonic delim in key, convert to base32 version
+ if mnemonickeys.DELIMITER in user_id:
+ user_id = mnemonickeys.get_base32(user_id)
+
+ if not stringvalidators.validate_pub_key(user_id):
+ raise onionrexceptions.InvalidPubkey
+
found_site = None
sites = blockmetadb.get_blocks_by_type('zsite')
+ # Find site by searching all site blocks. eww O(N) ☹️, TODO: event based
for site in sites:
site = Block(site)
if site.isSigner(user_id) and site.verifySig():
diff --git a/onionr/httpapi/onionrsitesapi/sitefiles.py b/src/httpapi/onionrsitesapi/sitefiles.py
similarity index 100%
rename from onionr/httpapi/onionrsitesapi/sitefiles.py
rename to src/httpapi/onionrsitesapi/sitefiles.py
diff --git a/onionr/httpapi/profilesapi/__init__.py b/src/httpapi/profilesapi/__init__.py
similarity index 100%
rename from onionr/httpapi/profilesapi/__init__.py
rename to src/httpapi/profilesapi/__init__.py
diff --git a/onionr/httpapi/profilesapi/profiles.py b/src/httpapi/profilesapi/profiles.py
similarity index 100%
rename from onionr/httpapi/profilesapi/profiles.py
rename to src/httpapi/profilesapi/profiles.py
diff --git a/onionr/httpapi/security/__init__.py b/src/httpapi/security/__init__.py
similarity index 100%
rename from onionr/httpapi/security/__init__.py
rename to src/httpapi/security/__init__.py
diff --git a/onionr/httpapi/security/client.py b/src/httpapi/security/client.py
similarity index 100%
rename from onionr/httpapi/security/client.py
rename to src/httpapi/security/client.py
diff --git a/onionr/httpapi/security/pluginwhitelist.py b/src/httpapi/security/pluginwhitelist.py
similarity index 100%
rename from onionr/httpapi/security/pluginwhitelist.py
rename to src/httpapi/security/pluginwhitelist.py
diff --git a/onionr/httpapi/security/public.py b/src/httpapi/security/public.py
similarity index 100%
rename from onionr/httpapi/security/public.py
rename to src/httpapi/security/public.py
diff --git a/onionr/httpapi/themeapi/__init__.py b/src/httpapi/themeapi/__init__.py
similarity index 100%
rename from onionr/httpapi/themeapi/__init__.py
rename to src/httpapi/themeapi/__init__.py
diff --git a/onionr/keymanager.py b/src/keymanager.py
similarity index 100%
rename from onionr/keymanager.py
rename to src/keymanager.py
diff --git a/onionr/logger/__init__.py b/src/logger/__init__.py
similarity index 100%
rename from onionr/logger/__init__.py
rename to src/logger/__init__.py
diff --git a/onionr/logger/colors.py b/src/logger/colors.py
similarity index 100%
rename from onionr/logger/colors.py
rename to src/logger/colors.py
diff --git a/onionr/logger/confirm.py b/src/logger/confirm.py
similarity index 100%
rename from onionr/logger/confirm.py
rename to src/logger/confirm.py
diff --git a/onionr/logger/log.py b/src/logger/log.py
similarity index 100%
rename from onionr/logger/log.py
rename to src/logger/log.py
diff --git a/onionr/logger/raw.py b/src/logger/raw.py
similarity index 100%
rename from onionr/logger/raw.py
rename to src/logger/raw.py
diff --git a/onionr/logger/readline.py b/src/logger/readline.py
similarity index 100%
rename from onionr/logger/readline.py
rename to src/logger/readline.py
diff --git a/onionr/logger/settings.py b/src/logger/settings.py
similarity index 100%
rename from onionr/logger/settings.py
rename to src/logger/settings.py
diff --git a/onionr/netcontroller/__init__.py b/src/netcontroller/__init__.py
similarity index 100%
rename from onionr/netcontroller/__init__.py
rename to src/netcontroller/__init__.py
diff --git a/onionr/netcontroller/getopenport.py b/src/netcontroller/getopenport.py
similarity index 100%
rename from onionr/netcontroller/getopenport.py
rename to src/netcontroller/getopenport.py
diff --git a/onionr/netcontroller/netcontrol.py b/src/netcontroller/netcontrol.py
similarity index 100%
rename from onionr/netcontroller/netcontrol.py
rename to src/netcontroller/netcontrol.py
diff --git a/onionr/netcontroller/rebuildtor.py b/src/netcontroller/rebuildtor.py
similarity index 100%
rename from onionr/netcontroller/rebuildtor.py
rename to src/netcontroller/rebuildtor.py
diff --git a/onionr/netcontroller/torbinary.py b/src/netcontroller/torbinary.py
similarity index 100%
rename from onionr/netcontroller/torbinary.py
rename to src/netcontroller/torbinary.py
diff --git a/onionr/netcontroller/torcontroller.py b/src/netcontroller/torcontroller.py
similarity index 100%
rename from onionr/netcontroller/torcontroller.py
rename to src/netcontroller/torcontroller.py
diff --git a/onionr/notifier/__init__.py b/src/notifier/__init__.py
similarity index 100%
rename from onionr/notifier/__init__.py
rename to src/notifier/__init__.py
diff --git a/onionr/onionrblocks/__init__.py b/src/onionrblocks/__init__.py
similarity index 100%
rename from onionr/onionrblocks/__init__.py
rename to src/onionrblocks/__init__.py
diff --git a/onionr/onionrblocks/blockimporter.py b/src/onionrblocks/blockimporter.py
similarity index 100%
rename from onionr/onionrblocks/blockimporter.py
rename to src/onionrblocks/blockimporter.py
diff --git a/onionr/onionrblocks/insert.py b/src/onionrblocks/insert.py
similarity index 98%
rename from onionr/onionrblocks/insert.py
rename to src/onionrblocks/insert.py
index cb9e050c..a444eeb2 100644
--- a/onionr/onionrblocks/insert.py
+++ b/src/onionrblocks/insert.py
@@ -53,6 +53,7 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
use_subprocess = powchoice.use_subprocess(config)
storage_counter = storagecounter.StorageCounter()
+
allocationReachedMessage = 'Cannot insert block, disk allocation reached.'
if storage_counter.is_full():
logger.error(allocationReachedMessage)
@@ -181,7 +182,8 @@ def insert_block(data: Union[str, bytes], header: str ='txt',
coredb.blockmetadb.add.add_to_block_DB(retData, selfInsert=True, dataSaved=True)
if expire is None:
- coredb.blockmetadb.update_block_info(retData, 'expire', createTime + onionrvalues.DEFAULT_EXPIRE)
+ coredb.blockmetadb.update_block_info(retData, 'expire',
+ createTime + onionrvalues.DEFAULT_EXPIRE)
else:
coredb.blockmetadb.update_block_info(retData, 'expire', expire)
diff --git a/onionr/onionrblocks/onionrblacklist.py b/src/onionrblocks/onionrblacklist.py
similarity index 100%
rename from onionr/onionrblocks/onionrblacklist.py
rename to src/onionrblocks/onionrblacklist.py
diff --git a/onionr/onionrblocks/onionrblockapi.py b/src/onionrblocks/onionrblockapi.py
similarity index 100%
rename from onionr/onionrblocks/onionrblockapi.py
rename to src/onionrblocks/onionrblockapi.py
diff --git a/onionr/onionrblocks/storagecounter.py b/src/onionrblocks/storagecounter.py
similarity index 100%
rename from onionr/onionrblocks/storagecounter.py
rename to src/onionrblocks/storagecounter.py
diff --git a/onionr/onionrcommands/README.md b/src/onionrcommands/README.md
similarity index 100%
rename from onionr/onionrcommands/README.md
rename to src/onionrcommands/README.md
diff --git a/onionr/onionrcommands/__init__.py b/src/onionrcommands/__init__.py
similarity index 100%
rename from onionr/onionrcommands/__init__.py
rename to src/onionrcommands/__init__.py
diff --git a/onionr/onionrcommands/banblocks.py b/src/onionrcommands/banblocks.py
similarity index 100%
rename from onionr/onionrcommands/banblocks.py
rename to src/onionrcommands/banblocks.py
diff --git a/onionr/onionrcommands/daemonlaunch.py b/src/onionrcommands/daemonlaunch.py
similarity index 100%
rename from onionr/onionrcommands/daemonlaunch.py
rename to src/onionrcommands/daemonlaunch.py
diff --git a/onionr/onionrcommands/exportblocks.py b/src/onionrcommands/exportblocks.py
similarity index 100%
rename from onionr/onionrcommands/exportblocks.py
rename to src/onionrcommands/exportblocks.py
diff --git a/onionr/onionrcommands/filecommands.py b/src/onionrcommands/filecommands.py
similarity index 100%
rename from onionr/onionrcommands/filecommands.py
rename to src/onionrcommands/filecommands.py
diff --git a/onionr/onionrcommands/keyadders.py b/src/onionrcommands/keyadders.py
similarity index 100%
rename from onionr/onionrcommands/keyadders.py
rename to src/onionrcommands/keyadders.py
diff --git a/onionr/onionrcommands/motdcreator.py b/src/onionrcommands/motdcreator.py
similarity index 100%
rename from onionr/onionrcommands/motdcreator.py
rename to src/onionrcommands/motdcreator.py
diff --git a/onionr/onionrcommands/onionrstatistics.py b/src/onionrcommands/onionrstatistics.py
similarity index 100%
rename from onionr/onionrcommands/onionrstatistics.py
rename to src/onionrcommands/onionrstatistics.py
diff --git a/onionr/onionrcommands/openwebinterface.py b/src/onionrcommands/openwebinterface.py
similarity index 100%
rename from onionr/onionrcommands/openwebinterface.py
rename to src/onionrcommands/openwebinterface.py
diff --git a/onionr/onionrcommands/parser/__init__.py b/src/onionrcommands/parser/__init__.py
similarity index 97%
rename from onionr/onionrcommands/parser/__init__.py
rename to src/onionrcommands/parser/__init__.py
index 1d45cca2..cc99ebb9 100644
--- a/onionr/onionrcommands/parser/__init__.py
+++ b/src/onionrcommands/parser/__init__.py
@@ -72,7 +72,7 @@ def register():
try:
try:
- if cmd != 'start': os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
+ if not cmd in ('start', 'details', 'show-details') : os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
except KeyError: pass
try:
arguments.get_func(cmd)()
diff --git a/onionr/onionrcommands/parser/arguments.py b/src/onionrcommands/parser/arguments.py
similarity index 100%
rename from onionr/onionrcommands/parser/arguments.py
rename to src/onionrcommands/parser/arguments.py
diff --git a/onionr/onionrcommands/parser/recommend.py b/src/onionrcommands/parser/recommend.py
similarity index 100%
rename from onionr/onionrcommands/parser/recommend.py
rename to src/onionrcommands/parser/recommend.py
diff --git a/onionr/onionrcommands/pubkeymanager.py b/src/onionrcommands/pubkeymanager.py
similarity index 100%
rename from onionr/onionrcommands/pubkeymanager.py
rename to src/onionrcommands/pubkeymanager.py
diff --git a/onionr/onionrcommands/resetplugins.py b/src/onionrcommands/resetplugins.py
similarity index 100%
rename from onionr/onionrcommands/resetplugins.py
rename to src/onionrcommands/resetplugins.py
diff --git a/onionr/onionrcommands/resettor.py b/src/onionrcommands/resettor.py
similarity index 100%
rename from onionr/onionrcommands/resettor.py
rename to src/onionrcommands/resettor.py
diff --git a/onionr/onionrcommands/restartonionr.py b/src/onionrcommands/restartonionr.py
similarity index 100%
rename from onionr/onionrcommands/restartonionr.py
rename to src/onionrcommands/restartonionr.py
diff --git a/onionr/onionrcommands/runtimetestcmd.py b/src/onionrcommands/runtimetestcmd.py
similarity index 100%
rename from onionr/onionrcommands/runtimetestcmd.py
rename to src/onionrcommands/runtimetestcmd.py
diff --git a/onionr/onionrcommands/sitecreator.py b/src/onionrcommands/sitecreator.py
similarity index 100%
rename from onionr/onionrcommands/sitecreator.py
rename to src/onionrcommands/sitecreator.py
diff --git a/onionr/onionrcommands/softreset.py b/src/onionrcommands/softreset.py
similarity index 100%
rename from onionr/onionrcommands/softreset.py
rename to src/onionrcommands/softreset.py
diff --git a/onionr/onionrcommands/version.py b/src/onionrcommands/version.py
similarity index 100%
rename from onionr/onionrcommands/version.py
rename to src/onionrcommands/version.py
diff --git a/onionr/onionrcrypto/__init__.py b/src/onionrcrypto/__init__.py
similarity index 100%
rename from onionr/onionrcrypto/__init__.py
rename to src/onionrcrypto/__init__.py
diff --git a/onionr/onionrcrypto/cryptoutils/__init__.py b/src/onionrcrypto/cryptoutils/__init__.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/__init__.py
rename to src/onionrcrypto/cryptoutils/__init__.py
diff --git a/onionr/onionrcrypto/cryptoutils/getpubfrompriv.py b/src/onionrcrypto/cryptoutils/getpubfrompriv.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/getpubfrompriv.py
rename to src/onionrcrypto/cryptoutils/getpubfrompriv.py
diff --git a/onionr/onionrcrypto/cryptoutils/randomshuffle.py b/src/onionrcrypto/cryptoutils/randomshuffle.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/randomshuffle.py
rename to src/onionrcrypto/cryptoutils/randomshuffle.py
diff --git a/onionr/onionrcrypto/cryptoutils/replayvalidation.py b/src/onionrcrypto/cryptoutils/replayvalidation.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/replayvalidation.py
rename to src/onionrcrypto/cryptoutils/replayvalidation.py
diff --git a/onionr/onionrcrypto/cryptoutils/safecompare.py b/src/onionrcrypto/cryptoutils/safecompare.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/safecompare.py
rename to src/onionrcrypto/cryptoutils/safecompare.py
diff --git a/onionr/onionrcrypto/cryptoutils/verifypow.py b/src/onionrcrypto/cryptoutils/verifypow.py
similarity index 100%
rename from onionr/onionrcrypto/cryptoutils/verifypow.py
rename to src/onionrcrypto/cryptoutils/verifypow.py
diff --git a/onionr/onionrcrypto/encryption/__init__.py b/src/onionrcrypto/encryption/__init__.py
similarity index 100%
rename from onionr/onionrcrypto/encryption/__init__.py
rename to src/onionrcrypto/encryption/__init__.py
diff --git a/onionr/onionrcrypto/generate.py b/src/onionrcrypto/generate.py
similarity index 100%
rename from onionr/onionrcrypto/generate.py
rename to src/onionrcrypto/generate.py
diff --git a/onionr/onionrcrypto/getourkeypair.py b/src/onionrcrypto/getourkeypair.py
similarity index 100%
rename from onionr/onionrcrypto/getourkeypair.py
rename to src/onionrcrypto/getourkeypair.py
diff --git a/onionr/onionrcrypto/hashers.py b/src/onionrcrypto/hashers.py
similarity index 100%
rename from onionr/onionrcrypto/hashers.py
rename to src/onionrcrypto/hashers.py
diff --git a/onionr/onionrcrypto/signing/__init__.py b/src/onionrcrypto/signing/__init__.py
similarity index 100%
rename from onionr/onionrcrypto/signing/__init__.py
rename to src/onionrcrypto/signing/__init__.py
diff --git a/onionr/onionrexceptions.py b/src/onionrexceptions.py
similarity index 100%
rename from onionr/onionrexceptions.py
rename to src/onionrexceptions.py
diff --git a/onionr/onionrpeers/__init__.py b/src/onionrpeers/__init__.py
similarity index 100%
rename from onionr/onionrpeers/__init__.py
rename to src/onionrpeers/__init__.py
diff --git a/onionr/onionrpeers/peercleanup.py b/src/onionrpeers/peercleanup.py
similarity index 100%
rename from onionr/onionrpeers/peercleanup.py
rename to src/onionrpeers/peercleanup.py
diff --git a/onionr/onionrpeers/peerprofiles.py b/src/onionrpeers/peerprofiles.py
similarity index 100%
rename from onionr/onionrpeers/peerprofiles.py
rename to src/onionrpeers/peerprofiles.py
diff --git a/onionr/onionrpeers/scoresortedpeerlist.py b/src/onionrpeers/scoresortedpeerlist.py
similarity index 100%
rename from onionr/onionrpeers/scoresortedpeerlist.py
rename to src/onionrpeers/scoresortedpeerlist.py
diff --git a/onionr/onionrplugins/__init__.py b/src/onionrplugins/__init__.py
similarity index 100%
rename from onionr/onionrplugins/__init__.py
rename to src/onionrplugins/__init__.py
diff --git a/onionr/onionrplugins/onionrevents.py b/src/onionrplugins/onionrevents.py
similarity index 100%
rename from onionr/onionrplugins/onionrevents.py
rename to src/onionrplugins/onionrevents.py
diff --git a/onionr/onionrplugins/onionrpluginapi.py b/src/onionrplugins/onionrpluginapi.py
similarity index 100%
rename from onionr/onionrplugins/onionrpluginapi.py
rename to src/onionrplugins/onionrpluginapi.py
diff --git a/onionr/onionrproofs/__init__.py b/src/onionrproofs/__init__.py
similarity index 100%
rename from onionr/onionrproofs/__init__.py
rename to src/onionrproofs/__init__.py
diff --git a/onionr/onionrproofs/subprocesspow.py b/src/onionrproofs/subprocesspow.py
similarity index 70%
rename from onionr/onionrproofs/subprocesspow.py
rename to src/onionrproofs/subprocesspow.py
index 37936b74..472e85ad 100755
--- a/onionr/onionrproofs/subprocesspow.py
+++ b/src/onionrproofs/subprocesspow.py
@@ -1,10 +1,22 @@
#!/usr/bin/env python3
-'''
+"""
Onionr - Private P2P Communication
Multiprocess proof of work
-'''
-'''
+"""
+
+import os
+from multiprocessing import Pipe, Process
+import threading
+import time
+import json
+
+import logger
+import onionrproofs
+import onionrcrypto as crypto
+from onionrutils import bytesconverter
+
+"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
@@ -17,23 +29,20 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
-'''
+"""
+
-import subprocess, os
-import multiprocessing, threading, time, json
-from multiprocessing import Pipe, Process
-from onionrblocks import onionrblockapi
-import config, onionrutils, logger, onionrproofs, onionrcrypto as crypto
-from onionrutils import bytesconverter
class SubprocessPOW:
def __init__(self, data, metadata, subproc_count=None):
- '''
+ """
Onionr proof of work using multiple processes
Accepts block data, block metadata
- if subproc_count is not set, os.cpu_count() is used to determine the number of processes
+ if subproc_count is not set,
+ os.cpu_count() is used to determine the number of processes
- Do to Python GIL multiprocessing or use of external libraries is necessary to accelerate CPU bound tasks
- '''
+ Due to Python GIL multiprocessing/use of external libraries
+ is necessary to accelerate CPU bound tasks
+ """
# No known benefit to using more processes than there are cores.
# Note: os.cpu_count perhaps not always accurate
if subproc_count is None:
@@ -44,23 +53,30 @@ class SubprocessPOW:
self.data = data
self.metadata = metadata
- # dump dict to measure bytes of json metadata. Cannot reuse later because the pow token must be added
+ """dump dict to measure bytes of json metadata
+ Cannot reuse later bc the pow token must be added
+ """
json_metadata = json.dumps(metadata).encode()
self.data = bytesconverter.str_to_bytes(data)
- # Calculate difficulty. Dumb for now, may use good algorithm in the future.
- self.difficulty = onionrproofs.getDifficultyForNewBlock(bytes(json_metadata + b'\n' + self.data))
-
+
+ compiled_data = bytes(json_metadata + b'\n' + self.data)
+
+ # Calculate difficulty. May use better algorithm in the future.
+ self.difficulty = onionrproofs.getDifficultyForNewBlock(compiled_data)
+
logger.info('Computing POW (difficulty: %s)...' % (self.difficulty,))
- self.mainHash = '0' * 64
- self.puzzle = self.mainHash[0:min(self.difficulty, len(self.mainHash))]
+ self.main_hash = '0' * 64
+ self.puzzle = self.main_hash[0:min(self.difficulty,
+ len(self.main_hash))]
self.shutdown = False
self.payload = None
def start(self):
+ """spawn the multiproc handler threads"""
# Create a new thread for each subprocess
- for x in range(self.subproc_count):
+ for _ in range(self.subproc_count): # noqa
threading.Thread(target=self._spawn_proc).start()
# Monitor the processes for a payload, shut them down when its found
while True:
@@ -69,9 +85,10 @@ class SubprocessPOW:
else:
self.shutdown = True
return self.payload
-
+
def _spawn_proc(self):
- # Create a child proof of work process, wait for data and send shutdown signal when its found
+ """Create a child proof of work process
+ wait for data and send shutdown signal when its found"""
parent_conn, child_conn = Pipe()
p = Process(target=self.do_pow, args=(child_conn,))
p.start()
@@ -90,8 +107,8 @@ class SubprocessPOW:
self.payload = payload
def do_pow(self, pipe):
- nonce = -10000000 # Start nonce at negative 10 million so that the chosen nonce is likely to be small in length
- nonceStart = nonce
+ """find partial hash colision generating nonce for a block"""
+ nonce = -10000000
data = self.data
metadata = self.metadata
puzzle = self.puzzle
@@ -104,11 +121,12 @@ class SubprocessPOW:
metadata['pow'] = nonce
# Serialize metadata, combine with block data
payload = json.dumps(metadata).encode() + b'\n' + data
- # Check sha3_256 hash of block, compare to puzzle. Send payload if puzzle finished
+ # Check sha3_256 hash of block, compare to puzzle
+ # Send payload if puzzle finished
token = crypto.hashers.sha3_hash(payload)
- token = bytesconverter.bytes_to_str(token) # ensure token is string
+ # ensure token is string
+ token = bytesconverter.bytes_to_str(token)
if puzzle == token[0:difficulty]:
pipe.send(payload)
break
nonce += 1
-
\ No newline at end of file
diff --git a/onionr/onionrservices/README.md b/src/onionrservices/README.md
similarity index 100%
rename from onionr/onionrservices/README.md
rename to src/onionrservices/README.md
diff --git a/onionr/onionrservices/__init__.py b/src/onionrservices/__init__.py
similarity index 100%
rename from onionr/onionrservices/__init__.py
rename to src/onionrservices/__init__.py
diff --git a/onionr/onionrservices/bootstrapservice.py b/src/onionrservices/bootstrapservice.py
similarity index 100%
rename from onionr/onionrservices/bootstrapservice.py
rename to src/onionrservices/bootstrapservice.py
diff --git a/onionr/onionrservices/connectionserver.py b/src/onionrservices/connectionserver.py
similarity index 100%
rename from onionr/onionrservices/connectionserver.py
rename to src/onionrservices/connectionserver.py
diff --git a/onionr/onionrservices/httpheaders.py b/src/onionrservices/httpheaders.py
similarity index 100%
rename from onionr/onionrservices/httpheaders.py
rename to src/onionrservices/httpheaders.py
diff --git a/onionr/onionrservices/pool.py b/src/onionrservices/pool.py
similarity index 100%
rename from onionr/onionrservices/pool.py
rename to src/onionrservices/pool.py
diff --git a/onionr/onionrservices/serverexists.py b/src/onionrservices/serverexists.py
similarity index 100%
rename from onionr/onionrservices/serverexists.py
rename to src/onionrservices/serverexists.py
diff --git a/onionr/onionrservices/warden/__init__.py b/src/onionrservices/warden/__init__.py
similarity index 100%
rename from onionr/onionrservices/warden/__init__.py
rename to src/onionrservices/warden/__init__.py
diff --git a/onionr/onionrservices/warden/bootstrap.py b/src/onionrservices/warden/bootstrap.py
similarity index 100%
rename from onionr/onionrservices/warden/bootstrap.py
rename to src/onionrservices/warden/bootstrap.py
diff --git a/onionr/onionrservices/warden/client.py b/src/onionrservices/warden/client.py
similarity index 100%
rename from onionr/onionrservices/warden/client.py
rename to src/onionrservices/warden/client.py
diff --git a/onionr/onionrservices/warden/server.py b/src/onionrservices/warden/server.py
similarity index 100%
rename from onionr/onionrservices/warden/server.py
rename to src/onionrservices/warden/server.py
diff --git a/onionr/onionrsetup/__init__.py b/src/onionrsetup/__init__.py
similarity index 100%
rename from onionr/onionrsetup/__init__.py
rename to src/onionrsetup/__init__.py
diff --git a/onionr/onionrsetup/dbcreator.py b/src/onionrsetup/dbcreator.py
similarity index 100%
rename from onionr/onionrsetup/dbcreator.py
rename to src/onionrsetup/dbcreator.py
diff --git a/onionr/onionrsetup/defaultpluginsetup.py b/src/onionrsetup/defaultpluginsetup.py
similarity index 100%
rename from onionr/onionrsetup/defaultpluginsetup.py
rename to src/onionrsetup/defaultpluginsetup.py
diff --git a/onionr/onionrsetup/setupconfig.py b/src/onionrsetup/setupconfig.py
similarity index 100%
rename from onionr/onionrsetup/setupconfig.py
rename to src/onionrsetup/setupconfig.py
diff --git a/onionr/onionrstorage/__init__.py b/src/onionrstorage/__init__.py
similarity index 85%
rename from onionr/onionrstorage/__init__.py
rename to src/onionrstorage/__init__.py
index c65787fb..636db538 100755
--- a/onionr/onionrstorage/__init__.py
+++ b/src/onionrstorage/__init__.py
@@ -3,6 +3,18 @@
This file handles block storage, providing an abstraction for storing blocks between file system and database
'''
+import sys
+import sqlite3
+import os
+from onionrutils import bytesconverter
+from onionrutils import stringvalidators
+from coredb import dbfiles
+import filepaths
+import onionrcrypto
+import onionrexceptions
+from onionrsetup import dbcreator
+from onionrcrypto import hashers
+from . import setdata
'''
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,17 +29,13 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
'''
-import sys, sqlite3, os
-from onionrutils import bytesconverter, stringvalidators
-from coredb import dbfiles
-import filepaths, onionrcrypto, onionrexceptions
-from onionrsetup import dbcreator
-from onionrcrypto import hashers
-from . import setdata
-DB_ENTRY_SIZE_LIMIT = 10000 # Will be a config option
+
+
+DB_ENTRY_SIZE_LIMIT = 10000 # Will be a config option
set_data = setdata.set_data
+
def _dbInsert(blockHash, data):
conn = sqlite3.connect(dbfiles.block_data_db, timeout=10)
c = conn.cursor()
@@ -36,6 +44,7 @@ def _dbInsert(blockHash, data):
conn.commit()
conn.close()
+
def _dbFetch(blockHash):
conn = sqlite3.connect(dbfiles.block_data_db, timeout=10)
c = conn.cursor()
@@ -45,6 +54,7 @@ def _dbFetch(blockHash):
conn.close()
return None
+
def deleteBlock(blockHash):
# You should call removeblock.remove_block if you automatically want to remove storage byte count
if os.path.exists('%s/%s.dat' % (filepaths.block_data_location, blockHash)):
@@ -58,11 +68,13 @@ def deleteBlock(blockHash):
conn.close()
return True
+
def store(data, blockHash=''):
if not stringvalidators.validate_hash(blockHash): raise ValueError
ourHash = hashers.sha3_hash(data)
if blockHash != '':
- if not ourHash == blockHash: raise ValueError('Hash specified does not meet internal hash check')
+ if not ourHash == blockHash:
+ raise ValueError('Hash specified does not meet internal hash check')
else:
blockHash = ourHash
@@ -72,6 +84,7 @@ def store(data, blockHash=''):
with open('%s/%s.dat' % (filepaths.block_data_location, blockHash), 'wb') as blockFile:
blockFile.write(data)
+
def getData(bHash):
if not stringvalidators.validate_hash(bHash): raise ValueError
@@ -82,11 +95,12 @@ def getData(bHash):
# If no entry in either, raise an exception
retData = None
fileLocation = '%s/%s.dat' % (filepaths.block_data_location, bHash)
+ not_found_msg = "Flock data not found for: "
if os.path.exists(fileLocation):
with open(fileLocation, 'rb') as block:
retData = block.read()
else:
retData = _dbFetch(bHash)
if retData is None:
- raise onionrexceptions.NoDataAvailable("Block data for %s is not available" % [bHash])
- return retData
\ No newline at end of file
+ raise onionrexceptions.NoDataAvailable(not_found_msg + str(bHash))
+ return retData
diff --git a/onionr/onionrstorage/removeblock.py b/src/onionrstorage/removeblock.py
similarity index 100%
rename from onionr/onionrstorage/removeblock.py
rename to src/onionrstorage/removeblock.py
diff --git a/onionr/onionrstorage/setdata.py b/src/onionrstorage/setdata.py
similarity index 100%
rename from onionr/onionrstorage/setdata.py
rename to src/onionrstorage/setdata.py
diff --git a/onionr/onionrtypes/__init__.py b/src/onionrtypes/__init__.py
similarity index 77%
rename from onionr/onionrtypes/__init__.py
rename to src/onionrtypes/__init__.py
index 88955237..74585249 100644
--- a/onionr/onionrtypes/__init__.py
+++ b/src/onionrtypes/__init__.py
@@ -6,5 +6,3 @@ UserIDSecretKey = NewType('UserIDSecretKey', str)
DeterministicKeyPassphrase = NewType('DeterministicKeyPassphrase', str)
BlockHash = NewType('BlockHash', str)
-
-RestartRequiredStatus = NewType('RestartRequiredStatus', bool)
diff --git a/onionr/onionrusers/README.md b/src/onionrusers/README.md
similarity index 100%
rename from onionr/onionrusers/README.md
rename to src/onionrusers/README.md
diff --git a/onionr/onionrusers/__init__.py b/src/onionrusers/__init__.py
similarity index 100%
rename from onionr/onionrusers/__init__.py
rename to src/onionrusers/__init__.py
diff --git a/onionr/onionrusers/contactmanager.py b/src/onionrusers/contactmanager.py
similarity index 100%
rename from onionr/onionrusers/contactmanager.py
rename to src/onionrusers/contactmanager.py
diff --git a/onionr/onionrusers/onionrusers.py b/src/onionrusers/onionrusers.py
similarity index 100%
rename from onionr/onionrusers/onionrusers.py
rename to src/onionrusers/onionrusers.py
diff --git a/onionr/onionrutils/__init__.py b/src/onionrutils/__init__.py
similarity index 100%
rename from onionr/onionrutils/__init__.py
rename to src/onionrutils/__init__.py
diff --git a/onionr/onionrutils/basicrequests.py b/src/onionrutils/basicrequests.py
similarity index 100%
rename from onionr/onionrutils/basicrequests.py
rename to src/onionrutils/basicrequests.py
diff --git a/onionr/onionrutils/blockmetadata/__init__.py b/src/onionrutils/blockmetadata/__init__.py
similarity index 100%
rename from onionr/onionrutils/blockmetadata/__init__.py
rename to src/onionrutils/blockmetadata/__init__.py
diff --git a/onionr/onionrutils/blockmetadata/fromdata.py b/src/onionrutils/blockmetadata/fromdata.py
similarity index 100%
rename from onionr/onionrutils/blockmetadata/fromdata.py
rename to src/onionrutils/blockmetadata/fromdata.py
diff --git a/onionr/onionrutils/blockmetadata/hasblock.py b/src/onionrutils/blockmetadata/hasblock.py
similarity index 100%
rename from onionr/onionrutils/blockmetadata/hasblock.py
rename to src/onionrutils/blockmetadata/hasblock.py
diff --git a/onionr/onionrutils/blockmetadata/process.py b/src/onionrutils/blockmetadata/process.py
similarity index 100%
rename from onionr/onionrutils/blockmetadata/process.py
rename to src/onionrutils/blockmetadata/process.py
diff --git a/onionr/onionrutils/bytesconverter.py b/src/onionrutils/bytesconverter.py
similarity index 100%
rename from onionr/onionrutils/bytesconverter.py
rename to src/onionrutils/bytesconverter.py
diff --git a/onionr/onionrutils/checkcommunicator.py b/src/onionrutils/checkcommunicator.py
similarity index 100%
rename from onionr/onionrutils/checkcommunicator.py
rename to src/onionrutils/checkcommunicator.py
diff --git a/onionr/onionrutils/epoch.py b/src/onionrutils/epoch.py
similarity index 100%
rename from onionr/onionrutils/epoch.py
rename to src/onionrutils/epoch.py
diff --git a/onionr/onionrutils/escapeansi.py b/src/onionrutils/escapeansi.py
similarity index 100%
rename from onionr/onionrutils/escapeansi.py
rename to src/onionrutils/escapeansi.py
diff --git a/onionr/onionrutils/getclientapiserver.py b/src/onionrutils/getclientapiserver.py
similarity index 100%
rename from onionr/onionrutils/getclientapiserver.py
rename to src/onionrutils/getclientapiserver.py
diff --git a/onionr/onionrutils/importnewblocks.py b/src/onionrutils/importnewblocks.py
similarity index 86%
rename from onionr/onionrutils/importnewblocks.py
rename to src/onionrutils/importnewblocks.py
index 89aee4d6..4ba614fb 100644
--- a/onionr/onionrutils/importnewblocks.py
+++ b/src/onionrutils/importnewblocks.py
@@ -21,7 +21,6 @@ import glob
import logger
from onionrutils import blockmetadata
from coredb import blockmetadb
-from onionrblocks import blockimporter
import filepaths
import onionrcrypto as crypto
def import_new_blocks(scanDir=''):
@@ -41,10 +40,9 @@ def import_new_blocks(scanDir=''):
with open(block, 'rb') as newBlock:
block = block.replace(scanDir, '').replace('.dat', '')
if crypto.hashers.sha3_hash(newBlock.read()) == block.replace('.dat', ''):
- if blockimporter.importBlockFromData(newBlock.read()):
- logger.info('Imported block %s.' % block, terminal=True)
- else:
- logger.warn('Unable to import block %s.' % block, terminal=True)
+ blockmetadb.add_to_block_DB(block.replace('.dat', ''), dataSaved=True)
+ logger.info('Imported block %s.' % block, terminal=True)
+ blockmetadata.process_block_metadata(block)
else:
logger.warn('Failed to verify hash for %s' % block, terminal=True)
if not exist:
diff --git a/onionr/onionrutils/localcommand.py b/src/onionrutils/localcommand.py
similarity index 100%
rename from onionr/onionrutils/localcommand.py
rename to src/onionrutils/localcommand.py
diff --git a/onionr/onionrutils/mnemonickeys.py b/src/onionrutils/mnemonickeys.py
similarity index 100%
rename from onionr/onionrutils/mnemonickeys.py
rename to src/onionrutils/mnemonickeys.py
diff --git a/onionr/onionrutils/stringvalidators.py b/src/onionrutils/stringvalidators.py
similarity index 100%
rename from onionr/onionrutils/stringvalidators.py
rename to src/onionrutils/stringvalidators.py
diff --git a/src/onionrutils/updater/__init__.py b/src/onionrutils/updater/__init__.py
new file mode 100644
index 00000000..a9bdf13f
--- /dev/null
+++ b/src/onionrutils/updater/__init__.py
@@ -0,0 +1,7 @@
+import notifier
+
+
+def update_event(bl):
+ """Show update notification if available, return bool of if update happened"""
+ if not bl.isSigner(onionrvalues.UPDATE_SIGN_KEY): raise onionrexceptions.InvalidUpdate
+ onionr.notifier.notify(message="A new Onionr update is available. Stay updated to remain secure.")
diff --git a/onionr/onionrutils/validatemetadata.py b/src/onionrutils/validatemetadata.py
similarity index 97%
rename from onionr/onionrutils/validatemetadata.py
rename to src/onionrutils/validatemetadata.py
index 916b3416..de22c5ae 100644
--- a/onionr/onionrutils/validatemetadata.py
+++ b/src/onionrutils/validatemetadata.py
@@ -1,9 +1,9 @@
-'''
+"""
Onionr - Private P2P Communication
validate new block's metadata
-'''
-'''
+"""
+"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
@@ -16,14 +16,15 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
-'''
+"""
import json
import logger, onionrexceptions
from etc import onionrvalues
-from onionrutils import stringvalidators, epoch, bytesconverter
+from . import stringvalidators, epoch, bytesconverter
import config, filepaths, onionrcrypto
+
def validate_metadata(metadata, block_data) -> bool:
- '''Validate metadata meets onionr spec (does not validate proof value computation), take in either dictionary or json string'''
+ """Validate metadata meets onionr spec (does not validate proof value computation), take in either dictionary or json string"""
ret_data = False
max_clock_difference = onionrvalues.MAX_BLOCK_CLOCK_SKEW
diff --git a/onionr/runtests/__init__.py b/src/runtests/__init__.py
similarity index 100%
rename from onionr/runtests/__init__.py
rename to src/runtests/__init__.py
diff --git a/onionr/runtests/inserttest.py b/src/runtests/inserttest.py
similarity index 100%
rename from onionr/runtests/inserttest.py
rename to src/runtests/inserttest.py
diff --git a/onionr/runtests/stresstest.py b/src/runtests/stresstest.py
similarity index 100%
rename from onionr/runtests/stresstest.py
rename to src/runtests/stresstest.py
diff --git a/onionr/runtests/uicheck.py b/src/runtests/uicheck.py
similarity index 100%
rename from onionr/runtests/uicheck.py
rename to src/runtests/uicheck.py
diff --git a/onionr/serializeddata.py b/src/serializeddata.py
similarity index 89%
rename from onionr/serializeddata.py
rename to src/serializeddata.py
index a44ca9df..35e14fc3 100755
--- a/onionr/serializeddata.py
+++ b/src/serializeddata.py
@@ -1,9 +1,9 @@
-'''
+"""
Onionr - Private P2P Communication
This module serializes various data pieces for use in other modules, in particular the web api
-'''
-'''
+"""
+"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
@@ -16,24 +16,27 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
-'''
+"""
+
+import json # noqa
+import time # noqa
+
+from coredb import blockmetadb # noqa
+import communicator # noqa
-import json, time
-from coredb import blockmetadb
-import communicator
class SerializedData:
def __init__(self):
- '''
+ """
Serialized data is in JSON format:
{
'success': bool,
'foo': 'bar',
etc
}
- '''
+ """
def get_stats(self):
- '''Return statistics about our node'''
+ """Return statistics about our node"""
stats = {}
try:
self._too_many
diff --git a/onionr/utils/__init__.py b/src/utils/__init__.py
similarity index 100%
rename from onionr/utils/__init__.py
rename to src/utils/__init__.py
diff --git a/onionr/utils/cachedconfig/__init__.py b/src/utils/cachedconfig/__init__.py
similarity index 100%
rename from onionr/utils/cachedconfig/__init__.py
rename to src/utils/cachedconfig/__init__.py
diff --git a/onionr/utils/createdirs.py b/src/utils/createdirs.py
similarity index 92%
rename from onionr/utils/createdirs.py
rename to src/utils/createdirs.py
index 1c16767e..fb61e88c 100644
--- a/onionr/utils/createdirs.py
+++ b/src/utils/createdirs.py
@@ -29,10 +29,7 @@ def create_dirs():
gen_dirs = [home, filepaths.block_data_location, filepaths.contacts_location, filepaths.export_location]
for path in gen_dirs:
if not os.path.exists(path):
- try:
- os.mkdir(path)
- except FileExistsError:
- pass
+ os.mkdir(path)
for db in dbcreator.create_funcs:
try:
diff --git a/onionr/utils/definewait.py b/src/utils/definewait.py
similarity index 100%
rename from onionr/utils/definewait.py
rename to src/utils/definewait.py
diff --git a/onionr/utils/getconsolewidth.py b/src/utils/getconsolewidth.py
similarity index 100%
rename from onionr/utils/getconsolewidth.py
rename to src/utils/getconsolewidth.py
diff --git a/onionr/utils/gethostname.py b/src/utils/gethostname.py
similarity index 95%
rename from onionr/utils/gethostname.py
rename to src/utils/gethostname.py
index 4a294218..42652fa1 100644
--- a/onionr/utils/gethostname.py
+++ b/src/utils/gethostname.py
@@ -21,6 +21,7 @@ from . import identifyhome
import filepaths
def get_hostname():
try:
+ print(identifyhome.identify_home())
with open(identifyhome.identify_home() + '/hs/hostname', 'r') as hostname:
return hostname.read().strip()
except FileNotFoundError:
diff --git a/onionr/utils/gettransports.py b/src/utils/gettransports.py
similarity index 100%
rename from onionr/utils/gettransports.py
rename to src/utils/gettransports.py
diff --git a/onionr/utils/hastor.py b/src/utils/hastor.py
similarity index 100%
rename from onionr/utils/hastor.py
rename to src/utils/hastor.py
diff --git a/onionr/utils/identifyhome.py b/src/utils/identifyhome.py
similarity index 100%
rename from onionr/utils/identifyhome.py
rename to src/utils/identifyhome.py
diff --git a/onionr/utils/logoheader.py b/src/utils/logoheader.py
similarity index 100%
rename from onionr/utils/logoheader.py
rename to src/utils/logoheader.py
diff --git a/onionr/utils/netutils.py b/src/utils/netutils.py
similarity index 100%
rename from onionr/utils/netutils.py
rename to src/utils/netutils.py
diff --git a/onionr/utils/networkmerger.py b/src/utils/networkmerger.py
similarity index 100%
rename from onionr/utils/networkmerger.py
rename to src/utils/networkmerger.py
diff --git a/onionr/utils/readstatic.py b/src/utils/readstatic.py
similarity index 100%
rename from onionr/utils/readstatic.py
rename to src/utils/readstatic.py
diff --git a/onionr/utils/reconstructhash.py b/src/utils/reconstructhash.py
similarity index 100%
rename from onionr/utils/reconstructhash.py
rename to src/utils/reconstructhash.py
diff --git a/onionr/utils/safezip.py b/src/utils/safezip.py
similarity index 100%
rename from onionr/utils/safezip.py
rename to src/utils/safezip.py
diff --git a/onionr/utils/sizeutils.py b/src/utils/sizeutils.py
similarity index 100%
rename from onionr/utils/sizeutils.py
rename to src/utils/sizeutils.py
diff --git a/onionr/vanityonionr/__init__.py b/src/vanityonionr/__init__.py
similarity index 100%
rename from onionr/vanityonionr/__init__.py
rename to src/vanityonionr/__init__.py
diff --git a/static-data/www/mail/mail.js b/static-data/www/mail/mail.js
index d65d933d..6f435ad2 100755
--- a/static-data/www/mail/mail.js
+++ b/static-data/www/mail/mail.js
@@ -91,8 +91,8 @@ function openThread(bHash, sender, date, sigBool, pubkey, subjectLine){
var sigEl = document.getElementById('sigValid')
var sigMsg = 'signature'
- // show add unknown contact button if peer is unknown but still has pubkey
- if (sender === pubkey && sender !== myPub && sigBool){
+ // show add unknown contact button if peer is unknown
+ if (sender !== myPub && sigBool){
addUnknownContact.style.display = 'inline'
}