35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
# ##########################################################################
|
|
# #
|
|
# # pgAdmin 4 - PostgreSQL Tools
|
|
# #
|
|
# # Copyright (C) 2013 - 2022, The pgAdmin Development Team
|
|
# # This software is released under the PostgreSQL Licence
|
|
# #
|
|
# ##########################################################################
|
|
|
|
import urllib3
|
|
import ipaddress
|
|
|
|
|
|
def get_my_ip():
|
|
""" Return the public IP of this host """
|
|
http = urllib3.PoolManager()
|
|
try:
|
|
external_ip = http.request('GET', 'https://ident.me').data
|
|
except Exception:
|
|
try:
|
|
external_ip = http.request('GET', 'https://ifconfig.me/ip').data
|
|
except Exception:
|
|
external_ip = '127.0.0.1'
|
|
|
|
if type(external_ip) == bytes:
|
|
external_ip = external_ip.decode('utf-8')
|
|
|
|
ip = ipaddress.ip_address(external_ip)
|
|
if isinstance(ip, ipaddress.IPv4Address):
|
|
return '{}/{}'.format(external_ip, 32)
|
|
elif isinstance(ip, ipaddress.IPv6Address):
|
|
return '{}/{}'.format(external_ip, 128)
|
|
|
|
return '{}/{}'.format(external_ip, 32)
|