You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
12 years ago
|
class Users::NsController < UsersController
|
||
13 years ago
|
active_scaffold :ns do |conf|
|
||
13 years ago
|
conf.columns = [:name, :type, :content, :ttl, :prio, :change_date, :authentication_token]
|
||
13 years ago
|
conf.create.columns = [:name, :content, :ttl]
|
||
|
conf.update.columns = [:name, :content, :ttl]
|
||
13 years ago
|
conf.subform.columns = [:content, :ttl]
|
||
13 years ago
|
conf.columns[:content].label = 'NS'
|
||
13 years ago
|
conf.columns[:change_date].list_ui = :timestamp
|
||
13 years ago
|
conf.columns[:ttl].options = {:i18n_number => {:delimiter => ''}}
|
||
13 years ago
|
conf.actions.exclude :show
|
||
13 years ago
|
end
|
||
13 years ago
|
include RecordsControllerCommon
|
||
13 years ago
|
|
||
|
protected
|
||
|
|
||
|
# override to use :mx_records instead of :records assoc
|
||
|
def beginning_of_chain
|
||
13 years ago
|
(nested_via_records? ? nested.parent_scope.ns_records : super).readonly(false)
|
||
13 years ago
|
end
|
||
|
|
||
|
# override, we make our own sti logic
|
||
|
def new_model
|
||
13 years ago
|
record = beginning_of_chain.new
|
||
|
record.name = nested_parent_record.name
|
||
|
record.content = Settings.ns.sample
|
||
|
before_create_save(record)
|
||
|
record
|
||
|
end
|
||
|
|
||
13 years ago
|
def after_update_save(record)
|
||
|
domain = @record.domain
|
||
|
soa_record = domain.soa_record
|
||
|
unless domain.ns_records.any? {|ns_record| soa_record.primary_ns == ns_record.content}
|
||
|
flash.now[:warning] = "SOA record's primary NS is no longer among this domain's NS records"
|
||
|
end
|
||
|
end
|
||
|
|
||
13 years ago
|
def do_destroy
|
||
13 years ago
|
if nested_parent_record.ns_records.count > 1
|
||
|
@record ||= destroy_find_record
|
||
|
begin
|
||
|
self.successful = @record.destroy
|
||
|
rescue Exception => ex
|
||
|
flash[:warning] = as_(:cant_destroy_record, :record => @record.to_label)
|
||
|
self.successful = false
|
||
|
logger.debug ex.message
|
||
|
logger.debug ex.backtrace.join("\n")
|
||
|
end
|
||
|
else
|
||
|
self.successful = false
|
||
|
flash[:error] = "Cannot delete it, the domain must have at least one nameserver!"
|
||
13 years ago
|
end
|
||
|
end
|
||
13 years ago
|
end
|