Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
__init__.py97 linesDownload Raw Back to utils
1# ##########################################################################2# #3# # pgAdmin 4 - PostgreSQL Tools4# #5# # Copyright (C) 2013 - 2024, The pgAdmin Development Team6# # This software is released under the PostgreSQL Licence7# #8# ##########################################################################9 10import urllib311import ipaddress12from flask_security import current_user13from pgadmin.misc.bgprocess.processes import IProcessDesc14from pgadmin.model import db, Server15from flask_babel import gettext16from pgadmin.utils import get_server17 18 19def get_my_ip():20    """ Return the public IP of this host """21    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)22    http = urllib3.PoolManager(cert_reqs='CERT_NONE')23    try:24        external_ip = http.request('GET', 'https://ifconfig.me/ip').data25    except Exception:26        try:27            external_ip = http.request('GET', 'https://ident.me').data28        except Exception:29            external_ip = '127.0.0.1'30 31    if isinstance(external_ip, bytes):32        external_ip = external_ip.decode('utf-8')33 34    ip = ipaddress.ip_address(external_ip)35    if isinstance(ip, ipaddress.IPv4Address):36        return '{}/{}'.format(external_ip, 32)37    elif isinstance(ip, ipaddress.IPv6Address):38        return '{}/{}'.format(external_ip, 128)39 40    return '{}/{}'.format(external_ip, 32)41 42 43def _create_server(data):44    """Create Server"""45    server = Server(46        user_id=current_user.id,47        servergroup_id=data.get('gid'),48        name=data.get('name'),49        maintenance_db=data.get('db'),50        username=data.get('username'),51        cloud_status=data.get('cloud_status'),52        connection_params={'sslmode': 'prefer', 'connect_timeout': 30}53    )54 55    db.session.add(server)56    db.session.commit()57 58    return server.id59 60 61class CloudProcessDesc(IProcessDesc):62    """Cloud Server Process Description."""63    def __init__(self, _sid, _cmd, _provider, _instance_name):64        self.sid = _sid65        self.cmd = _cmd66        self.instance_name = _instance_name67        self.provider = 'Amazon RDS'68 69        if _provider == 'aws':70            self.provider = 'Amazon RDS'71        elif _provider == 'azure':72            self.provider = 'Azure Database'73        elif _provider == 'google':74            self.provider = 'Google Cloud SQL'75        else:76            self.provider = 'EDB BigAnimal'77 78    @property79    def message(self):80        return gettext("Deployment on {0} is started for instance {1}.".format(81            self.provider, self.instance_name))82 83    def details(self, cmd, args):84        server = getattr(get_server(self.sid), 'name', "Not available")85 86        return {87            "message": self.message,88            "cmd": self.cmd,89            "server": server,90            "object": self.instance_name,91            "type": self.provider,92        }93 94    @property95    def type_desc(self):96        return gettext("Cloud Deployment")97 
codekingpro/portable-devtools · Team Ai