From 14dcbda9fd78c6c5785232071eb30e21215139a6 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Wed, 11 Aug 2021 01:18:04 -0700 Subject: [PATCH] Add networktools, though some ideas are still not implemented. --- voussoirkit/networktools.py | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 voussoirkit/networktools.py diff --git a/voussoirkit/networktools.py b/voussoirkit/networktools.py new file mode 100644 index 0000000..68092c0 --- /dev/null +++ b/voussoirkit/networktools.py @@ -0,0 +1,39 @@ +import requests +import socket + +from voussoirkit import vlogging + +log = vlogging.getLogger(__name__, 'networktools') + +def get_external_ip(): + url = 'https://voussoir.net/whatsmyip' + response = requests.get(url) + response.raise_for_status() + ip = response.text.strip() + return ip + +def get_lan_ip(): + ''' + thank you unknwntech + https://stackoverflow.com/a/166589 + ''' + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.connect(('8.8.8.8', 80)) + return sock.getsockname()[0] + +def get_gateway_ip(): + # How to find ip of the router? + raise NotImplementedError + +def has_lan(): + # Open a socket to the router + raise NotImplementedError + +def has_internet(timeout=2): + socket.setdefaulttimeout(timeout) + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect(('8.8.8.8', 53)) + return True + except socket.error as exc: + return False