1
0
مراية لـ https://github.com/postalserver/postal.git تم المزامنة 2025-11-30 21:32:30 +00:00

UI for admins to assign ip pools to servers

هذا الالتزام موجود في:
Adam Cooke
2017-04-21 11:26:19 +01:00
الأصل 79f7707d09
التزام 2def9c0fb9
6 ملفات معدلة مع 49 إضافات و27 حذوفات

عرض الملف

@@ -1,9 +1,16 @@
class OrganizationIPPoolsController < ApplicationController
include WithinOrganization
before_action :admin_required, :only => [:assignments]
def index
@ip_pools = organization.ip_pools.dedicated.order(:name)
end
def assignments
organization.ip_pool_ids = params[:ip_pools]
organization.save!
redirect_to [organization, :ip_pools], :notice => "Organization IP pools have been updated successfully"
end
end

عرض الملف

@@ -42,7 +42,7 @@ class ServersController < ApplicationController
def update
extra_params = [:spam_threshold, :spam_failure_threshold, :postmaster_address]
extra_params += [:send_limit, :allow_sender, :log_smtp_data, :outbound_spam_threshold, :message_retention_days, :raw_message_retention_days, :raw_message_retention_size, :ip_pool_id] if current_user.admin?
extra_params += [:send_limit, :allow_sender, :log_smtp_data, :outbound_spam_threshold, :message_retention_days, :raw_message_retention_days, :raw_message_retention_size] if current_user.admin?
if @server.update(safe_params(*extra_params))
redirect_to_with_json organization_server_path(organization, @server), :notice => "Server settings have been updated"
else
@@ -84,7 +84,7 @@ class ServersController < ApplicationController
private
def safe_params(*extras)
params.require(:server).permit(:name, :mode, :ip_pool_id, *extras)
params.require(:server).permit(:name, :mode, *extras)
end
end

عرض الملف

@@ -10,29 +10,44 @@
= render 'organizations/nav', :active_nav => :ips
= render 'nav', :active_nav => :ips
.pageContent.pageContent--compact
- if @ip_pools.empty?
.noData.noData--koala.noData--clean
- if @server.nil?
%h2.noData__title You don't have any dedicated IP addresses.
%p.noData__text
Once you've been assigned dedicated IP addresses they will appear here. You can then use them in rules and
for servers. To request dedicated IP addresses please contact our team.
- if current_user.admin?
%p.pageContent__intro.u-margin
Choose which IP pools this organization will have access to send mail using. Organization
users will be able to choose from any of the pools chosen below. Admins can override on a per
server basis if required.
= form_tag [:assignments, @organization, :ip_pools], :method => :put do
%ul.checkboxList.u-margin
- for ip_pool in IPPool.order(:name)
%li.checkboxList__item
.checkboxList__checkbox= check_box_tag "ip_pools[]", ip_pool.id, @organization.ip_pools.include?(ip_pool), :id => "ip_pool_#{ip_pool.id}"
.checkboxList__label
= label_tag "ip_pool_#{ip_pool.id}", ip_pool.name, :class => 'checkboxList__actualLabel'
%p= submit_tag "Save IP pool assignment", :class => 'button button--positive'
- else
.ipList
- for ip_pool in @ip_pools
.ipList__item
%p.ipList__name= ip_pool.name
%ul.ipList__addressList
%li.ipList__address.ipList__address--header
%p.ipList__ipv4 IPv4 Address
%p.ipList__ipv6 IPv6 Address
%p.ipList__hostname Hostname
- if @ip_pools.empty?
.noData.noData--koala.noData--clean
- if @server.nil?
%h2.noData__title You don't have any dedicated IP addresses.
%p.noData__text
Once you've been assigned dedicated IP addresses they will appear here. You can then use them in rules and
for servers. To request dedicated IP addresses please contact our team.
- else
.ipList
- for ip_pool in @ip_pools
.ipList__item
%p.ipList__name= ip_pool.name
%ul.ipList__addressList
%li.ipList__address.ipList__address--header
%p.ipList__ipv4 IPv4 Address
%p.ipList__ipv6 IPv6 Address
%p.ipList__hostname Hostname
- for address in ip_pool.ip_addresses
%li.ipList__address
%p.ipList__ipv4= address.ipv4
%p.ipList__ipv6= address.ipv6
%p.ipList__hostname= address.hostname
- for address in ip_pool.ip_addresses
%li.ipList__address
%p.ipList__ipv4= address.ipv4
%p.ipList__ipv6= address.ipv6
%p.ipList__hostname= address.hostname

عرض الملف

@@ -20,6 +20,7 @@
e-mail will be routed normally to the intended recipients. When in <b>Development</b> mode,
outgoing & incoming mail will be held and only visible in the web interface and will not be
sent to any recipients or HTTP endpoints.
.fieldSet__field
= f.label :ip_pool_id, :class => 'fieldSet__label'
.fieldSet__input

عرض الملف

@@ -30,9 +30,6 @@
.fieldSet__field
= f.label :raw_message_retention_size, :class => 'fieldSet__label'
.fieldSet__input= f.text_field :raw_message_retention_size, :class => 'input input--text'
.fieldSet__field
= f.label :ip_pool_id, :class => 'fieldSet__label'
.fieldSet__input= f.collection_select :ip_pool_id, IPPool.order(:name), :id, :name, {}, :class => 'input input--select'
.fieldSetSubmit.fieldSetSubmit--wide.buttonSet
= f.submit "Save server", :class => 'button button--positive js-form-submit'

عرض الملف

@@ -60,7 +60,9 @@ Rails.application.routes.draw do
post :make_owner, :on => :member
end
resources :ip_pool_rules
resources :ip_pools, :controller => 'organization_ip_pools'
resources :ip_pools, :controller => 'organization_ip_pools' do
put :assignments, :on => :collection
end
root 'servers#index'
get 'settings' => 'organizations#edit'
patch 'settings' => 'organizations#update'