module Lumberg module Whm class Reseller < Base # Gives reseller status to an account. # # *Note:* The user must already exist to be made a reseller. This function will not create an account. If the account does not yet exist, you can use the createacct function to set it up before conferring reseller privileges. # # ==== Required # * :username - PENDING def create(options = {}) Args.new(options) do |c| c.requires :username c.booleans :makeowner end options[:user] = options.delete(:username) server.perform_request('setupreseller', options) end # Lists the usernames of all resellers on the server def list # This method is funky. That is all result = server.perform_request('listresellers', :key => 'reseller') result[:success] = true result[:params] = {:resellers => result.delete(:params)} result end # Adds IP addresses to a reseller account # # ==== Required # * :username - PENDING # # ==== Optional # * :ips - PENDING def add_ips(options = {}) Args.new(options) do |c| c.requires :username c.optionals :ips c.booleans :delegate end options[:user] = options.delete(:username) server.perform_request('setresellerips', options) end # Specifies the amount of bandwidth and disk space a reseller is able to use # # ==== Required # * :username - PENDING # # ==== Optional # * :account_limit - PENDING # * :bandwidth_limit - PENDING # * :diskspace_limit - PENDING def set_limits(options = {}) Args.new(options) do |c| c.requires :username c.optionals :account_limit, :bandwidth_limit, :diskspace_limit c.booleans :enable_account_limit, :enable_resource_limits, :enable_overselling, :enable_overselling_bandwidth, :enable_overselling_diskspace, :enable_package_limits, :enable_package_limit_numbers end options[:user] = options.delete(:username) server.perform_request('setresellerlimits', options) end # Terminates a reseller's main account, as well as all accounts owned by the reseller # # ==== Required # * :reseller - PENDING def terminate(options = {}) Args.new(options) do |c| c.requires :reseller c.booleans :terminatereseller end # WTF, seriously? wtf = "I understand this will irrevocably remove all the " wtf << "accounts owned by the reseller #{options[:reseller]}" options[:verify] = wtf server.perform_request('terminatereseller', options) end # Assigns a main, shared IP address to a reseller # # ==== Required # * :username - PENDING # * :ip - PENDING def set_main_ip(options = {}) Args.new(options) do |c| c.requires :username, :ip end options[:user] = options.delete(:username) server.perform_request('setresellermainip', options) end # Sets which packages resellers are able to use. It also allows you to define the number of times a package can be used by a reseller # # ==== Required # * :username - PENDING # * :no_limit - PENDING # * :package - PENDING # # ==== Optional # * :allowed - PENDING # * :number - PENDING def set_package_limit(options = {}) Args.new(options) do |c| c.requires :username, :no_limit, :package c.booleans :no_limit, :allowed c.optionals :allowed, :number end options[:user] = options.delete(:username) server.perform_request('setresellerpackagelimit', options) end # Suspends a reseller's account. The suspension will prevent the reseller from accessing his or her account # # ==== Required # * :username - PENDING # # ==== Optional # * :reason - PENDING def suspend(options = {}) Args.new(options) do |c| c.requires :username c.optionals :reason end options[:user] = options.delete(:username) server.perform_request('suspendreseller', options) end # Unsuspends a reseller's account # # ==== Required # * :username - PENDING def unsuspend(options = {}) Args.new(options) do |c| c.requires :username end options[:user] = options.delete(:username) server.perform_request('unsuspendreseller', options) end # Lists the total number of accounts owned by a reseller, as well as how many suspended accounts the reseller owns, and what the reseller's account creation limit is, if any. # If no reseller is specified, counts will be provided for the reseller who is currently logged in. # # *Note:* Counts for other users will only be provided if the user issuing the function call has root-level permissions or owns the provided account. # # ==== Required # * :username - PENDING def account_counts(options = {}) Args.new(options) do |c| c.requires :username end options[:user] = options.delete(:username) server.perform_request('acctcounts', options.merge(:key => 'reseller')) end # Defines a reseller's nameservers. Additionally, you may use it to reset a reseller's nameservers to the default settings # # ==== Required # * :username - PENDING # # ==== Optional # * :nameservers - PENDING def set_nameservers(options = {}) Args.new(options) do |c| c.requires :username c.optionals :nameservers end options[:user] = options.delete(:username) server.perform_request('setresellernameservers', options) end # Shows account statistics for a specific reseller's accounts # # ==== Required # * :reseller - PENDING def stats(options = {}) Args.new(options) do |c| c.requires :reseller end server.perform_request('resellerstats', options) end # Lists the saved reseller ACL lists on the server def list_acls server.perform_request('listacls', {:key => 'acls'}) end # Creates a new reseller ACL list # # ==== Required # * :acllist - PENDING def save_acl_list(options = {}) optional_args = [ "acl-add-pkg", "acl-add-pkg-ip", "acl-add-pkg-shell", "acl-all", "acl-allow-addoncreate", "acl-allow-parkedcreate", "acl-allow-unlimited-disk-pkgs", "acl-allow-unlimited-pkgs", "acl-clustering", "acl-create-acct", "acl-create-dns", "acl-demo-setup", "acl-disallow-shell", "acl-edit-account", "acl-edit-dns", "acl-edit-mx", "acl-edit-pkg", "acl-frontpage", "acl-kill-acct", "acl-kill-dns", "acl-limit-bandwidth", "acl-list-accts", "acl-mailcheck", "acl-mod-subdomains", "acl-news", "acl-onlyselfandglobalpkgs", "acl-park-dns", "acl-passwd", "acl-quota", "acl-rearrange-accts", "acl-res-cart", "acl-status", "acl-resftp", "acl-restart", "acl-show-bandwidth", "acl-ssl", "acl-ssl-gencrt", "acl-stats", "acl-suspend-acct", "acl-upgrade-account" ].collect { |option| option.to_sym } Args.new(options) do |c| c.requires :acllist c.booleans *optional_args c.optionals *optional_args end server.perform_request('saveacllist', options.merge(:key => 'results')) end # Sets the ACL for a reseller, or modifies specific ACL items for a reseller # # ==== Required # * :reseller - PENDING # # ==== Optional # * :acllist - PENDING # * :*optional_args - PENDING def set_acls(options = {}) optional_args = [ "acl-add-pkg", "acl-add-pkg-ip", "acl-add-pkg-shell", "acl-all", "acl-allow-addoncreate", "acl-allow-parkedcreate", "acl-allow-unlimited-disk-pkgs", "acl-allow-unlimited-pkgs", "acl-clustering", "acl-create-acct", "acl-create-dns", "acl-demo-setup", "acl-disallow-shell", "acl-edit-account", "acl-edit-dns", "acl-edit-mx", "acl-edit-pkg", "acl-frontpage", "acl-kill-acct", "acl-kill-dns", "acl-limit-bandwidth", "acl-list-accts", "acl-mailcheck", "acl-mod-subdomains", "acl-news", "acl-onlyselfandglobalpkgs", "acl-park-dns", "acl-passwd", "acl-quota", "acl-rearrange-accts", "acl-res-cart", "acl-status", "acl-resftp", "acl-restart", "acl-show-bandwidth", "acl-ssl", "acl-ssl-gencrt", "acl-stats", "acl-suspend-acct", "acl-upgrade-account" ].collect { |option| option.to_sym } Args.new(options) do |c| c.requires :reseller c.booleans *optional_args c.optionals :acllist, *optional_args end server.perform_request('setacls', options) end # Removes reseller status from an account # # *Note:* This function will not delete the account; it will only remove its reseller status def unsetup(options = {}) Args.new(options) do |c| c.requires :username end options[:user] = options.delete(:username) server.perform_request('unsetupreseller', options) end end end end