Файловый менеджер - Редактировать - /opt/cpmigrate/environments/dns.py
Ðазад
"""DNS Environment Module""" import dns.resolver from environments.base import Environment class DNS(Environment): """ Checks nameservers, determines if they are vanity or actual custom nameservers. If they are custom, will install and set up PowerDNS. """ def __init__(self): Environment.__init__(self) self.priority = 99 self.imh_ns = [ 'ns.inmotionhosting.com', 'ns1.inmotionhosting.com', 'ns2.inmotionhosting.com', 'ns.servconfig.com', 'ns1.servconfig.com', 'ns2.servconfig.com', ] self.imh_ns_ips = [ '74.124.210.242', '70.39.150.2', '216.194.168.112', '70.39.146.236', ] self.nameservers = {} self.is_vanity = False def check(self, _): self.check_custom_ns() if self.is_custom_ns(): self.check_vanity() if not self.is_vanity: self.actions.append("+ Enable named and set up PowerDNS.") def run(self, _): if self.is_custom_ns(): self.change_nameservers() if not self.is_vanity: self.enable_named() self.setup_powerdns() def is_custom_ns(self): """Returns True if the nameservers are custom and not ours.""" for name_serv in self.nameservers: if name_serv not in self.imh_ns: return True return False def check_vanity(self): """Checks the nameservers to determine if they are vanity or custom. Returns: bool: whether or not they are vanity """ for name_serv in self.nameservers: if name_serv not in self.imh_ns: try: ipaddrs = dns.resolver.query(name_serv, 'A') for ipaddr in ipaddrs: if ipaddr in self.imh_ns_ips: self.info(f"Found vanity nameserver: {name_serv}") self.is_vanity = True return True except (dns.resolver.NXDOMAIN, dns.resolver.Timeout): self.info(f"Unable to get A record for {name_serv}.") return False def check_custom_ns(self): """Checks for custom nameservers.""" resp = self.xfer.origin_whmapi_call('get_nameserver_config') self.nameservers = resp.get('nameservers') if self.is_custom_ns(): self.warning( f"Custom nameservers detected: {', '.join(self.nameservers)}" ) self.actions.append( f"+ Change nameservers to: {', '.join(self.nameservers)}" ) def get_custom_ns(self, position): """ Returns the custom nameserver for the position requested. Returns an empty string if there is nothing in that position. """ try: return self.nameservers[position] except IndexError: return "" def change_nameservers(self): """Changes the primary nameservers on the server.""" self.info('Changing nameservers.') self.xfer.whmapi_call( 'update_nameservers_config', { 'nameserver': self.get_custom_ns(0), 'nameserver2': self.get_custom_ns(1), 'nameserver3': self.get_custom_ns(2), 'nameserver4': self.get_custom_ns(3), }, ) self.info('Nameserver change complete.') def enable_named(self): """Enables the named service on the target machine.""" self.info("Enabling the named service.") self.xfer.whmapi_call( "configureservice", {"service": "named", "enabled": "1", "monitored": "1"}, ) def setup_powerdns(self): """Sets up and installs PowerDNS.""" self.info("Setting up PowerDNS.") ret_code, _ = self.xfer.local_command( ['/scripts/setupnameserver', 'powerdns'], sleep=1 ) if ret_code == 0: self.info("Successfully installed and set up PowerDNS.") else: self.error("Failed to set up PowerDNS.", note=True) def capture_state(self): state = {'nameservers': self.nameservers} return super().capture_state(state) def load_state(self, loadstate): self.nameservers = loadstate.get('nameservers', {}) super().load_state(loadstate)
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка