Compare commits
No commits in common. "2eea681e98218ec3efc329efa757e72d97552fd0" and "a517ad3aeed385a0fec3adae505215064d6600a4" have entirely different histories.
2eea681e98
...
a517ad3aee
@ -88,9 +88,9 @@ Master may be unstable, you should use the latest release tag. (checkout via git
|
|||||||
* You may need build-essentials or the equivalent of your platform
|
* You may need build-essentials or the equivalent of your platform
|
||||||
* Clone the git repo: `$ git clone https://gitlab.com/beardog/onionr --tags`
|
* Clone the git repo: `$ git clone https://gitlab.com/beardog/onionr --tags`
|
||||||
* cd into install direction: `$ cd onionr/`
|
* 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-x86-all-plugins.txt`
|
* Install the Python dependencies ([virtualenv strongly recommended](https://virtualenv.pypa.io/en/stable/userguide/)): `$ pip3 install --require-hashes -r requirements.txt`
|
||||||
|
|
||||||
Require-hashes is suggested for supply-chain security but is optional. The hashes are not correct for ARM machines. If you are just running a node or want a bare-bones install you can use requirements-base-x86.txt and selectively install the requirements.txt files in static-data/official-plugins/ subdirectories
|
Require-hashes is suggested for security but is optional. The hashes are not correct for ARM machines.
|
||||||
|
|
||||||
## Run Onionr
|
## Run Onionr
|
||||||
|
|
||||||
|
@ -1,247 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is autogenerated by pip-compile with python 3.10
|
|
||||||
# To update, run:
|
|
||||||
#
|
|
||||||
# pip-compile --generate-hashes --output-file=requirements-base-x86.txt requirements-base.in
|
|
||||||
#
|
|
||||||
cffi==1.15.1 \
|
|
||||||
--hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
|
|
||||||
--hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \
|
|
||||||
--hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \
|
|
||||||
--hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \
|
|
||||||
--hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \
|
|
||||||
--hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \
|
|
||||||
--hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \
|
|
||||||
--hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \
|
|
||||||
--hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \
|
|
||||||
--hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \
|
|
||||||
--hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \
|
|
||||||
--hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \
|
|
||||||
--hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \
|
|
||||||
--hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \
|
|
||||||
--hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \
|
|
||||||
--hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \
|
|
||||||
--hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \
|
|
||||||
--hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \
|
|
||||||
--hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \
|
|
||||||
--hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \
|
|
||||||
--hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \
|
|
||||||
--hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \
|
|
||||||
--hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \
|
|
||||||
--hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \
|
|
||||||
--hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \
|
|
||||||
--hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \
|
|
||||||
--hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \
|
|
||||||
--hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \
|
|
||||||
--hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \
|
|
||||||
--hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \
|
|
||||||
--hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \
|
|
||||||
--hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \
|
|
||||||
--hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \
|
|
||||||
--hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \
|
|
||||||
--hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \
|
|
||||||
--hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \
|
|
||||||
--hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \
|
|
||||||
--hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \
|
|
||||||
--hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \
|
|
||||||
--hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \
|
|
||||||
--hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \
|
|
||||||
--hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \
|
|
||||||
--hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \
|
|
||||||
--hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \
|
|
||||||
--hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \
|
|
||||||
--hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \
|
|
||||||
--hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \
|
|
||||||
--hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \
|
|
||||||
--hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \
|
|
||||||
--hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \
|
|
||||||
--hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \
|
|
||||||
--hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \
|
|
||||||
--hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \
|
|
||||||
--hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \
|
|
||||||
--hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \
|
|
||||||
--hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \
|
|
||||||
--hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \
|
|
||||||
--hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \
|
|
||||||
--hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \
|
|
||||||
--hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \
|
|
||||||
--hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \
|
|
||||||
--hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \
|
|
||||||
--hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
|
|
||||||
--hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
|
|
||||||
# via pynacl
|
|
||||||
filenuke==0.0.0 \
|
|
||||||
--hash=sha256:147011c0125121469cae0a8a7f4df399f470e54aa29a08f2d2c099bf0118dcee \
|
|
||||||
--hash=sha256:c55535dcecfdb27c5f4ce664d46e115950b5429763b5db75c198053646177f8f
|
|
||||||
# via -r requirements-base.in
|
|
||||||
kasten==3.0.0 \
|
|
||||||
--hash=sha256:52894af46d6e1339f0d5fa8961892b292f99176848bce11877fe4a435b6782e5 \
|
|
||||||
--hash=sha256:b22ebdc5f475c2ef9ab74abc36552add0b37732a7ce2be6bd7977ee41b2163b4
|
|
||||||
# via onionrblocks
|
|
||||||
mimcvdf==1.2.1 \
|
|
||||||
--hash=sha256:7c837c46cfb9dce4ba895bc706a69646d4d5185c66aeaa333b5cfaa9a7d06dc4
|
|
||||||
# via kasten
|
|
||||||
msgpack==1.0.4 \
|
|
||||||
--hash=sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467 \
|
|
||||||
--hash=sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae \
|
|
||||||
--hash=sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92 \
|
|
||||||
--hash=sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef \
|
|
||||||
--hash=sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624 \
|
|
||||||
--hash=sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227 \
|
|
||||||
--hash=sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88 \
|
|
||||||
--hash=sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9 \
|
|
||||||
--hash=sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8 \
|
|
||||||
--hash=sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd \
|
|
||||||
--hash=sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6 \
|
|
||||||
--hash=sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55 \
|
|
||||||
--hash=sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e \
|
|
||||||
--hash=sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2 \
|
|
||||||
--hash=sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44 \
|
|
||||||
--hash=sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6 \
|
|
||||||
--hash=sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9 \
|
|
||||||
--hash=sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab \
|
|
||||||
--hash=sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae \
|
|
||||||
--hash=sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa \
|
|
||||||
--hash=sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9 \
|
|
||||||
--hash=sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e \
|
|
||||||
--hash=sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250 \
|
|
||||||
--hash=sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce \
|
|
||||||
--hash=sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075 \
|
|
||||||
--hash=sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236 \
|
|
||||||
--hash=sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae \
|
|
||||||
--hash=sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e \
|
|
||||||
--hash=sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f \
|
|
||||||
--hash=sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08 \
|
|
||||||
--hash=sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6 \
|
|
||||||
--hash=sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d \
|
|
||||||
--hash=sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43 \
|
|
||||||
--hash=sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1 \
|
|
||||||
--hash=sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6 \
|
|
||||||
--hash=sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0 \
|
|
||||||
--hash=sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c \
|
|
||||||
--hash=sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff \
|
|
||||||
--hash=sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db \
|
|
||||||
--hash=sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243 \
|
|
||||||
--hash=sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661 \
|
|
||||||
--hash=sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba \
|
|
||||||
--hash=sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e \
|
|
||||||
--hash=sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb \
|
|
||||||
--hash=sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52 \
|
|
||||||
--hash=sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6 \
|
|
||||||
--hash=sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1 \
|
|
||||||
--hash=sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f \
|
|
||||||
--hash=sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da \
|
|
||||||
--hash=sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f \
|
|
||||||
--hash=sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c \
|
|
||||||
--hash=sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8
|
|
||||||
# via kasten
|
|
||||||
onionrblocks==7.0.0 \
|
|
||||||
--hash=sha256:53e90964371076d9daf2ed0790b21f174ef3321f4f1808209cc6dd9b7ff6d8ff \
|
|
||||||
--hash=sha256:54af28d0be856209525646c4ef9f977f95f0ae1329b2cc023b351317c9d0eef7
|
|
||||||
# via -r requirements-base.in
|
|
||||||
ordered-set==4.1.0 \
|
|
||||||
--hash=sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562 \
|
|
||||||
--hash=sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8
|
|
||||||
# via -r requirements-base.in
|
|
||||||
psutil==5.9.1 \
|
|
||||||
--hash=sha256:068935df39055bf27a29824b95c801c7a5130f118b806eee663cad28dca97685 \
|
|
||||||
--hash=sha256:0904727e0b0a038830b019551cf3204dd48ef5c6868adc776e06e93d615fc5fc \
|
|
||||||
--hash=sha256:0f15a19a05f39a09327345bc279c1ba4a8cfb0172cc0d3c7f7d16c813b2e7d36 \
|
|
||||||
--hash=sha256:19f36c16012ba9cfc742604df189f2f28d2720e23ff7d1e81602dbe066be9fd1 \
|
|
||||||
--hash=sha256:20b27771b077dcaa0de1de3ad52d22538fe101f9946d6dc7869e6f694f079329 \
|
|
||||||
--hash=sha256:28976df6c64ddd6320d281128817f32c29b539a52bdae5e192537bc338a9ec81 \
|
|
||||||
--hash=sha256:29a442e25fab1f4d05e2655bb1b8ab6887981838d22effa2396d584b740194de \
|
|
||||||
--hash=sha256:3054e923204b8e9c23a55b23b6df73a8089ae1d075cb0bf711d3e9da1724ded4 \
|
|
||||||
--hash=sha256:32c52611756096ae91f5d1499fe6c53b86f4a9ada147ee42db4991ba1520e574 \
|
|
||||||
--hash=sha256:3a76ad658641172d9c6e593de6fe248ddde825b5866464c3b2ee26c35da9d237 \
|
|
||||||
--hash=sha256:44d1826150d49ffd62035785a9e2c56afcea66e55b43b8b630d7706276e87f22 \
|
|
||||||
--hash=sha256:4b6750a73a9c4a4e689490ccb862d53c7b976a2a35c4e1846d049dcc3f17d83b \
|
|
||||||
--hash=sha256:56960b9e8edcca1456f8c86a196f0c3d8e3e361320071c93378d41445ffd28b0 \
|
|
||||||
--hash=sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954 \
|
|
||||||
--hash=sha256:58678bbadae12e0db55186dc58f2888839228ac9f41cc7848853539b70490021 \
|
|
||||||
--hash=sha256:645bd4f7bb5b8633803e0b6746ff1628724668681a434482546887d22c7a9537 \
|
|
||||||
--hash=sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87 \
|
|
||||||
--hash=sha256:79c9108d9aa7fa6fba6e668b61b82facc067a6b81517cab34d07a84aa89f3df0 \
|
|
||||||
--hash=sha256:91c7ff2a40c373d0cc9121d54bc5f31c4fa09c346528e6a08d1845bce5771ffc \
|
|
||||||
--hash=sha256:9272167b5f5fbfe16945be3db475b3ce8d792386907e673a209da686176552af \
|
|
||||||
--hash=sha256:944c4b4b82dc4a1b805329c980f270f170fdc9945464223f2ec8e57563139cf4 \
|
|
||||||
--hash=sha256:a6a11e48cb93a5fa606306493f439b4aa7c56cb03fc9ace7f6bfa21aaf07c453 \
|
|
||||||
--hash=sha256:a8746bfe4e8f659528c5c7e9af5090c5a7d252f32b2e859c584ef7d8efb1e689 \
|
|
||||||
--hash=sha256:abd9246e4cdd5b554a2ddd97c157e292ac11ef3e7af25ac56b08b455c829dca8 \
|
|
||||||
--hash=sha256:b14ee12da9338f5e5b3a3ef7ca58b3cba30f5b66f7662159762932e6d0b8f680 \
|
|
||||||
--hash=sha256:b88f75005586131276634027f4219d06e0561292be8bd6bc7f2f00bdabd63c4e \
|
|
||||||
--hash=sha256:c7be9d7f5b0d206f0bbc3794b8e16fb7dbc53ec9e40bbe8787c6f2d38efcf6c9 \
|
|
||||||
--hash=sha256:d2d006286fbcb60f0b391741f520862e9b69f4019b4d738a2a45728c7e952f1b \
|
|
||||||
--hash=sha256:db417f0865f90bdc07fa30e1aadc69b6f4cad7f86324b02aa842034efe8d8c4d \
|
|
||||||
--hash=sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2 \
|
|
||||||
--hash=sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5 \
|
|
||||||
--hash=sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676
|
|
||||||
# via -r requirements-base.in
|
|
||||||
pycparser==2.21 \
|
|
||||||
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
|
|
||||||
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
|
|
||||||
# via cffi
|
|
||||||
pynacl==1.5.0 \
|
|
||||||
--hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \
|
|
||||||
--hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \
|
|
||||||
--hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \
|
|
||||||
--hash=sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1 \
|
|
||||||
--hash=sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92 \
|
|
||||||
--hash=sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff \
|
|
||||||
--hash=sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba \
|
|
||||||
--hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \
|
|
||||||
--hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \
|
|
||||||
--hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543
|
|
||||||
# via onionrblocks
|
|
||||||
ujson==5.4.0 \
|
|
||||||
--hash=sha256:025758cf6561af6986d77cd4af9367ab56dde5c7c50f13f59e6964b4b25df73e \
|
|
||||||
--hash=sha256:0551c1ba0bc9e05b69d9c18266dbc93252b5fa3cd9940051bc88a0dd33607b19 \
|
|
||||||
--hash=sha256:05e411627e5d6ee773232960ca7307e66017f78e3fa74f7e95c3a8cc5cb05415 \
|
|
||||||
--hash=sha256:0b46aee21e5d75426c4058dfdb42f7e7b1d130c664ee5027a8dbbc50872dc32b \
|
|
||||||
--hash=sha256:0bcde3135265ecdd5714a7de4fdc167925390d7b17ca325e59980f4114c962b8 \
|
|
||||||
--hash=sha256:1120c8263f7d85e89533a2b46d80cc6def15114772010ede4d197739e111dba6 \
|
|
||||||
--hash=sha256:13297a7d501f9c8c53e409d4fa57cc574e4fbfbe8807ef2c4c7ce2e3ec933a85 \
|
|
||||||
--hash=sha256:191f88d5865740497b9827ef9b7c12f37a79872ac984e09f0901a10024019380 \
|
|
||||||
--hash=sha256:1a2e645325f844f9c890c9d956fc2d35ca91f38c857278238ef6516c2f99cf7c \
|
|
||||||
--hash=sha256:2974b17bc522ef86d98b498959d82f03c02e07d9eb08746026415298f4a4bca3 \
|
|
||||||
--hash=sha256:2d98248f1df1e1aab67e0374ab98945dd36bc1764753d71fd8aea5f296360b76 \
|
|
||||||
--hash=sha256:31bdb6d771d5ef6d37134b42211500bfe176c55d399f3317e569783dc42ed38e \
|
|
||||||
--hash=sha256:3212847d3885bfd4f5fd56cdc37645a8f8e8a80d6cb569505da22fd9eb0e1a02 \
|
|
||||||
--hash=sha256:326a96324ed9215b0bc9f1a5af324fb33900b6b0901516bcc421475d6596de0d \
|
|
||||||
--hash=sha256:381c97d326d1ec569d318cc0ae83940ea2df125ede1000871680fefd5b7fdea9 \
|
|
||||||
--hash=sha256:39bb702ca1612253b5e4b6004e0f20208c98a446606aa351f9a7ba5ceaff0eb8 \
|
|
||||||
--hash=sha256:3a0707f381f97e1287c0dbf94d95bd6c0bbf6e4eeeaa656f0076b7883010c818 \
|
|
||||||
--hash=sha256:400e4ca8a59f71398e8fa56c4d2d6f535e2a121ddb57284ec15752ffce2dd63a \
|
|
||||||
--hash=sha256:422653083c6df6cec17fdb5d6106c209aad9b0c94131c53b073980403db22167 \
|
|
||||||
--hash=sha256:511aa641a5b91d19280183b134fb6c473039d4dd82e987ac810cffba783521ac \
|
|
||||||
--hash=sha256:5df8b6369ee5ee2685fcc917f6c46b34e599c6e9a512fada6dfd752b909fa06a \
|
|
||||||
--hash=sha256:67f4e2fa81e1d99c01e7b1978ab0cbf3c9a8b663f683a709f87baad110d5b940 \
|
|
||||||
--hash=sha256:68c7f753aec490c6566fd3cd301887c413ac3a588316e446f30a4134ac665668 \
|
|
||||||
--hash=sha256:6a20f2f6e8818c1ab89dd4be6bbad3fc2ddb15287f89e7ea35f3eb849afebbd9 \
|
|
||||||
--hash=sha256:6b953e09441e307504130755e5bd6b15850178d591f66292bba4608c4f7f9b00 \
|
|
||||||
--hash=sha256:754f422aba8db8201a1073f25e2f732effc6471f8755708b16e6ebf19dd23634 \
|
|
||||||
--hash=sha256:784dbd12925845a3f0757a956447e2fd31418abb5aeaebf3aca1203195f16fd1 \
|
|
||||||
--hash=sha256:7d4c9ccd30e621e714ec24ca911ad8873567dc1ac1e5e914405ea9dd16b9d40c \
|
|
||||||
--hash=sha256:7e12272361e9722777c83b3f5b0bb91d402531f36e80c6e5fafb6acb89e897e3 \
|
|
||||||
--hash=sha256:8cce79ce47c37132373fbdf55b683883c262a3a60763130e080b8394c1201d32 \
|
|
||||||
--hash=sha256:8cd6117e33233f2de6bc896eea6a5a59b58a37db08f371157264e0ec5e51c76a \
|
|
||||||
--hash=sha256:8d472efa9c92e1b2933a22d2f1dbd5237087997136b24ac2b913bf4e8be03135 \
|
|
||||||
--hash=sha256:91edcf9978ee401119e9c8589376ae37fd3e6e75ee365c49385cb005eaff1535 \
|
|
||||||
--hash=sha256:9ae1d0094ce730e39e09656bc14074d9573cdd80adec1a55b06d8bf1f9613a01 \
|
|
||||||
--hash=sha256:aa00b746138835271653b0c3da171d2a8b510c579381f71e8b8e03484d50d825 \
|
|
||||||
--hash=sha256:aaa77af91df3f71858a1f792c74d3f2d3abf3875f93ab1a2b9a24b3797743b02 \
|
|
||||||
--hash=sha256:b045ca5497a950cc3492840adb3bcb3b9e305ed6599ed14c6aeaa08011aa463f \
|
|
||||||
--hash=sha256:b40a3757a563ef77c3f2f9ea1732c2924e8b3b2bda3fa89513f949472ad40b6e \
|
|
||||||
--hash=sha256:baa76a6f707a6d22437fe9c7ec9719672fb04d4d9435a3e80ee9b1aaeb2089d9 \
|
|
||||||
--hash=sha256:cec010d318a0238b1333ea9f40d5603d374cc026c29c4471e2661712c6682da1 \
|
|
||||||
--hash=sha256:dd0d4ec694cab8a0a4d85f45f81ae0065465c4670f0db72ba48d6c4e7ae42834 \
|
|
||||||
--hash=sha256:e2a9ddb5c6d1427056b8d62a1a172a18ae522b14d9ba5996b8281b09cba87edd \
|
|
||||||
--hash=sha256:e844be0831042aa91e847e5ab03bddd1089ab1a8dd0a1bf90411abf864f058b2 \
|
|
||||||
--hash=sha256:e91947fda8354ea7faf698b084ebcdbabd239e7b15d8436fb74394f59a207ac9 \
|
|
||||||
--hash=sha256:ea7fbc540bc04d5b05e5cd54e60ee8745ac665eedf2bad2ba9d12d5c7a7b7d2e \
|
|
||||||
--hash=sha256:ee29cf5cfc1e841708297633e1ce749aa851fb96830bbe51f2e5940741ff2441 \
|
|
||||||
--hash=sha256:ef985eb2770900a485431910bd3f333b56d1a34b65f8c26a6ed8e8adf55f98d9 \
|
|
||||||
--hash=sha256:f5c547d49a7e9d3f231e9323171bbbbcef63173fb007a2787cd4f05ac6269315 \
|
|
||||||
--hash=sha256:fbea46c0fbc1c3bc8f957afd8dbb25b4ea3a356e18ee6dd79ace6cf32bd4cff7 \
|
|
||||||
--hash=sha256:fd82932aaa224abd7d01e823b77aef9970f5ac1695027331d99e7f5fda9d37f5
|
|
||||||
# via -r requirements-base.in
|
|
@ -1,6 +0,0 @@
|
|||||||
psutil==5.9.1
|
|
||||||
ujson==5.4.0
|
|
||||||
ordered-set==4.1.0
|
|
||||||
# These two are also by Kevin
|
|
||||||
filenuke==0.0.0
|
|
||||||
onionrblocks==7.0.0
|
|
@ -2,7 +2,7 @@
|
|||||||
# This file is autogenerated by pip-compile with python 3.10
|
# This file is autogenerated by pip-compile with python 3.10
|
||||||
# To update, run:
|
# To update, run:
|
||||||
#
|
#
|
||||||
# pip-compile --generate-hashes --output-file=requirements-x86-all-plugins.txt requirements-base.in static-data/official-plugins/rpc/requirements.in static-data/official-plugins/tor/requirements.in static-data/official-plugins/wot/requirements.in
|
# pip-compile --generate-hashes requirements.in
|
||||||
#
|
#
|
||||||
autocommand==2.2.1 \
|
autocommand==2.2.1 \
|
||||||
--hash=sha256:85d03044c2a1fc1c7844ac41545045927aecde0cbaf8ea28b88e0cd8588ce5d3 \
|
--hash=sha256:85d03044c2a1fc1c7844ac41545045927aecde0cbaf8ea28b88e0cd8588ce5d3 \
|
||||||
@ -74,7 +74,7 @@ cffi==1.15.1 \
|
|||||||
--hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
|
--hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
|
||||||
--hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
|
--hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
|
||||||
# via
|
# via
|
||||||
# -r static-data/official-plugins/wot/requirements.in
|
# -r requirements.in
|
||||||
# pynacl
|
# pynacl
|
||||||
cheroot==8.6.0 \
|
cheroot==8.6.0 \
|
||||||
--hash=sha256:366adf6e7cac9555486c2d1be6297993022eff6f8c4655c1443268cca3f08e25 \
|
--hash=sha256:366adf6e7cac9555486c2d1be6297993022eff6f8c4655c1443268cca3f08e25 \
|
||||||
@ -83,11 +83,11 @@ cheroot==8.6.0 \
|
|||||||
cherrypy==18.8.0 \
|
cherrypy==18.8.0 \
|
||||||
--hash=sha256:9b48cfba8a2f16d5b6419cc657e6d51db005ba35c5e3824e4728bb03bbc7ef9b \
|
--hash=sha256:9b48cfba8a2f16d5b6419cc657e6d51db005ba35c5e3824e4728bb03bbc7ef9b \
|
||||||
--hash=sha256:b56097025dc78a76a59db551b3a82871c6b3a0107b80b12ff759e4c0b3b947ce
|
--hash=sha256:b56097025dc78a76a59db551b3a82871c6b3a0107b80b12ff759e4c0b3b947ce
|
||||||
# via -r static-data/official-plugins/rpc/requirements.in
|
# via -r requirements.in
|
||||||
filenuke==0.0.0 \
|
filenuke==0.0.0 \
|
||||||
--hash=sha256:147011c0125121469cae0a8a7f4df399f470e54aa29a08f2d2c099bf0118dcee \
|
--hash=sha256:147011c0125121469cae0a8a7f4df399f470e54aa29a08f2d2c099bf0118dcee \
|
||||||
--hash=sha256:c55535dcecfdb27c5f4ce664d46e115950b5429763b5db75c198053646177f8f
|
--hash=sha256:c55535dcecfdb27c5f4ce664d46e115950b5429763b5db75c198053646177f8f
|
||||||
# via -r requirements-base.in
|
# via -r requirements.in
|
||||||
inflect==6.0.0 \
|
inflect==6.0.0 \
|
||||||
--hash=sha256:0bc1516ec2725e2d8221707a612245093cb6f1cea209cfd8cbd4fc5e96fa6365 \
|
--hash=sha256:0bc1516ec2725e2d8221707a612245093cb6f1cea209cfd8cbd4fc5e96fa6365 \
|
||||||
--hash=sha256:e3b85d65a296843268f35f4136283ad7c012a129375db1529d49b4b01ecb400b
|
--hash=sha256:e3b85d65a296843268f35f4136283ad7c012a129375db1529d49b4b01ecb400b
|
||||||
@ -111,14 +111,14 @@ jaraco-functools==3.5.1 \
|
|||||||
# cheroot
|
# cheroot
|
||||||
# jaraco-text
|
# jaraco-text
|
||||||
# tempora
|
# tempora
|
||||||
jaraco-text==3.9.1 \
|
jaraco-text==3.9.0 \
|
||||||
--hash=sha256:3ca615c4135e151d21206075ec4aface8a2fbc3e68437fe709a6541428a635f9 \
|
--hash=sha256:4b2dc3678994de601e3e5b6f554eeb8445651b7ab984893c5e9ac44564033077 \
|
||||||
--hash=sha256:d57cd4448a588020318425e04194e897f96fc23b92b82ff9308a24d5cbf2b3fb
|
--hash=sha256:810bc4aee7329e30bec8c6c6bab1b6ef149359ca4b98928e42178345ed7d7bd8
|
||||||
# via jaraco-collections
|
# via jaraco-collections
|
||||||
json-rpc==1.13.0 \
|
json-rpc==1.13.0 \
|
||||||
--hash=sha256:84b45058e5ba95f49c7b6afcf7e03ab86bee89bf2c01f3ad8dd41fe114fc1f84 \
|
--hash=sha256:84b45058e5ba95f49c7b6afcf7e03ab86bee89bf2c01f3ad8dd41fe114fc1f84 \
|
||||||
--hash=sha256:def0dbcf5b7084fc31d677f2f5990d988d06497f2f47f13024274cfb2d5d7589
|
--hash=sha256:def0dbcf5b7084fc31d677f2f5990d988d06497f2f47f13024274cfb2d5d7589
|
||||||
# via -r static-data/official-plugins/rpc/requirements.in
|
# via -r requirements.in
|
||||||
kasten==3.0.0 \
|
kasten==3.0.0 \
|
||||||
--hash=sha256:52894af46d6e1339f0d5fa8961892b292f99176848bce11877fe4a435b6782e5 \
|
--hash=sha256:52894af46d6e1339f0d5fa8961892b292f99176848bce11877fe4a435b6782e5 \
|
||||||
--hash=sha256:b22ebdc5f475c2ef9ab74abc36552add0b37732a7ce2be6bd7977ee41b2163b4
|
--hash=sha256:b22ebdc5f475c2ef9ab74abc36552add0b37732a7ce2be6bd7977ee41b2163b4
|
||||||
@ -135,68 +135,54 @@ more-itertools==8.14.0 \
|
|||||||
# jaraco-classes
|
# jaraco-classes
|
||||||
# jaraco-functools
|
# jaraco-functools
|
||||||
# jaraco-text
|
# jaraco-text
|
||||||
msgpack==1.0.4 \
|
msgpack==1.0.3 \
|
||||||
--hash=sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467 \
|
--hash=sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc \
|
||||||
--hash=sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae \
|
--hash=sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147 \
|
||||||
--hash=sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92 \
|
--hash=sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3 \
|
||||||
--hash=sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef \
|
--hash=sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba \
|
||||||
--hash=sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624 \
|
--hash=sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39 \
|
||||||
--hash=sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227 \
|
--hash=sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85 \
|
||||||
--hash=sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88 \
|
--hash=sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9 \
|
||||||
--hash=sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9 \
|
--hash=sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a \
|
||||||
--hash=sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8 \
|
--hash=sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec \
|
||||||
--hash=sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd \
|
--hash=sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88 \
|
||||||
--hash=sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6 \
|
--hash=sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e \
|
||||||
--hash=sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55 \
|
--hash=sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a \
|
||||||
--hash=sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e \
|
--hash=sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b \
|
||||||
--hash=sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2 \
|
--hash=sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1 \
|
||||||
--hash=sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44 \
|
--hash=sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3 \
|
||||||
--hash=sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6 \
|
--hash=sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef \
|
||||||
--hash=sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9 \
|
--hash=sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079 \
|
||||||
--hash=sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab \
|
--hash=sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52 \
|
||||||
--hash=sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae \
|
--hash=sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a \
|
||||||
--hash=sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa \
|
--hash=sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a \
|
||||||
--hash=sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9 \
|
--hash=sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4 \
|
||||||
--hash=sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e \
|
--hash=sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996 \
|
||||||
--hash=sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250 \
|
--hash=sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73 \
|
||||||
--hash=sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce \
|
--hash=sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a \
|
||||||
--hash=sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075 \
|
--hash=sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920 \
|
||||||
--hash=sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236 \
|
--hash=sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7 \
|
||||||
--hash=sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae \
|
--hash=sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d \
|
||||||
--hash=sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e \
|
--hash=sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770 \
|
||||||
--hash=sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f \
|
--hash=sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50 \
|
||||||
--hash=sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08 \
|
--hash=sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2 \
|
||||||
--hash=sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6 \
|
--hash=sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2 \
|
||||||
--hash=sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d \
|
--hash=sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d \
|
||||||
--hash=sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43 \
|
--hash=sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea \
|
||||||
--hash=sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1 \
|
--hash=sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611
|
||||||
--hash=sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6 \
|
|
||||||
--hash=sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0 \
|
|
||||||
--hash=sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c \
|
|
||||||
--hash=sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff \
|
|
||||||
--hash=sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db \
|
|
||||||
--hash=sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243 \
|
|
||||||
--hash=sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661 \
|
|
||||||
--hash=sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba \
|
|
||||||
--hash=sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e \
|
|
||||||
--hash=sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb \
|
|
||||||
--hash=sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52 \
|
|
||||||
--hash=sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6 \
|
|
||||||
--hash=sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1 \
|
|
||||||
--hash=sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f \
|
|
||||||
--hash=sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da \
|
|
||||||
--hash=sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f \
|
|
||||||
--hash=sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c \
|
|
||||||
--hash=sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8
|
|
||||||
# via kasten
|
# via kasten
|
||||||
|
niceware==0.2.1 \
|
||||||
|
--hash=sha256:0f8b192f2a1e800e068474f6e208be9c7e2857664b33a96f4045340de4e5c69c \
|
||||||
|
--hash=sha256:cf2dc0e1567d36d067c61b32fed0f1b9c4534ed511f9eeead4ba548d03b5c9eb
|
||||||
|
# via -r requirements.in
|
||||||
onionrblocks==7.0.0 \
|
onionrblocks==7.0.0 \
|
||||||
--hash=sha256:53e90964371076d9daf2ed0790b21f174ef3321f4f1808209cc6dd9b7ff6d8ff \
|
--hash=sha256:53e90964371076d9daf2ed0790b21f174ef3321f4f1808209cc6dd9b7ff6d8ff \
|
||||||
--hash=sha256:54af28d0be856209525646c4ef9f977f95f0ae1329b2cc023b351317c9d0eef7
|
--hash=sha256:54af28d0be856209525646c4ef9f977f95f0ae1329b2cc023b351317c9d0eef7
|
||||||
# via -r requirements-base.in
|
# via -r requirements.in
|
||||||
ordered-set==4.1.0 \
|
ordered-set==4.1.0 \
|
||||||
--hash=sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562 \
|
--hash=sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562 \
|
||||||
--hash=sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8
|
--hash=sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8
|
||||||
# via -r requirements-base.in
|
# via -r requirements.in
|
||||||
portend==3.1.0 \
|
portend==3.1.0 \
|
||||||
--hash=sha256:239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4 \
|
--hash=sha256:239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4 \
|
||||||
--hash=sha256:9e735cee3a5c1961f09e3f3ba6dc498198c2d70b473d98d0d1504b8d1e7a3d61
|
--hash=sha256:9e735cee3a5c1961f09e3f3ba6dc498198c2d70b473d98d0d1504b8d1e7a3d61
|
||||||
@ -234,48 +220,46 @@ psutil==5.9.1 \
|
|||||||
--hash=sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2 \
|
--hash=sha256:e7e10454cb1ab62cc6ce776e1c135a64045a11ec4c6d254d3f7689c16eb3efd2 \
|
||||||
--hash=sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5 \
|
--hash=sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5 \
|
||||||
--hash=sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676
|
--hash=sha256:fea896b54f3a4ae6f790ac1d017101252c93f6fe075d0e7571543510f11d2676
|
||||||
# via -r requirements-base.in
|
# via -r requirements.in
|
||||||
pycparser==2.21 \
|
pycparser==2.19 \
|
||||||
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
|
--hash=sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3
|
||||||
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
|
|
||||||
# via cffi
|
# via cffi
|
||||||
pydantic==1.10.2 \
|
pydantic==1.9.2 \
|
||||||
--hash=sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42 \
|
--hash=sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44 \
|
||||||
--hash=sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624 \
|
--hash=sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d \
|
||||||
--hash=sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e \
|
--hash=sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84 \
|
||||||
--hash=sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559 \
|
--hash=sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555 \
|
||||||
--hash=sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709 \
|
--hash=sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7 \
|
||||||
--hash=sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9 \
|
--hash=sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131 \
|
||||||
--hash=sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d \
|
--hash=sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8 \
|
||||||
--hash=sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52 \
|
--hash=sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3 \
|
||||||
--hash=sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda \
|
--hash=sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56 \
|
||||||
--hash=sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912 \
|
--hash=sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0 \
|
||||||
--hash=sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c \
|
--hash=sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4 \
|
||||||
--hash=sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525 \
|
--hash=sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453 \
|
||||||
--hash=sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe \
|
--hash=sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044 \
|
||||||
--hash=sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41 \
|
--hash=sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e \
|
||||||
--hash=sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b \
|
--hash=sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15 \
|
||||||
--hash=sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283 \
|
--hash=sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb \
|
||||||
--hash=sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965 \
|
--hash=sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001 \
|
||||||
--hash=sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c \
|
--hash=sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d \
|
||||||
--hash=sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410 \
|
--hash=sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3 \
|
||||||
--hash=sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5 \
|
--hash=sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e \
|
||||||
--hash=sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116 \
|
--hash=sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f \
|
||||||
--hash=sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98 \
|
--hash=sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c \
|
||||||
--hash=sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f \
|
--hash=sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b \
|
||||||
--hash=sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644 \
|
--hash=sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8 \
|
||||||
--hash=sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13 \
|
--hash=sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567 \
|
||||||
--hash=sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd \
|
--hash=sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979 \
|
||||||
--hash=sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254 \
|
--hash=sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326 \
|
||||||
--hash=sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6 \
|
--hash=sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb \
|
||||||
--hash=sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488 \
|
--hash=sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f \
|
||||||
--hash=sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5 \
|
--hash=sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa \
|
||||||
--hash=sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c \
|
--hash=sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747 \
|
||||||
--hash=sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1 \
|
--hash=sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801 \
|
||||||
--hash=sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a \
|
--hash=sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55 \
|
||||||
--hash=sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2 \
|
--hash=sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08 \
|
||||||
--hash=sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d \
|
--hash=sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76
|
||||||
--hash=sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236
|
|
||||||
# via inflect
|
# via inflect
|
||||||
pynacl==1.5.0 \
|
pynacl==1.5.0 \
|
||||||
--hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \
|
--hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \
|
||||||
@ -289,13 +273,13 @@ pynacl==1.5.0 \
|
|||||||
--hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \
|
--hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \
|
||||||
--hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543
|
--hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543
|
||||||
# via
|
# via
|
||||||
# -r static-data/official-plugins/wot/requirements.in
|
# -r requirements.in
|
||||||
# onionrblocks
|
# onionrblocks
|
||||||
pysocks==1.7.1 \
|
pysocks==1.7.1 \
|
||||||
--hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \
|
--hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \
|
||||||
--hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \
|
--hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \
|
||||||
--hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0
|
--hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0
|
||||||
# via -r static-data/official-plugins/tor/requirements.in
|
# via -r requirements.in
|
||||||
pytz==2022.2.1 \
|
pytz==2022.2.1 \
|
||||||
--hash=sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197 \
|
--hash=sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197 \
|
||||||
--hash=sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5
|
--hash=sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5
|
||||||
@ -306,7 +290,7 @@ six==1.16.0 \
|
|||||||
# via cheroot
|
# via cheroot
|
||||||
stem==1.8.0 \
|
stem==1.8.0 \
|
||||||
--hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
|
--hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
|
||||||
# via -r static-data/official-plugins/tor/requirements.in
|
# via -r requirements.in
|
||||||
tempora==5.0.2 \
|
tempora==5.0.2 \
|
||||||
--hash=sha256:31fa5bb33b2641026211f23e808eb8bd351901988b167d45f323c8f450ecf211 \
|
--hash=sha256:31fa5bb33b2641026211f23e808eb8bd351901988b167d45f323c8f450ecf211 \
|
||||||
--hash=sha256:e65d32ae68ad772ee738d802689f689b3f883e165e8dadd39aa89ef317b12b99
|
--hash=sha256:e65d32ae68ad772ee738d802689f689b3f883e165e8dadd39aa89ef317b12b99
|
||||||
@ -366,7 +350,11 @@ ujson==5.4.0 \
|
|||||||
--hash=sha256:f5c547d49a7e9d3f231e9323171bbbbcef63173fb007a2787cd4f05ac6269315 \
|
--hash=sha256:f5c547d49a7e9d3f231e9323171bbbbcef63173fb007a2787cd4f05ac6269315 \
|
||||||
--hash=sha256:fbea46c0fbc1c3bc8f957afd8dbb25b4ea3a356e18ee6dd79ace6cf32bd4cff7 \
|
--hash=sha256:fbea46c0fbc1c3bc8f957afd8dbb25b4ea3a356e18ee6dd79ace6cf32bd4cff7 \
|
||||||
--hash=sha256:fd82932aaa224abd7d01e823b77aef9970f5ac1695027331d99e7f5fda9d37f5
|
--hash=sha256:fd82932aaa224abd7d01e823b77aef9970f5ac1695027331d99e7f5fda9d37f5
|
||||||
# via -r requirements-base.in
|
# via -r requirements.in
|
||||||
|
unpaddedbase32==0.2.0 \
|
||||||
|
--hash=sha256:4aacee75f8fd6c8cf129842ecba45ca59c11bfb13dae19d86f32b48fa3715403 \
|
||||||
|
--hash=sha256:b7b780c31d27d55e66abf6c221216a35690ee8892c2daacff7f2528e229bd9c3
|
||||||
|
# via -r requirements.in
|
||||||
zc-lockfile==2.0 \
|
zc-lockfile==2.0 \
|
||||||
--hash=sha256:307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b \
|
--hash=sha256:307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b \
|
||||||
--hash=sha256:cc33599b549f0c8a248cb72f3bf32d77712de1ff7ee8814312eb6456b42c015f
|
--hash=sha256:cc33599b549f0c8a248cb72f3bf32d77712de1ff7ee8814312eb6456b42c015f
|
150
run-onionr-node.py
Executable file
150
run-onionr-node.py
Executable file
@ -0,0 +1,150 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
from threading import Thread
|
||||||
|
from time import sleep
|
||||||
|
from subprocess import DEVNULL
|
||||||
|
|
||||||
|
import ujson
|
||||||
|
from psutil import Popen
|
||||||
|
from psutil import Process
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
sys.path.append(script_dir + '/src/')
|
||||||
|
|
||||||
|
import onionrvalues
|
||||||
|
|
||||||
|
|
||||||
|
sub_script = script_dir + '/' + onionrvalues.SCRIPT_NAME
|
||||||
|
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--bind-address", help="Address to bind to. Be very careful with non-loopback",
|
||||||
|
type=str, default="")
|
||||||
|
parser.add_argument(
|
||||||
|
"--port", help="Port to bind to, must be available and possible",
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
"--use-bootstrap-file", help="Use bootstrap node list file",
|
||||||
|
type=int, default=1)
|
||||||
|
parser.add_argument(
|
||||||
|
"--show-stats", help="Display curses output of Onionr stats",
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
"--onboarding", help="Use Onionr onboarding (if first load)",
|
||||||
|
type=int, default=1)
|
||||||
|
parser.add_argument(
|
||||||
|
"--security-level", help="Set Onionr security level",
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--open-ui', help='Open onionr web ui after started',
|
||||||
|
type=int, default=1)
|
||||||
|
parser.add_argument(
|
||||||
|
'--random-localhost-ip', help='bind to random localhost IP for extra security',
|
||||||
|
type=int, default=1)
|
||||||
|
parser.add_argument(
|
||||||
|
'--use-tor', help='Use Tor transport',
|
||||||
|
type=int, default=1)
|
||||||
|
parser.add_argument(
|
||||||
|
'--private-key', help='Use existing private key',
|
||||||
|
type=str, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--animated-background', help='Animated background on webui index. Just for looks.',
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--keep-log-on-exit', help='Onionr can keep or delete its log file on exit',
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--use-upload-mixing', help='Re-upload blocks uploaded to us. Slow but more secure',
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--dev-mode',
|
||||||
|
help='Developer mode makes restarting and testing Onionr less tedious during development',
|
||||||
|
type=int, default=0)
|
||||||
|
parser.add_argument(
|
||||||
|
'--disable-plugin-list',
|
||||||
|
help='plugins to disable by name, separate with commas',
|
||||||
|
type=str, default='chat'
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--store-plaintext',
|
||||||
|
help='store plaintext blocks or not. note that encrypted blocks may not really be encrypted, but we cannot detect that',
|
||||||
|
type=int, default=1
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
p = Popen([sub_script, 'version'])
|
||||||
|
p.wait()
|
||||||
|
print("Configuring Onionr before starting daemon")
|
||||||
|
from filepaths import config_file, keys_file
|
||||||
|
from coredb import blockmetadb
|
||||||
|
import onionrcrypto
|
||||||
|
|
||||||
|
|
||||||
|
with open(config_file, 'r') as cf:
|
||||||
|
config = ujson.loads(cf.read())
|
||||||
|
|
||||||
|
|
||||||
|
if args.private_key:
|
||||||
|
priv = args.private_key
|
||||||
|
pub = onionrcrypto.cryptoutils.get_pub_key_from_priv(priv)
|
||||||
|
with open(keys_file, "a") as f:
|
||||||
|
f.write(',' + pub.decode() + ',' + priv)
|
||||||
|
config['general']['public_key'] = pub
|
||||||
|
|
||||||
|
config['plugins']['disabled'] = args.disable_plugin_list.split(',')
|
||||||
|
config['general']['dev_mode'] = False
|
||||||
|
|
||||||
|
config['general']['store_plaintext_blocks'] = True
|
||||||
|
config['general']['use_bootstrap_list'] = True
|
||||||
|
config['transports']['tor'] = True
|
||||||
|
config['general']['bind_port'] = 0 # client api server port
|
||||||
|
config['general']['bind_address'] = '' # client api server address
|
||||||
|
|
||||||
|
if args.bind_address:
|
||||||
|
config['general']['bind_address'] = args.bind_address
|
||||||
|
if args.port:
|
||||||
|
config['client']['client']['port'] = args.port
|
||||||
|
|
||||||
|
if not args.use_bootstrap_file:
|
||||||
|
config['general']['use_bootstrap_list'] = False
|
||||||
|
if not args.store_plaintext:
|
||||||
|
config['general']['store_plaintext_blocks'] = False
|
||||||
|
if args.dev_mode:
|
||||||
|
config['general']['dev_mode'] = True
|
||||||
|
if not args.onboarding:
|
||||||
|
config['onboarding']['done'] = True
|
||||||
|
if not args.random_localhost_ip:
|
||||||
|
config['general']['random_bind_ip'] = False
|
||||||
|
if not args.use_tor:
|
||||||
|
config['transports']['tor'] = False
|
||||||
|
if not args.animated_background:
|
||||||
|
config['ui']['animated_background'] = False
|
||||||
|
if args.keep_log_on_exit:
|
||||||
|
config['log']['file']['remove_on_exit'] = True
|
||||||
|
else:
|
||||||
|
config['log']['file']['remove_on_exit'] = False
|
||||||
|
|
||||||
|
config['general']['upload_mixing'] = False
|
||||||
|
if args.use_upload_mixing:
|
||||||
|
config['general']['upload_mixing'] = True
|
||||||
|
config['general']['display_header'] = False
|
||||||
|
config['general']['security_level'] = args.security_level
|
||||||
|
|
||||||
|
with open(config_file, 'w') as cf:
|
||||||
|
cf.write(ujson.dumps(config, reject_bytes=False))
|
||||||
|
|
||||||
|
if args.open_ui:
|
||||||
|
p = Popen([sub_script, 'start'])
|
||||||
|
sleep(2)
|
||||||
|
Popen([sub_script, 'openhome'])
|
||||||
|
else:
|
||||||
|
p = Popen([sub_script, 'start'])
|
||||||
|
|
||||||
|
p.wait()
|
51
run-onionr-node.sh
Executable file
51
run-onionr-node.sh
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -x
|
||||||
|
ORIG_ONIONR_RUN_DIR=`pwd`
|
||||||
|
export ORIG_ONIONR_RUN_DIR
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [[ -n "$ONIONR_DOCKER" ]]; then
|
||||||
|
[[ -f "/privkey" ]] && privkey_opt="--private-key /privkey"
|
||||||
|
[[ -n "$ONIONR_ONBOARDING" ]] || ONIONR_ONBOARDING=0
|
||||||
|
[[ -n "$ONIONR_OPEN_UI" ]] || ONIONR_OPEN_UI=0
|
||||||
|
[[ -n "$ONIONR_RANDOM_LOCALHOST_IP" ]] || ONIONR_RANDOM_LOCALHOST_IP=0
|
||||||
|
[[ -n "$ONIONR_BIND_ADDRESS" ]] || ONIONR_BIND_ADDRESS=0.0.0.0
|
||||||
|
[[ -n "$ONIONR_PORT" ]] || ONIONR_PORT=8080
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -n "$ONIONR_PRIVATE_KEY_FILE" ]] && privkey_opt="--private-key $ONIONR_PRIVATE_KEY_FILE"
|
||||||
|
[[ -n "$ONIONR_USE_BOOTSTRAP_FILE" ]] && bootstrap_opt="--use-bootstrap-file $ONIONR_USE_BOOTSTRAP_FILE"
|
||||||
|
[[ -n "$ONIONR_SHOW_STATS" ]] && show_stats_opt="--show-stats $ONIONR_SHOW_STATS"
|
||||||
|
[[ -n "$ONIONR_ONBOARDING" ]] && onboarding_opt="--onboarding $ONIONR_ONBOARDING"
|
||||||
|
[[ -n "$ONIONR_SECURITY_LEVEL" ]] && security_level_opt="--security-level $ONIONR_SECURITY_LEVEL"
|
||||||
|
[[ -n "$ONIONR_OPEN_UI" ]] && open_ui_opt="--open-ui $ONIONR_OPEN_UI"
|
||||||
|
[[ -n "$ONIONR_RANDOM_LOCALHOST_IP" ]] && random_localhost_ip_opt="--random-localhost-ip $ONIONR_RANDOM_LOCALHOST_IP"
|
||||||
|
[[ -n "$ONIONR_USE_TOR" ]] && use_tor_opt="--use-tor $ONIONR_USE_TOR"
|
||||||
|
[[ -n "$ONIONR_ANIMATED_BACKGROUND" ]] && animated_background_opt="--animated-background $ONIONR_ANIMATED_BACKGROUND"
|
||||||
|
[[ -n "$ONIONR_KEEP_LOG" ]] && keep_log_opt="--keep-log-on-exit $ONIONR_KEEP_LOG"
|
||||||
|
[[ -n "$ONIONR_USE_UPLOAD_MIXING" ]] && use_upload_mixing_opt="--use-upload-mixing $ONIONR_USE_UPLOAD_MIXING"
|
||||||
|
[[ -n "$ONIONR_DEV_MODE" ]] && dev_mode_opt="--dev-mode $ONIONR_DEV_MODE"
|
||||||
|
[[ -n "$ONIONR_DISABLE_PLUGIN_LIST" ]] && disable_plugin_list_opt=" --disable-plugin-list $ONIONR_DISABLE_PLUGIN_LIST"
|
||||||
|
[[ -n "$ONIONR_STORE_PLAINTEXT" ]] && store_plaintext_opt="--store-plaintext $ONIONR_STORE_PLAINTEXT"
|
||||||
|
[[ -n "$ONIONR_BIND_ADDRESS" ]] && bind_address_opt="--bind-address $ONIONR_BIND_ADDRESS"
|
||||||
|
[[ -n "$ONIONR_PORT" ]] && port_opt="--port $ONIONR_PORT"
|
||||||
|
|
||||||
|
|
||||||
|
python3 run-onionr-node.py \
|
||||||
|
$privkey_opt \
|
||||||
|
$bootstrap_opt \
|
||||||
|
$show_stats_opt \
|
||||||
|
$onboarding_opt \
|
||||||
|
$security_level_opt \
|
||||||
|
$open_ui_opt \
|
||||||
|
$random_localhost_ip_opt \
|
||||||
|
$use_tor_opt \
|
||||||
|
$animated_background_opt \
|
||||||
|
$keep_log_opt \
|
||||||
|
$use_upload_mixing_opt \
|
||||||
|
$dev_mode_opt \
|
||||||
|
$disable_plugin_list_opt \
|
||||||
|
$store_plaintext_opt \
|
||||||
|
$bind_address_opt \
|
||||||
|
$port_opt \
|
||||||
|
"$@"
|
@ -11,9 +11,12 @@ conf['tor']['existing_control_port'] = 0
|
|||||||
conf['tor']['existing_control_password'] = ""
|
conf['tor']['existing_control_password'] = ""
|
||||||
conf['tor']['existing_socks_port'] = 0
|
conf['tor']['existing_socks_port'] = 0
|
||||||
|
|
||||||
|
conf['general']['dev_mode'] = False
|
||||||
conf['general']['insert_deniable_blocks'] = True
|
conf['general']['insert_deniable_blocks'] = True
|
||||||
conf['general']['random_bind_ip'] = True
|
conf['general']['random_bind_ip'] = True
|
||||||
conf['general']['display_header'] = True
|
conf['general']['display_header'] = True
|
||||||
|
conf['general']['security_level'] = 0
|
||||||
|
conf['general']['use_bootstrap_list'] = True
|
||||||
conf['onboarding']['done'] = False
|
conf['onboarding']['done'] = False
|
||||||
conf['general']['minimum_block_pow'] = 5
|
conf['general']['minimum_block_pow'] = 5
|
||||||
conf['general']['minimum_send_pow'] = 5
|
conf['general']['minimum_send_pow'] = 5
|
||||||
|
@ -10,6 +10,7 @@ conf = json.load(open('static-data/default_config.json', 'r'))
|
|||||||
|
|
||||||
block_pow = int(input("Block POW level:"))
|
block_pow = int(input("Block POW level:"))
|
||||||
|
|
||||||
|
conf['general']['security_level'] = int(input("Security level:"))
|
||||||
conf['transports']['tor'] = False
|
conf['transports']['tor'] = False
|
||||||
if input('Use Tor? y/n').lower() == 'y':
|
if input('Use Tor? y/n').lower() == 'y':
|
||||||
conf['transports']['tor'] = True
|
conf['transports']['tor'] = True
|
||||||
@ -19,11 +20,15 @@ if input('Use Tor? y/n').lower() == 'y':
|
|||||||
conf['tor']['existing_control_password'] = input("Tor pass:")
|
conf['tor']['existing_control_password'] = input("Tor pass:")
|
||||||
conf['tor']['existing_socks_port'] = int(input("Existing socks port:"))
|
conf['tor']['existing_socks_port'] = int(input("Existing socks port:"))
|
||||||
|
|
||||||
|
conf['general']['dev_mode'] = True
|
||||||
conf['general']['insert_deniable_blocks'] = False
|
conf['general']['insert_deniable_blocks'] = False
|
||||||
conf['general']['random_bind_ip'] = False
|
conf['general']['random_bind_ip'] = False
|
||||||
conf['onboarding']['done'] = True
|
conf['onboarding']['done'] = True
|
||||||
conf['general']['minimum_block_pow'] = block_pow
|
conf['general']['minimum_block_pow'] = block_pow
|
||||||
conf['general']['minimum_send_pow'] = block_pow
|
conf['general']['minimum_send_pow'] = block_pow
|
||||||
|
conf['general']['use_bootstrap_list'] = False
|
||||||
|
if input("Use bootstrap list? y/n").lower() == 'y':
|
||||||
|
conf['general']['use_bootstrap_list'] = True
|
||||||
conf['log']['file']['remove_on_exit'] = False
|
conf['log']['file']['remove_on_exit'] = False
|
||||||
conf['ui']['animated_background'] = False
|
conf['ui']['animated_background'] = False
|
||||||
if input('Stat reporting? y/n') == 'y':
|
if input('Stat reporting? y/n') == 'y':
|
||||||
|
50
scripts/remote-ui.py
Executable file
50
scripts/remote-ui.py
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
"""Craft and send requests to the local client API"""
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
from threading import Thread
|
||||||
|
if not os.path.exists('onionr.sh'):
|
||||||
|
os.chdir('../')
|
||||||
|
sys.path.append("src/")
|
||||||
|
|
||||||
|
import filepaths
|
||||||
|
import config
|
||||||
|
config.reload()
|
||||||
|
|
||||||
|
with open(filepaths.private_API_host_file, 'r') as host:
|
||||||
|
hostname = host.read()
|
||||||
|
|
||||||
|
port = config.get("client.client.port", 0)
|
||||||
|
if not port:
|
||||||
|
print("Could not get port for Onionr UI. Try again")
|
||||||
|
sys.exit(1)
|
||||||
|
torrc = f"""
|
||||||
|
HiddenServiceDir remote-onionr-hs
|
||||||
|
HiddenServicePort 80 {hostname}:{port}
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open("remote-onionr-torrc", "w") as torrc_f:
|
||||||
|
torrc_f.write(torrc)
|
||||||
|
|
||||||
|
|
||||||
|
def show_onion():
|
||||||
|
while True:
|
||||||
|
time.sleep(1)
|
||||||
|
try:
|
||||||
|
with open("remote-onionr-hs/hostname", "r") as f:
|
||||||
|
o = f.read()
|
||||||
|
print("UI Onion (Keep secret):", o)
|
||||||
|
config.set("ui.public_remote_enabled", True)
|
||||||
|
config.set("ui.public_remote_hosts", [o])
|
||||||
|
config.save()
|
||||||
|
break
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
Thread(target=show_onion, daemon=True).start()
|
||||||
|
|
||||||
|
os.system("tor -f remote-onionr-torrc")
|
@ -95,6 +95,7 @@ if sys.version_info[0] == 2 or sys.version_info[1] < min_ver:
|
|||||||
from utils import createdirs
|
from utils import createdirs
|
||||||
createdirs.create_dirs()
|
createdirs.create_dirs()
|
||||||
|
|
||||||
|
import bigbrother # noqa
|
||||||
from onionrcommands import parser # noqa
|
from onionrcommands import parser # noqa
|
||||||
from onionrplugins import onionrevents as events # noqa
|
from onionrplugins import onionrevents as events # noqa
|
||||||
|
|
||||||
@ -104,6 +105,13 @@ import config # noqa
|
|||||||
from utils import identifyhome # noqa
|
from utils import identifyhome # noqa
|
||||||
import filepaths # noqa
|
import filepaths # noqa
|
||||||
|
|
||||||
|
if config.get('advanced.security_auditing', True) \
|
||||||
|
and not onionr_profiling:
|
||||||
|
try:
|
||||||
|
bigbrother.enable_ministries()
|
||||||
|
except onionrexceptions.PythonVersion:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def onionr_main():
|
def onionr_main():
|
||||||
"""Onionr entrypoint, start command processor
|
"""Onionr entrypoint, start command processor
|
||||||
|
@ -3,11 +3,10 @@
|
|||||||
Processes interpreter hook events to detect security leaks
|
Processes interpreter hook events to detect security leaks
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
import os
|
|
||||||
from typing import Iterable
|
from typing import Iterable
|
||||||
|
|
||||||
import logger
|
from onionrexceptions import PythonVersion
|
||||||
|
from . import ministry
|
||||||
"""
|
"""
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -22,11 +21,15 @@ GNU General Public License for more details.
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
|
|
||||||
import ministry
|
|
||||||
|
|
||||||
plugin_name = 'bigbrother'
|
|
||||||
PLUGIN_VERSION = '0.0.0'
|
def _auditing_supported():
|
||||||
|
try:
|
||||||
|
sys.audit
|
||||||
|
sys.addaudithook
|
||||||
|
except AttributeError:
|
||||||
|
raise PythonVersion('Auditing not supported interpreter')
|
||||||
|
|
||||||
|
|
||||||
def sys_hook_entrypoint(event, info):
|
def sys_hook_entrypoint(event, info):
|
||||||
"""Entrypoint for big brother sys auditors."""
|
"""Entrypoint for big brother sys auditors."""
|
||||||
@ -44,10 +47,5 @@ def sys_hook_entrypoint(event, info):
|
|||||||
def enable_ministries(disable_hooks: Iterable = None):
|
def enable_ministries(disable_hooks: Iterable = None):
|
||||||
"""Enable auditors."""
|
"""Enable auditors."""
|
||||||
disable_hooks = disable_hooks or []
|
disable_hooks = disable_hooks or []
|
||||||
|
_auditing_supported() # raises PythonVersion exception if <3.8
|
||||||
sys.addaudithook(sys_hook_entrypoint)
|
sys.addaudithook(sys_hook_entrypoint)
|
||||||
|
|
||||||
|
|
||||||
def on_init(api, data=None):
|
|
||||||
enable_ministries()
|
|
||||||
logger.info(
|
|
||||||
"Big brother enabled, blocking unsafe Python code.", terminal=True)
|
|
@ -40,9 +40,32 @@ def block_exec(event, info):
|
|||||||
if untrusted_exec:
|
if untrusted_exec:
|
||||||
return
|
return
|
||||||
whitelisted_code = [
|
whitelisted_code = [
|
||||||
|
'netrc.py',
|
||||||
|
'shlex.py',
|
||||||
|
'gzip.py',
|
||||||
|
'<werkzeug routing>',
|
||||||
|
'werkzeug/test.py',
|
||||||
|
'multiprocessing/popen_fork.py',
|
||||||
|
'multiprocessing/util.py',
|
||||||
|
'multiprocessing/connection.py',
|
||||||
|
'multiprocessing/queues.py',
|
||||||
|
'multiprocessing/synchronize.py',
|
||||||
|
'onionrutils/escapeansi.py',
|
||||||
|
'stem/connection.py',
|
||||||
|
'stem/response/add_onion.py',
|
||||||
|
'stem/response/authchallenge.py',
|
||||||
|
'stem/response/getinfo.py',
|
||||||
|
'stem/response/getconf.py',
|
||||||
|
'stem/response/mapaddress.py',
|
||||||
|
'stem/response/protocolinfo.py',
|
||||||
|
'apport/__init__.py',
|
||||||
|
'apport/report.py'
|
||||||
]
|
]
|
||||||
whitelisted_source = [
|
whitelisted_source = [
|
||||||
|
'ZABaAGQBZAJsAW0CWgIBAHoGZAFkA2wDWgRXAG4LBABlBXkZAQABAAEAZARaBlkAbgN3AGQFWgZkAWQGbAdtCFoIAQBkAWQDbAlaCWQBZAdsCm0LWgwBAAkAZQmgDWQIZAWhAnM1ZARaBmUIgwBkCRcAWg5kEmQMZQ9kDWUPZgRkDmQPhAVaEGQTZBBkEYQBWhFkA1MA',
|
||||||
|
'RwBkAGQBhABkAYMCWgBkAlMA',
|
||||||
|
'ZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oIZAFkAmwJWghkAWQCbApaCGQBZAJsC1oIZANaDGQEWg1kBWQCZAJkBmQCZQ1kB2QIZAJmCWQJZAqEAVoOZAVkBmQCZQ1kB2QIZgZkC2QMhAFaD2QCUwA=',
|
||||||
|
'ZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oIZAFkAmwJWghkAWQCbApaCGQBZANsC20MWgxtDVoNbQ5aDm0PWg9tEFoQbRFaEQEAZARaEmQFWhNkBmQCZAJkB2QCZRNkCGQJZAJmCWQKZRRkC2UPZRBlFBkAGQBkDGUPZRQZAGQNZRVkDmUPZQ1lFGcBZAJmAhkAGQBkD2UVZBBlFmQRZRZkEmUPZRQZAGQTZQRqF2YUZBRkFYQFWhhkBmQHZAJlE2QIZAlmBmQWZQ5lFGURZRRlEGUUGQBmAhkAZgIZAGQKZRRkDWUVZA5lD2UNZRRnAWQCZgIZABkAZA9lFWQQZRZkEWUWZBNlBGoXZhBkF2QYhAVaGWQCUwA='
|
||||||
]
|
]
|
||||||
home = identifyhome.identify_home()
|
home = identifyhome.identify_home()
|
||||||
|
|
@ -9,6 +9,7 @@ import ujson as json
|
|||||||
import logger
|
import logger
|
||||||
import filepaths
|
import filepaths
|
||||||
|
|
||||||
|
from . import onboarding
|
||||||
"""
|
"""
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
79
src/config/onboarding.py
Normal file
79
src/config/onboarding.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
"""Onionr - Private P2P Communication.
|
||||||
|
|
||||||
|
Setup config from onboarding choices
|
||||||
|
"""
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
from filepaths import onboarding_mark_file
|
||||||
|
from onionrtypes import JSONSerializable
|
||||||
|
from onionrtypes import OnboardingConfig
|
||||||
|
import config
|
||||||
|
"""
|
||||||
|
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
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _get_val_or_none(json: dict, key: str) -> Union[None, JSONSerializable]:
|
||||||
|
try:
|
||||||
|
return json['configInfo'][key]
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def set_config_from_onboarding(config_settings: OnboardingConfig):
|
||||||
|
get = _get_val_or_none
|
||||||
|
|
||||||
|
config.reload()
|
||||||
|
|
||||||
|
if get(config_settings, 'optimize'):
|
||||||
|
config.set('ui.animated_background', False)
|
||||||
|
config.set('general.insert_deniable_blocks', False)
|
||||||
|
|
||||||
|
if get(config_settings, 'stateTarget') or not get(config_settings,
|
||||||
|
'networkContrib'):
|
||||||
|
config.set('general.security_level', 1)
|
||||||
|
|
||||||
|
if get(config_settings, 'localThreat'):
|
||||||
|
config.set('general.security_level', 3)
|
||||||
|
config.set('transports.lan', False)
|
||||||
|
|
||||||
|
config.set('ui.theme', 'light')
|
||||||
|
if get(config_settings, 'useDark'):
|
||||||
|
config.set('ui.theme', 'dark')
|
||||||
|
|
||||||
|
disabled = config.get('plugins.disabled', [])
|
||||||
|
|
||||||
|
if not get(config_settings, 'circles') or \
|
||||||
|
config.get('general.security_level') > 0:
|
||||||
|
disabled.append('flow')
|
||||||
|
|
||||||
|
if not get(config_settings, 'mail'):
|
||||||
|
disabled.append('pms')
|
||||||
|
|
||||||
|
config.set('plugins.disabled', disabled)
|
||||||
|
|
||||||
|
config.set('general.store_plaintext_blocks',
|
||||||
|
get(config_settings, 'plainContrib'))
|
||||||
|
|
||||||
|
config.set('onboarding.done', True, savefile=True)
|
||||||
|
|
||||||
|
|
||||||
|
def set_onboarding_finished():
|
||||||
|
"""Create the onboarding completed setting file"""
|
||||||
|
Path(onboarding_mark_file).touch()
|
||||||
|
|
||||||
|
|
||||||
|
def is_onboarding_finished() -> bool:
|
||||||
|
return True
|
@ -7,8 +7,27 @@ app_root = os.path.dirname(os.path.realpath(__file__)) + '/../../'
|
|||||||
|
|
||||||
gossip_server_socket_file = home + 'gossip-server.sock'
|
gossip_server_socket_file = home + 'gossip-server.sock'
|
||||||
|
|
||||||
|
usage_file = home + 'disk-usage.txt'
|
||||||
|
contacts_location = home + 'contacts/'
|
||||||
|
cached_storage = home + 'cachedstorage.dat'
|
||||||
|
export_location = home + 'block-export/'
|
||||||
|
upload_list = home + 'upload-list.json'
|
||||||
config_file = home + 'config.json'
|
config_file = home + 'config.json'
|
||||||
|
daemon_mark_file = home + '/daemon-true.txt'
|
||||||
lock_file = home + 'onionr.lock'
|
lock_file = home + 'onionr.lock'
|
||||||
pid_file = home + 'onionr.pid'
|
pid_file = home + 'onionr.pid'
|
||||||
|
|
||||||
|
site_cache = home + 'onionr-sites.txt'
|
||||||
|
|
||||||
|
tor_hs_loc = home + 'hs/'
|
||||||
|
tor_hs_address_file = home + 'hs/hostname'
|
||||||
|
|
||||||
|
keys_file = home + 'keys.txt'
|
||||||
|
|
||||||
|
onboarding_mark_file = home + 'onboarding-completed'
|
||||||
|
|
||||||
log_file = home + 'onionr.log'
|
log_file = home + 'onionr.log'
|
||||||
|
|
||||||
|
ephemeral_services_file = home + 'ephemeral-services.list'
|
||||||
|
|
||||||
|
restarting_indicator = home + "is-restarting"
|
||||||
|
@ -120,13 +120,14 @@ def gossip_server():
|
|||||||
if blockdb.has_block(block_id):
|
if blockdb.has_block(block_id):
|
||||||
writer.write(int(0).to_bytes(1, 'big'))
|
writer.write(int(0).to_bytes(1, 'big'))
|
||||||
else:
|
else:
|
||||||
|
|
||||||
writer.write(int(1).to_bytes(1, 'big'))
|
writer.write(int(1).to_bytes(1, 'big'))
|
||||||
await writer.drain()
|
await writer.drain()
|
||||||
block_size = int(await asyncio.wait_for(reader.readexactly(constants.BLOCK_SIZE_LEN), 30))
|
block_size = int(await asyncio.wait_for(reader.readexactly(constants.BLOCK_SIZE_LEN), 30))
|
||||||
block_data = await reader.readexactly(block_size)
|
block_data = await reader.readexactly(block_size)
|
||||||
|
|
||||||
Thread(
|
Thread(
|
||||||
target=add_block_to_db,
|
target=add_block_to_db,
|
||||||
args=[
|
args=[
|
||||||
Block(block_id, block_data, auto_verify=True)]
|
Block(block_id, block_data, auto_verify=True)]
|
||||||
).start()
|
).start()
|
||||||
@ -136,7 +137,6 @@ def gossip_server():
|
|||||||
await writer.drain()
|
await writer.drain()
|
||||||
except BrokenPipeError:
|
except BrokenPipeError:
|
||||||
pass
|
pass
|
||||||
writer.close()
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ from onionrplugins import onionrevents as events
|
|||||||
from utils import identifyhome
|
from utils import identifyhome
|
||||||
import filepaths
|
import filepaths
|
||||||
import onionrvalues
|
import onionrvalues
|
||||||
|
from onionrutils import cleanup
|
||||||
from onionrthreads import add_onionr_thread
|
from onionrthreads import add_onionr_thread
|
||||||
from blockdb.blockcleaner import clean_block_database
|
from blockdb.blockcleaner import clean_block_database
|
||||||
from .. import version
|
from .. import version
|
||||||
@ -42,21 +43,6 @@ You should have received a copy of the GNU General Public License
|
|||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _safe_remove(path):
|
|
||||||
try:
|
|
||||||
os.remove(path)
|
|
||||||
except FileNotFoundError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def delete_run_files():
|
|
||||||
"""Delete run files, do not error if not found.
|
|
||||||
|
|
||||||
Test: test_cleanup.py
|
|
||||||
"""
|
|
||||||
_safe_remove(filepaths.lock_file)
|
|
||||||
_safe_remove(filepaths.gossip_server_socket_file)
|
|
||||||
_safe_remove(filepaths.pid_file)
|
|
||||||
|
|
||||||
def _show_info_messages():
|
def _show_info_messages():
|
||||||
version.version(verbosity=5, function=logger.info)
|
version.version(verbosity=5, function=logger.info)
|
||||||
@ -106,7 +92,7 @@ def daemon():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
delete_run_files()
|
cleanup.delete_run_files()
|
||||||
if security_level >= 2:
|
if security_level >= 2:
|
||||||
filenuke.nuke.clean_tree(identifyhome.identify_home())
|
filenuke.nuke.clean_tree(identifyhome.identify_home())
|
||||||
|
|
||||||
|
24
src/onionrcommands/daemonlaunch/geturl.py
Normal file
24
src/onionrcommands/daemonlaunch/geturl.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"""Onionr - Private P2P Communication.
|
||||||
|
|
||||||
|
Open the web interface properly into a web browser, and return it
|
||||||
|
"""
|
||||||
|
import logger
|
||||||
|
from onionrutils import getclientapiserver
|
||||||
|
|
||||||
|
|
||||||
|
def get_url(config) -> str:
|
||||||
|
"""Build UI URL string and return it."""
|
||||||
|
onboarding = ""
|
||||||
|
if not config.get('onboarding.done', False):
|
||||||
|
onboarding = "onboarding/"
|
||||||
|
try:
|
||||||
|
url = getclientapiserver.get_client_API_server()
|
||||||
|
except FileNotFoundError:
|
||||||
|
url = ""
|
||||||
|
logger.error(
|
||||||
|
'Onionr seems to not be running (could not get api host)',
|
||||||
|
terminal=True)
|
||||||
|
else:
|
||||||
|
url = 'http://%s/%s#%s' % (url, onboarding, config.get('client.webpassword'))
|
||||||
|
logger.info('Onionr web interface URL: ' + url, terminal=True)
|
||||||
|
return url
|
@ -24,8 +24,9 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
def version(verbosity=5, function=logger.info):
|
def version(verbosity=5, function=logger.info):
|
||||||
"""Display the Onionr version."""
|
"""Display the Onionr version."""
|
||||||
function('Onionr v%s (%s)' % (onionrvalues.ONIONR_VERSION,
|
function('Onionr v%s (%s) (API v%s)' % (onionrvalues.ONIONR_VERSION,
|
||||||
platform.machine()),
|
platform.machine(),
|
||||||
|
onionrvalues.API_VERSION),
|
||||||
terminal=True)
|
terminal=True)
|
||||||
if verbosity >= 1:
|
if verbosity >= 1:
|
||||||
function(onionrvalues.ONIONR_TAGLINE, terminal=True)
|
function(onionrvalues.ONIONR_TAGLINE, terminal=True)
|
||||||
|
@ -26,10 +26,10 @@ from utils.readstatic import get_static_dir
|
|||||||
|
|
||||||
def setup_default_plugins():
|
def setup_default_plugins():
|
||||||
# Copy default plugins into plugins folder
|
# Copy default plugins into plugins folder
|
||||||
if os.path.exists(get_static_dir() + '/official-plugins/'):
|
if os.path.exists(get_static_dir() + '/default-plugins/'):
|
||||||
names = [f for f in os.listdir(get_static_dir() + '/official-plugins/')]
|
names = [f for f in os.listdir(get_static_dir() + '/default-plugins/')]
|
||||||
shutil.copytree(
|
shutil.copytree(
|
||||||
get_static_dir() + '/official-plugins/',
|
get_static_dir() + '/default-plugins/',
|
||||||
plugins.get_plugins_folder(), dirs_exist_ok=True)
|
plugins.get_plugins_folder(), dirs_exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
22
src/onionrtypes/__init__.py
Normal file
22
src/onionrtypes/__init__.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from typing import NewType
|
||||||
|
|
||||||
|
UserID = NewType('UserID', str)
|
||||||
|
UserIDSecretKey = NewType('UserIDSecretKey', str)
|
||||||
|
|
||||||
|
LoopBackIP = NewType('LoopBackIP', str)
|
||||||
|
|
||||||
|
DeterministicKeyPassphrase = NewType('DeterministicKeyPassphrase', str)
|
||||||
|
|
||||||
|
Ed25519PublicKeyBytes = NewType('Ed25519PublicKeyBytes', bytes)
|
||||||
|
|
||||||
|
BlockHash = NewType('BlockHash', str)
|
||||||
|
|
||||||
|
OnboardingConfig = NewType('OnboardingConfig', str)
|
||||||
|
|
||||||
|
# JSON serializable string. e.g. no raw bytes
|
||||||
|
JSONSerializable = NewType('JSONSerializable', str)
|
||||||
|
|
||||||
|
# Return value of some functions or methods, denoting operation success
|
||||||
|
# Do not use for new code
|
||||||
|
BooleanSuccessState = NewType('BooleanSuccessState', bool)
|
||||||
|
|
39
src/onionrutils/cleanup/__init__.py
Normal file
39
src/onionrutils/cleanup/__init__.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
"""Onionr - Private P2P Communication.
|
||||||
|
|
||||||
|
cleanup run files
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
import filepaths
|
||||||
|
"""
|
||||||
|
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
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _safe_remove(path):
|
||||||
|
try:
|
||||||
|
os.remove(path)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def delete_run_files():
|
||||||
|
"""Delete run files, do not error if not found.
|
||||||
|
|
||||||
|
Test: test_cleanup.py
|
||||||
|
"""
|
||||||
|
_safe_remove(filepaths.daemon_mark_file)
|
||||||
|
_safe_remove(filepaths.lock_file)
|
||||||
|
_safe_remove(filepaths.gossip_server_socket_file)
|
||||||
|
_safe_remove(filepaths.pid_file)
|
@ -2,10 +2,11 @@ import re
|
|||||||
|
|
||||||
|
|
||||||
def escape_ANSI(line):
|
def escape_ANSI(line):
|
||||||
'''Remove ANSI escape codes from a string with regex
|
'''
|
||||||
|
Remove ANSI escape codes from a string with regex
|
||||||
|
|
||||||
adapted from: https://stackoverflow.com/a/38662876 by user https://stackoverflow.com/users/802365/%c3%89douard-lopez
|
adapted from: https://stackoverflow.com/a/38662876 by user https://stackoverflow.com/users/802365/%c3%89douard-lopez
|
||||||
cc-by-sa-3 license https://creativecommons.org/licenses/by-sa/3.0/
|
cc-by-sa-3 license https://creativecommons.org/licenses/by-sa/3.0/
|
||||||
'''
|
'''
|
||||||
ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]')
|
ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]')
|
||||||
return ansi_escape.sub('', line)
|
return ansi_escape.sub('', line)
|
||||||
|
8
src/onionrutils/waitforsetvar.py
Normal file
8
src/onionrutils/waitforsetvar.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
from typing import Union, Generic
|
||||||
|
from gevent import sleep
|
||||||
|
def wait_for_set_var(obj, attribute, sleep_seconds: Union[int, float]=0):
|
||||||
|
"""Wait for an object to get an attribute with an optional sleep time"""
|
||||||
|
while not hasattr(obj, attribute):
|
||||||
|
if hasattr(obj, attribute): break
|
||||||
|
if sleep_seconds > 0: sleep(sleep_seconds)
|
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
This file defines values and requirements used by Onionr
|
This file defines values and requirements used by Onionr
|
||||||
"""
|
"""
|
||||||
|
import platform
|
||||||
|
import os
|
||||||
|
|
||||||
|
import filepaths
|
||||||
"""
|
"""
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -16,11 +20,27 @@ GNU General Public License for more details.
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
|
DENIABLE_PEER_ADDRESS = "OVPCZLOXD6DC5JHX4EQ3PSOGAZ3T24F75HQLIUZSDSMYPEOXCPFA"
|
||||||
|
PASSWORD_LENGTH = 25
|
||||||
ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net'
|
ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net'
|
||||||
ONIONR_VERSION = '9.0.0'
|
ONIONR_VERSION = '9.0.0'
|
||||||
ONIONR_VERSION_CODENAME = 'Taraxacum'
|
ONIONR_VERSION_CODENAME = 'Taraxacum'
|
||||||
ONIONR_VERSION_TUPLE = tuple(ONIONR_VERSION.split('.')) # (MAJOR, MINOR, VERSION)
|
ONIONR_VERSION_TUPLE = tuple(ONIONR_VERSION.split('.')) # (MAJOR, MINOR, VERSION)
|
||||||
MIN_PY_VERSION = 10
|
API_VERSION = '2' # increments of 1; only change when something fundamental about how the API works changes. This way other nodes know how to communicate without learning too much information about you.
|
||||||
|
MIN_PY_VERSION = 7 # min version of 7 so we can take advantage of non-cyclic type hints
|
||||||
DEVELOPMENT_MODE = False
|
DEVELOPMENT_MODE = False
|
||||||
|
|
||||||
|
"""Onionr user IDs are ed25519 keys, which are always 32 bytes in length"""
|
||||||
|
MAIN_PUBLIC_KEY_SIZE = 32
|
||||||
ORIG_RUN_DIR_ENV_VAR = 'ORIG_ONIONR_RUN_DIR'
|
ORIG_RUN_DIR_ENV_VAR = 'ORIG_ONIONR_RUN_DIR'
|
||||||
|
|
||||||
|
DATABASE_LOCK_TIMEOUT = 60
|
||||||
|
|
||||||
|
BLOCK_EXPORT_FILE_EXT = '.onionr'
|
||||||
|
|
||||||
|
# Begin OnionrValues migrated values
|
||||||
|
|
||||||
|
if os.path.exists(filepaths.daemon_mark_file):
|
||||||
|
SCRIPT_NAME = 'start-daemon.sh'
|
||||||
|
else:
|
||||||
|
SCRIPT_NAME = 'onionr.sh'
|
||||||
|
@ -5,7 +5,10 @@ Create required Onionr directories
|
|||||||
import os
|
import os
|
||||||
import stat
|
import stat
|
||||||
|
|
||||||
|
from onionrplugins import get_plugins_folder
|
||||||
|
|
||||||
from . import identifyhome
|
from . import identifyhome
|
||||||
|
import filepaths
|
||||||
import onionrexceptions
|
import onionrexceptions
|
||||||
"""
|
"""
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
@ -28,7 +31,9 @@ def create_dirs():
|
|||||||
"""Create onionr data-related directories in
|
"""Create onionr data-related directories in
|
||||||
order of the hardcoded list below,
|
order of the hardcoded list below,
|
||||||
then trigger creation of DBs"""
|
then trigger creation of DBs"""
|
||||||
gen_dirs = [home]
|
gen_dirs = [home,
|
||||||
|
filepaths.contacts_location,
|
||||||
|
filepaths.export_location]
|
||||||
for path in gen_dirs:
|
for path in gen_dirs:
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
|
6
start-daemon.sh
Executable file
6
start-daemon.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
echo "starting Onionr daemon..."
|
||||||
|
echo "run onionr.sh stop to stop the daemon"
|
||||||
|
touch daemon-true.txt
|
||||||
|
exec nohup ./onionr.sh start > /dev/null 2>&1 & disown
|
16
start-ram.sh
Executable file
16
start-ram.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
if [ -d "/dev/shm" ]
|
||||||
|
then
|
||||||
|
echo "Using /dev/shm to make a RAM based Onionr instance."
|
||||||
|
else
|
||||||
|
echo "This system does not have /dev/shm. Cannot use this script."
|
||||||
|
exit 9;
|
||||||
|
fi
|
||||||
|
ONIONR_HOME="$(mktemp -p /dev/shm/ -d -t onionr-XXXXXXXXXXX)"
|
||||||
|
export ONIONR_HOME
|
||||||
|
echo "Onionr has been launched with a temporary home directory using /dev/shm. Note that the OS may still write to swap if applicable."
|
||||||
|
echo "Future Onionr commands will use your set or default Onionr home directory, unless you set it to $ONIONR_HOME"
|
||||||
|
echo "Ultimately, a live boot operating system such as Tails or Debian would be better for you to use."
|
||||||
|
$(dirname $0)/onionr.sh start & disown
|
||||||
|
sleep 2
|
||||||
|
#$(dirname $0)/onionr.sh open-home
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This folder contains whatever static files are needed by Onionr and default plugins.
|
This folder contains whatever static files are needed by Onionr and default plugins.
|
||||||
|
|
||||||
official-plugins/: default plugin program files to be installed on first Onionr run.
|
default-plugins/: default plugin program files to be installed on first Onionr run.
|
||||||
|
|
||||||
www/: onionr web ui static files including those of default plugins
|
www/: onionr web ui static files including those of default plugins
|
||||||
|
|
||||||
|
1
static-data/default-plugins/unixtransport/bootstrap.txt
Normal file
1
static-data/default-plugins/unixtransport/bootstrap.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
/dev/shm/onionr90775244/gossip-server.sock,/dev/shm/onionr1873728538/gossip-server.sock
|
@ -6,8 +6,10 @@ import sys
|
|||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
import traceback
|
||||||
from typing import Set, TYPE_CHECKING
|
from typing import Set, TYPE_CHECKING
|
||||||
from threading import Thread, local
|
from threading import Thread, local
|
||||||
|
import blockdb
|
||||||
from gossip.peerset import gossip_peer_set
|
from gossip.peerset import gossip_peer_set
|
||||||
|
|
||||||
|
|
||||||
@ -35,14 +37,18 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
"""
|
"""
|
||||||
plugin_name = 'wot'
|
plugin_name = 'wot'
|
||||||
PLUGIN_VERSION = '0.0.0'
|
PLUGIN_VERSION = '0.0.0'
|
||||||
from wot.identity import identities
|
from wot import loadfromblocks, identities
|
||||||
from wot.loadfromblocks import load_identities_from_blocks
|
|
||||||
|
|
||||||
|
|
||||||
|
def wot_test(arg: int):
|
||||||
|
return arg + 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def on_init(api, data=None):
|
def on_init(api, data=None):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Web of Trust Plugin v{PLUGIN_VERSION} enabled", terminal=True)
|
f"Web of Trust Plugin v{PLUGIN_VERSION} enabled", terminal=True)
|
||||||
#onionrplugins.plugin_apis['wot'] = wot_test
|
onionrplugins.plugin_apis['wot'] = wot_test
|
||||||
|
|
||||||
list(map(lambda x: identities.add(x), load_identities_from_blocks()))
|
list(map(lambda x: identities.add(x), loadfromblocks.load_identities()))
|
@ -7,10 +7,9 @@ import nacl.exceptions
|
|||||||
import logger
|
import logger
|
||||||
import blockdb
|
import blockdb
|
||||||
|
|
||||||
from wot.identity import Identity, identities
|
from wot.identity import Identity, processtrustsignature, identities
|
||||||
from wot.exceptions import IdentitySerializationError
|
from wot.exceptions import IdentitySerializationError
|
||||||
from wot.getbykey import get_identity_by_key
|
from wot.getbykey import get_identity_by_key
|
||||||
from wot.identityprocessing import processtrustsignature
|
|
||||||
|
|
||||||
|
|
||||||
def load_identity_from_block(block) -> Identity:
|
def load_identity_from_block(block) -> Identity:
|
@ -1,7 +1,19 @@
|
|||||||
{
|
{
|
||||||
|
"advanced": {
|
||||||
|
"security_auditing": false
|
||||||
|
},
|
||||||
|
"allocations": {
|
||||||
|
"disk": 1073741824
|
||||||
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"allow_public_api_dns_rebinding": false,
|
||||||
|
"announce_node": true,
|
||||||
|
"dev_mode": false,
|
||||||
"display_header": true,
|
"display_header": true,
|
||||||
"security_level": 0
|
"ephemeral_tunnels": false,
|
||||||
|
"public_key": "",
|
||||||
|
"security_level": 0,
|
||||||
|
"use_bootstrap_list": true
|
||||||
},
|
},
|
||||||
"log": {
|
"log": {
|
||||||
"console": {
|
"console": {
|
||||||
@ -15,7 +27,7 @@
|
|||||||
"verbosity": "default"
|
"verbosity": "default"
|
||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"disabled": ["unixtransport", "repl", "bigbrother"],
|
"disabled": ["unixtransport"],
|
||||||
"enabled": []
|
"enabled": []
|
||||||
},
|
},
|
||||||
"security": {
|
"security": {
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
{ "name": "bigbrother",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"author": "onionr"
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
cherrypy==18.8.0
|
|
||||||
json-rpc==1.13.0
|
|
@ -1,2 +0,0 @@
|
|||||||
stem==1.8.0
|
|
||||||
PySocks==1.7.1
|
|
@ -1 +0,0 @@
|
|||||||
/dev/shm/onionr2911314530/gossip-server.sock
|
|
@ -1,2 +0,0 @@
|
|||||||
PyNaCl==1.5.0
|
|
||||||
cffi==1.15.1
|
|
@ -12,7 +12,7 @@ from nacl import signing
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('static-data/official-plugins/wot/wot')
|
sys.path.append('static-data/default-plugins/wot/wot')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
import onionrblocks
|
import onionrblocks
|
||||||
from blockdb import block_db_path
|
from blockdb import block_db_path
|
||||||
|
@ -11,7 +11,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/wot')
|
sys.path.append('static-data/default-plugins/wot/wot')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from identity import Identity, get_distance
|
from identity import Identity, get_distance
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/wot/')
|
sys.path.append('static-data/default-plugins/wot/wot/')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from identity import Identity
|
from identity import Identity
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ os.makedirs(TEST_DIR)
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('static-data/official-plugins/wot/wot')
|
sys.path.append('static-data/default-plugins/wot/wot')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
import onionrblocks
|
import onionrblocks
|
||||||
from blockdb import block_db_path
|
from blockdb import block_db_path
|
||||||
|
@ -10,7 +10,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('static-data/official-plugins/wot/wot')
|
sys.path.append('static-data/default-plugins/wot/wot')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from identity import Identity
|
from identity import Identity
|
||||||
from identity.name import max_len
|
from identity.name import max_len
|
||||||
|
@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/')
|
sys.path.append('static-data/default-plugins/wot/')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from wot.identityprocessing import process_identity_announce
|
from wot.identityprocessing import process_identity_announce
|
||||||
from wot import identity
|
from wot import identity
|
||||||
|
@ -16,7 +16,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/')
|
sys.path.append('static-data/default-plugins/wot/')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from wot.identityprocessing import process_identity_revoke
|
from wot.identityprocessing import process_identity_revoke
|
||||||
from wot import identity
|
from wot import identity
|
||||||
|
@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/')
|
sys.path.append('static-data/default-plugins/wot/')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
from wot import identity
|
from wot import identity
|
||||||
from wot.identity.identityset import identities
|
from wot.identity.identityset import identities
|
||||||
|
@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR
|
|||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
sys.path.append(".")
|
sys.path.append(".")
|
||||||
sys.path.append('static-data/official-plugins/wot/wot')
|
sys.path.append('static-data/default-plugins/wot/wot')
|
||||||
sys.path.append("src/")
|
sys.path.append("src/")
|
||||||
import identity
|
import identity
|
||||||
from identity import identities
|
from identity import identities
|
||||||
|
@ -4,7 +4,7 @@ from time import sleep
|
|||||||
import secrets
|
import secrets
|
||||||
|
|
||||||
|
|
||||||
TEST_DIR = 'testdata/%s-%s' % (secrets.token_hex(1), os.path.basename(__file__)) + '/'
|
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
||||||
print("Test directory:", TEST_DIR)
|
print("Test directory:", TEST_DIR)
|
||||||
os.environ["ONIONR_HOME"] = TEST_DIR
|
os.environ["ONIONR_HOME"] = TEST_DIR
|
||||||
|
|
||||||
@ -62,6 +62,7 @@ class OnionrServerPeerAnnounce(unittest.TestCase):
|
|||||||
writer.write(address.encode('utf-8') + b'\n')
|
writer.write(address.encode('utf-8') + b'\n')
|
||||||
await writer.drain()
|
await writer.drain()
|
||||||
self.assertEqual(await reader.readexactly(1), int(1).to_bytes(1,'big'))
|
self.assertEqual(await reader.readexactly(1), int(1).to_bytes(1,'big'))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await reader.readexactly(1)
|
await reader.readexactly(1)
|
||||||
except asyncio.IncompleteReadError:
|
except asyncio.IncompleteReadError:
|
||||||
|
@ -4,7 +4,7 @@ from time import sleep
|
|||||||
import secrets
|
import secrets
|
||||||
|
|
||||||
|
|
||||||
TEST_DIR = 'testdata/%s-%s' % (secrets.token_hex(2), os.path.basename(__file__)) + '/'
|
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
||||||
print("Test directory:", TEST_DIR)
|
print("Test directory:", TEST_DIR)
|
||||||
os.environ["ONIONR_HOME"] = TEST_DIR
|
os.environ["ONIONR_HOME"] = TEST_DIR
|
||||||
|
|
||||||
|
@ -12,3 +12,7 @@ with Popen(['./onionr.sh', 'details'], stdout=PIPE) as onionr_proc:
|
|||||||
output = onionr_proc.stdout.read().decode()
|
output = onionr_proc.stdout.read().decode()
|
||||||
if onionr_proc.returncode != 0:
|
if onionr_proc.returncode != 0:
|
||||||
raise ValueError('Raised non zero exit ' + str(onionr_proc.returncode))
|
raise ValueError('Raised non zero exit ' + str(onionr_proc.returncode))
|
||||||
|
|
||||||
|
for word in ['Human-readable']:
|
||||||
|
if word not in output:
|
||||||
|
raise ValueError(word + " not in " + output)
|
||||||
|
34
tests/release-tests/test_big_brother.py
Normal file
34
tests/release-tests/test_big_brother.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import sys, os
|
||||||
|
sys.path.append(".")
|
||||||
|
sys.path.append("src/")
|
||||||
|
import unittest, uuid
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
||||||
|
print("Test directory:", TEST_DIR)
|
||||||
|
os.environ["ONIONR_HOME"] = TEST_DIR
|
||||||
|
from utils import createdirs, identifyhome
|
||||||
|
import onionrsetup as setup
|
||||||
|
import onionrexceptions
|
||||||
|
|
||||||
|
|
||||||
|
createdirs.create_dirs()
|
||||||
|
setup.setup_config()
|
||||||
|
|
||||||
|
class TestBigBrother(unittest.TestCase):
|
||||||
|
def test_system(self):
|
||||||
|
import bigbrother
|
||||||
|
bigbrother.enable_ministries()
|
||||||
|
self.assertRaises(onionrexceptions.ArbitraryCodeExec, os.system, "echo test")
|
||||||
|
|
||||||
|
def test_requests_connect(self):
|
||||||
|
import bigbrother
|
||||||
|
bigbrother.enable_ministries()
|
||||||
|
with self.assertRaises(onionrexceptions.NetworkLeak):
|
||||||
|
requests.get('https://example.com')
|
||||||
|
with self.assertRaises(onionrexceptions.NetworkLeak):
|
||||||
|
requests.get('https://1.1.1.1/')
|
||||||
|
|
||||||
|
|
||||||
|
unittest.main()
|
@ -7,6 +7,8 @@ print("Test directory:", TEST_DIR)
|
|||||||
os.environ["ONIONR_HOME"] = TEST_DIR
|
os.environ["ONIONR_HOME"] = TEST_DIR
|
||||||
from utils import createdirs
|
from utils import createdirs
|
||||||
createdirs.create_dirs()
|
createdirs.create_dirs()
|
||||||
|
from onionrcrypto import getourkeypair
|
||||||
|
getourkeypair.get_keypair()
|
||||||
from utils import readstatic
|
from utils import readstatic
|
||||||
import onionrblocks
|
import onionrblocks
|
||||||
class OnionrConfig(unittest.TestCase):
|
class OnionrConfig(unittest.TestCase):
|
||||||
@ -19,8 +21,11 @@ class OnionrConfig(unittest.TestCase):
|
|||||||
with open(TEST_DIR + 'config.json') as conf:
|
with open(TEST_DIR + 'config.json') as conf:
|
||||||
conf = json.loads(conf.read())
|
conf = json.loads(conf.read())
|
||||||
self.assertEqual(conf['advanced']['security_auditing'], True)
|
self.assertEqual(conf['advanced']['security_auditing'], True)
|
||||||
|
self.assertEqual(conf['allocations']['disk'], 1073741824)
|
||||||
|
self.assertEqual(conf['allocations']['disk'], 1073741824)
|
||||||
self.assertEqual(conf['general']['announce_node'], True)
|
self.assertEqual(conf['general']['announce_node'], True)
|
||||||
self.assertEqual(conf['general']['bind_address'], '')
|
self.assertEqual(conf['general']['bind_address'], '')
|
||||||
|
self.assertEqual(conf['general']['dev_mode'], False)
|
||||||
self.assertEqual(conf['general']['display_header'], True)
|
self.assertEqual(conf['general']['display_header'], True)
|
||||||
self.assertEqual(conf['general']['ephemeral_tunnels'], False)
|
self.assertEqual(conf['general']['ephemeral_tunnels'], False)
|
||||||
self.assertEqual(conf['general']['hide_created_blocks'], True)
|
self.assertEqual(conf['general']['hide_created_blocks'], True)
|
||||||
@ -32,6 +37,7 @@ class OnionrConfig(unittest.TestCase):
|
|||||||
self.assertEqual(conf['general']['security_level'], 0)
|
self.assertEqual(conf['general']['security_level'], 0)
|
||||||
self.assertEqual(conf['general']['show_notifications'], True)
|
self.assertEqual(conf['general']['show_notifications'], True)
|
||||||
self.assertEqual(conf['general']['store_plaintext_blocks'], True)
|
self.assertEqual(conf['general']['store_plaintext_blocks'], True)
|
||||||
|
self.assertEqual(conf['general']['use_bootstrap_list'], True)
|
||||||
self.assertEqual(conf['general']['use_subprocess_pow_if_possible'], True)
|
self.assertEqual(conf['general']['use_subprocess_pow_if_possible'], True)
|
||||||
self.assertEqual(conf['log']['console']['color'], True)
|
self.assertEqual(conf['log']['console']['color'], True)
|
||||||
self.assertEqual(conf['log']['console']['output'], True)
|
self.assertEqual(conf['log']['console']['output'], True)
|
||||||
|
@ -10,11 +10,14 @@ import unittest, json
|
|||||||
|
|
||||||
from utils import identifyhome, createdirs
|
from utils import identifyhome, createdirs
|
||||||
createdirs.create_dirs()
|
createdirs.create_dirs()
|
||||||
from onionrcommands.daemonlaunch import delete_run_files
|
from onionrutils.cleanup import delete_run_files
|
||||||
import filepaths
|
import filepaths
|
||||||
|
|
||||||
|
|
||||||
run_file_paths = [
|
run_file_paths = [
|
||||||
|
filepaths.public_API_host_file,
|
||||||
|
filepaths.private_API_host_file,
|
||||||
|
filepaths.daemon_mark_file,
|
||||||
filepaths.lock_file]
|
filepaths.lock_file]
|
||||||
|
|
||||||
def _run_paths_exist():
|
def _run_paths_exist():
|
||||||
|
62
tests/test_forward_secrecy.py
Normal file
62
tests/test_forward_secrecy.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys, os, random
|
||||||
|
sys.path.append(".")
|
||||||
|
sys.path.append("src/")
|
||||||
|
import unittest, uuid
|
||||||
|
TEST_DIR_1 = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
||||||
|
TEST_DIR_2 = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
||||||
|
import time
|
||||||
|
|
||||||
|
os.environ["ONIONR_HOME"] = TEST_DIR_1
|
||||||
|
from utils import createdirs
|
||||||
|
createdirs.create_dirs()
|
||||||
|
|
||||||
|
import onionrexceptions, onionrcrypto as crypto
|
||||||
|
from onionrusers import onionrusers
|
||||||
|
from onionrusers import contactmanager
|
||||||
|
|
||||||
|
|
||||||
|
class OnionrForwardSecrecyTests(unittest.TestCase):
|
||||||
|
'''
|
||||||
|
Tests both the onionrusers class and the contactmanager (which inherits it)
|
||||||
|
'''
|
||||||
|
def test_forward_encrypt_bin(self):
|
||||||
|
|
||||||
|
friend = crypto.generate()
|
||||||
|
|
||||||
|
friendUser = onionrusers.OnionrUser(friend[0], saveUser=True)
|
||||||
|
|
||||||
|
for x in range(5):
|
||||||
|
message = os.urandom(32)
|
||||||
|
forwardKey = friendUser.generateForwardKey()
|
||||||
|
|
||||||
|
fakeForwardPair = crypto.generate()
|
||||||
|
|
||||||
|
self.assertTrue(friendUser.addForwardKey(fakeForwardPair[0]))
|
||||||
|
|
||||||
|
encrypted = friendUser.forwardEncrypt(message)
|
||||||
|
|
||||||
|
decrypted = crypto.encryption.pub_key_decrypt(encrypted[0], privkey=fakeForwardPair[1], encodedData=True)
|
||||||
|
self.assertEqual(decrypted, message)
|
||||||
|
|
||||||
|
def test_forward_encrypt(self):
|
||||||
|
|
||||||
|
friend = crypto.generate()
|
||||||
|
|
||||||
|
friendUser = onionrusers.OnionrUser(friend[0], saveUser=True)
|
||||||
|
|
||||||
|
for x in range(5):
|
||||||
|
message = 'hello world %s' % (random.randint(1, 1000))
|
||||||
|
forwardKey = friendUser.generateForwardKey()
|
||||||
|
|
||||||
|
fakeForwardPair = crypto.generate()
|
||||||
|
|
||||||
|
self.assertTrue(friendUser.addForwardKey(fakeForwardPair[0]))
|
||||||
|
|
||||||
|
encrypted = friendUser.forwardEncrypt(message)
|
||||||
|
|
||||||
|
decrypted = crypto.encryption.pub_key_decrypt(encrypted[0], privkey=fakeForwardPair[1], encodedData=True)
|
||||||
|
self.assertEqual(decrypted, message.encode())
|
||||||
|
return
|
||||||
|
|
||||||
|
unittest.main()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user