def post(self): domain_id = request.form.get('domain_id') if domain_id is None: abort(400, message="domain_id parameter is required") domain_id = int(domain_id) # check if the domain exists try: domain = self.get_domain(domain_id) except peewee.DoesNotExist: abort(404, message="domain_id does not exist: " + str(domain_id)) record_type = request.form.get('record_type') try: readable_type = RecordType().set(record_type) except RecordTypeException: abort(400, message="Invalid record_type: " + str(record_type)) # If SOA, make sure a record doesn't yet exist if record_type == "SOA": try: ModelRecord.get( ModelRecord.type == RecordType().set(record_type), ModelRecord.domain_id == domain_id) abort(400, message="SOA record already exists for this domain") except peewee.DoesNotExist: pass TypeModel = RecordType().get_class(RecordType().set(record_type))() self.request_form_to_type_model(request.form, TypeModel, domain) TypeModel.values["domain_id"] = domain.domain_id model = TypeModel.to_model() # get domain and check authorization domain = self.auth.account.get_domain_by_record_acl( domain_id, model.host, record_type) if domain is False: self.auth.account.load_domains() domain = self.get_write_domain(domain_id) try: model.save() except RecordValueException as e: abort(400, message=e.message) self.dns_log(domain.domain_id, ("added " + record_type + " with host " + model.host + " and value " + model.val)) # notify listeners of dns data change self.send_update_notification() return {'status': 'ok', 'record': model.to_recordtype().to_dict()}, 201
def post(self): domain_id = request.form.get('domain_id') if domain_id is None: abort(400, message="domain_id parameter is required") domain_id = int(domain_id) # check if the domain exists try: self.get_domain(domain_id) except peewee.DoesNotExist: abort(404, message="domain_id does not exist: " + domain_id) # get domain and check authorization self.auth.account.load_domains() domain = self.get_write_domain(domain_id) record_type = request.form.get('record_type') try: readable_type = RecordType().set(record_type) except RecordTypeException: abort(400, message="Invalid record_type: " + str(record_type)) # If SOA, make sure a record doesn't yet exist if record_type == "SOA": try: ModelRecord.get( ModelRecord.type == RecordType().set(record_type), ModelRecord.domain_id == domain_id ) abort(400, message="SOA record already exists for this domain") except peewee.DoesNotExist: pass TypeModel = RecordType().get_class(RecordType().set(record_type))() self.request_form_to_type_model(request.form, TypeModel, domain) TypeModel.values["domain_id"] = domain.domain_id model = TypeModel.to_model() try: model.save() except RecordValueException as e: abort(400, message=e.message) self.dns_log( domain.domain_id, ( "added " + record_type + " with host " + model.host + " and value " + model.val ) ) return {'status': 'ok', 'record': model.to_recordtype().to_dict()}, 201
def post(self): # only open to senior_admin for now if self.auth.account.account_type != 'senior_admin': abort(403) record_type = request.form.get('record_type') try: record_type_in_db = RecordType().set(record_type) except RecordTypeException: abort(400, message="Invalid record_type: " + record_type) if record_type in ["AAAA+PTR", "PTR"]: abort( 400, message="Sorry, record_type " + record_type + " is not supported for default records" ) # If SOA, make sure a record doesn't yet exist if record_type == "SOA": try: ModelDefaultRecord.get( ModelDefaultRecord.type == record_type_in_db ) abort(400, message="A default SOA record already exists") except peewee.DoesNotExist: pass TypeModel = RecordType().get_class(RecordType().set(record_type))() self.request_form_to_type_model(request.form, TypeModel, None) model = TypeModel.to_model(default_record=True) model.default_type = "system" model.save() return { 'status': 'ok', 'default_record': model.to_recordtype().to_dict() }, 201
def post(self): # only open to senior_admin for now if self.auth.account.account_type != 'senior_admin': abort(403) record_type = request.form.get('record_type') try: record_type_in_db = RecordType().set(record_type) except RecordTypeException: abort(400, message="Invalid record_type: " + record_type) if record_type in ["AAAA+PTR", "PTR"]: abort(400, message="Sorry, record_type " + record_type + " is not supported for default records") # If SOA, make sure a record doesn't yet exist if record_type == "SOA": try: ModelDefaultRecord.get( ModelDefaultRecord.type == record_type_in_db) abort(400, message="A default SOA record already exists") except peewee.DoesNotExist: pass TypeModel = RecordType().get_class(RecordType().set(record_type))() self.request_form_to_type_model(request.form, TypeModel, None) model = TypeModel.to_model(default_record=True) model.default_type = "system" model.save() return { 'status': 'ok', 'default_record': model.to_recordtype().to_dict() }, 201