end
- def describe_domain(domain)
- return domain.to_s()
- end
-
- def describe_user(user)
- return user.to_s()
- end
-
-
def list_users()
#
# Produce a list of AgenDAV users. This is public because it's
end
- def describe_domain(domain)
- # DAViCal doesn't have a concept of domains.
- return domain.to_s()
- end
-
-
def describe_user(user)
principal_id = self.get_principal_id(user)
-
- if principal_id.nil?
- return 'User not found'
- else
- return "Principal ID: #{principal_id}"
- end
+ return "Principal ID: #{principal_id}"
end
end
def describe_domain(domain)
- begin
- domain_path = get_domain_path(domain)
- return domain_path
- rescue NonexistentDomainError => e
- return "Doesn't exist: #{e.to_s}"
- end
+ return get_domain_path(domain)
end
def describe_user(user)
- begin
- user_path = get_user_path(user)
- return user_path
- rescue NonexistentUserError => e
- return "Doesn't exist: #{e.to_s}"
- end
- end
-
-
- def domain_exists(domain)
- domains = list_domains()
- return domains.include?(domain)
+ return get_user_path(user)
end
# A generic version of describe_user/describe_domain that
# dispatches base on the class of the target.
if target.is_a?(User)
- return describe_user(target)
+ if user_exists(target) then
+ return describe_user(target)
+ else
+ return 'User not found'
+ end
elsif target.is_a?(Domain)
- return describe_domain(target)
+ if domain_exists(target) then
+ return describe_domain(target)
+ else
+ return 'Domain not found'
+ end
else
raise NotImplementedError
end
end
def describe_domain(domain)
- # Provide a "description" of the domain. This is output along
- # with the domain name and can be anything of use to the system
- # administrator.
- raise NotImplementedError
+ # Provide a "description" of the domain. This is output along with
+ # the domain name and can be anything of use to the system
+ # administrator. The default doesn't do anything useful and should
+ # be overridden.
+ return domain.to_s()
end
def describe_user(user)
# Provide a "description" of the user. This is output along
# with the domain name and can be anything of use to the system
- # administrator.
- raise NotImplementedError
+ # administrator. The default doesn't do anything useful and should
+ # be overridden.
+ return user.to_s()
end
def list_users()
raise NotImplementedError
end
+ def list_domains()
+ # Compute the domains from a list of users. Obviously much worse
+ # than getting the domains the "smart" way, if such a way exists.
+ users = list_users()
+ domains = users.map{ |u| u.domain() }
+ return domains.uniq()
+ end
+
def user_exists(user)
# Does the given username exist for this plugin? We use a naive
# implementation here based on list_users() which is required to
return users.include?(user)
end
+ def domain_exists(domain)
+ # Does the given domain exist for this plugin? We use a naive
+ # implementation here based on list_domains() which is required to
+ # exist above. Plugins can override this with something fast.
+ domains = list_domains()
+ return domains.include?(domain)
+ end
+
def list_domains_users(domains)
# Get all users belonging to the given domains. If a user has
# domainpart "example.com" then it belongs to the domain
end
- def describe_user(user)
- # There's no other unique identifier in PostfixAdmin
- return user.to_s()
- end
-
-
- def describe_domain(domain)
- # There's no other unique identifier in PostfixAdmin
- return domain.to_s()
- end
-
-
def list_domains()
domains = []
end
- def domain_exists(domain)
- # Does the given domain exist in Postfixadmin? We use a naive
- # implementation here based on list_domains(). This isn't in our
- # superclass because not all plugins have a concept of domains.
- domains = list_domains()
- return domains.include?(domain)
- end
-
def list_users()
users = []
end
- def describe_domain(domain)
- # Roundcube doesn't have a concept of domains.
- return domain.to_s()
- end
-
def describe_user(user)
user_id = self.get_user_id(user)
-
- if user_id.nil?
- return 'User not found'
- else
- return "User ID: #{user_id}"
- end
+ return "User ID: #{user_id}"
end
raise NotImplementedError.new(msg)
end
- puts "Would move user #{src.to_s()} to #{dst.to_s()}."
+ # Since we're not actually moving anything, the destination
+ # description is really only useful for seeing whether or not we'd
+ # be trying to move in on top of an existing account.
+ src_description = plugin.describe(src)
+ dst_description = plugin.describe(dst)
+
+ msg = "Would move user #{src} "
+
+ # Only append the extra description if it's useful.
+ if not src_description.nil? and
+ not src_description.empty? and
+ not src_description == src.to_s() then
+ msg += "(#{src_description}) "
+ end
+
+ msg += "to #{dst}"
+
+ # Only append the extra description if it's useful.
+ if not dst_description.nil? and
+ not dst_description.empty? and
+ not dst_description == dst.to_s() then
+ msg += " (#{dst_description})"
+ end
+
+ msg += "."
+ report(plugin, msg)
end
end