Compare commits

...

288 Commits

Author SHA1 Message Date
Kevin F de18cdfd55 Update netcheck onions to v3 8 months ago
Kevin F 06907a80fa Bumped dependencies 8 months ago
kev aecd9ad9ef Update 'README.md' 2 years ago
Kevin Froman 3e17cf7c0b added papers list dev doc 2 years ago
Kevin Froman 735220d8da update runtime result 2 years ago
Kevin Froman 914b505dfa added remote ui plugin 2 years ago
Kevin Froman 8659fa613e merge master for docker fixes 2 years ago
Kevin Froman 7fa320cfc5 don't print version command to devnull in run script either 2 years ago
Kevin Froman 9306143e4c dont check hostname if not bound to loopback in client api security 2 years ago
Kevin Froman 7303cf041e if binding to 0.0.0.0, don't validate source ip in client api 2 years ago
Kevin Froman 4e96d18396 print tor errors to stdout 2 years ago
Duncan X Simpson 133b3ea699 Docker improvements 2 years ago
Duncan X Simpson 3a98183fa0 Compare uid not username in create_dirs() 2 years ago
Kevin Froman 8083489110 removed process info from run-onionr-node script 2 years ago
dependabot-preview[bot] cb2e29ad6e Bump pdoc3 from 0.9.1 to 0.9.2 2 years ago
dependabot-preview[bot] 6b6a698370 Bump pip-tools from 5.4.0 to 5.5.0 2 years ago
Kevin Froman d10ccd2e13 Merge branch 'docker' of https://git.k7dxs.net/dxs/onionr 2 years ago
Kevin Froman 513b758c7a removed process info from run-onionr-node script 2 years ago
Kevin F 5a9594074e
Merge pull request #109 from beardog108/dependabot/pip/pdoc3-0.9.2 2 years ago
dependabot-preview[bot] ba8b9b49ed
Bump pdoc3 from 0.9.1 to 0.9.2 2 years ago
Kevin F 8c9a24b227
Merge pull request #117 from beardog108/dependabot/pip/pip-tools-5.5.0 2 years ago
Kevin Froman c28e5dea74 Merge branch 'master' of ssh://git.voidnet.tech:/kev/Onionr 2 years ago
Kevin Froman 07d9207808 Fix regression when opening homepage 2 years ago
Kevin Froman ad91a3222f show web url every time onionr daemon starts 2 years ago
Kevin Froman a032782d26 merge readme changes 2 years ago
Kevin Froman 1042676f26 added security mechanisms doc 2 years ago
Kevin Froman 9bf27b345d improved readme layout 2 years ago
Kevin Froman 8a2d0a635a accept #1 fixing #31 arm64 build issues 2 years ago
footsiefat 5a0231653f Added a new ARM64 (Raspberry Pi's for example) patch allowing for proper support now. 2 years ago
footsiefat e71935fcef Added a new ARM64 (Raspberry Pi's for example) patch allowing for proper support now. 2 years ago
Kevin Froman 87685fd728 add license to disk ministry 2 years ago
Kevin Froman d0df62770f added doc that describes testing 2 years ago
Kevin Froman e95b75b193 update runtime-result 2 years ago
Kevin Froman 59090b4a03 Merge branch 'master' of git.voidnet.tech:kev/Onionr 2 years ago
Kevin Froman ab41282fba Added instructions for generating requirements.txt 2 years ago
kev d1e4ae6032 Use list for version infos in issue template 2 years ago
kev b6b941bf9b Remove i2p and add cpu to issue template for now 2 years ago
Kevin Froman 509e8a290b don't use hard coded python version number in .env file 2 years ago
Kevin Froman b267d3028e bump version to 8.0.2 2 years ago
Kevin Froman 76f1d164e7 + added basic dev guide 2 years ago
Kevin Froman 54f6e3bdc6 Added instructions for generating requirements.txt 2 years ago
Kevin Froman fd440b8b91 Merge branch 'master' of git.voidnet.tech:kev/Onionr 2 years ago
Kevin Froman 8797bce4fa don't use hard coded python version number in .env file 2 years ago
kev b42dc8fbc6 Use list for version infos in issue template 2 years ago
kev e950f3242e Remove i2p and add cpu to issue template for now 2 years ago
Kevin Froman eefcb8ccbe added basic dev guide 2 years ago
Kevin Froman f4e37bbf4e added basic dev guide 2 years ago
Kevin Froman 7dce969eaa added benchmark for neighbor closeness 2 years ago
Kevin Froman 79b46b62eb add SO link to err msg when sqlite is not installed 2 years ago
Kevin Froman 314bec0909 move centos install 2 years ago
Kevin Froman fcc3bd656d added quickstart guide pdf 2 years ago
Kevin F 4b7be71102
Merge pull request #118 from digitalhuman/patch-1 2 years ago
Kevin Froman 8a722a0911 removed outdated html autogenerated docs 2 years ago
Victor Angelier CCX 797da0aaea
Install on CentOS 7 2 years ago
Kevin Froman 52bffa0aae update readme 2 years ago
dependabot-preview[bot] d7bcd2b4a8
Bump pip-tools from 5.4.0 to 5.5.0 2 years ago
Kevin Froman 0fb5e5df10 remove chat web files 2 years ago
Kevin Froman ae84d09e8e * detect stale run file 2 years ago
Kevin Froman 80e4562029 Merge branch 'master' of https://git.voidnet.tech/kev/onionr 2 years ago
Kevin Froman 427957b9e8 add all venvs to gitignore and update changelog 2 years ago
Kevin Froman 9d55c62d68 * revert pow to 5 2 years ago
Kevin Froman e36f44f9a1 bump deps 2 years ago
Kevin Froman 57638e73f7 added faq.md 2 years ago
Duncan X Simpson 2dc11303d7 Docker improvements 2 years ago
Duncan X Simpson 9345d27d6a Compare uid not username in create_dirs() 2 years ago
Kevin Froman 5afbed63cf Merge branch 'bind-args' 2 years ago
Kevin Froman c44d6624ff correct yt link 2 years ago
Kevin Froman ae359de562 Added custom port and bind address args 2 years ago
dependabot-preview[bot] 2bd58945da Bump watchdog from 0.10.4 to 1.0.1 2 years ago
Duncan X Simpson b1ef248ee9 Docker improvements 2 years ago
Kevin Froman 416e43e7bb correct yt link 2 years ago
Kevin Froman 1eb6140811 Added custom port and bind address args 2 years ago
Kevin Froman 700bde4bd8 Merge branch 'master' of https://git.k7dxs.net/dxs/onionr 2 years ago
Kevin Froman 71b511382b correct yt link 2 years ago
Duncan X Simpson 67f5c30d85 Docker improvements 2 years ago
Kevin Froman 9684585432 Fix consent message in onboarding 2 years ago
Kevin Froman 9d6216e16b decrease pow, bump version 2 years ago
Kevin Froman 2a6f6bb1aa speed up tests by lowering pow in their configs 2 years ago
Kevin Froman 7820c87b79 bump version 2 years ago
Kevin Froman 93d176badc fix upload.py logging b_hash define 2 years ago
Kevin Froman 968f468027 Merge branch 'fixmultiprocessexit' of /home/user/win-merges/bare-onionr/onionr into fixmultiprocessexit 2 years ago
Kevin Froman 86fd936d52 exit faster from communicator 2 years ago
Kevin Froman e34b499044 purge old blocks if POW increases 2 years ago
Kevin Froman 01ed4d49d0 fix wsl apport breaking sites 2 years ago
Kevin Froman 9db9c495c8 check block POW *before* syncning from lan 2 years ago
Kevin Froman dcc304be9d fix wsl apport breaking sitecreator 2 years ago
Kevin Froman eaf61c280a fixed subprocesspow not exiting on wsl 2 years ago
Kevin Froman e831a27ae3 bug fixes in block creation and directory security 2 years ago
Kevin Froman de271794fd added git-update.sh 2 years ago
Kevin Froman 21df88fdaa bumped deps 2 years ago
dependabot-preview[bot] 9d4afc4b3a Bump pip-tools from 5.3.1 to 5.4.0 2 years ago
Kevin Froman 28044f2bd7 bump version 2 years ago
Kevin Froman adba4be099 fix tests 2 years ago
Kevin Froman 30a4285b92 - Removed direct connections (will be a different project in the future) 2 years ago
Kevin Froman 59330149e1 removed netcheck comm timer 2 years ago
Kevin Froman a775f3b26d dont upload blocks that arent valid (anymore?), progress removing communicator timers 2 years ago
Kevin Froman cc703fc404 progress removing communicator timers 2 years ago
Kevin Froman ecd2cc54da progress removing communicator timers 2 years ago
Kevin Froman bbd76da333 added flood fill work, misc bug fixes and removing communicator timers 2 years ago
Kevin Froman 04105a2b70 show more info in show-blocks.py script 2 years ago
Kevin Froman 8d839f62c9 bump version 2 years ago
Kevin Froman a0ae62d0a3 added togglenetwork module in torcontrol 2 years ago
Kevin Froman a9d0524ccc + added sandbox script 2 years ago
Kevin Froman 130e9de5e9 remove disablenetwork for now 2 years ago
Kevin Froman f0cd2fb2b9 moved blockmetadata to onionrblocks 2 years ago
Kevin Froman 44112750ec Merge branch 'master' into flood-fill 2 years ago
Kevin Froman f2d7075b3a bump version 2 years ago
Kevin Froman 256c402223 fix connectnewpeers not using specified peer 2 years ago
Kevin Froman 2601263b87 disable forward secrecy for now, fix autocomplete for to address in mail 2 years ago
Kevin Froman 3ab8681b24 Merge branch 'master' of gitlab.com:beardog/Onionr 2 years ago
Kevin Froman 2837210cf4 blockapi decrypt fix 2 years ago
Kevin Froman d0e6f6c4af bump requirements 2 years ago
Kevin Froman 67054446ae bump requirements 2 years ago
Kevin Froman f7f4732789 added floodfill network visualization script 2 years ago
Kevin Froman f80d58e5b8 added floodfill network visualization script 2 years ago
Kevin Froman 4a831a4a4d fixed closeness calculation 2 years ago
Kevin Froman 57ec04eff5 remove hs after creation in generate onions 2 years ago
Kevin Froman da11c74f6c finished closeness measurement 2 years ago
Kevin Froman c4be08bd23 added onion generator script 2 years ago
Kevin Froman 299980f126 work on flood fill network 2 years ago
Kevin Froman b5fe4453ed added graph simulation script 2 years ago
Kevin Froman 77de7e318d fix zalgo overflow in circles ui 2 years ago
Kevin Froman eec8c356ad fix systemrandom shuffle 2 years ago
Kevin Froman 6a4744997c correct wording in log warning in sidebar 2 years ago
Kevin Froman cf0507b82d ensure whole tree is made in createdirs 2 years ago
Kevin Froman 862b39c217 fix systemrandom shuffle 2 years ago
Kevin Froman b424ef6674 disable restart tor button if tor is not enabled 2 years ago
Kevin Froman 4847d9bddf added cpu optimize onboarding option 2 years ago
Kevin Froman 51c3078b90 newline in tor sidebar log 2 years ago
Kevin Froman 8a4c138eed don't netcheck if tor disabled 2 years ago
Kevin Froman 5dddeb3f10 remove random shuffle function for systemrandom equivalent 2 years ago
Kevin Froman fb85856f76 added bootstrap run argument 2 years ago
Kevin Froman 5c61708c61 added graph simulation script 2 years ago
Kevin Froman 183e6491d0 use SystemRandom for randomshuffle instead of own rolled implementation 2 years ago
Kevin Froman 3ca05e2390 added sidebar log warning 2 years ago
Kevin Froman 88ec98c92a size sanity in webui sidebar log output 2 years ago
Kevin Froman 8f52fa4669 autoscroll sidebar log 2 years ago
Kevin Froman 60c7e6cb37 now shows log in sidebar 2 years ago
Kevin Froman c23b286540 added file reader offset 2 years ago
Kevin Froman 723d004e5c disable autocomplete for mail message subjects 2 years ago
Kevin Froman 989692c6ac add disable-plugin-list, --store-plaintext and --dev-mode run arguments 2 years ago
Kevin Froman fcfecaff7e fix removing circles from nav bar when disabled 2 years ago
Kevin Froman 895b4fe4fd side bar and ui node list fixes 2 years ago
Kevin Froman cf669024bf handle invalid input when adding peer better 2 years ago
Kevin Froman a9096dc048 correct return type in storage setdata 2 years ago
Kevin Froman 1e7d7840b1 added showblocks script 2 years ago
Kevin Froman 57225f57f0 work on fixing weird upload issues 2 years ago
Kevin Froman fbcb95be9e fix mixmate indent 2 years ago
Kevin Froman c2b7246048 handle bad user ids in mail ui better 2 years ago
Kevin Froman e0f59784b1 Fix mixmate and sneakernet 2 years ago
Kevin Froman 2291d5a5f2 reduce pow 2 years ago
Kevin Froman d067a343e6 fixed pex 2 years ago
Kevin Froman 3ef29077e7 plaintext block fixes with sharing, fixed peer lookup 2 years ago
Kevin Froman 835c2e527e Fixed encrypted uploads 2 years ago
Kevin Froman 1c44a514a5 Fixed encrypted uploads 2 years ago
Kevin Froman 5baa048a4e Fixed encrypted uploads 2 years ago
Kevin Froman 0338cd64b6 do not upload plaintext to peers that do not support it, closes #14 2 years ago
Kevin Froman fc7db42deb do not upload plaintext to peers that do not support it, closes #14 2 years ago
Kevin Froman 503bf65cbe fix error on deletion or upload of plaintext blocks to node that does not support it 2 years ago
Kevin F da57dc373f
Merge pull request #100 from beardog108/dependabot/pip/ujson-4.0.1 2 years ago
dependabot-preview[bot] f0bb41daac
Bump ujson from 4.0.0 to 4.0.1 2 years ago
Kevin Froman 2dc706a894 fixed sneakernet, removed unused vdf 2 years ago
Kevin Froman d0baa7fd12 deleted csharppow and bumped version 2 years ago
Kevin Froman 10689f24d7 added graph info to readme 2 years ago
Kevin F b010fa8326
Merge pull request #99 from beardog108/dependabot/pip/ujson-4.0.0 2 years ago
Kevin Froman b5b7c756ea removed old onionr contact address from readme 2 years ago
dependabot-preview[bot] 99371cfec5
Bump ujson from 3.2.0 to 4.0.0 2 years ago
Kevin Froman 10ba2be93f small bug fixes, added more cors headers for pub api browser requests 2 years ago
Kevin Froman 45940b2dba + added address adding input to web ui in sidebar 2 years ago
Kevin Froman 092233027c allow truncated hashes in getblocks public endpoint 2 years ago
Kevin Froman 5abe4cf704 (re)added cors to public api 2 years ago
Kevin Froman ab9726a41a in removeblock calculate size of block before removing it 2 years ago
Kevin Froman 6370d07f90 fix standalone block file ext in removeblock 2 years ago
Kevin Froman fa0318802b use new pow value formats 2 years ago
Kevin Froman 366295f09c Added upload mixing run script arg 2 years ago
Kevin Froman 48f988877d use new pow value formats 2 years ago
Kevin Froman 68a557daf5 added block type filter for public get blocks endpoint 2 years ago
Kevin Froman 02cdbc75ce c# pow implementation work 2 years ago
Kevin F 843f1c1a8e
Merge pull request #97 from beardog108/dependabot/pip/helium-3.0.5 2 years ago
Kevin F 50f0ff8da6
Merge pull request #98 from beardog108/dependabot/pip/gevent-20.9.0 2 years ago
Kevin Froman 60d6aa0510 c# pow implementation work 2 years ago
dependabot-preview[bot] 0c315c3181
Bump gevent from 20.6.2 to 20.9.0 2 years ago
Kevin Froman e9dbc9fa09 c# pow implementation work 2 years ago
Kevin Froman 499981ed52 c# pow implementation work 2 years ago
Kevin Froman 60c1ec07e9 started c# pow implementation 2 years ago
Kevin Froman fd0f13cf63 started c# pow implementation 2 years ago
Kevin Froman 3199f93d4b work on making mail more efficient, added --private-ke argument imp to run script 2 years ago
Kevin Froman 646a7c0b80 Removed difficulty adjuster from pow 2 years ago
Kevin Froman 5b3d76067a Move users to use phrase system for sites as well 2 years ago
Kevin Froman c0ebfec034 Default disabled upload mixing with new config value 2 years ago
Kevin Froman c19797bb2e Added remove log on exit argument to run script 2 years ago
Kevin Froman 1f067f614a Added tor restart button to index and tor restart command. Enabled tor restart daemon event 2 years ago
Kevin Froman b4d80da3ff Work on fixing node uptime 2 years ago
dependabot-preview[bot] 43d3e687d7
Bump helium from 3.0.4 to 3.0.5 2 years ago
Kevin Froman 4bc2bf5db5 removed deterministic keys due to poor hashing 2 years ago
Kevin Froman c7e0b6c1b2 Removed batch files, added WIP run wrapper script 2 years ago
Kevin Froman 247b1f616d added missing last release to changelog 2 years ago
Kevin Froman b4ddf343fc Removed unreachable return in onionrproofs 2 years ago
Kevin Froman 196d02a751 Sped up + fixed statistics table command using psutil, removed checkcommunicator as a result 2 years ago
Kevin Froman a5b6805b5f Update readme to have version tag 2 years ago
Kevin Froman e11c3d2733 Merge branch 'master' into remote-access 2 years ago
Kevin F 97708e5875
Merge pull request #91 from beardog108/dependabot/pip/pip-tools-5.3.1 2 years ago
Kevin F 41e57cb5b9
Merge pull request #96 from beardog108/dependabot/pip/ujson-3.2.0 2 years ago
dependabot-preview[bot] 79a5e6ca3e
Bump ujson from 3.0.0 to 3.2.0 2 years ago
Kevin Froman 2ce5f48c90 Added ui.public_remote_enabled and ui.public_remote_hosts 2 years ago
Kevin Froman 17ef138c21 bump version 2 years ago
Kevin Froman cb88ff8c3f update runtime test 2 years ago
Kevin Froman d40bd85368 added test for api version 2 years ago
dependabot-preview[bot] d7e7d4499b
Bump pip-tools from 5.2.1 to 5.3.1 2 years ago
Kevin F 104f71c0c3
Merge pull request #95 from beardog108/dependabot/pip/pdoc3-0.9.1 2 years ago
Kevin Froman 16cdd6d877 Merge branch 'master' of ssh://git.voidnet.tech:/kev/Onionr 2 years ago
Kevin Froman b7091d2062 fix showlogo crash when not connected to terminal, bump version 2 years ago
Kevin Froman f8fcd6d4e5 Formatting changes 2 years ago
Kevin Froman 15a66c7fb4 fix showlogo crash when not connected to terminal 2 years ago
Kevin Froman 37e5dbab4b Moved plugin web files to be in the plugin folder to reduce staticfiles blueprint coupling 2 years ago
dependabot-preview[bot] 3df1859df5
Bump pdoc3 from 0.8.3 to 0.9.1 2 years ago
Kevin Froman 14f2d03ebf Formatting improvements in httpapis 2 years ago
Kevin Froman 3422ca43ff Fixing block syncing quirks 2 years ago
Kevin Froman a83351a73c misc formatting improvements 2 years ago
Kevin Froman 39650a4ca0 catch and log when cannot reach non-managed tor 2 years ago
Kevin Froman 8d54519771 implemented the sybil attack script 2 years ago
Kevin Froman 9f1f1435ce Fix block downloading for shared state 2 years ago
Kevin Froman 78e533952c added sybil attack script 2 years ago
Kevin Froman e19e23022b show message if user tries to open .onion as onionr site 2 years ago
Kevin Froman 68aac2153b add some more useful logging for failed signed blocks in validatemetadata 2 years ago
Kevin Froman 15379a7c2f add readline to client api request crafter 2 years ago
Kevin Froman 61bc5fd34b use better language for LE on onboarding page 2 years ago
Kevin Froman b66e1d852e clear stats interval on shutdown button, remove deprecated sync httpget 2 years ago
Kevin Froman 02fde0ad70 fix subprocesspow keyboard interrupt not being catched 2 years ago
Kevin Froman 308fca7c22 added creating blocks count to sidebar 2 years ago
Kevin Froman 72653c1e93 check for light theme before enabling particles 2 years ago
Kevin Froman cd0b69b03f Use init-time creation only of StorageCounter to use less inotify instances 2 years ago
Kevin Froman bbc9646a25 fix LANServer dns rebinding crashing because of old kwarg format 2 years ago
Kevin Froman fd73f63ecd fix public block list not working because of old kwarg format 2 years ago
Kevin Froman 2cf7a8c8b3 Fix unclickable labels in onboarding 2 years ago
Kevin Froman 6089cc3c98 fix formatting in onionrservices 2 years ago
Kevin Froman 05127dd3b7 remove warden since it won't be implemented 2 years ago
Kevin Froman d39c12ab4d Update runtime test 2 years ago
Kevin Froman ce0e60c4ea Correct formatting in expiredblocks 2 years ago
Kevin Froman 0938bf0692 Deduplicate infoNumbers in transportinfo keydb 2 years ago
Kevin Froman fb4dd07ba4 fix missed blockHash->block_hash change in onionrstorage 2 years ago
Kevin Froman 6f242298fe Don't run LAN unittests on QubesOS 2 years ago
Kevin Froman 0b2658374b Added/corrected timeouts for sqlite3 database connections 2 years ago
Kevin Froman 2a7c933321 Utils format fixes 2 years ago
Kevin Froman c9af24392d Fix netutils formatting 2 years ago
Kevin Froman 272d7d7f74 Removed Windows specific code 2 years ago
Kevin Froman ce63c4cd3b Show a terminal message if bridge is enabled but one is not set. By design, there is no easy way for us to get Tor bridges automatically 2 years ago
Kevin Froman e900d597d8 Added repo-size shield to readme 2 years ago
Kevin Froman 2ddeab8788 work on tor blocking detection 2 years ago
Kevin Froman a24086da62 add comments to bootstrappeers 2 years ago
Kevin Froman 8389ed190c Basic check for QubesOS in runtime tests and to avoid starting LAN server 2 years ago
Kevin Froman 87b8655b83 do not start lan on qubes 2 years ago
Kevin Froman feb8004c95 fix generating hashes not being removed when done, add endpoint to get generating hashes 2 years ago
Kevin Froman a01b645a79 added dump endpoints to debug api 2 years ago
Kevin Froman 3473c5e36a Improved torcontrol formatting and efficency 2 years ago
Kevin Froman e14955cb6b Improved formatting and removed unnecessary imports in torcontrol 2 years ago
Kevin Froman 504c53edb3 added debug info api files 2 years ago
Kevin Froman 5e00bb930f added client api request crafting script 2 years ago
Kevin Froman 6976dcf8f3 Friends API now shows redirect error message when ref header not set instead of request failing 2 years ago
Kevin Froman 552e7427d8 Merge branch 'master' of ssh://git.voidnet.tech:/kev/Onionr into sidebar 2 years ago
kev 661a4ee3d2 Fix doc links in readme 2 years ago
Kevin Froman 96af4e8db0 Fixed some broken things from communicator decoupling 2 years ago
Kevin Froman bff2595ac9 Merge branch 'new-release' into sidebar 2 years ago
Kevin Froman 522cd2c462 bumped requirements versions 2 years ago
Kevin 2f5c1311be update readme to reflect release tag usage 2 years ago
Kevin 077f530b72 Fix peeraction still using comm_inst 2 years ago
Kevin 5930f3bfad Added missing tests and sidebar files 2 years ago
Kevin ab10cea8b6 add forgotten spawndaemonthreads and added license info to bulma extension files 2 years ago
Kevin 086f2f718c fix onlinepeers decoupling 2 years ago
Kevin 4cf17ffe62 work on removing communicator 2 years ago
Kevin 0b34aa7385 added onionrthreads to replace communicator timers 2 years ago
Kevin 6f1daf50d3 added setup kvvars 2 years ago
Kevin 5bde99967b Moved all communicator ext vars to KV 2 years ago
Kevin f28d469e56 Moved all communicator ext vars to KV 2 years ago
Kevin 080f33bf1f More decoupling, removed unnecessary announceCache 2 years ago
Kevin fad5e8547e Moved cooldownPeer to KV to further reduce coupling 2 years ago
Kevin dde10b7005 Moved offllinePeers to KV to further reduce coupling 2 years ago
Kevin 10c1cd7803 Moved blocksToUpload to KV to further reduce coupling 2 years ago
Kevin 97a5f50271 Moved dbTimestamps and newPeers to KV for more decoupling 2 years ago
Kevin e00d41f8a9 Moved onlinePeers and announceCache to kv for more decoupling 2 years ago
Kevin 6a6718c9fd Moved onlinePeers to KV to further reduce coupling 2 years ago
Kevin 0e4e7bb050 Moved communicator shutdown over to KV model for more decoupling 2 years ago
Kevin F 0460d3380f
Merge pull request #89 from beardog108/dependabot/pip/deadsimplekv-0.3.2 2 years ago
dependabot-preview[bot] e3b1eaad17
Bump deadsimplekv from 0.3.1 to 0.3.2 2 years ago
Kevin 6ecb62356a Moved blockQueue to DSKV singleton as part of communicator decoupling 2 years ago
Kevin 47013431d2 Removed use of communicator's storagecounter to reduce coupling 2 years ago
Kevin b4be481f81 bumped urllib3 to 1.25.10 2 years ago
Kevin f4d1739e4a made storagecounter use a watchdog (inotify) instead of excessive file reads 2 years ago
  1. 4
      .dockerignore
  2. 2
      .env
  3. 6
      .gitignore
  4. 39
      CHANGELOG.md
  5. 35
      Dockerfile
  6. 11
      ISSUE_TEMPLATE.md
  7. 72
      README.md
  8. 1
      docs/TODO.txt
  9. BIN
      docs/basic-onionr-user-guide.pdf
  10. 19
      docs/dev/generating-requirements.txt.md
  11. 44
      docs/dev/running-tests.md
  12. 43
      docs/dev/security-mechanisms.md
  13. 9
      docs/dev/selected-papers.md
  14. 63
      docs/dev/setup.md
  15. 28
      docs/docker.md
  16. 24
      docs/faq.md
  17. 1
      docs/html/index.html
  18. 88
      docs/html/src/apiservers/index.html
  19. 411
      docs/html/src/apiservers/private/index.html
  20. 175
      docs/html/src/apiservers/private/register_private_blueprints.html
  21. 220
      docs/html/src/apiservers/public/index.html
  22. 166
      docs/html/src/bigbrother/index.html
  23. 77
      docs/html/src/bigbrother/ministry/index.html
  24. 149
      docs/html/src/bigbrother/ministry/ofcommunication.html
  25. 227
      docs/html/src/bigbrother/ministry/ofexec.html
  26. 119
      docs/html/src/communicator/bootstrappeers.html
  27. 210
      docs/html/src/communicator/daemoneventhooks/index.html
  28. 117
      docs/html/src/communicator/daemoneventhooks/removefrominsertqueue.html
  29. 866
      docs/html/src/communicator/index.html
  30. 124
      docs/html/src/communicator/onlinepeers/clearofflinepeer.html
  31. 91
      docs/html/src/communicator/onlinepeers/index.html
  32. 173
      docs/html/src/communicator/onlinepeers/onlinepeers.html
  33. 141
      docs/html/src/communicator/onlinepeers/pickonlinepeers.html
  34. 127
      docs/html/src/communicator/onlinepeers/removeonlinepeer.html
  35. 178
      docs/html/src/communicator/peeraction.html
  36. 215
      docs/html/src/communicator/uploadqueue/index.html
  37. 202
      docs/html/src/communicatorutils/announcenode.html
  38. 242
      docs/html/src/communicatorutils/connectnewpeers.html
  39. 166
      docs/html/src/communicatorutils/cooldownpeer.html
  40. 121
      docs/html/src/communicatorutils/deniableinserts.html
  41. 375
      docs/html/src/communicatorutils/downloadblocks/index.html
  42. 139
      docs/html/src/communicatorutils/downloadblocks/shoulddownload.html
  43. 206
      docs/html/src/communicatorutils/housekeeping.html
  44. 130
      docs/html/src/communicatorutils/index.html
  45. 173
      docs/html/src/communicatorutils/lookupadders.html
  46. 254
      docs/html/src/communicatorutils/lookupblocks.html
  47. 159
      docs/html/src/communicatorutils/netcheck.html
  48. 253
      docs/html/src/communicatorutils/onionrcommunicatortimers.html
  49. 111
      docs/html/src/communicatorutils/proxypicker.html
  50. 90
      docs/html/src/communicatorutils/restarttor.html
  51. 144
      docs/html/src/communicatorutils/servicecreator.html
  52. 313
      docs/html/src/communicatorutils/uploadblocks/index.html
  53. 151
      docs/html/src/communicatorutils/uploadblocks/mixmate/index.html
  54. 300
      docs/html/src/communicatorutils/uploadblocks/mixmate/pool.html
  55. 220
      docs/html/src/communicatorutils/uploadblocks/session.html
  56. 422
      docs/html/src/communicatorutils/uploadblocks/sessionmanager.html
  57. 431
      docs/html/src/config/index.html
  58. 213
      docs/html/src/config/onboarding.html
  59. 143
      docs/html/src/coredb/blockmetadb/add.html
  60. 133
      docs/html/src/coredb/blockmetadb/expiredblocks.html
  61. 266
      docs/html/src/coredb/blockmetadb/index.html
  62. 176
      docs/html/src/coredb/blockmetadb/updateblockinfo.html
  63. 69
      docs/html/src/coredb/dbfiles.html
  64. 81
      docs/html/src/coredb/index.html
  65. 254
      docs/html/src/coredb/keydb/addkeys.html
  66. 91
      docs/html/src/coredb/keydb/index.html
  67. 239
      docs/html/src/coredb/keydb/listkeys.html
  68. 184
      docs/html/src/coredb/keydb/removekeys.html
  69. 230
      docs/html/src/coredb/keydb/transportinfo.html
  70. 251
      docs/html/src/coredb/keydb/userinfo.html
  71. 65
      docs/html/src/data2871027835/index.html
  72. 246
      docs/html/src/data2871027835/plugins/chat/controlapi.html
  73. 80
      docs/html/src/data2871027835/plugins/chat/index.html
  74. 122
      docs/html/src/data2871027835/plugins/chat/main.html
  75. 200
      docs/html/src/data2871027835/plugins/chat/peerserver.html
  76. 53
      docs/html/src/data2871027835/plugins/chat/settings.html
  77. 65
      docs/html/src/data2871027835/plugins/encrypt/index.html
  78. 414
      docs/html/src/data2871027835/plugins/encrypt/main.html
  79. 236
      docs/html/src/data2871027835/plugins/flow/flowapi.html
  80. 70
      docs/html/src/data2871027835/plugins/flow/index.html
  81. 476
      docs/html/src/data2871027835/plugins/flow/main.html
  82. 90
      docs/html/src/data2871027835/plugins/index.html
  83. 65
      docs/html/src/data2871027835/plugins/metadataprocessor/index.html
  84. 165
      docs/html/src/data2871027835/plugins/metadataprocessor/main.html
  85. 85
      docs/html/src/data2871027835/plugins/pms/index.html
  86. 127
      docs/html/src/data2871027835/plugins/pms/loadinbox.html
  87. 216
      docs/html/src/data2871027835/plugins/pms/mailapi.html
  88. 206
      docs/html/src/data2871027835/plugins/pms/main.html
  89. 96
      docs/html/src/data2871027835/plugins/pms/onblacklist.html
  90. 333
      docs/html/src/data2871027835/plugins/pms/sentboxdb.html
  91. 65
      docs/html/src/data2871027835/plugins/searchengine/index.html
  92. 82
      docs/html/src/data2871027835/plugins/searchengine/main.html
  93. 116
      docs/html/src/etc/cleanup/index.html
  94. 59
      docs/html/src/etc/dependencycheck.html
  95. 136
      docs/html/src/etc/humanreadabletime.html
  96. 90
      docs/html/src/etc/index.html
  97. 171
      docs/html/src/etc/onionrvalues.html
  98. 113
      docs/html/src/etc/powchoice.html
  99. 90
      docs/html/src/etc/waitforsetvar.html
  100. 92
      docs/html/src/filepaths/index.html
  101. Some files were not shown because too many files have changed in this diff Show More

4
.dockerignore

@ -1,4 +1,6 @@
onionr/data/**/*
onionr/data
RUN-WINDOWS.bat
MY-RUN.sh
Dockerfile
.dockerignore
.git

2
.env

@ -1 +1 @@
PYTHONPATH=./venv/bin/python3.8
PYTHONPATH=./venv/bin/python

6
.gitignore vendored

@ -13,11 +13,11 @@ src/data/*
src/data-backup/*
run.sh
src/.onionr-lock
daemon-true.txt
.vscode/tags
.vscode/settings.json
venv/*
venv*
src/fs*
src/tmp/*
testdata/*
@ -40,3 +40,5 @@ src/data/*.log
onionr-*.pkg.tar.gz
pkg/
spawnnodes.py
static-data/tor-node-list.dat

39
CHANGELOG.md

@ -5,9 +5,44 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [8.0.1] - 2020-12-22
* Fix subprocess in 3.9x with dumb hack
* Dependency bumps
## [8.0.0] - 2020-12-04
* Decrease PoW until better implementation is made
## [7.2.0] - 2020-12-03
* Purge blocks not meeting current pow on startup
* Check block POW before LAN sync
* WSL fixes
## [7.1.0] - 2020-11-23
* Check for ownership of existing dirs in createdirs, this prevents the rare edge case where a user might use a home directory in a location an attacker could write (allowing arbitrary code execution via plugins). This was already partially mitigated by the chmod of the home directory in any case, but this further fixes the issue.
## [7.0.0] - 2020-11-22
* Removed communicator timers
* Removed direct connections and chat (these will be either plugins or separate programs/processes in the future)
## [5.1.0] - 2020-09-07
* Moved plugin web files to be in the plugin folder to reduce staticfiles blueprint coupling
* Added basic sidebar on index page
* Many bug fixes
## [5.0.1] - 2020-08-08
* bumped deadsimplekv to 0.3.2
* bumped urllib3 to 1.25.10
## [5.0.0] - 2020-07-23
- Removed single-process POW support (was only needed on Windows)

35
Dockerfile

@ -1,28 +1,31 @@
FROM python
FROM python:3.7
EXPOSE 8080
USER root
RUN mkdir /app
WORKDIR /app
#Base settings
ENV HOME /root
ENV ONIONR_DOCKER=true
#Install needed packages
RUN apt update && apt install -y tor locales
RUN apt-get update && apt-get install -y tor locales
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
WORKDIR /srv/
ADD ./requirements.txt /srv/requirements.txt
ADD ./requirements.txt /app/requirements.txt
RUN pip3 install --require-hashes -r requirements.txt
WORKDIR /root/
#Add Onionr source
COPY . /root/
VOLUME /root/data/
COPY . /app/
#Set upstart command
CMD bash
VOLUME /app/data/
#Expose ports
EXPOSE 8080
#Default to running as nonprivileged user
RUN chmod g=u -R /app
USER 1000
ENV HOME=/app
CMD ["bash", "./run-onionr-node.sh"]

11
ISSUE_TEMPLATE.md

@ -5,8 +5,9 @@
# Steps to Reproduce
# Version Information
Onionr:
OS:
Python:
Tor:
I2P:
* Onionr:
* OS:
* Python:
* Tor:
* CPU:

72
README.md

@ -11,9 +11,9 @@
Anonymous social platform, mail, file sharing.
</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/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://img.shields.io/github/repo-size/beardog108/onionr"> <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'>
<a href='https://www.reddit.com/r/onionr'><img src = 'https://img.shields.io/reddit/subreddit-subscribers/onionr?style=social'></a> <a href='https://twitter.com/onionrnet'><img src='https://img.shields.io/twitter/follow/onionrnet?style=social'></a>
<a href='https://www.reddit.com/r/onionr'><img src = 'https://img.shields.io/reddit/subreddit-subscribers/onionr?style=social'></a> <a href='https://twitter.com/onionrnet'><img src='https://img.shields.io/twitter/follow/onionrnet?style=social'></a> - [Discord](https://discord.gg/DVF2bEAzrt) - Matrix: #onionr:amorgan.xyz
| | | |
| ----------- | ----------- | ----------- |
@ -21,7 +21,7 @@
| [Docs](#documentation)/[web copy](https://beardog108.github.io/onionr/) | [Get involved](#help-out) | [Onionr.net](https://onionr.net/)/[.onion](http://onionrbak72t5zhbzuey2fdkpczlvhowgcpqc6uoyrd3uxztzxwz5cyd.onion/) |
<hr>
---
**The main repository for this software is at https://git.VoidNet.tech/kev/onionr/**
@ -30,19 +30,25 @@ Mirrors: [Github](https://github.com/beardog108/onionr), [Gitlab](https://gitlab
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 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 and as such cannot be trivially unmasked. Anonymity is achieved by a stateless network, with no given indication of what node a block originates from. Through message mixing and key privacy, it is intended to be nigh impossible to discover the identity of a message creator or recipient.
Onionr gives the individual the ability to speak freely, without fear of surveillance and censorship.
Via 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. 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.
---
Onionr gives the individual the ability to speak freely, without fear of surveillance and censorship.
Onionr stores data in independent packages referred to as 'blocks'. The blocks are distributed to all nodes interested in their data type. 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 and as such cannot be trivially unmasked. Anonymity is achieved by a stateless network, with no given indication of what node a block originates from. In fact, since one is not required to participate in routing or storage to insert a message, blocks often do not originate from any identifiable node.
Onionr works primarily via epidemic/gossip style routing, with message delivery taking roughly log<sub>F</sub>(N) cycles where F is the number of nodes to send a message to each cycle and N is the number of connected nodes. So a network of 100 million nodes can deliver messages in a few minutes even with high packet loss and malfunctioning nodes.
Through message mixing and key privacy, it is intended to be nigh impossible to discover the identity of a message creator or recipient. Via 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. 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.
Users are identified by ed25519/curve25519 public keys, which can be used to sign blocks or send encrypted data.
Onionr can be used for mail, as a social network, instant messenger, file sharing software, or for encrypted group discussion.
Due to the nature of anonymity, the graph as implemented in this reference network is dense, undirected, cyclic and can be disconnected. Since Onionr is technically just a data format, any routing scheme can be used to pass messages.
The whitepaper is available [here](docs/whitepaper.md).
![Tor stinks slide image](docs/tor-stinks-02.png)
---
## Main Features
@ -57,9 +63,9 @@ Onionr ships with various application plugins ready for use out of the box:
Currently usable:
* Mail
* Public anonymous chat/message board
* Simple webpage hosting - Will be greatly extended
* 📨 Mail
* 💬 Public anonymous chat/message board
* 📃 Simple webpage hosting - Will be greatly extended
* File sharing (Work in progress)
Not yet usable:
@ -67,13 +73,6 @@ Not yet usable:
* Instant messaging
## Watch the talk from BSidesPDX 2019
<a href="https://invidio.us/watch?v=mrULtmSkKxg">
<img src="docs/talk.png" alt="improving anonymous networking talk link" width="600">
</a>
# Screenshots
<img alt='Node statistics page screenshot' src='docs/onionr-1.png' width=600>
@ -92,19 +91,22 @@ Encrypted, metadata-masking mail application. One of the first distributed mail
More docs coming soon.
* [Block specification](docs/specs/block-spec.md)
* [HTTP API](docs/http-api.md)
* [Block specification](docs/dev/specs/block-spec.md)
* [HTTP API](docs/dev/http-api.md)
# Install and Run on Linux
The following applies to Ubuntu Bionic. Other distros may have different package or command names.
The following applies to Ubuntu Bionic. Other distributions may have different package or command names.
Master may be unstable, you should use the latest release tag. (checkout via git: `$ git checkout release-latest`)
`$ sudo apt install python3-pip python3-dev tor`
* Have python3.7+, python3-pip, Tor (daemon, not browser) installed. python3-dev is recommended.
* Clone the git repo: `$ git clone https://gitlab.com/beardog/onionr`
* You may need build-essentials or the equivalent of your platform
* Clone the git repo: `$ git clone https://gitlab.com/beardog/onionr --tags`
* cd into install direction: `$ cd onionr/`
* Install the Python dependencies ([virtualenv strongly recommended](https://virtualenv.pypa.io/en/stable/userguide/)): `$ pip3 install --require-hashes -r requirements.txt`
* Install the Python dependencies ([virtualenv strongly recommended](https://virtualenv.pypa.io/en/stable/userguide/)): `$ pip3 install --require-hashes -r requirements.txt` (on ARM64 devices like Raspberry Pi 4's use requirements-ARM.txt instead.)
* (Optional): Install desktop notification dependencies: `$ pip3 install --require-hashes -r requirements-notifications.txt`
(--require-hashes is intended to prevent exploitation via compromise of PyPi/CA certificates)
@ -117,11 +119,13 @@ The following applies to Ubuntu Bionic. Other distros may have different package
* Gracefully stop Onionr from CLI `$ ./onionr.sh stop`
# Contact
Email: beardog [ at ] mailbox.org
# Contact/Community
Onionr Mail: `particularizing-zabaione-defuze-iodizer-saucepan-patientest-sell-waken-chifforobe-embonpoint-aquanaut-chambermaid-barky-fumer-jolt-biotic`
* Email: beardog [ at ] mailbox.org
* Twitter: [@onionrnet](https://twitter.com/onionrnet)
* Onionr Mail: decentralized-fiery-freehearted-skimmer-yodling-topstitch-divorceable-ojibwa-resettlement-infracted-lessor-noninstinctual-leaseholder-counterpoised-couture-skinful
* Matrix: #onionr:amorgan.xyz
* Discord: https://discord.gg/DVF2bEAzrt (Discord is bad for freedom and privacy, this is only provided for convienience)
# Help out
@ -130,7 +134,7 @@ Everyone is welcome to contribute. Help is wanted for the following:
* Development (Get in touch first)
* Creation of a shared lib for use from other languages and faster proof-of-work
* Android and IOS development
* Windows and Mac support (already partially supported, testers needed)
* Mac support (already partially supported, testers needed)
* Bug fixes and development of new features
* Testing
* Translations/localizations
@ -139,6 +143,12 @@ Everyone is welcome to contribute. Help is wanted for the following:
* Security review/audit
* I2P support
## Watch the talk from BSidesPDX 2019
<a href="https://www.youtube.com/watch?v=mrULtmSkKxg">
<img src="docs/talk.png" alt="improving anonymous networking talk link" width="600">
</a>
## Contribute money:
Donating at least $3 gets you cool Onionr stickers. Get in touch if you want them.
@ -146,11 +156,13 @@ Donating at least $3 gets you cool Onionr stickers. Get in touch if you want the
![sticker](docs/sticker.png)
Bitcoin: [1onion55FXzm6h8KQw3zFw2igpHcV7LPq](bitcoin:1onion55FXzm6h8KQw3zFw2igpHcV7LPq) (Contact us for a unique address or for other coins)
* Bitcoin: [1onion55FXzm6h8KQw3zFw2igpHcV7LPq](bitcoin:1onion55FXzm6h8KQw3zFw2igpHcV7LPq) (Contact us for a unique address or for other coins)
* Monero: 4B5BA24d1P3R5aWEpkGY5TP7buJJcn2aSGBVRQCHhpiahxeB4aWsu15XwmuTjC6VF62NApZeJGTS248RMVECP8aW73Uj2ax
Monero: 4B5BA24d1P3R5aWEpkGY5TP7buJJcn2aSGBVRQCHhpiahxeB4aWsu15XwmuTjC6VF62NApZeJGTS248RMVECP8aW73Uj2ax
* USD (Card/Paypal (no account required)): [Ko-Fi](https://www.ko-fi.com/beardogkf)
USD (Card/Paypal): [Ko-Fi](https://www.ko-fi.com/beardogkf)
* Sign up for [privacy.com (refferal link)](https://privacy.com/join/FNNDF) to protect your personal information when contributing or shopping elsewhere, we both get $5 USD.
Note: probably not tax deductible

1
docs/TODO.txt

@ -15,5 +15,4 @@
* add BCC support to mail
* prevent local insertion success of duplicate block content
* truncate last N blocks when sharing list

BIN
docs/basic-onionr-user-guide.pdf

Binary file not shown.

19
docs/dev/generating-requirements.txt.md

@ -0,0 +1,19 @@
# Generating requirements.txt
To generate a requirements.txt file, install pip-tools from pip
Onionr requirements files should have hashes to prevent backdooring by the pypi server.
Put your package versions in requirements.in like normal. Child dependencies are usually not necessary:
```
requests==0.1.1
flask==0.1.1
```
Then generate the requirements.txt:
`$ pip-compile requirements.in --generate-hashes -o requirements.txt`
Your requirements.txt will have hash-pinned requirements of all dependencies and child dependencies.

44
docs/dev/running-tests.md

@ -0,0 +1,44 @@
# Running Onionr tests
Onionr has four types of tests:
* unittests
* integration tests
* selenium tests (web tests)
* runtime-tests
## unittests
Onionr uses Python's built in unittest module. These tests are located in tests/ (top level)
Run all tests with `$ make test`, which will also run integration tests.
Please note that one unittest tests if runtime-tests have passed recently. This is simply a forceful reminder to run those tests as well.
You can also run a single unittest in a loop by using the script scripts/run-unit-test-by-name.py
## integration tests
These tests are pretty basic and test on stdout of Onionr commands.
They are also run from `$ make test`
The runtime-tests do most of the actual integration testing.
## selenium tests
These are browser automation tests to test if the UI is working as how it should for a user.
There's only a couple and they're incomplete, so they can be ignored for now (test manually)
## runtime-tests
These are important. They look into the Onionr client Flask app when Onionr daemon is running and test a bunch of things.
If you do it a lot you should make your own Onionr network (disable official bootstrap)
You run this while the daemon is running (probably should make sure onboarding is done), with `$ onionr.sh runtime-test`
It's necessary to do this before running `$ make test` for unittesting

43
docs/dev/security-mechanisms.md

@ -0,0 +1,43 @@
# Onionr Security Mechanisms
## bigbrother 👁
Bigbrother is a cheeky module that uses Python3.8+ sys auditing events to log and/or block certain sensitive events.
It has a little overhead, so one can disable it in config in general.security_auditing
[ChaosWebs.net/blog/preventing-arbitrary-code-execution-in-python38-with-auditing.html](https://chaoswebs.net/blog/preventing-arbitrary-code-execution-in-python38-with-auditing.html)
### Threat model
It is intended to log bugs leaking private file system information, block+log network leaks, and block+log eval-like arbitrary code execution. It is not intended to block malicious browser scripts or malicious Python plugins. It cannot work with subprocesses that do not activate the module.
It's not intended to be bulletproof by any means, but it helps.
### What big brother does
* Disk access checks for disk access outside. Only logs, does not block
* Network leaks. (Non Tor/LAN) Blocks and logs
* Arbitrary code execution: logs and blocks non-whitelisted bytecode importing/compiling and subprocesses.
## Sybil attacks
As with any decentralized network, sybil nodes could collude to spy or cause mayhem. Due to the gossip nature of Onionr, sybil nodes would have a hard time fully stopping the network. In terms of spying, they could not conclusively prove the origin of messages due to the multiple transport nature of the network and layering behind Tor/etc.
## Tor configuration
When managed by Onionr, Tor has a control port password that gets stored in Onionr config.
Tor is also configured to reject requests to non-onion services, which helps to stop redirect based denial of service attacks.
## Web security
Onionr secures both it's main web APIs with anti-dns-rebinding logic, which validates the host header used in connections to it. This is to prevent exfiltration of data and side channel deanonymization.
Onionr secures the client API with a token that must be passed in most requests, with the exception of static API files. This is to prevent CSRF and side channel deanonymization.
Onionr binds most services to random loopback addresses to reduce all cross-site web attacks, including discovery of Onionr on a computer from a normal website. This is not supported on Mac because Mac does not support non 'typical' loopback addresses.
Onionr has a strict content-security-policy, rejecting all non-localhost requests and denying inline scripts and similar insecure sources.

9
docs/dev/selected-papers.md

@ -0,0 +1,9 @@
# Interesting papers related to Onionr development
A paper being listed here is not end-all-be-all endorsement of every detail inside.
* [Epidemic Routing for Partially-Connected Ad Hoc Networks](https://web.archive.org/web/20200208074703/http://issg.cs.duke.edu/epidemic/epidemic.pdf)
* [Freenet: A distibuted decentralized information storage and retrieval system](https://freenetproject.org/assets/papers/ddisrs.pdf)
* [Protecting Free Expression Online with Freenet](https://freenetproject.org/assets/papers/ddisrs.pdf)
* [Bitmessage: A Peer‐to‐Peer Message Authentication and Delivery System](https://archive.org/details/BitmessageWhitepaper/)
* [MuON: Epidemic based Mutual Anonymity](https://web.archive.org/web/20060901153544/http://www.csl.mtu.edu/cs6461/www/Reading/MuON_ICNP2005.pdf)

63
docs/dev/setup.md

@ -1,13 +1,72 @@
<h1 align="center">Onionr Developer Guide</h1>
This page assumes that Onionr is already installed and normal user requirements are setup.
The Onionr development environment is simple. All one really needs is a supported Python version (currently 3.7-3.8 as of writing).
There are additional requirements specified in requirements-dev.txt
Intended to be used from VSCode, there are scripts in scripts/ named enable/disable-dev-config.py.
**Developers agree to the [CoC](../../CODE_OF_CONDUCT.md) and to contribute new code under GPLv3 or later**. Developers should stick to PEP8 in most cases, and write unittests or integration tests where possible.
## Developer Scripts
run-onionr-node.py can be used to start a node with specific parameters
Intended to be used from VSCode (but could work otherwise), there are scripts in scripts/ named enable/disable-dev-config.py.
These make modifications to the default config for the purpose of making testing Onionr nodes easier.
Be sure to disable it again before pushing work.
Generally, one should disable bootstrap list usage when making non trivial changes. This is a config option: general.use_bootstrap_list.
There are also scripts to generate new tests.
*When adjusting PoW, it will make your node not compatible with the existing network*
Generally, one should disable bootstrap list usage when testing non trivial changes. This is a config option: general.use_bootstrap_list. and can be configured through enable-dev-config.py and run-onionr-node.py
# Current state of Onionr [2021-01-14]
Onionr in it's current form is functional, albeit buggy.
## Current major components
Onionr runs via two main HTTP gevent servers serving Flask apps.
Dir: apiservers
* 1 Parent app hosts all public API endpoints for the Tor transport.
* 1 Parent app hosts all UI-related files and endpoints. Some commands and internal modules interact with this API as well
* The HTTP servers have strict anti-dns-rebinding and CSRF countermeasures, so there is a script to craft requests to the UI-related API in scripts/
* Block storage is currently handled via metadata in sqlite (mostly defunct now), and block data storage in a different database. This is in blocks/ in running Onionr daemon data directory
* cryptography is currently handled in onionrcrypto/ except for ephemeral messages which are handled by onionr
* Transport clients run from looping threads mostly created in communicator/__init__.py, this includes block lookups and uploading on the Tor transport
## Road map
There are several big ways Onionr will be improved in the next major version:
* Migration to the [new modular block system](https://git.voidnet.tech/kev/onionrblocks)
* Probability proof of work -> verifiable delay function
* Friend system built on top of signing proofs (Private networks?)
* Gossip transport improvements such as with neighbor improvements. See streamfill/ and [simple gossip](https://github.com/onion-sudo/simplegossip) for incomplete experiments
* Finish removing "communicator"
* I2P transports
* Gossip
* Torrents (patch for sha1?)
* Modular transports
* Currently transports are just threads coupled together.
* It would be better if there was a generic way to tell any loaded transport what blocks are wanted and feed back received blocks to the database
* Migrate to SafeDB for peers and blocks
* SafeDB wrapper that contacts http endpoint to store if it is running, otherwise directly open DB
* Separate UI logic from daemon. Refactor code to
* Improve cryptography
* Restore phrases or deterministic keys (generate key from password, be very careful)
* Change identities to be dual keys (ed25519+curve25519)
* Finish treasurechest
* Interact via [named pipes](https://en.wikipedia.org/wiki/Named_pipe)
* Ephemeral key management
* Encrypt/decrypt/sign/verify functions to keep key out of main memory
* PGP-like symmetric messages

28
docs/docker.md

@ -0,0 +1,28 @@
# Running Onionr in Docker
A Dockerfile is included in the root directory of Onionr.
In Docker version 20.10 (and probably others), there is a strange bug where Onionr must be run with -it or stdout will be garbled and it may hang.
## Clone and build the image
`$ git clone https://git.voidnet.tech/kev/onionr/`
`$ cd onionr`
`$ sudo docker build -t onionr .`
## Run Onionr
`$ sudo docker run -it -p 8080:8080 onionr`
Onionr will be accessible over any network interface by default, so make sure to either change the entry point bind-address argument or set a firewall rule.
That said, Onionr does protect it's interface by default with a web token, which will be shown in stdout.
**However, anyone who can access the port may be able to see what Onionr sites you have saved and potentially deanonymize your node**
## View the UI
Visit the address and port for the machine Onionr is running on, for example: http://192.168.1.5:8080/#<long-token-taken-from-stdout>
If you want a secure connection to the interface, either use a proxy such as nginx or caddy, or use [SSH tunneling](./vps-cloud-guide.md).

24
docs/faq.md

@ -0,0 +1,24 @@
<h1 align="center">Onionr FAQ</h1>