* Remove ifaddr since psutil provides access to net interfaces
+ added mimcvdf dependency for future block spec
This commit is contained in:
		
							parent
							
								
									d4f4487fb6
								
							
						
					
					
						commit
						fe3b6c01c4
					
				
					 4 changed files with 75 additions and 34 deletions
				
			
		|  | @ -13,4 +13,4 @@ toomanyobjs==1.1.0 | ||||||
| niceware==0.2.1 | niceware==0.2.1 | ||||||
| psutil==5.7.0 | psutil==5.7.0 | ||||||
| filenuke==0.0.0 | filenuke==0.0.0 | ||||||
| ifaddr==0.1.6 | mimcvdf==0.0.0 | ||||||
|  | @ -47,13 +47,16 @@ click==7.0 \ | ||||||
|     --hash=sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7 \ |     --hash=sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7 \ | ||||||
|     # via flask |     # via flask | ||||||
| deadsimplekv==0.2.0 \ | deadsimplekv==0.2.0 \ | ||||||
|     --hash=sha256:81405408a4d23cc94ac359f9570e0ff198b67e5a93e3ae32eca85e3b62252f38 |     --hash=sha256:81405408a4d23cc94ac359f9570e0ff198b67e5a93e3ae32eca85e3b62252f38 \ | ||||||
|  |     # 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.in | ||||||
| flask==1.1.1 \ | flask==1.1.1 \ | ||||||
|     --hash=sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52 \ |     --hash=sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52 \ | ||||||
|     --hash=sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6 |     --hash=sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6 \ | ||||||
|  |     # via -r requirements.in | ||||||
| gevent==1.4.0 \ | gevent==1.4.0 \ | ||||||
|     --hash=sha256:0774babec518a24d9a7231d4e689931f31b332c4517a771e532002614e270a64 \ |     --hash=sha256:0774babec518a24d9a7231d4e689931f31b332c4517a771e532002614e270a64 \ | ||||||
|     --hash=sha256:0e1e5b73a445fe82d40907322e1e0eec6a6745ca3cea19291c6f9f50117bb7ea \ |     --hash=sha256:0e1e5b73a445fe82d40907322e1e0eec6a6745ca3cea19291c6f9f50117bb7ea \ | ||||||
|  | @ -77,7 +80,8 @@ gevent==1.4.0 \ | ||||||
|     --hash=sha256:ab4dc33ef0e26dc627559786a4fba0c2227f125db85d970abbf85b77506b3f51 \ |     --hash=sha256:ab4dc33ef0e26dc627559786a4fba0c2227f125db85d970abbf85b77506b3f51 \ | ||||||
|     --hash=sha256:d1e6d1f156e999edab069d79d890859806b555ce4e4da5b6418616322f0a3df1 \ |     --hash=sha256:d1e6d1f156e999edab069d79d890859806b555ce4e4da5b6418616322f0a3df1 \ | ||||||
|     --hash=sha256:d752bcf1b98174780e2317ada12013d612f05116456133a6acf3e17d43b71f05 \ |     --hash=sha256:d752bcf1b98174780e2317ada12013d612f05116456133a6acf3e17d43b71f05 \ | ||||||
|     --hash=sha256:e5bcc4270671936349249d26140c267397b7b4b1381f5ec8b13c53c5b53ab6e1 |     --hash=sha256:e5bcc4270671936349249d26140c267397b7b4b1381f5ec8b13c53c5b53ab6e1 \ | ||||||
|  |     # via -r requirements.in | ||||||
| greenlet==0.4.15 \ | greenlet==0.4.15 \ | ||||||
|     --hash=sha256:000546ad01e6389e98626c1367be58efa613fa82a1be98b0c6fc24b563acc6d0 \ |     --hash=sha256:000546ad01e6389e98626c1367be58efa613fa82a1be98b0c6fc24b563acc6d0 \ | ||||||
|     --hash=sha256:0d48200bc50cbf498716712129eef819b1729339e34c3ae71656964dac907c28 \ |     --hash=sha256:0d48200bc50cbf498716712129eef819b1729339e34c3ae71656964dac907c28 \ | ||||||
|  | @ -103,15 +107,14 @@ idna==2.7 \ | ||||||
|     --hash=sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e \ |     --hash=sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e \ | ||||||
|     --hash=sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16 \ |     --hash=sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16 \ | ||||||
|     # via requests |     # via requests | ||||||
| ifaddr==0.1.6 \ |  | ||||||
|     --hash=sha256:c19c64882a7ad51a394451dabcbbed72e98b5625ec1e79789924d5ea3e3ecb93 |  | ||||||
| itsdangerous==1.1.0 \ | itsdangerous==1.1.0 \ | ||||||
|     --hash=sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19 \ |     --hash=sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19 \ | ||||||
|     --hash=sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749 \ |     --hash=sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749 \ | ||||||
|     # via flask |     # via flask | ||||||
| jinja2==2.11.1 \ | jinja2==2.11.1 \ | ||||||
|     --hash=sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250 \ |     --hash=sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250 \ | ||||||
|     --hash=sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49 |     --hash=sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49 \ | ||||||
|  |     # via -r requirements.in, flask | ||||||
| markupsafe==1.1.1 \ | markupsafe==1.1.1 \ | ||||||
|     --hash=sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473 \ |     --hash=sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473 \ | ||||||
|     --hash=sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161 \ |     --hash=sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161 \ | ||||||
|  | @ -142,9 +145,14 @@ markupsafe==1.1.1 \ | ||||||
|     --hash=sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f \ |     --hash=sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f \ | ||||||
|     --hash=sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7 \ |     --hash=sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7 \ | ||||||
|     # via jinja2 |     # via jinja2 | ||||||
|  | mimcvdf==0.0.0 \ | ||||||
|  |     --hash=sha256:3a0fe81794a3e14cdc736cb3b700013a6f0526eed982d06fb0a5e5391ac2b945 \ | ||||||
|  |     --hash=sha256:c15f0d8d81900a3eead1f77725c5d05b119d57c3e66b7b14cbf5c122b9627b26 \ | ||||||
|  |     # via -r requirements.in | ||||||
| niceware==0.2.1 \ | niceware==0.2.1 \ | ||||||
|     --hash=sha256:0f8b192f2a1e800e068474f6e208be9c7e2857664b33a96f4045340de4e5c69c \ |     --hash=sha256:0f8b192f2a1e800e068474f6e208be9c7e2857664b33a96f4045340de4e5c69c \ | ||||||
|     --hash=sha256:cf2dc0e1567d36d067c61b32fed0f1b9c4534ed511f9eeead4ba548d03b5c9eb |     --hash=sha256:cf2dc0e1567d36d067c61b32fed0f1b9c4534ed511f9eeead4ba548d03b5c9eb \ | ||||||
|  |     # via -r requirements.in | ||||||
| psutil==5.7.0 \ | psutil==5.7.0 \ | ||||||
|     --hash=sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058 \ |     --hash=sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058 \ | ||||||
|     --hash=sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953 \ |     --hash=sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953 \ | ||||||
|  | @ -156,7 +164,8 @@ psutil==5.7.0 \ | ||||||
|     --hash=sha256:d008ddc00c6906ec80040d26dc2d3e3962109e40ad07fd8a12d0284ce5e0e4f8 \ |     --hash=sha256:d008ddc00c6906ec80040d26dc2d3e3962109e40ad07fd8a12d0284ce5e0e4f8 \ | ||||||
|     --hash=sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26 \ |     --hash=sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26 \ | ||||||
|     --hash=sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5 \ |     --hash=sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5 \ | ||||||
|     --hash=sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310 |     --hash=sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310 \ | ||||||
|  |     # via -r requirements.in | ||||||
| pycparser==2.19 \ | pycparser==2.19 \ | ||||||
|     --hash=sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3 \ |     --hash=sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3 \ | ||||||
|     # via cffi |     # via cffi | ||||||
|  | @ -179,30 +188,38 @@ pynacl==1.3.0 \ | ||||||
|     --hash=sha256:aabb0c5232910a20eec8563503c153a8e78bbf5459490c49ab31f6adf3f3a415 \ |     --hash=sha256:aabb0c5232910a20eec8563503c153a8e78bbf5459490c49ab31f6adf3f3a415 \ | ||||||
|     --hash=sha256:bd4ecb473a96ad0f90c20acba4f0bf0df91a4e03a1f4dd6a4bdc9ca75aa3a715 \ |     --hash=sha256:bd4ecb473a96ad0f90c20acba4f0bf0df91a4e03a1f4dd6a4bdc9ca75aa3a715 \ | ||||||
|     --hash=sha256:e2da3c13307eac601f3de04887624939aca8ee3c9488a0bb0eca4fb9401fc6b1 \ |     --hash=sha256:e2da3c13307eac601f3de04887624939aca8ee3c9488a0bb0eca4fb9401fc6b1 \ | ||||||
|     --hash=sha256:f67814c38162f4deb31f68d590771a29d5ae3b1bd64b75cf232308e5c74777e0 |     --hash=sha256:f67814c38162f4deb31f68d590771a29d5ae3b1bd64b75cf232308e5c74777e0 \ | ||||||
|  |     # via -r requirements.in | ||||||
| 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 requirements.in | ||||||
| requests==2.23.0 \ | requests==2.23.0 \ | ||||||
|     --hash=sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee \ |     --hash=sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee \ | ||||||
|     --hash=sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6 |     --hash=sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6 \ | ||||||
|  |     # via -r requirements.in, streamedrequests | ||||||
| six==1.12.0 \ | six==1.12.0 \ | ||||||
|     --hash=sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c \ |     --hash=sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c \ | ||||||
|     --hash=sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73 \ |     --hash=sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73 \ | ||||||
|     # via pynacl |     # via pynacl | ||||||
| stem==1.8.0 \ | stem==1.8.0 \ | ||||||
|     --hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2 |     --hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2 \ | ||||||
|  |     # via -r requirements.in | ||||||
| streamedrequests==1.0.0 \ | streamedrequests==1.0.0 \ | ||||||
|     --hash=sha256:1d9d07394804a6e1fd66bde74a804e71cab98e6920053865574a459f1cf7d3b7 |     --hash=sha256:1d9d07394804a6e1fd66bde74a804e71cab98e6920053865574a459f1cf7d3b7 \ | ||||||
|  |     # via -r requirements.in | ||||||
| toomanyobjs==1.1.0 \ | toomanyobjs==1.1.0 \ | ||||||
|     --hash=sha256:99e27468f9dad19127be9e2fb086b42acd69aed9ad7e63cef74d6e4389be0534 |     --hash=sha256:99e27468f9dad19127be9e2fb086b42acd69aed9ad7e63cef74d6e4389be0534 \ | ||||||
|  |     # via -r requirements.in | ||||||
| unpaddedbase32==0.2.0 \ | unpaddedbase32==0.2.0 \ | ||||||
|     --hash=sha256:4aacee75f8fd6c8cf129842ecba45ca59c11bfb13dae19d86f32b48fa3715403 \ |     --hash=sha256:4aacee75f8fd6c8cf129842ecba45ca59c11bfb13dae19d86f32b48fa3715403 \ | ||||||
|     --hash=sha256:b7b780c31d27d55e66abf6c221216a35690ee8892c2daacff7f2528e229bd9c3 |     --hash=sha256:b7b780c31d27d55e66abf6c221216a35690ee8892c2daacff7f2528e229bd9c3 \ | ||||||
|  |     # via -r requirements.in | ||||||
| urllib3==1.25.8 \ | urllib3==1.25.8 \ | ||||||
|     --hash=sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc \ |     --hash=sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc \ | ||||||
|     --hash=sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc |     --hash=sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc \ | ||||||
|  |     # via -r requirements.in, requests | ||||||
| werkzeug==0.15.5 \ | werkzeug==0.15.5 \ | ||||||
|     --hash=sha256:87ae4e5b5366da2347eb3116c0e6c681a0e939a33b2805e2c0cbd282664932c4 \ |     --hash=sha256:87ae4e5b5366da2347eb3116c0e6c681a0e939a33b2805e2c0cbd282664932c4 \ | ||||||
|     --hash=sha256:a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6 \ |     --hash=sha256:a13b74dd3c45f758d4ebdb224be8f1ab8ef58b3c0ffc1783a8c7d9f4f50227e6 \ | ||||||
|  |  | ||||||
|  | @ -1,26 +1,44 @@ | ||||||
|  | """Onionr - Private P2P Communication. | ||||||
|  | 
 | ||||||
|  | Identify LAN ip addresses and determine the best one | ||||||
|  | """ | ||||||
| from ipaddress import IPv4Address | from ipaddress import IPv4Address | ||||||
| 
 | 
 | ||||||
