From fae81ca105fbf8392d4dbfc8023aed64c3551def Mon Sep 17 00:00:00 2001 From: Anish Mangal Date: Wed, 22 May 2019 03:23:41 +0000 Subject: [PATCH 1/4] Patch Freepbx source to get around an upstream bug --- roles/pbx/tasks/freepbx.yml | 5 ++++ .../pbx/templates/71-freepbx-framework.patch | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 roles/pbx/templates/71-freepbx-framework.patch diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 55e5063d8..77cf78f7a 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -32,6 +32,11 @@ extra_opts: [--strip-components=1] creates: "{{ freepbx_src_dir }}/install" +- name: FreePBX - Patch FreePBX source - IIAB Bug 1685 + patch: + src: "roles/pbx/templates/71-freepbx-framework.patch" + dest: "{{ downloads_dir }}/{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php" + - name: FreePBX - Disable & Stop asterisk service systemd: daemon_reload: yes diff --git a/roles/pbx/templates/71-freepbx-framework.patch b/roles/pbx/templates/71-freepbx-framework.patch new file mode 100644 index 000000000..097d5099b --- /dev/null +++ b/roles/pbx/templates/71-freepbx-framework.patch @@ -0,0 +1,26 @@ +--- Framework.class.php 2019-05-22 08:37:49.748899666 +0530 ++++ Framework.class.php.new 2019-05-22 08:38:04.968584018 +0530 +@@ -177,7 +177,7 @@ + dbug("aborting early because previous errors"); + return false; + } +- if ($this->freepbx->astman->connected()) { ++ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { + $ast_ret = $this->freepbx->astman->Command('module reload manager'); + } else { + unset($output); +@@ -187,12 +187,12 @@ + $this->freepbx->Logger->log(FPBX_LOG_ERROR,_("Failed to reload AMI, manual reload will be necessary, try: [asterisk -rx 'module reload manager']")); + } + } +- if ($this->freepbx->astman->connected()) { ++ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { + $this->freepbx->astman->disconnect(); + } + global $bootstrap_settings; + +- if (!$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { ++ if (!$this->freepbx->astman || !$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { + // couldn't connect at all + $this->freepbx->Logger->log(FPBX_LOG_CRITICAL,"Connection attmempt to AMI failed"); + return false; From 4169db3080d80f4d1bc2ea7764eab48749345f26 Mon Sep 17 00:00:00 2001 From: Anish Mangal Date: Wed, 22 May 2019 04:48:03 +0000 Subject: [PATCH 2/4] Fix patch for freepbx fix --- roles/pbx/tasks/freepbx.yml | 2 +- .../pbx/templates/71-freepbx-framework.patch | 52 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 77cf78f7a..d1ae222b1 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -35,7 +35,7 @@ - name: FreePBX - Patch FreePBX source - IIAB Bug 1685 patch: src: "roles/pbx/templates/71-freepbx-framework.patch" - dest: "{{ downloads_dir }}/{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php" + dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php" - name: FreePBX - Disable & Stop asterisk service systemd: diff --git a/roles/pbx/templates/71-freepbx-framework.patch b/roles/pbx/templates/71-freepbx-framework.patch index 097d5099b..957517c54 100644 --- a/roles/pbx/templates/71-freepbx-framework.patch +++ b/roles/pbx/templates/71-freepbx-framework.patch @@ -1,26 +1,26 @@ ---- Framework.class.php 2019-05-22 08:37:49.748899666 +0530 -+++ Framework.class.php.new 2019-05-22 08:38:04.968584018 +0530 -@@ -177,7 +177,7 @@ - dbug("aborting early because previous errors"); - return false; - } -- if ($this->freepbx->astman->connected()) { -+ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { - $ast_ret = $this->freepbx->astman->Command('module reload manager'); - } else { - unset($output); -@@ -187,12 +187,12 @@ - $this->freepbx->Logger->log(FPBX_LOG_ERROR,_("Failed to reload AMI, manual reload will be necessary, try: [asterisk -rx 'module reload manager']")); - } - } -- if ($this->freepbx->astman->connected()) { -+ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { - $this->freepbx->astman->disconnect(); - } - global $bootstrap_settings; - -- if (!$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { -+ if (!$this->freepbx->astman || !$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { - // couldn't connect at all - $this->freepbx->Logger->log(FPBX_LOG_CRITICAL,"Connection attmempt to AMI failed"); - return false; +--- Framework.class.php 2019-05-22 08:37:49.748899666 +0530 ++++ Framework.class.php.new 2019-05-22 08:38:04.968584018 +0530 +@@ -177,7 +177,7 @@ + dbug("aborting early because previous errors"); + return false; + } +- if ($this->freepbx->astman->connected()) { ++ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { + $ast_ret = $this->freepbx->astman->Command('module reload manager'); + } else { + unset($output); +@@ -187,12 +187,12 @@ + $this->freepbx->Logger->log(FPBX_LOG_ERROR,_("Failed to reload AMI, manual reload will be necessary, try: [asterisk -rx 'module reload manager']")); + } + } +- if ($this->freepbx->astman->connected()) { ++ if ($this->freepbx->astman && $this->freepbx->astman->connected()) { + $this->freepbx->astman->disconnect(); + } + global $bootstrap_settings; + +- if (!$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { ++ if (!$this->freepbx->astman || !$res = $this->freepbx->astman->connect($this->freepbx->Config->get('ASTMANAGERHOST') . ":" . $this->freepbx->Config->get('ASTMANAGERPORT'), $this->freepbx->Config->get('AMPMGRUSER') , $this->freepbx->Config->get('AMPMGRPASS'), $bootstrap_settings['astman_events'])) { + // couldn't connect at all + $this->freepbx->Logger->log(FPBX_LOG_CRITICAL,"Connection attmempt to AMI failed"); + return false; From 8a1094e964f5ead89bfbc19db132c1d7129d0dbc Mon Sep 17 00:00:00 2001 From: Anish Mangal Date: Thu, 20 Jun 2019 04:30:55 +0000 Subject: [PATCH 3/4] Move freepbx from being hosted at pbx.lan to :8888 --- roles/network/tasks/hosts.yml | 2 +- roles/network/templates/gateway/iiab-gen-iptables | 2 ++ roles/pbx/README.rst | 4 +--- roles/pbx/defaults/main.yml | 3 ++- roles/pbx/tasks/freepbx.yml | 6 ++++++ roles/pbx/templates/freepbx.conf.j2 | 4 +--- vars/default_vars.yml | 1 + 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/roles/network/tasks/hosts.yml b/roles/network/tasks/hosts.yml index 601834223..4e0e2d026 100644 --- a/roles/network/tasks/hosts.yml +++ b/roles/network/tasks/hosts.yml @@ -10,7 +10,7 @@ lineinfile: path: /etc/hosts regexp: '^172\.18\.96\.1' - line: '172.18.96.1 {{ iiab_hostname }}.{{ iiab_domain }} {{ iiab_hostname }} box box.lan pbx pbx.lan' + line: '172.18.96.1 {{ iiab_hostname }}.{{ iiab_domain }} {{ iiab_hostname }} box box.lan' state: present when: iiab_lan_iface != "none" and not installing diff --git a/roles/network/templates/gateway/iiab-gen-iptables b/roles/network/templates/gateway/iiab-gen-iptables index 19fa72711..9e3038c70 100755 --- a/roles/network/templates/gateway/iiab-gen-iptables +++ b/roles/network/templates/gateway/iiab-gen-iptables @@ -63,6 +63,7 @@ minetest_port={{ minetest_port }} mosquitto_port={{ mosquitto_port }} nodered_port={{ nodered_port }} pbx_enabled={{ pbx_enabled }} +pbx_http_port={{ pbx_http_port }} pbx_signaling_ports_chan_sip={{ pbx_signaling_ports_chan_sip }} pbx_signaling_ports_chan_pjsip={{ pbx_signaling_ports_chan_pjsip }} pbx_data_ports={{ pbx_data_ports }} @@ -152,6 +153,7 @@ if [ "$wan" != "none" ]; then $IPTABLES -A INPUT -p tcp --dport $nodered_port -m state --state NEW -i $wan -j ACCEPT if [ "$pbx_enabled" == "True" ]; then + $IPTABLES -A INPUT -p tcp --dport $pbx_http_port -m state --state NEW -i $wan -j ACCEPT $IPTABLES -A INPUT -p udp --dport $pbx_signaling_ports_chan_sip -m state --state NEW -i $wan -j ACCEPT $IPTABLES -A INPUT -p udp --dport $pbx_signaling_ports_chan_pjsip -m state --state NEW -i $wan -j ACCEPT $IPTABLES -A INPUT -p udp --dport $pbx_data_ports -m state --state NEW -i $wan -j ACCEPT diff --git a/roles/pbx/README.rst b/roles/pbx/README.rst index 6c8724293..1778f7aac 100644 --- a/roles/pbx/README.rst +++ b/roles/pbx/README.rst @@ -25,9 +25,7 @@ Optionally, you may want to enable `chan_dongle `_ of your IIAB server). +After installing PBX as part of IIAB, please visit http://box.lan:8888/freepbx and proceed with initial configuration (no login/password is required initially — you will be asked to set this up). You can monitor the FreePBX service with command:: diff --git a/roles/pbx/defaults/main.yml b/roles/pbx/defaults/main.yml index 6b012f098..d55c39265 100644 --- a/roles/pbx/defaults/main.yml +++ b/roles/pbx/defaults/main.yml @@ -9,7 +9,8 @@ # pbx_signaling_ports_chan_sip: "5160:5161" # pbx_signaling_ports_chan_pjsip: "5060" # pbx_data_ports: "10000:20000" - +# pbx_http_port: 8888 +# # All above are set in: github.com/iiab/iiab/blob/master/vars/default_vars.yml # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index d1ae222b1..f714c518d 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -134,6 +134,12 @@ state: absent when: not pbx_enabled +- name: FreePBX - Add {{ freepbx_http_port }} as a Listen directive to apache ports.conf + lineinfile: + path: /etc/apache2/ports.conf + line: "Listen {{ freepbx_http_port }}" + insertafter: Listen 80 + - name: FreePBX - Restart Apache service ({{ apache_service }}) systemd: name: "{{ apache_service }}" # httpd or apache2 diff --git a/roles/pbx/templates/freepbx.conf.j2 b/roles/pbx/templates/freepbx.conf.j2 index 1a8cabd0d..3d7d643ce 100644 --- a/roles/pbx/templates/freepbx.conf.j2 +++ b/roles/pbx/templates/freepbx.conf.j2 @@ -1,6 +1,4 @@ - - -ServerName pbx.lan + ServerAdmin admin@box.lan DocumentRoot /var/www/html/ diff --git a/vars/default_vars.yml b/vars/default_vars.yml index f9185371a..367a9e571 100644 --- a/vars/default_vars.yml +++ b/vars/default_vars.yml @@ -333,6 +333,7 @@ asterisk_chan_dongle: False pbx_signaling_ports_chan_sip: "5160:5161" pbx_signaling_ports_chan_pjsip: "5060" pbx_data_ports: "10000:20000" +pbx_http_port: 8888 # If using WordPress intensively, set apache_high_php_limits in 3-BASE-SERVER wordpress_install: False From a3937d8422af5ba8594824f90527a78049ad2149 Mon Sep 17 00:00:00 2001 From: Anish Mangal Date: Sat, 22 Jun 2019 17:09:12 +0000 Subject: [PATCH 4/4] Update freepbx default port to 83 --- roles/pbx/README.rst | 2 +- roles/pbx/defaults/main.yml | 2 +- vars/default_vars.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/pbx/README.rst b/roles/pbx/README.rst index 1778f7aac..f8656171b 100644 --- a/roles/pbx/README.rst +++ b/roles/pbx/README.rst @@ -25,7 +25,7 @@ Optionally, you may want to enable `chan_dongle