def do_delete_record(self, line): ''' delete DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4 ''' # check and set defaults retcode, retmsg = self.kvargcheck({ 'name': 'type', 'required': True }, { 'name': 'name', 'required': True }, { 'name': 'data', 'required': True }) if not retcode: # something bad happened self.r(1, retmsg, ERROR) return False self.r(0, retmsg, INFO) # everything's ok # additional checks if self.kvarg['type'] != 'A' and self.kvarg['type'] != 'MX': cmd_out = "type not supported" self.r(1, retmsg, ERROR) return False if not is_ipv4(self.kvarg['data']): cmd_out = '\'%s\' is not a valid IP v4 address' % self.kvarg['data'] self.r(1, cmd_out, ERROR) return False try: dns = pyrax.cloud_dns (del_rec_data, domain_name) = name.split('.', 1) dom = dns.find(name=domain_name) try: for r in dom.list_records(): if (r.name == self.kvarg['name'] and r.type == self.kvarg['type'] and r.data == self.kvarg['data']): r.delete() cmd_out = ("delete '%s' in domain '%s'" % (del_rec_data, domain_name)) self.r(0, cmd_out, INFO) except: cmd_out = "cannot delete dns record '%s'" % name self.r(1, cmd_out, ERROR) except exc.NotFound: cmd_out = "domain '%s' not found" % name self.r(1, cmd_out, ERROR)
def do_delete_record(self, line): ''' delete DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4 ''' dns = pyrax.cloud_dns logging.debug("line: %s" % line) d_kv = kvstring_to_dict(line) logging.debug("kvs: %s" % d_kv) # default values (_type, name, data) = (None, None, None) # parsing parameters if 'type' in d_kv.keys(): _type = d_kv['type'] if _type != 'A' and _type != 'MX': logging.warn("type not supported") return False else: logging.warn("type missing") return False if 'name' in d_kv.keys(): name = d_kv['name'] else: logging.warn("name missnameing") return False if 'data' in d_kv.keys(): data = d_kv['data'] if not is_ipv4(data): logging.error('\'%s\' is not a valid IP v4 address' % data) return False else: logging.warn("data missing") return False try: (del_rec_data, domain_name) = name.split('.', 1) logging.debug("delete '%s' in domain '%s'" % (del_rec_data, domain_name)) dom = dns.find(name=domain_name) try: for r in dom.list_records(): if r.name == name and r.type == _type and r.data == data: r.delete() except: logging.error("cannot delete dns record '%s'" % name) except exc.NotFound: logging.error("domain '%s' not found" % name)
def do_delete_record(self, line): ''' delete DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4 ''' # check and set defaults retcode, retmsg = self.kvargcheck( {'name':'type', 'required':True}, {'name':'name', 'required':True}, {'name':'data', 'required':True} ) if not retcode: # something bad happened self.r(1, retmsg, ERROR) return False self.r(0, retmsg, INFO) # everything's ok # additional checks if self.kvarg['type'] != 'A' and self.kvarg['type'] != 'MX': cmd_out = "type not supported" self.r(1, retmsg, ERROR) return False if not is_ipv4(self.kvarg['data']): cmd_out = '\'%s\' is not a valid IP v4 address' % self.kvarg['data'] self.r(1, cmd_out, ERROR) return False try: dns = pyrax.cloud_dns (del_rec_data, domain_name) = name.split('.', 1) dom = dns.find(name=domain_name) try: for r in dom.list_records(): if (r.name == self.kvarg['name'] and r.type == self.kvarg['type'] and r.data == self.kvarg['data']): r.delete() cmd_out = ("delete '%s' in domain '%s'" % (del_rec_data, domain_name)) self.r(0, cmd_out, INFO) except: cmd_out = "cannot delete dns record '%s'" % name self.r(1, cmd_out, ERROR) except exc.NotFound: cmd_out = "domain '%s' not found" % name self.r(1, cmd_out, ERROR)
def do_add_record(self, line): ''' add DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4name ttl TTL (optional, default:900) ''' # check and set defaults retcode, retmsg = self.kvargcheck({ 'name': 'type', 'required': True }, { 'name': 'name', 'required': True }, { 'name': 'data', 'required': True }, { 'name': 'ttl', 'default': 900 }) if not retcode: # something bad happened self.r(1, retmsg, ERROR) return False self.r(0, retmsg, INFO) # everything's ok # additional checks if not is_ipv4(self.kvarg['data']): cmd_out = '\'%s\' is not a valid IP v4 address' % self.kvarg['data'] self.r(1, cmd_out, WARN) return False dns = pyrax.cloud_dns rec = { "type": self.kvarg['type'], "name": self.kvarg['name'], "data": self.kvarg['data'], "ttl": self.kvarg['ttl'] } # create missing subdomains domains = self.libplugin.list_domain_names() nearest_domain = self.libplugin.nearest_domain(name, domains) if nearest_domain == None: cmd_out = 'no matching domain found' self.r(1, cmd_out, ERROR) return False logging.debug('nearest_domain:%s' % nearest_domain) missing_subdomains = self.libplugin.missing_subdomains( name, nearest_domain) logging.info("creating missing domains: ", missing_subdomains) nearest_domain_obj = self.libplugin.get_domain_by_name(nearest_domain) for subdomain in missing_subdomains: self.libplugin.create_domain( subdomain, nearest_domain_obj.emailAddress, nearest_domain_obj.ttl, '' # comment ) try: (new_rec_data, domain_name) = name.split('.', 1) logging.debug("add '%s' in domain '%s'" % (new_rec_data, domain_name)) dom = dns.find(name=domain_name) try: dom.add_record(rec) cmd_out = ( "adding dns record name:%s, type:%s, data:%s, ttl:%s" % (self.kvarg['name'], self.kvarg['type'], self.kvarg['data'], self.kvarg['ttl'])) self.r(0, cmd_out, INFO) except pyrax.exceptions.DomainRecordAdditionFailed: cmd_out = "duplicate dns record '%s'" % name self.r(1, cmd_out, ERROR) except exc.NotFound: cmd_out = "domain '%s' not found" % name self.r(1, cmd_out, ERROR)
def do_add_record(self, line): ''' add DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4name ttl TTL (optional, default:900) ''' dns = pyrax.cloud_dns logging.debug("line: %s" % line) d_kv = kvstring_to_dict(line) logging.debug("kvs: %s" % d_kv) # default values (_type, name, data, ttl) = (None, None, None, 900) # parsing parameters if 'type' in d_kv.keys(): _type = d_kv['type'] if _type != 'A': logging.warn("type not supported") return False else: logging.warn("type missing") return False if 'name' in d_kv.keys(): name = d_kv['name'] else: logging.warn("name missing") return False if 'data' in d_kv.keys(): data = d_kv['data'] if not is_ipv4(data): logging.error('\'%s\' is not a valid IP v4 address' % data) return False else: logging.warn("data missing") return False if 'ttl' in d_kv.keys(): ttl = d_kv['ttl'] else: logging.warn("ttl missing") rec = { "type": _type, "name": name, "data": data, "ttl": ttl} # create missing subdomains domains = self.libplugin.list_domain_names() nearest_domain = self.libplugin.nearest_domain(name, domains) if nearest_domain == None: logging.warning('no matching domain found') return False logging.debug('nearest_domain:%s' % nearest_domain) missing_subdomains = self.libplugin.missing_subdomains(name, nearest_domain) print "create: ", missing_subdomains nearest_domain_obj = self.libplugin.get_domain_by_name(nearest_domain) for subdomain in missing_subdomains: self.libplugin.create_domain(subdomain, nearest_domain_obj.emailAddress, nearest_domain_obj.ttl, '' # comment ) # return False # DEBUG try: (new_rec_data, domain_name) = name.split('.', 1) logging.debug("add '%s' in domain '%s'" % (new_rec_data, domain_name)) dom = dns.find(name=domain_name) try: logging.info("adding dns record name:%s, type:%s, data:%s, ttl:%s" % (name, _type, data, ttl)) dom.add_record(rec) except pyrax.exceptions.DomainRecordAdditionFailed: logging.error("duplicate dns record '%s'" % name) except exc.NotFound: logging.error("domain '%s' not found" % name)
def do_add_record(self, line): ''' add DNS record type record type, currently supported: A name domain name data i.e.: 1.2.3.4name ttl TTL (optional, default:900) ''' # check and set defaults retcode, retmsg = self.kvargcheck( {'name':'type', 'required':True}, {'name':'name', 'required':True}, {'name':'data', 'required':True}, {'name':'ttl', 'default':900} ) if not retcode: # something bad happened self.r(1, retmsg, ERROR) return False self.r(0, retmsg, INFO) # everything's ok # additional checks if not is_ipv4(self.kvarg['data']): cmd_out = '\'%s\' is not a valid IP v4 address' % self.kvarg['data'] self.r(1, cmd_out, WARN) return False dns = pyrax.cloud_dns rec = { "type": self.kvarg['type'], "name": self.kvarg['name'], "data": self.kvarg['data'], "ttl": self.kvarg['ttl']} # create missing subdomains domains = self.libplugin.list_domain_names() nearest_domain = self.libplugin.nearest_domain(name, domains) if nearest_domain == None: cmd_out = 'no matching domain found' self.r(1, cmd_out, ERROR) return False logging.debug('nearest_domain:%s' % nearest_domain) missing_subdomains = self.libplugin.missing_subdomains(name, nearest_domain) logging.info("creating missing domains: ", missing_subdomains) nearest_domain_obj = self.libplugin.get_domain_by_name(nearest_domain) for subdomain in missing_subdomains: self.libplugin.create_domain(subdomain, nearest_domain_obj.emailAddress, nearest_domain_obj.ttl, '' # comment ) try: (new_rec_data, domain_name) = name.split('.', 1) logging.debug("add '%s' in domain '%s'" % (new_rec_data, domain_name)) dom = dns.find(name=domain_name) try: dom.add_record(rec) cmd_out = ("adding dns record name:%s, type:%s, data:%s, ttl:%s" % (self.kvarg['name'], self.kvarg['type'], self.kvarg['data'], self.kvarg['ttl'])) self.r(0, cmd_out, INFO) except pyrax.exceptions.DomainRecordAdditionFailed: cmd_out = "duplicate dns record '%s'" % name self.r(1, cmd_out, ERROR) except exc.NotFound: cmd_out = "domain '%s' not found" % name self.r(1, cmd_out, ERROR)