| from ifaddr import get_adapters | from psutil import net_if_addrs | ||||||
|  | from socket import AF_INET | ||||||
|  | """ | ||||||
|  |     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/>. | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| lan_ips = [] | lan_ips = [] | ||||||
| 
 | 
 | ||||||
| for adapter in get_adapters(): | # https://psutil.readthedocs.io/en/latest/#psutil.net_if_addrs | ||||||
|     for ip in adapter.ips: | for interface in net_if_addrs().keys(): | ||||||
|         ip = ip.ip |     for address in net_if_addrs()[interface]: | ||||||
|         try: |         # Don't see benefit in ipv6, so just check for v4 addresses | ||||||
|             ip = IPv4Address(ip) |         if address[0] == AF_INET: | ||||||
|             if not ip.is_private or ip.is_loopback: |             # Mark the address for use in LAN if it is a private address | ||||||
|                 raise ValueError |             if IPv4Address(address[1]).is_private: | ||||||
|         except ValueError: |                 lan_ips.append(address[1]) | ||||||
|             # Raised if not ipv4 or not link local |  | ||||||
|             continue |  | ||||||
|         else: |  | ||||||
|             lan_ips.append(ip.exploded) |  | ||||||
| 
 | 
 | ||||||
|  | # These are more likely to be actual local subnets rather than VPNs | ||||||
| for ip in lan_ips: | for ip in lan_ips: | ||||||
|     if '192.168' in ip: |     if '192.168' in ip: | ||||||
|         best_ip = ip |         best_ip = ip | ||||||
|         break |         break | ||||||
| else: | else: | ||||||
|     best_ip = lan_ips[0] |     try: | ||||||
| 
 |         best_ip = lan_ips[0] | ||||||
|  |     except IndexError: | ||||||
|  |         best_ip = "" | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ print("Test directory:", TEST_DIR) | ||||||
| os.environ["ONIONR_HOME"] = TEST_DIR | os.environ["ONIONR_HOME"] = TEST_DIR | ||||||
| import unittest | import unittest | ||||||
| 
 | 
 | ||||||
| from lan.getip import lan_ips | from lan.getip import lan_ips, best_ip | ||||||
| 
 | 
 | ||||||
| class TestGetLanIps(unittest.TestCase): | class TestGetLanIps(unittest.TestCase): | ||||||
|     def test_get_lan_ips(self): |     def test_get_lan_ips(self): | ||||||
|  | @ -19,5 +19,11 @@ class TestGetLanIps(unittest.TestCase): | ||||||
|             if not ip.is_private or ip.is_multicast or ip.is_reserved: |             if not ip.is_private or ip.is_multicast or ip.is_reserved: | ||||||
|                 raise ValueError |                 raise ValueError | ||||||
| 
 | 
 | ||||||
|  |     def test_best_lan_ip(self): | ||||||
|  |         ip = best_ip | ||||||
|  |         ip = ipaddress.IPv4Address(ip) | ||||||
|  |         if not ip.is_private or ip.is_multicast or ip.is_reserved: | ||||||
|  |             raise ValueError | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| unittest.main() | unittest.main() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue