diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index f4beffbe..00000000 --- a/requirements.txt +++ /dev/null @@ -1,365 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile --generate-hashes requirements.in -# -autocommand==2.2.1 \ - --hash=sha256:85d03044c2a1fc1c7844ac41545045927aecde0cbaf8ea28b88e0cd8588ce5d3 \ - --hash=sha256:fed420e9d02745821a782971b583c6970259ee0b229be2a0a401e1467a4f170f - # via jaraco-text -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 - # -r requirements.in - # pynacl -cheroot==8.6.0 \ - --hash=sha256:366adf6e7cac9555486c2d1be6297993022eff6f8c4655c1443268cca3f08e25 \ - --hash=sha256:62cbced16f07e8aaf512673987cd6b1fc5ad00073345e9ed6c4e2a5cc2a3a22d - # via cherrypy -cherrypy==18.8.0 \ - --hash=sha256:9b48cfba8a2f16d5b6419cc657e6d51db005ba35c5e3824e4728bb03bbc7ef9b \ - --hash=sha256:b56097025dc78a76a59db551b3a82871c6b3a0107b80b12ff759e4c0b3b947ce - # via -r requirements.in -filenuke==0.0.0 \ - --hash=sha256:147011c0125121469cae0a8a7f4df399f470e54aa29a08f2d2c099bf0118dcee \ - --hash=sha256:c55535dcecfdb27c5f4ce664d46e115950b5429763b5db75c198053646177f8f - # via -r requirements.in -inflect==6.0.0 \ - --hash=sha256:0bc1516ec2725e2d8221707a612245093cb6f1cea209cfd8cbd4fc5e96fa6365 \ - --hash=sha256:e3b85d65a296843268f35f4136283ad7c012a129375db1529d49b4b01ecb400b - # via jaraco-text -jaraco-classes==3.2.2 \ - --hash=sha256:6745f113b0b588239ceb49532aa09c3ebb947433ce311ef2f8e3ad64ebb74594 \ - --hash=sha256:e6ef6fd3fcf4579a7a019d87d1e56a883f4e4c35cfe925f86731abc58804e647 - # via jaraco-collections -jaraco-collections==3.5.2 \ - --hash=sha256:072b93eb35f9e48508485755534e66a34ef1cc84af291fd27f39b44d4c0dd2c3 \ - --hash=sha256:1ca12fa4b7067dfc8d7f791c1a8660d970a2bf2f80536ba0aa5cbb71fe1261f1 - # via cherrypy -jaraco-context==4.1.2 \ - --hash=sha256:9327d3e6901923e5a7097aa2df4b9c2bc13f845c7672692e3827ebd1b3d67606 \ - --hash=sha256:a58e94dd67871639abc091b57d32842449b230777570ef2bcec3dc16b912613e - # via jaraco-text -jaraco-functools==3.5.1 \ - --hash=sha256:c8774f73323de42250a659934215da1d899b02c66a6133f1cb79f02a5aff4f38 \ - --hash=sha256:d0adcf91710a0853efe9f23a78fad586bf67df572f0d6d8e0fa36d289ae1c1d9 - # via - # cheroot - # jaraco-text - # tempora -jaraco-text==3.9.0 \ - --hash=sha256:4b2dc3678994de601e3e5b6f554eeb8445651b7ab984893c5e9ac44564033077 \ - --hash=sha256:810bc4aee7329e30bec8c6c6bab1b6ef149359ca4b98928e42178345ed7d7bd8 - # via jaraco-collections -json-rpc==1.13.0 \ - --hash=sha256:84b45058e5ba95f49c7b6afcf7e03ab86bee89bf2c01f3ad8dd41fe114fc1f84 \ - --hash=sha256:def0dbcf5b7084fc31d677f2f5990d988d06497f2f47f13024274cfb2d5d7589 - # via -r requirements.in -kasten==3.0.0 \ - --hash=sha256:52894af46d6e1339f0d5fa8961892b292f99176848bce11877fe4a435b6782e5 \ - --hash=sha256:b22ebdc5f475c2ef9ab74abc36552add0b37732a7ce2be6bd7977ee41b2163b4 - # via onionrblocks -mimcvdf==1.2.1 \ - --hash=sha256:7c837c46cfb9dce4ba895bc706a69646d4d5185c66aeaa333b5cfaa9a7d06dc4 - # via kasten -more-itertools==8.14.0 \ - --hash=sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2 \ - --hash=sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750 - # via - # cheroot - # cherrypy - # jaraco-classes - # jaraco-functools - # jaraco-text -msgpack==1.0.3 \ - --hash=sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc \ - --hash=sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147 \ - --hash=sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3 \ - --hash=sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba \ - --hash=sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39 \ - --hash=sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85 \ - --hash=sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9 \ - --hash=sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a \ - --hash=sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec \ - --hash=sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88 \ - --hash=sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e \ - --hash=sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a \ - --hash=sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b \ - --hash=sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1 \ - --hash=sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3 \ - --hash=sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef \ - --hash=sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079 \ - --hash=sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52 \ - --hash=sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a \ - --hash=sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a \ - --hash=sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4 \ - --hash=sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996 \ - --hash=sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73 \ - --hash=sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a \ - --hash=sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920 \ - --hash=sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7 \ - --hash=sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d \ - --hash=sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770 \ - --hash=sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50 \ - --hash=sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2 \ - --hash=sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2 \ - --hash=sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d \ - --hash=sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea \ - --hash=sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611 - # via kasten -niceware==0.2.1 \ - --hash=sha256:0f8b192f2a1e800e068474f6e208be9c7e2857664b33a96f4045340de4e5c69c \ - --hash=sha256:cf2dc0e1567d36d067c61b32fed0f1b9c4534ed511f9eeead4ba548d03b5c9eb - # via -r requirements.in -onionrblocks==7.0.0 \ - --hash=sha256:53e90964371076d9daf2ed0790b21f174ef3321f4f1808209cc6dd9b7ff6d8ff \ - --hash=sha256:54af28d0be856209525646c4ef9f977f95f0ae1329b2cc023b351317c9d0eef7 - # via -r requirements.in -ordered-set==4.1.0 \ - --hash=sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562 \ - --hash=sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8 - # via -r requirements.in -portend==3.1.0 \ - --hash=sha256:239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4 \ - --hash=sha256:9e735cee3a5c1961f09e3f3ba6dc498198c2d70b473d98d0d1504b8d1e7a3d61 - # via cherrypy -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.in -pycparser==2.19 \ - --hash=sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3 - # via cffi -pydantic==1.9.2 \ - --hash=sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44 \ - --hash=sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d \ - --hash=sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84 \ - --hash=sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555 \ - --hash=sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7 \ - --hash=sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131 \ - --hash=sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8 \ - --hash=sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3 \ - --hash=sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56 \ - --hash=sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0 \ - --hash=sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4 \ - --hash=sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453 \ - --hash=sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044 \ - --hash=sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e \ - --hash=sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15 \ - --hash=sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb \ - --hash=sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001 \ - --hash=sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d \ - --hash=sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3 \ - --hash=sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e \ - --hash=sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f \ - --hash=sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c \ - --hash=sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b \ - --hash=sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8 \ - --hash=sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567 \ - --hash=sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979 \ - --hash=sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326 \ - --hash=sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb \ - --hash=sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f \ - --hash=sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa \ - --hash=sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747 \ - --hash=sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801 \ - --hash=sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55 \ - --hash=sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08 \ - --hash=sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76 - # via inflect -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 - # -r requirements.in - # onionrblocks -pysocks==1.7.1 \ - --hash=sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299 \ - --hash=sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5 \ - --hash=sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0 - # via -r requirements.in -pytz==2022.2.1 \ - --hash=sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197 \ - --hash=sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5 - # via tempora -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via cheroot -stem==1.8.0 \ - --hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2 - # via -r requirements.in -tempora==5.0.2 \ - --hash=sha256:31fa5bb33b2641026211f23e808eb8bd351901988b167d45f323c8f450ecf211 \ - --hash=sha256:e65d32ae68ad772ee738d802689f689b3f883e165e8dadd39aa89ef317b12b99 - # via portend -typing-extensions==4.3.0 \ - --hash=sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02 \ - --hash=sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6 - # via pydantic -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.in -unpaddedbase32==0.2.0 \ - --hash=sha256:4aacee75f8fd6c8cf129842ecba45ca59c11bfb13dae19d86f32b48fa3715403 \ - --hash=sha256:b7b780c31d27d55e66abf6c221216a35690ee8892c2daacff7f2528e229bd9c3 - # via -r requirements.in -zc-lockfile==2.0 \ - --hash=sha256:307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b \ - --hash=sha256:cc33599b549f0c8a248cb72f3bf32d77712de1ff7ee8814312eb6456b42c015f - # via cherrypy - -# WARNING: The following packages were not pinned, but pip requires them to be -# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag. -# setuptools diff --git a/run-onionr-node.py b/run-onionr-node.py deleted file mode 100755 index bd8f1609..00000000 --- a/run-onionr-node.py +++ /dev/null @@ -1,150 +0,0 @@ -#!/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() diff --git a/run-onionr-node.sh b/run-onionr-node.sh deleted file mode 100755 index 42f37565..00000000 --- a/run-onionr-node.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/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 \ - "$@" diff --git a/scripts/disable-dev-config.py b/scripts/disable-dev-config.py index ca337a12..8bfce719 100755 --- a/scripts/disable-dev-config.py +++ b/scripts/disable-dev-config.py @@ -11,12 +11,9 @@ conf['tor']['existing_control_port'] = 0 conf['tor']['existing_control_password'] = "" conf['tor']['existing_socks_port'] = 0 -conf['general']['dev_mode'] = False conf['general']['insert_deniable_blocks'] = True conf['general']['random_bind_ip'] = True conf['general']['display_header'] = True -conf['general']['security_level'] = 0 -conf['general']['use_bootstrap_list'] = True conf['onboarding']['done'] = False conf['general']['minimum_block_pow'] = 5 conf['general']['minimum_send_pow'] = 5 diff --git a/scripts/enable-dev-config.py b/scripts/enable-dev-config.py index b4be790d..f2a11434 100755 --- a/scripts/enable-dev-config.py +++ b/scripts/enable-dev-config.py @@ -10,7 +10,6 @@ conf = json.load(open('static-data/default_config.json', 'r')) block_pow = int(input("Block POW level:")) -conf['general']['security_level'] = int(input("Security level:")) conf['transports']['tor'] = False if input('Use Tor? y/n').lower() == 'y': conf['transports']['tor'] = True @@ -20,15 +19,11 @@ if input('Use Tor? y/n').lower() == 'y': conf['tor']['existing_control_password'] = input("Tor pass:") conf['tor']['existing_socks_port'] = int(input("Existing socks port:")) -conf['general']['dev_mode'] = True conf['general']['insert_deniable_blocks'] = False conf['general']['random_bind_ip'] = False conf['onboarding']['done'] = True conf['general']['minimum_block_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['ui']['animated_background'] = False if input('Stat reporting? y/n') == 'y': diff --git a/scripts/remote-ui.py b/scripts/remote-ui.py deleted file mode 100755 index b63540c3..00000000 --- a/scripts/remote-ui.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/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") diff --git a/src/__init__.py b/src/__init__.py index 03aa1b17..ca0d7a23 100755 --- a/src/__init__.py +++ b/src/__init__.py @@ -95,7 +95,6 @@ if sys.version_info[0] == 2 or sys.version_info[1] < min_ver: from utils import createdirs createdirs.create_dirs() -import bigbrother # noqa from onionrcommands import parser # noqa from onionrplugins import onionrevents as events # noqa @@ -105,13 +104,6 @@ import config # noqa from utils import identifyhome # 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(): """Onionr entrypoint, start command processor diff --git a/src/config/__init__.py b/src/config/__init__.py index b0fb72c5..3e523d79 100755 --- a/src/config/__init__.py +++ b/src/config/__init__.py @@ -9,7 +9,6 @@ import ujson as json import logger import filepaths -from . import onboarding """ 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 diff --git a/src/config/onboarding.py b/src/config/onboarding.py deleted file mode 100644 index 0d9e17c5..00000000 --- a/src/config/onboarding.py +++ /dev/null @@ -1,79 +0,0 @@ -"""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 . -""" - - -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 diff --git a/src/filepaths/__init__.py b/src/filepaths/__init__.py index 42c69267..29c5c89d 100644 --- a/src/filepaths/__init__.py +++ b/src/filepaths/__init__.py @@ -7,27 +7,8 @@ app_root = os.path.dirname(os.path.realpath(__file__)) + '/../../' 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' -daemon_mark_file = home + '/daemon-true.txt' lock_file = home + 'onionr.lock' 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' - -ephemeral_services_file = home + 'ephemeral-services.list' - -restarting_indicator = home + "is-restarting" diff --git a/src/onionrcommands/daemonlaunch/__init__.py b/src/onionrcommands/daemonlaunch/__init__.py index d58dacda..a3f9a843 100755 --- a/src/onionrcommands/daemonlaunch/__init__.py +++ b/src/onionrcommands/daemonlaunch/__init__.py @@ -20,7 +20,6 @@ from onionrplugins import onionrevents as events from utils import identifyhome import filepaths import onionrvalues -from onionrutils import cleanup from onionrthreads import add_onionr_thread from blockdb.blockcleaner import clean_block_database from .. import version @@ -43,6 +42,21 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ +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(): version.version(verbosity=5, function=logger.info) @@ -92,7 +106,7 @@ def daemon(): pass - cleanup.delete_run_files() + delete_run_files() if security_level >= 2: filenuke.nuke.clean_tree(identifyhome.identify_home()) diff --git a/src/onionrcommands/daemonlaunch/geturl.py b/src/onionrcommands/daemonlaunch/geturl.py deleted file mode 100644 index fbbd2000..00000000 --- a/src/onionrcommands/daemonlaunch/geturl.py +++ /dev/null @@ -1,24 +0,0 @@ -"""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 diff --git a/src/onionrsetup/defaultpluginsetup.py b/src/onionrsetup/defaultpluginsetup.py index 51b0e5e8..90ad0c13 100644 --- a/src/onionrsetup/defaultpluginsetup.py +++ b/src/onionrsetup/defaultpluginsetup.py @@ -26,10 +26,10 @@ from utils.readstatic import get_static_dir def setup_default_plugins(): # Copy default plugins into plugins folder - if os.path.exists(get_static_dir() + '/default-plugins/'): - names = [f for f in os.listdir(get_static_dir() + '/default-plugins/')] + if os.path.exists(get_static_dir() + '/official-plugins/'): + names = [f for f in os.listdir(get_static_dir() + '/official-plugins/')] shutil.copytree( - get_static_dir() + '/default-plugins/', + get_static_dir() + '/official-plugins/', plugins.get_plugins_folder(), dirs_exist_ok=True) diff --git a/src/onionrtypes/__init__.py b/src/onionrtypes/__init__.py deleted file mode 100644 index 7de469a6..00000000 --- a/src/onionrtypes/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -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) - diff --git a/src/onionrutils/cleanup/__init__.py b/src/onionrutils/cleanup/__init__.py deleted file mode 100644 index aa400fe8..00000000 --- a/src/onionrutils/cleanup/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -"""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 . -""" - - -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) diff --git a/src/onionrutils/escapeansi.py b/src/onionrutils/escapeansi.py index 1641da39..604756c4 100644 --- a/src/onionrutils/escapeansi.py +++ b/src/onionrutils/escapeansi.py @@ -2,11 +2,10 @@ import re 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 - cc-by-sa-3 license https://creativecommons.org/licenses/by-sa/3.0/ + 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/ ''' ansi_escape = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]') return ansi_escape.sub('', line) diff --git a/src/onionrutils/waitforsetvar.py b/src/onionrutils/waitforsetvar.py deleted file mode 100644 index 60921499..00000000 --- a/src/onionrutils/waitforsetvar.py +++ /dev/null @@ -1,8 +0,0 @@ -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) \ No newline at end of file diff --git a/src/onionrvalues.py b/src/onionrvalues.py index 9edd8eb9..c24edbfa 100755 --- a/src/onionrvalues.py +++ b/src/onionrvalues.py @@ -38,9 +38,3 @@ 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' diff --git a/src/utils/createdirs.py b/src/utils/createdirs.py index 22fd3932..8395c01a 100644 --- a/src/utils/createdirs.py +++ b/src/utils/createdirs.py @@ -5,10 +5,7 @@ Create required Onionr directories import os import stat -from onionrplugins import get_plugins_folder - from . import identifyhome -import filepaths import onionrexceptions """ This program is free software: you can redistribute it and/or modify @@ -31,9 +28,7 @@ def create_dirs(): """Create onionr data-related directories in order of the hardcoded list below, then trigger creation of DBs""" - gen_dirs = [home, - filepaths.contacts_location, - filepaths.export_location] + gen_dirs = [home] for path in gen_dirs: if not os.path.exists(path): os.makedirs(path) diff --git a/start-daemon.sh b/start-daemon.sh deleted file mode 100755 index c5128b7f..00000000 --- a/start-daemon.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/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 diff --git a/start-ram.sh b/start-ram.sh deleted file mode 100755 index 399a42a4..00000000 --- a/start-ram.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 diff --git a/static-data/README.md b/static-data/README.md index 90b2156a..26aec635 100755 --- a/static-data/README.md +++ b/static-data/README.md @@ -2,7 +2,7 @@ This folder contains whatever static files are needed by Onionr and default plugins. -default-plugins/: default plugin program files to be installed on first Onionr run. +official-plugins/: default plugin program files to be installed on first Onionr run. www/: onionr web ui static files including those of default plugins diff --git a/static-data/default-plugins/unixtransport/bootstrap.txt b/static-data/default-plugins/unixtransport/bootstrap.txt deleted file mode 100644 index 9fcbdf5b..00000000 --- a/static-data/default-plugins/unixtransport/bootstrap.txt +++ /dev/null @@ -1 +0,0 @@ -/dev/shm/onionr90775244/gossip-server.sock,/dev/shm/onionr1873728538/gossip-server.sock \ No newline at end of file diff --git a/static-data/default_config.json b/static-data/default_config.json index f0680cd3..0252f66d 100755 --- a/static-data/default_config.json +++ b/static-data/default_config.json @@ -1,19 +1,7 @@ { - "advanced": { - "security_auditing": false - }, - "allocations": { - "disk": 1073741824 - }, "general": { - "allow_public_api_dns_rebinding": false, - "announce_node": true, - "dev_mode": false, "display_header": true, - "ephemeral_tunnels": false, - "public_key": "", - "security_level": 0, - "use_bootstrap_list": true + "security_level": 0 }, "log": { "console": { @@ -27,7 +15,7 @@ "verbosity": "default" }, "plugins": { - "disabled": ["unixtransport"], + "disabled": ["unixtransport", "repl", "bigbrother"], "enabled": [] }, "security": { diff --git a/src/bigbrother/README.md b/static-data/official-plugins/bigbrother/README.md similarity index 100% rename from src/bigbrother/README.md rename to static-data/official-plugins/bigbrother/README.md diff --git a/static-data/official-plugins/bigbrother/info.json b/static-data/official-plugins/bigbrother/info.json new file mode 100644 index 00000000..29f2a6b8 --- /dev/null +++ b/static-data/official-plugins/bigbrother/info.json @@ -0,0 +1,4 @@ +{ "name": "bigbrother", + "version": "0.0.0", + "author": "onionr" + } \ No newline at end of file diff --git a/src/bigbrother/__init__.py b/static-data/official-plugins/bigbrother/main.py similarity index 81% rename from src/bigbrother/__init__.py rename to static-data/official-plugins/bigbrother/main.py index 2bb2cac1..0f53e0b7 100644 --- a/src/bigbrother/__init__.py +++ b/static-data/official-plugins/bigbrother/main.py @@ -3,10 +3,11 @@ Processes interpreter hook events to detect security leaks """ import sys +import os from typing import Iterable -from onionrexceptions import PythonVersion -from . import ministry +import logger + """ 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 @@ -21,15 +22,11 @@ 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 . """ +sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) +import ministry - -def _auditing_supported(): - try: - sys.audit - sys.addaudithook - except AttributeError: - raise PythonVersion('Auditing not supported interpreter') - +plugin_name = 'bigbrother' +PLUGIN_VERSION = '0.0.0' def sys_hook_entrypoint(event, info): """Entrypoint for big brother sys auditors.""" @@ -47,5 +44,10 @@ def sys_hook_entrypoint(event, info): def enable_ministries(disable_hooks: Iterable = None): """Enable auditors.""" disable_hooks = disable_hooks or [] - _auditing_supported() # raises PythonVersion exception if <3.8 sys.addaudithook(sys_hook_entrypoint) + + +def on_init(api, data=None): + enable_ministries() + logger.info( + "Big brother enabled, blocking unsafe Python code.", terminal=True) diff --git a/src/bigbrother/ministry/__init__.py b/static-data/official-plugins/bigbrother/ministry/__init__.py similarity index 100% rename from src/bigbrother/ministry/__init__.py rename to static-data/official-plugins/bigbrother/ministry/__init__.py diff --git a/src/bigbrother/ministry/ofcommunication.py b/static-data/official-plugins/bigbrother/ministry/ofcommunication.py similarity index 100% rename from src/bigbrother/ministry/ofcommunication.py rename to static-data/official-plugins/bigbrother/ministry/ofcommunication.py diff --git a/src/bigbrother/ministry/ofdisk.py b/static-data/official-plugins/bigbrother/ministry/ofdisk.py similarity index 100% rename from src/bigbrother/ministry/ofdisk.py rename to static-data/official-plugins/bigbrother/ministry/ofdisk.py diff --git a/src/bigbrother/ministry/ofexec.py b/static-data/official-plugins/bigbrother/ministry/ofexec.py similarity index 54% rename from src/bigbrother/ministry/ofexec.py rename to static-data/official-plugins/bigbrother/ministry/ofexec.py index ead97957..520c286a 100644 --- a/src/bigbrother/ministry/ofexec.py +++ b/static-data/official-plugins/bigbrother/ministry/ofexec.py @@ -40,32 +40,9 @@ def block_exec(event, info): if untrusted_exec: return whitelisted_code = [ - 'netrc.py', - 'shlex.py', - 'gzip.py', - '', - '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 = [ - 'ZABaAGQBZAJsAW0CWgIBAHoGZAFkA2wDWgRXAG4LBABlBXkZAQABAAEAZARaBlkAbgN3AGQFWgZkAWQGbAdtCFoIAQBkAWQDbAlaCWQBZAdsCm0LWgwBAAkAZQmgDWQIZAWhAnM1ZARaBmUIgwBkCRcAWg5kEmQMZQ9kDWUPZgRkDmQPhAVaEGQTZBBkEYQBWhFkA1MA', - 'RwBkAGQBhABkAYMCWgBkAlMA', - 'ZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oIZAFkAmwJWghkAWQCbApaCGQBZAJsC1oIZANaDGQEWg1kBWQCZAJkBmQCZQ1kB2QIZAJmCWQJZAqEAVoOZAVkBmQCZQ1kB2QIZgZkC2QMhAFaD2QCUwA=', - 'ZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oIZAFkAmwJWghkAWQCbApaCGQBZANsC20MWgxtDVoNbQ5aDm0PWg9tEFoQbRFaEQEAZARaEmQFWhNkBmQCZAJkB2QCZRNkCGQJZAJmCWQKZRRkC2UPZRBlFBkAGQBkDGUPZRQZAGQNZRVkDmUPZQ1lFGcBZAJmAhkAGQBkD2UVZBBlFmQRZRZkEmUPZRQZAGQTZQRqF2YUZBRkFYQFWhhkBmQHZAJlE2QIZAlmBmQWZQ5lFGURZRRlEGUUGQBmAhkAZgIZAGQKZRRkDWUVZA5lD2UNZRRnAWQCZgIZABkAZA9lFWQQZRZkEWUWZBNlBGoXZhBkF2QYhAVaGWQCUwA=' ] home = identifyhome.identify_home() diff --git a/static-data/default-plugins/example/.env b/static-data/official-plugins/example/.env similarity index 100% rename from static-data/default-plugins/example/.env rename to static-data/official-plugins/example/.env diff --git a/static-data/default-plugins/example/info.json b/static-data/official-plugins/example/info.json similarity index 100% rename from static-data/default-plugins/example/info.json rename to static-data/official-plugins/example/info.json diff --git a/static-data/default-plugins/example/main.py b/static-data/official-plugins/example/main.py similarity index 100% rename from static-data/default-plugins/example/main.py rename to static-data/official-plugins/example/main.py diff --git a/static-data/default-plugins/repl/.env b/static-data/official-plugins/repl/.env similarity index 100% rename from static-data/default-plugins/repl/.env rename to static-data/official-plugins/repl/.env diff --git a/static-data/default-plugins/repl/info.json b/static-data/official-plugins/repl/info.json similarity index 100% rename from static-data/default-plugins/repl/info.json rename to static-data/official-plugins/repl/info.json diff --git a/static-data/default-plugins/repl/main.py b/static-data/official-plugins/repl/main.py similarity index 100% rename from static-data/default-plugins/repl/main.py rename to static-data/official-plugins/repl/main.py diff --git a/static-data/default-plugins/rpc/.env b/static-data/official-plugins/rpc/.env similarity index 100% rename from static-data/default-plugins/rpc/.env rename to static-data/official-plugins/rpc/.env diff --git a/static-data/default-plugins/rpc/info.json b/static-data/official-plugins/rpc/info.json similarity index 100% rename from static-data/default-plugins/rpc/info.json rename to static-data/official-plugins/rpc/info.json diff --git a/static-data/default-plugins/rpc/main.py b/static-data/official-plugins/rpc/main.py similarity index 100% rename from static-data/default-plugins/rpc/main.py rename to static-data/official-plugins/rpc/main.py diff --git a/static-data/default-plugins/rpc/requirements.in b/static-data/official-plugins/rpc/requirements.in similarity index 100% rename from static-data/default-plugins/rpc/requirements.in rename to static-data/official-plugins/rpc/requirements.in diff --git a/static-data/default-plugins/rpc/rpc/blocks.py b/static-data/official-plugins/rpc/rpc/blocks.py similarity index 100% rename from static-data/default-plugins/rpc/rpc/blocks.py rename to static-data/official-plugins/rpc/rpc/blocks.py diff --git a/static-data/default-plugins/rpc/rpc/pluginrpcmethods.py b/static-data/official-plugins/rpc/rpc/pluginrpcmethods.py similarity index 100% rename from static-data/default-plugins/rpc/rpc/pluginrpcmethods.py rename to static-data/official-plugins/rpc/rpc/pluginrpcmethods.py diff --git a/static-data/default-plugins/tor/.env b/static-data/official-plugins/tor/.env similarity index 100% rename from static-data/default-plugins/tor/.env rename to static-data/official-plugins/tor/.env diff --git a/static-data/default-plugins/tor/announce.py b/static-data/official-plugins/tor/announce.py similarity index 100% rename from static-data/default-plugins/tor/announce.py rename to static-data/official-plugins/tor/announce.py diff --git a/static-data/default-plugins/tor/bootstrap.py b/static-data/official-plugins/tor/bootstrap.py similarity index 100% rename from static-data/default-plugins/tor/bootstrap.py rename to static-data/official-plugins/tor/bootstrap.py diff --git a/static-data/default-plugins/tor/bootstrap.txt b/static-data/official-plugins/tor/bootstrap.txt similarity index 100% rename from static-data/default-plugins/tor/bootstrap.txt rename to static-data/official-plugins/tor/bootstrap.txt diff --git a/static-data/default-plugins/tor/getsocks.py b/static-data/official-plugins/tor/getsocks.py similarity index 100% rename from static-data/default-plugins/tor/getsocks.py rename to static-data/official-plugins/tor/getsocks.py diff --git a/static-data/default-plugins/tor/info.json b/static-data/official-plugins/tor/info.json similarity index 100% rename from static-data/default-plugins/tor/info.json rename to static-data/official-plugins/tor/info.json diff --git a/static-data/default-plugins/tor/main.py b/static-data/official-plugins/tor/main.py similarity index 100% rename from static-data/default-plugins/tor/main.py rename to static-data/official-plugins/tor/main.py diff --git a/static-data/default-plugins/tor/requirements.in b/static-data/official-plugins/tor/requirements.in similarity index 100% rename from static-data/default-plugins/tor/requirements.in rename to static-data/official-plugins/tor/requirements.in diff --git a/static-data/default-plugins/tor/shutdown.py b/static-data/official-plugins/tor/shutdown.py similarity index 100% rename from static-data/default-plugins/tor/shutdown.py rename to static-data/official-plugins/tor/shutdown.py diff --git a/static-data/default-plugins/tor/starttor.py b/static-data/official-plugins/tor/starttor.py similarity index 100% rename from static-data/default-plugins/tor/starttor.py rename to static-data/official-plugins/tor/starttor.py diff --git a/static-data/default-plugins/tor/torfilepaths.py b/static-data/official-plugins/tor/torfilepaths.py similarity index 100% rename from static-data/default-plugins/tor/torfilepaths.py rename to static-data/official-plugins/tor/torfilepaths.py diff --git a/static-data/default-plugins/tor/torpeer.py b/static-data/official-plugins/tor/torpeer.py similarity index 100% rename from static-data/default-plugins/tor/torpeer.py rename to static-data/official-plugins/tor/torpeer.py diff --git a/static-data/official-plugins/unixtransport/bootstrap.txt b/static-data/official-plugins/unixtransport/bootstrap.txt new file mode 100644 index 00000000..d1ae0806 --- /dev/null +++ b/static-data/official-plugins/unixtransport/bootstrap.txt @@ -0,0 +1 @@ +/dev/shm/onionr2911314530/gossip-server.sock \ No newline at end of file diff --git a/static-data/default-plugins/unixtransport/main.py b/static-data/official-plugins/unixtransport/main.py similarity index 100% rename from static-data/default-plugins/unixtransport/main.py rename to static-data/official-plugins/unixtransport/main.py diff --git a/static-data/default-plugins/unixtransport/unixannounce.py b/static-data/official-plugins/unixtransport/unixannounce.py similarity index 100% rename from static-data/default-plugins/unixtransport/unixannounce.py rename to static-data/official-plugins/unixtransport/unixannounce.py diff --git a/static-data/default-plugins/unixtransport/unixbootstrap.py b/static-data/official-plugins/unixtransport/unixbootstrap.py similarity index 100% rename from static-data/default-plugins/unixtransport/unixbootstrap.py rename to static-data/official-plugins/unixtransport/unixbootstrap.py diff --git a/static-data/default-plugins/unixtransport/unixfilepaths.py b/static-data/official-plugins/unixtransport/unixfilepaths.py similarity index 100% rename from static-data/default-plugins/unixtransport/unixfilepaths.py rename to static-data/official-plugins/unixtransport/unixfilepaths.py diff --git a/static-data/default-plugins/unixtransport/unixpeer.py b/static-data/official-plugins/unixtransport/unixpeer.py similarity index 100% rename from static-data/default-plugins/unixtransport/unixpeer.py rename to static-data/official-plugins/unixtransport/unixpeer.py diff --git a/static-data/default-plugins/wot/.env b/static-data/official-plugins/wot/.env similarity index 100% rename from static-data/default-plugins/wot/.env rename to static-data/official-plugins/wot/.env diff --git a/static-data/default-plugins/wot/info.json b/static-data/official-plugins/wot/info.json similarity index 100% rename from static-data/default-plugins/wot/info.json rename to static-data/official-plugins/wot/info.json diff --git a/static-data/default-plugins/wot/main.py b/static-data/official-plugins/wot/main.py similarity index 82% rename from static-data/default-plugins/wot/main.py rename to static-data/official-plugins/wot/main.py index 515df71d..cacb9e95 100644 --- a/static-data/default-plugins/wot/main.py +++ b/static-data/official-plugins/wot/main.py @@ -6,10 +6,8 @@ import sys import os import locale from time import sleep -import traceback from typing import Set, TYPE_CHECKING from threading import Thread, local -import blockdb from gossip.peerset import gossip_peer_set @@ -37,18 +35,14 @@ along with this program. If not, see . """ plugin_name = 'wot' PLUGIN_VERSION = '0.0.0' -from wot import loadfromblocks, identities - - - -def wot_test(arg: int): - return arg + 1 +from wot.identity import identities +from wot.loadfromblocks import load_identities_from_blocks def on_init(api, data=None): logger.info( 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), loadfromblocks.load_identities())) + list(map(lambda x: identities.add(x), load_identities_from_blocks())) diff --git a/static-data/default-plugins/wot/requirements.in b/static-data/official-plugins/wot/requirements.in similarity index 100% rename from static-data/default-plugins/wot/requirements.in rename to static-data/official-plugins/wot/requirements.in diff --git a/static-data/default-plugins/wot/wot/__init__.py b/static-data/official-plugins/wot/wot/__init__.py similarity index 100% rename from static-data/default-plugins/wot/wot/__init__.py rename to static-data/official-plugins/wot/wot/__init__.py diff --git a/static-data/default-plugins/wot/wot/blockprocessingevent.py b/static-data/official-plugins/wot/wot/blockprocessingevent.py similarity index 100% rename from static-data/default-plugins/wot/wot/blockprocessingevent.py rename to static-data/official-plugins/wot/wot/blockprocessingevent.py diff --git a/static-data/default-plugins/wot/wot/exceptions.py b/static-data/official-plugins/wot/wot/exceptions.py similarity index 100% rename from static-data/default-plugins/wot/wot/exceptions.py rename to static-data/official-plugins/wot/wot/exceptions.py diff --git a/static-data/default-plugins/wot/wot/getbykey.py b/static-data/official-plugins/wot/wot/getbykey.py similarity index 100% rename from static-data/default-plugins/wot/wot/getbykey.py rename to static-data/official-plugins/wot/wot/getbykey.py diff --git a/static-data/default-plugins/wot/wot/identity/__init__.py b/static-data/official-plugins/wot/wot/identity/__init__.py similarity index 100% rename from static-data/default-plugins/wot/wot/identity/__init__.py rename to static-data/official-plugins/wot/wot/identity/__init__.py diff --git a/static-data/default-plugins/wot/wot/identity/identityset.py b/static-data/official-plugins/wot/wot/identity/identityset.py similarity index 100% rename from static-data/default-plugins/wot/wot/identity/identityset.py rename to static-data/official-plugins/wot/wot/identity/identityset.py diff --git a/static-data/default-plugins/wot/wot/identity/name.py b/static-data/official-plugins/wot/wot/identity/name.py similarity index 100% rename from static-data/default-plugins/wot/wot/identity/name.py rename to static-data/official-plugins/wot/wot/identity/name.py diff --git a/static-data/default-plugins/wot/wot/identityprocessing/__init__.py b/static-data/official-plugins/wot/wot/identityprocessing/__init__.py similarity index 100% rename from static-data/default-plugins/wot/wot/identityprocessing/__init__.py rename to static-data/official-plugins/wot/wot/identityprocessing/__init__.py diff --git a/static-data/default-plugins/wot/wot/identityprocessing/processidentityannounce.py b/static-data/official-plugins/wot/wot/identityprocessing/processidentityannounce.py similarity index 100% rename from static-data/default-plugins/wot/wot/identityprocessing/processidentityannounce.py rename to static-data/official-plugins/wot/wot/identityprocessing/processidentityannounce.py diff --git a/static-data/default-plugins/wot/wot/identityprocessing/processrevokeidentity.py b/static-data/official-plugins/wot/wot/identityprocessing/processrevokeidentity.py similarity index 100% rename from static-data/default-plugins/wot/wot/identityprocessing/processrevokeidentity.py rename to static-data/official-plugins/wot/wot/identityprocessing/processrevokeidentity.py diff --git a/static-data/default-plugins/wot/wot/identityprocessing/processrevokesignature.py b/static-data/official-plugins/wot/wot/identityprocessing/processrevokesignature.py similarity index 100% rename from static-data/default-plugins/wot/wot/identityprocessing/processrevokesignature.py rename to static-data/official-plugins/wot/wot/identityprocessing/processrevokesignature.py diff --git a/static-data/default-plugins/wot/wot/identityprocessing/processtrustsignature.py b/static-data/official-plugins/wot/wot/identityprocessing/processtrustsignature.py similarity index 100% rename from static-data/default-plugins/wot/wot/identityprocessing/processtrustsignature.py rename to static-data/official-plugins/wot/wot/identityprocessing/processtrustsignature.py diff --git a/static-data/default-plugins/wot/wot/loadfromblocks.py b/static-data/official-plugins/wot/wot/loadfromblocks.py similarity index 91% rename from static-data/default-plugins/wot/wot/loadfromblocks.py rename to static-data/official-plugins/wot/wot/loadfromblocks.py index 1be879bf..78f09ae2 100644 --- a/static-data/default-plugins/wot/wot/loadfromblocks.py +++ b/static-data/official-plugins/wot/wot/loadfromblocks.py @@ -7,9 +7,10 @@ import nacl.exceptions import logger import blockdb -from wot.identity import Identity, processtrustsignature, identities +from wot.identity import Identity, identities from wot.exceptions import IdentitySerializationError from wot.getbykey import get_identity_by_key +from wot.identityprocessing import processtrustsignature def load_identity_from_block(block) -> Identity: diff --git a/static-data/default-plugins/wot/wot/timestamp.py b/static-data/official-plugins/wot/wot/timestamp.py similarity index 100% rename from static-data/default-plugins/wot/wot/timestamp.py rename to static-data/official-plugins/wot/wot/timestamp.py diff --git a/tests/default-plugin-tests/wot/test_get_identity_by_key.py b/tests/default-plugin-tests/wot/test_get_identity_by_key.py index 67e68c97..f7a07f0f 100644 --- a/tests/default-plugin-tests/wot/test_get_identity_by_key.py +++ b/tests/default-plugin-tests/wot/test_get_identity_by_key.py @@ -12,7 +12,7 @@ from nacl import signing import unittest import sys -sys.path.append('static-data/default-plugins/wot/wot') +sys.path.append('static-data/official-plugins/wot/wot') sys.path.append("src/") import onionrblocks from blockdb import block_db_path diff --git a/tests/default-plugin-tests/wot/test_identity_distance.py b/tests/default-plugin-tests/wot/test_identity_distance.py index f96d2154..3e96d3c5 100644 --- a/tests/default-plugin-tests/wot/test_identity_distance.py +++ b/tests/default-plugin-tests/wot/test_identity_distance.py @@ -11,7 +11,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/wot') +sys.path.append('static-data/official-plugins/wot/wot') sys.path.append("src/") from identity import Identity, get_distance diff --git a/tests/default-plugin-tests/wot/test_identity_init.py b/tests/default-plugin-tests/wot/test_identity_init.py index 1fc76a04..16b316e4 100644 --- a/tests/default-plugin-tests/wot/test_identity_init.py +++ b/tests/default-plugin-tests/wot/test_identity_init.py @@ -11,7 +11,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/wot/') +sys.path.append('static-data/official-plugins/wot/wot/') sys.path.append("src/") from identity import Identity diff --git a/tests/default-plugin-tests/wot/test_identity_load_from_blocks.py b/tests/default-plugin-tests/wot/test_identity_load_from_blocks.py index 73780d90..b0ca26cc 100644 --- a/tests/default-plugin-tests/wot/test_identity_load_from_blocks.py +++ b/tests/default-plugin-tests/wot/test_identity_load_from_blocks.py @@ -10,7 +10,7 @@ os.makedirs(TEST_DIR) import unittest import sys -sys.path.append('static-data/default-plugins/wot/wot') +sys.path.append('static-data/official-plugins/wot/wot') sys.path.append("src/") import onionrblocks from blockdb import block_db_path diff --git a/tests/default-plugin-tests/wot/test_identity_serialize.py b/tests/default-plugin-tests/wot/test_identity_serialize.py index 463436aa..e0553221 100644 --- a/tests/default-plugin-tests/wot/test_identity_serialize.py +++ b/tests/default-plugin-tests/wot/test_identity_serialize.py @@ -10,7 +10,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys -sys.path.append('static-data/default-plugins/wot/wot') +sys.path.append('static-data/official-plugins/wot/wot') sys.path.append("src/") from identity import Identity from identity.name import max_len diff --git a/tests/default-plugin-tests/wot/test_process_announce_identity.py b/tests/default-plugin-tests/wot/test_process_announce_identity.py index 7343da38..76ede92a 100644 --- a/tests/default-plugin-tests/wot/test_process_announce_identity.py +++ b/tests/default-plugin-tests/wot/test_process_announce_identity.py @@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/') +sys.path.append('static-data/official-plugins/wot/') sys.path.append("src/") from wot.identityprocessing import process_identity_announce from wot import identity diff --git a/tests/default-plugin-tests/wot/test_process_identity_revoke.py b/tests/default-plugin-tests/wot/test_process_identity_revoke.py index 555d0b16..14885303 100644 --- a/tests/default-plugin-tests/wot/test_process_identity_revoke.py +++ b/tests/default-plugin-tests/wot/test_process_identity_revoke.py @@ -16,7 +16,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/') +sys.path.append('static-data/official-plugins/wot/') sys.path.append("src/") from wot.identityprocessing import process_identity_revoke from wot import identity diff --git a/tests/default-plugin-tests/wot/test_process_revoke_signature.py b/tests/default-plugin-tests/wot/test_process_revoke_signature.py index 1025baff..ca6f9ca4 100644 --- a/tests/default-plugin-tests/wot/test_process_revoke_signature.py +++ b/tests/default-plugin-tests/wot/test_process_revoke_signature.py @@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/') +sys.path.append('static-data/official-plugins/wot/') sys.path.append("src/") from wot import identity from wot.identity.identityset import identities diff --git a/tests/default-plugin-tests/wot/test_process_trust_signature.py b/tests/default-plugin-tests/wot/test_process_trust_signature.py index 563b52e6..1f79f410 100644 --- a/tests/default-plugin-tests/wot/test_process_trust_signature.py +++ b/tests/default-plugin-tests/wot/test_process_trust_signature.py @@ -15,7 +15,7 @@ os.environ["ONIONR_HOME"] = TEST_DIR import unittest import sys sys.path.append(".") -sys.path.append('static-data/default-plugins/wot/wot') +sys.path.append('static-data/official-plugins/wot/wot') sys.path.append("src/") import identity from identity import identities diff --git a/tests/release-tests/test_big_brother.py b/tests/release-tests/test_big_brother.py deleted file mode 100644 index 4f7a2928..00000000 --- a/tests/release-tests/test_big_brother.py +++ /dev/null @@ -1,34 +0,0 @@ -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() diff --git a/tests/release-tests/test_default_config_json.py b/tests/release-tests/test_default_config_json.py index 76ec3e65..dc43d203 100644 --- a/tests/release-tests/test_default_config_json.py +++ b/tests/release-tests/test_default_config_json.py @@ -7,8 +7,6 @@ print("Test directory:", TEST_DIR) os.environ["ONIONR_HOME"] = TEST_DIR from utils import createdirs createdirs.create_dirs() -from onionrcrypto import getourkeypair -getourkeypair.get_keypair() from utils import readstatic import onionrblocks class OnionrConfig(unittest.TestCase): @@ -21,11 +19,8 @@ class OnionrConfig(unittest.TestCase): with open(TEST_DIR + 'config.json') as conf: conf = json.loads(conf.read()) 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']['bind_address'], '') - self.assertEqual(conf['general']['dev_mode'], False) self.assertEqual(conf['general']['display_header'], True) self.assertEqual(conf['general']['ephemeral_tunnels'], False) self.assertEqual(conf['general']['hide_created_blocks'], True) @@ -37,7 +32,6 @@ class OnionrConfig(unittest.TestCase): self.assertEqual(conf['general']['security_level'], 0) self.assertEqual(conf['general']['show_notifications'], 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['log']['console']['color'], True) self.assertEqual(conf['log']['console']['output'], True) diff --git a/tests/test_cleanup.py b/tests/test_cleanup.py index 50bff161..ba4a8dc3 100644 --- a/tests/test_cleanup.py +++ b/tests/test_cleanup.py @@ -10,14 +10,11 @@ import unittest, json from utils import identifyhome, createdirs createdirs.create_dirs() -from onionrutils.cleanup import delete_run_files +from onionrcommands.daemonlaunch import delete_run_files import filepaths run_file_paths = [ - filepaths.public_API_host_file, - filepaths.private_API_host_file, - filepaths.daemon_mark_file, filepaths.lock_file] def _run_paths_exist(): diff --git a/tests/test_waitforsetvars.py b/tests/test_waitforsetvars.py deleted file mode 100644 index f65ef897..00000000 --- a/tests/test_waitforsetvars.py +++ /dev/null @@ -1,49 +0,0 @@ -import sys, os -sys.path.append(".") -sys.path.append("src/") -import unittest, uuid, time, threading - -TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/' -os.environ["ONIONR_HOME"] = TEST_DIR -from utils import createdirs -createdirs.create_dirs() -from onionrcrypto import getourkeypair -getourkeypair.get_keypair() -from onionrutils import waitforsetvar - -def set_test_var_delay(obj, delay=0): - if delay > 0: time.sleep(delay) - obj.test_var = True - -class TestWaitForSetVar(unittest.TestCase): - def test_no_wait(self): - test_object = lambda: None - threading.Thread(target=set_test_var_delay, args=[test_object]).start() - waitforsetvar.wait_for_set_var(test_object, 'test_var') - self.assertTrue(test_object.test_var) - - def test_negative_wait(self): - test_object = lambda: None - threading.Thread(target=set_test_var_delay, args=[test_object, -1]).start() - waitforsetvar.wait_for_set_var(test_object, 'test_var') - self.assertTrue(test_object.test_var) - - def test_zero_wait(self): - test_object = lambda: None - threading.Thread(target=set_test_var_delay, args=[test_object, 0]).start() - waitforsetvar.wait_for_set_var(test_object, 'test_var') - self.assertTrue(test_object.test_var) - - def test_one_wait(self): - test_object = lambda: None - threading.Thread(target=set_test_var_delay, args=[test_object, 1]).start() - waitforsetvar.wait_for_set_var(test_object, 'test_var') - self.assertTrue(test_object.test_var) - - def test_three_wait(self): - test_object = lambda: None - threading.Thread(target=set_test_var_delay, args=[test_object, 3]).start() - waitforsetvar.wait_for_set_var(test_object, 'test_var') - self.assertTrue(test_object.test_var) - -unittest.main()