1
0
مراية لـ https://github.com/postalserver/postal.git تم المزامنة 2026-01-17 21:39:47 +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 class OrganizationIPPoolsController < ApplicationController
include WithinOrganization include WithinOrganization
before_action :admin_required, :only => [:assignments]
def index def index
@ip_pools = organization.ip_pools.dedicated.order(:name) @ip_pools = organization.ip_pools.dedicated.order(:name)
end 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 end

عرض الملف

@@ -42,7 +42,7 @@ class ServersController < ApplicationController
def update def update
extra_params = [:spam_threshold, :spam_failure_threshold, :postmaster_address] 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)) if @server.update(safe_params(*extra_params))
redirect_to_with_json organization_server_path(organization, @server), :notice => "Server settings have been updated" redirect_to_with_json organization_server_path(organization, @server), :notice => "Server settings have been updated"
else else
@@ -84,7 +84,7 @@ class ServersController < ApplicationController
private private
def safe_params(*extras) def safe_params(*extras)
params.require(:server).permit(:name, :mode, :ip_pool_id, *extras) params.require(:server).permit(:name, :mode, *extras)
end end
end end

عرض الملف

@@ -10,29 +10,44 @@
= render 'organizations/nav', :active_nav => :ips = render 'organizations/nav', :active_nav => :ips
= render 'nav', :active_nav => :ips = render 'nav', :active_nav => :ips
.pageContent.pageContent--compact .pageContent.pageContent--compact
- if @ip_pools.empty? - if current_user.admin?
.noData.noData--koala.noData--clean %p.pageContent__intro.u-margin
- if @server.nil? Choose which IP pools this organization will have access to send mail using. Organization
%h2.noData__title You don't have any dedicated IP addresses. users will be able to choose from any of the pools chosen below. Admins can override on a per
%p.noData__text server basis if required.
Once you've been assigned dedicated IP addresses they will appear here. You can then use them in rules and = form_tag [:assignments, @organization, :ip_pools], :method => :put do
for servers. To request dedicated IP addresses please contact our team. %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 - else
.ipList - if @ip_pools.empty?
- for ip_pool in @ip_pools .noData.noData--koala.noData--clean
.ipList__item - if @server.nil?
%p.ipList__name= ip_pool.name %h2.noData__title You don't have any dedicated IP addresses.
%ul.ipList__addressList %p.noData__text
%li.ipList__address.ipList__address--header Once you've been assigned dedicated IP addresses they will appear here. You can then use them in rules and
%p.ipList__ipv4 IPv4 Address for servers. To request dedicated IP addresses please contact our team.
%p.ipList__ipv6 IPv6 Address - else
%p.ipList__hostname Hostname .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 - for address in ip_pool.ip_addresses
%li.ipList__address %li.ipList__address
%p.ipList__ipv4= address.ipv4 %p.ipList__ipv4= address.ipv4
%p.ipList__ipv6= address.ipv6 %p.ipList__ipv6= address.ipv6
%p.ipList__hostname= address.hostname %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, 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 outgoing & incoming mail will be held and only visible in the web interface and will not be
sent to any recipients or HTTP endpoints. sent to any recipients or HTTP endpoints.
.fieldSet__field .fieldSet__field
= f.label :ip_pool_id, :class => 'fieldSet__label' = f.label :ip_pool_id, :class => 'fieldSet__label'
.fieldSet__input .fieldSet__input

عرض الملف

@@ -30,9 +30,6 @@
.fieldSet__field .fieldSet__field
= f.label :raw_message_retention_size, :class => 'fieldSet__label' = f.label :raw_message_retention_size, :class => 'fieldSet__label'
.fieldSet__input= f.text_field :raw_message_retention_size, :class => 'input input--text' .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 .fieldSetSubmit.fieldSetSubmit--wide.buttonSet
= f.submit "Save server", :class => 'button button--positive js-form-submit' = 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 post :make_owner, :on => :member
end end
resources :ip_pool_rules 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' root 'servers#index'
get 'settings' => 'organizations#edit' get 'settings' => 'organizations#edit'
patch 'settings' => 'organizations#update' patch 'settings' => 'organizations#update'