From f9545a95f2a88dcbd4039f2f4c49043caa2fabac Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Wed, 7 Mar 2018 16:00:39 +0200 Subject: [PATCH 01/41] using assembly to build binary (cherry picked from commit acd39e8) --- pom.xml | 12 +++ release/pom.xml | 107 +++++++++++++++++++ release/src/main/resources/common.xml | 120 ++++++++++++++++++++++ release/src/main/resources/descriptor.xml | 31 ++++++ 4 files changed, 270 insertions(+) create mode 100644 pom.xml create mode 100644 release/pom.xml create mode 100644 release/src/main/resources/common.xml create mode 100644 release/src/main/resources/descriptor.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000..ab6ee74f5b --- /dev/null +++ b/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + org.restcomm + restcomm-connect-root + 8.3.0-SNAPSHOT + pom + + restcomm + release + + diff --git a/release/pom.xml b/release/pom.xml new file mode 100644 index 0000000000..7d4dfbba6a --- /dev/null +++ b/release/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + org.restcomm + restcomm-connect-release + 8.3.0-SNAPSHOT + pom + + UTF-8 + 3.2.0-89 + + + + org.restcomm + restcomm-connect-rvd + [1.2,1.2.999) + war + + + org.mobicents.webrtc + webrtc-ui + [1.1,1.1.999) + war + + + org.mobicents.servlet.sip + sip-servlets-wildfly-10 + ${sipservletapi.version} + assembly + zip + + + org.mobicents.media + media-server-standalone + 6.0.23 + assembly + zip + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.1 + + + extractSipServlets + prepare-package + + unpack + + + + + org.mobicents.servlet.sip + sip-servlets-wildfly-10 + ${sipservletapi.version} + zip + assembly + + + + + + extractMediaserver + prepare-package + + unpack + + + + + org.mobicents.media + media-server-standalone + 6.0.23 + zip + assembly + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + src/main/resources/descriptor.xml + + Restcomm-JBoss-AS7-${project.version} + false + + + + package + + single + + + + + + + diff --git a/release/src/main/resources/common.xml b/release/src/main/resources/common.xml new file mode 100644 index 0000000000..5a828b6fc0 --- /dev/null +++ b/release/src/main/resources/common.xml @@ -0,0 +1,120 @@ + + + + + src/main/config/run.sh + bin/run.sh + + + + + src/main/config/log4j2.xml + conf/log4j2.xml + + + + src/main/config/mediaserver.xml + conf/mediaserver.xml + + + + + src/main/config/autoconfig/start-mediaserver.sh + start-mediaserver.sh + + + src/main/config/autoconfig/stop-mediaserver.sh + stop-mediaserver.sh + + + src/main/config/autoconfig/mediaserver.conf + mediaserver.conf + + + src/main/config/autoconfig/logger.conf + logger.conf + + + src/main/config/autoconfig/ssl.conf + ssl.conf + + + src/main/config/autoconfig/verify-dependencies.sh + .autoconfig/verify-dependencies.sh + + + src/main/config/autoconfig/autoconfigure.sh + .autoconfig/autoconfigure.sh + + + src/main/config/autoconfig/config-network.sh + .autoconfig/autoconfig.d/config-network.sh + + + src/main/config/autoconfig/config-controller-mgcp.sh + .autoconfig/autoconfig.d/config-controller-mgcp.sh + + + src/main/config/autoconfig/config-media.sh + .autoconfig/autoconfig.d/config-media.sh + + + src/main/config/autoconfig/config-resources.sh + .autoconfig/autoconfig.d/config-resources.sh + + + src/main/config/autoconfig/config-dtls.sh + .autoconfig/autoconfig.d/config-dtls.sh + + + src/main/config/autoconfig/config-logger.sh + .autoconfig/autoconfig.d/config-logger.sh + + + src/main/config/autoconfig/config-java-opts.sh + .autoconfig/autoconfig.d/config-java-opts.sh + + + src/main/config/autoconfig/config-ssl.sh + .autoconfig/autoconfig.d/config-ssl.sh + + + src/main/config/autoconfig/config-asr-drivers.sh + .autoconfig/autoconfig.d/config-asr-drivers.sh + + + + + src/main/config/dtls/x509-ca.pem + conf/dtls/x509-ca.pem + + + src/main/config/dtls/x509-ca-key.pem + conf/dtls/x509-ca-key.pem + + + src/main/config/dtls/x509-server.pem + conf/dtls/x509-server.pem + + + src/main/config/dtls/x509-server-key.pem + conf/dtls/x509-server-key.pem + + + src/main/config/dtls/x509-client-ecdsa.pem + conf/dtls/x509-client-ecdsa.pem + + + src/main/config/dtls/x509-client-key-ecdsa.pem + conf/dtls/x509-client-key-ecdsa.pem + + + src/main/config/dtls/x509-server-ecdsa.pem + conf/dtls/x509-server-ecdsa.pem + + + src/main/config/dtls/x509-server-key-ecdsa.pem + conf/dtls/x509-server-key-ecdsa.pem + + + \ No newline at end of file diff --git a/release/src/main/resources/descriptor.xml b/release/src/main/resources/descriptor.xml new file mode 100644 index 0000000000..277a903333 --- /dev/null +++ b/release/src/main/resources/descriptor.xml @@ -0,0 +1,31 @@ + + assembly + + zip + + ${project.build.finalName} + + + ${project.build.directory}/dependency/restcomm-sip-servlets-3.2.0-89-wildfly-10.0.0.Final + / + + + ${project.build.directory}/dependency/restcomm-media-server + /mediaserver + + + + + /standalone/deployments + false + + org.restcomm:restcomm-connect-rvd + org.mobicents.webrtc:webrtc-ui + + + + + + From 3aa3a563749ba41096972953a076cb6596d84b13 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 13:38:04 +0200 Subject: [PATCH 02/41] wildfly10 assembly (cherry picked from commit 6852f4b) --- release/restcomm-assembly-wildfly10/pom.xml | 100 ++++++++++++++++++ .../dars/mobicents-dar.properties | 2 + .../configuration/mss-sip-stack.properties | 41 +++++++ .../deployments/olympus.war.dodeploy | 1 + .../restcomm-management.war.dodeploy | 1 + .../deployments/restcomm-rvd.war.dodeploy | 1 + .../deployments/restcomm.war.dodeploy | 1 + .../src/main/resources/descriptor.xml | 78 ++++++++++++++ 8 files changed, 225 insertions(+) create mode 100644 release/restcomm-assembly-wildfly10/pom.xml create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy create mode 100644 release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml new file mode 100644 index 0000000000..983371c292 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + org.restcomm + assembly-parent + 8.3.0-SNAPSHOT + + org.restcomm + assembly-wildfly10 + pom + + UTF-8 + 3.2.0-89 + + + + org.restcomm + restcomm-connect-rvd + war + + + org.restcomm + restcomm-connect.application + war + + + org.mobicents.webrtc + webrtc-ui + war + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.1 + + + extractSipServlets + prepare-package + + unpack + + + + + org.mobicents.servlet.sip + sip-servlets-wildfly-10 + ${sipservletapi.version} + zip + assembly + + + + + + extractMediaserver + prepare-package + + unpack + + + + + org.mobicents.media + media-server-standalone + 6.0.23 + zip + assembly + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + src/main/resources/descriptor.xml + + Restcomm-JBoss-AS7-${project.version} + false + + + + package + + single + + + + + + + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties new file mode 100644 index 0000000000..4027360c94 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties @@ -0,0 +1,2 @@ +#Application Router Configuration +ALL=("RestComm","DAR\:From","ORIGINATING","","NO_ROUTE","0") diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties new file mode 100644 index 0000000000..d677a45474 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties @@ -0,0 +1,41 @@ +gov.nist.javax.sip.LOG_MESSAGE_CONTENT=true +gov.nist.javax.sip.LOG4J_LOGGER_NAME=gov.nist +gov.nist.javax.sip.TRACE_LEVEL=LOG4J +gov.nist.javax.sip.DEBUG_LOG=logs/mss-jsip-debuglog.txt +gov.nist.javax.sip.SERVER_LOG=logs/mss-jsip-messages.xml +javax.sip.STACK_NAME=Restcomm-SIP-Servlets +javax.sip.AUTOMATIC_DIALOG_SUPPORT=off +gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY=true +gov.nist.javax.sip.THREAD_POOL_SIZE=64 +gov.nist.javax.sip.REENTRANT_LISTENER=true +# prevent DOS attacks +gov.nist.javax.sip.MAX_LISTENER_RESPONSE_TIME=120 +gov.nist.javax.sip.MAX_MESSAGE_SIZE=40000 +# setting up the buffer size to reduce retransmissions and avoid loosing messages +gov.nist.javax.sip.RECEIVE_UDP_BUFFER_SIZE=131072 +gov.nist.javax.sip.SEND_UDP_BUFFER_SIZE=131072 +gov.nist.javax.sip.AGGRESSIVE_CLEANUP=true +gov.nist.javax.sip.MAX_FORK_TIME_SECONDS=0 +# set to true so that the stack do more validation on dialog, +# but won't work on chained applications so false by default +gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING=false +gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY=gov.nist.javax.sip.stack.NioMessageProcessorFactory +org.mobicents.servlet.sip.USER_AGENT_HEADER=Restcomm MAJOR_VERSION_NUMBER.BUILD_NUMBER +org.mobicents.servlet.sip.SERVER_HEADER=Restcomm MAJOR_VERSION_NUMBER.BUILD_NUMBER +#Uncomment the following line to enable Congestion Control +#gov.nist.javax.sip.SIP_MESSAGE_VALVE=org.mobicents.ext.javax.sip.congestion.CongestionControlMessageValve +org.mobicents.ext.javax.sip.congestion.SIP_SCANNERS= +org.mobicents.ext.javax.sip.congestion.CONGESTION_CONTROL_MONITOR_INTERVAL=-1 +#org.mobicents.ext.javax.sip.congestion.MEMORY_THRESHOLD", "85"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_MEMORY_THRESHOLD", "80"); +#org.mobicents.ext.javax.sip.congestion.CPU_PROCESS_THRESHOLD", "85"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_CPU_PROCESS_THRESHOLD", "80"); +#org.mobicents.ext.javax.sip.congestion.SERVER_TRANSACTIONS_THRESHOLD", "15000"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_SERVER_TRANSACTIONS_THRESHOLD", "10000"); +#org.mobicents.ext.javax.sip.congestion.DIALOGS_THRESHOLD", "200000"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_DIALOGS_THRESHOLD", "180000"); +#Uncomment the following line to work with the Mobicents Load Balancer +#org.mobicents.ha.javax.sip.BALANCERS=127.0.0.1 +org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=8080 +org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=8443 +#org.mobicents.ha.javax.sip.REACHABLE_CHECK= diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml new file mode 100644 index 0000000000..c62fa43cb0 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml @@ -0,0 +1,78 @@ + + assembly + + zip + + ${project.build.finalName} + + + ${project.build.directory}/dependency/restcomm-sip-servlets-${sipservletapi.version}-wildfly-10.0.0.Final + / + + + + ${project.build.directory}/dependency/restcomm-media-server + /mediaserver + + **/*.sh + + + + ${project.build.directory}/dependency/restcomm-media-server + /mediaserver + + **/*.sh + + + 555 + + + ${project.basedir}/src/main/resources/assembly-resources + / + + **/*.sh + + + 555 + + + + + /standalone/deployments + false + restcomm-rvd.war + + org.restcomm:restcomm-connect-rvd + + + + /standalone/deployments + false + olympus.war + + org.mobicents.webrtc:webrtc-ui + + + + + /standalone/deployments + true + restcomm.war + + org.restcomm:restcomm-connect.application + + + + /standalone/deployments/restcomm.war + true + + + org.restcomm:restcomm-connect.configuration + + + + + + From b397cbcf1ccd9357d22520552c6c4b735554acc4 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 13:38:12 +0200 Subject: [PATCH 03/41] assembly parent (cherry picked from commit cc4b9fe) --- release/pom.xml | 151 +++++++++++++++++------------------------------- 1 file changed, 54 insertions(+), 97 deletions(-) diff --git a/release/pom.xml b/release/pom.xml index 7d4dfbba6a..ab6871a990 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -1,107 +1,64 @@ 4.0.0 + + org.restcomm + restcomm-connect-root + 8.3.0-SNAPSHOT + org.restcomm - restcomm-connect-release - 8.3.0-SNAPSHOT + assembly-parent pom UTF-8 3.2.0-89 - - - org.restcomm - restcomm-connect-rvd - [1.2,1.2.999) - war - - - org.mobicents.webrtc - webrtc-ui - [1.1,1.1.999) - war - - - org.mobicents.servlet.sip - sip-servlets-wildfly-10 - ${sipservletapi.version} - assembly - zip - - - org.mobicents.media - media-server-standalone - 6.0.23 - assembly - zip - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.0.1 - - - extractSipServlets - prepare-package - - unpack - - - - - org.mobicents.servlet.sip - sip-servlets-wildfly-10 - ${sipservletapi.version} - zip - assembly - - - - - - extractMediaserver - prepare-package - - unpack - - - - - org.mobicents.media - media-server-standalone - 6.0.23 - zip - assembly - - - - - - - - org.apache.maven.plugins - maven-assembly-plugin - 3.1.0 - - - src/main/resources/descriptor.xml - - Restcomm-JBoss-AS7-${project.version} - false - - - - package - - single - - - - - - + + + + org.restcomm + restcomm-connect-rvd + [1.2,1.2.999) + war + + + org.mobicents.webrtc + webrtc-ui + [1.1,1.1.999) + war + + + org.mobicents.servlet.sip + sip-servlets-wildfly-10 + ${sipservletapi.version} + zip + assembly + + + org.mobicents.media + media-server-standalone + 6.0.23 + zip + assembly + + + org.restcomm + restcomm-connect.application + ${project.version} + war + + + org.restcomm + restcomm-connect.configuration + ${project.version} + + + + + + restcomm-assembly-wildfly10 + From 639a69d9bece0b2414aef181d69ccc99fa596f0f Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 13:39:45 +0200 Subject: [PATCH 04/41] added scm and common properties (cherry picked from commit 5f2e1e2) --- pom.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pom.xml b/pom.xml index ab6ee74f5b..76a1093c23 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,10 @@ + + org.restcomm + restcomm-parent + 4.0.1 + 4.0.0 org.restcomm restcomm-connect-root @@ -9,4 +14,29 @@ restcomm release + + scm:git:https://github.com/RestComm/Restcomm-Connect.git + scm:git:git@github.com:RestComm/Restcomm-Connect.git + https://github.com/RestComm/Restcomm-Connect + + + + + restcomm-releases-repository + Restcomm Releases Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + + restcomm-snapshots-repository + Restcomm Snapshots Repository + https://oss.sonatype.org/content/repositories/snapshots + + + + + UTF-8 + 6.0.23 + 2.5 + From fbbc979c13f871402b606cb5098ffb641c0ad705 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 23:36:35 +0200 Subject: [PATCH 05/41] refactoring pom files (cherry picked from commit f3a722c) --- pom.xml | 70 ++++++++++++++++++++- release/pom.xml | 18 +++--- release/restcomm-assembly-wildfly10/pom.xml | 17 +++-- 3 files changed, 86 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index 76a1093c23..6a4d84908d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.1 4.0.0 - org.restcomm + org.restcomm.connect restcomm-connect-root 8.3.0-SNAPSHOT pom @@ -38,5 +38,71 @@ UTF-8 6.0.23 2.5 - + + + + + mobicents-public-repository-group + Mobicens Public Maven Repository Group + https://oss.sonatype.org/content/groups/public + default + + true + never + + + true + never + + + + jboss-public-repository-group + JBoss Public Maven Repository Group + https://repository.jboss.org/nexus/content/groups/public-jboss/ + default + + true + never + + + true + never + + + + + + + + + + mobicents-public-repository-group + Mobicens Public Maven Repository Group + https://oss.sonatype.org/content/groups/public + default + + true + never + + + true + never + + + + jboss-public-repository-group + JBoss Public Maven Repository Group + https://repository.jboss.org/nexus/content/groups/public-jboss/ + default + + true + never + + + true + never + + + diff --git a/release/pom.xml b/release/pom.xml index ab6871a990..dac7eda750 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -2,17 +2,12 @@ 4.0.0 - org.restcomm + org.restcomm.connect restcomm-connect-root 8.3.0-SNAPSHOT - - org.restcomm + assembly-parent pom - - UTF-8 - 3.2.0-89 - @@ -37,7 +32,7 @@ org.mobicents.media media-server-standalone - 6.0.23 + ${mobicents.mgcp.impl.version} zip assembly @@ -49,9 +44,10 @@ org.restcomm - restcomm-connect.configuration - ${project.version} - + restcomm-connect-management + ${project.version} + war + diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index 983371c292..aa239794b2 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -2,11 +2,10 @@ 4.0.0 - org.restcomm + org.restcomm.connect assembly-parent 8.3.0-SNAPSHOT - org.restcomm assembly-wildfly10 pom @@ -23,7 +22,15 @@ org.restcomm restcomm-connect.application war - + + + + org.restcomm + restcomm-connect-management + war + + + org.mobicents.webrtc webrtc-ui @@ -48,7 +55,6 @@ org.mobicents.servlet.sip sip-servlets-wildfly-10 - ${sipservletapi.version} zip assembly @@ -66,7 +72,6 @@ org.mobicents.media media-server-standalone - 6.0.23 zip assembly @@ -83,7 +88,7 @@ src/main/resources/descriptor.xml - Restcomm-JBoss-AS7-${project.version} + Restcomm-JBoss-Wildfly10-${project.version} false From 90a45879ed445dbe49596ba6e214bdd8df561435 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 23:36:52 +0200 Subject: [PATCH 06/41] adapted to latest root (cherry picked from commit ec3fcdf) --- restcomm/pom.xml | 567 +++++++++++++++++++++-------------------------- 1 file changed, 253 insertions(+), 314 deletions(-) diff --git a/restcomm/pom.xml b/restcomm/pom.xml index 406cc5621a..8d4955902e 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -2,11 +2,11 @@ 4.0.0 - - org.restcomm - restcomm-parent - 4.0.1 - + + org.restcomm.connect + restcomm-connect-root + 9.0.0-SNAPSHOT + org.restcomm restcomm-connect @@ -82,107 +82,105 @@ UTF-8 - 2.10.1 - 2.1.2 - 14.0.1 - 1.2.16 - 1.5.5 - 1.7 - 2.4 - 1.10 - 2.6 - 1.0 - 1.2.0 - 6.0.23 - 1.4 - 2.5 - 3.2.0-98 - 1.0.1 - 1.2.0 - 7.0.50 - 1.2.0 - 1.2.0 - 1.13 - 4.5.2 - 4.1.3 - 2.3.1 - 1.4.2 - 2.7.2 - 3.2.2 - 2.9.7 - 4.3 - 4.11 - 1.9.1 - 2.3.2 - 1.2.293 - 1.0.3.Final - 1.0.3 - 1.0.2 - 2.2.6 - 2.0.4 - - 7.0.64 - 1.0.0.FINAL - 2.9.1 - 1.0.0-ALPHA2 - 1.11.179 - - 5.0.8 - 6.0.2 - 3.0.0 - 3.0.2 - 3.9.6.Final - 1.1.3 - 3.1.0 - 7.1.0-79 - 2.8.9 - - - - - - restcomm.application - restcomm.commons - restcomm.dao - restcomm.asr - restcomm.tts.acapela - restcomm.mgcp - restcomm.fax - restcomm.mscontrol.api - restcomm.mscontrol.mms - restcomm.mscontrol.jsr309 - restcomm.sms.api - restcomm.telephony.api - restcomm.interpreter - restcomm.http - restcomm.sms - restcomm.provisioning.number.api - restcomm.provisioning.number.vi - restcomm.provisioning.number.nexmo - restcomm.provisioning.number.bandwidth - restcomm.provisioning.number.voxbone - restcomm.telephony - restcomm.tts.api - restcomm.tts.voicerss - restcomm.testsuite - restcomm.ui - restcomm.tts.att - restcomm.ussd - restcomm.routing - restcomm.email - restcomm.email.api - restcomm.extension.api - restcomm.extension.controller - restcomm.identity - restcomm.mrb - restcomm.mrb.api - restcomm.dns.api - restcomm.monitoring.service - restcomm.tts.awspolly - restcomm.sdr.api - restcomm.core - + 2.10.1 + 2.1.2 + 14.0.1 + 1.2.16 + 1.5.5 + 1.7 + 2.4 + 1.10 + 2.6 + 1.0 + 1.2.0 + 6.0.23 + 1.4 + 2.5 + 3.2.0-98 + 1.0.1 + 1.2.0 + 7.0.50 + 1.2.0 + 1.2.0 + 1.13 + 4.5.2 + 4.1.3 + 2.3.1 + 1.4.2 + 2.7.2 + 3.2.2 + 2.9.7 + 4.3 + 4.11 + 1.9.1 + 2.3.2 + 1.2.293 + 1.0.3.Final + 1.0.3 + 1.0.2 + 2.2.6 + 2.0.4 + + 7.0.64 + 1.0.0.FINAL + 2.9.1 + 1.0.0-ALPHA2 + 1.11.179 + + 5.0.8 + 6.0.2 + 3.0.0 + 3.0.2 + 3.9.6.Final + 1.1.3 + 3.1.0 + 7.1.0-79 + 2.8.9 + + + + + restcomm.application + restcomm.commons + restcomm.dao + restcomm.asr + restcomm.tts.acapela + restcomm.mgcp + restcomm.fax + restcomm.mscontrol.api + restcomm.mscontrol.mms + restcomm.mscontrol.jsr309 + restcomm.sms.api + restcomm.telephony.api + restcomm.interpreter + restcomm.http + restcomm.sms + restcomm.provisioning.number.api + restcomm.provisioning.number.vi + restcomm.provisioning.number.nexmo + restcomm.provisioning.number.bandwidth + restcomm.provisioning.number.voxbone + restcomm.telephony + restcomm.tts.api + restcomm.tts.voicerss + + restcomm.ui + restcomm.tts.att + restcomm.ussd + restcomm.routing + restcomm.email + restcomm.email.api + restcomm.extension.api + restcomm.extension.controller + restcomm.identity + restcomm.mrb + restcomm.mrb.api + restcomm.dns.api + restcomm.monitoring.service + restcomm.tts.awspolly + restcomm.sdr.apirestcomm.core + @@ -190,125 +188,125 @@ org.restcomm restcomm-connect.sdr.api - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.core - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.mrb.api - ${project.version} + ${project.version} org.restcomm restcomm-connect.mrb - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.application - ${project.version} - war - + ${project.version} + war + org.restcomm restcomm-connect.extension.api - ${project.version} + ${project.version} org.restcomm restcomm-connect.extension.controller ${project.version} - + org.restcomm restcomm-connect.monitoring.service - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.dao - ${project.version} + ${project.version} org.restcomm restcomm-connect.telephony - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.telephony.api - ${project.version} + ${project.version} org.restcomm restcomm-connect.http - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.extension.api - ${project.version} + ${project.version} org.restcomm restcomm-connect.testsuite - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.commons - ${project.version} - + ${project.version} + org.restcomm restcomm-connect.email.api - ${project.version} - - + ${project.version} + + org.restcomm restcomm-connect.sms - ${project.version} + ${project.version} org.restcomm restcomm-connect.mgcp - ${project.version} - - + ${project.version} + + org.restcomm restcomm-connect.mscontrol.api - ${project.version} + ${project.version} org.restcomm restcomm-connect.mscontrol.mms - ${project.version} + ${project.version} org.restcomm restcomm-connect.dns.api - ${project.version} - + ${project.version} + org.restcomm restcomm-connect-management ${project.version} - war + war - - - + + + @@ -582,12 +580,12 @@ ${sipservletapi.version} provided - + org.mobicents.servlet.sip sip-servlets-core-api ${sipservletapi.version} - + org.mobicents.servlet.sip @@ -618,19 +616,19 @@ - + org.apache.tomcat tomcat-catalina ${tomcat7.version} - + org.jboss.arquillian.junit arquillian-junit-container ${arquillian.version} - + org.mobicents.arquillian.container mss-arquillian-mediaserver-api @@ -640,7 +638,7 @@ org.mobicents.arquillian.container mss-arquillian-mediaserver-extension ${mss.arquillian.version} - + org.jboss.shrinkwrap.resolver @@ -655,12 +653,12 @@ ${shrinkwrap.resolver.version} test - + com.cloudhopper ch-commons-util ${ch-commons-util.version} - + org.mobicents.sipunit @@ -704,7 +702,7 @@ ${mockito-core.version} test - + org.mobicents.servlet.sip.containers sip-servlets-tomcat-7 @@ -737,7 +735,7 @@ standalone - + @@ -993,168 +991,109 @@ org.apache.maven.plugins maven-checkstyle-plugin ${checkstyle.plugin.version} - + - - - docs - - restcomm.docs - - - - set-git-hash - - - - org.codehaus.mojo - buildnumber-maven-plugin - 1.0 - - - validate - - create - - - - - false - false - - - - - - - maven-release - - - - maven-release-plugin - - - - - - generate-javadoc - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.7 - - true - - - - attach-javadoc - verify - - jar - - - - - - - - - release-sign-artifacts - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - - - sign-artifacts - install - - sign - - - - - - - - - - - - mobicents-public-repository-group - Mobicens Public Maven Repository Group - https://oss.sonatype.org/content/groups/public - default - - true - never - - - true - never - - - - jboss-public-repository-group - JBoss Public Maven Repository Group - https://repository.jboss.org/nexus/content/groups/public-jboss/ - default - - true - never - - - true - never - - + + + docs + + restcomm.docs + + + + testsuite + + restcomm.testsuite + + + + set-git-hash + + + + org.codehaus.mojo + buildnumber-maven-plugin + 1.0 + + + validate + + create + + + + + false + false + + + + + + + maven-release + + + + maven-release-plugin + + + + + + generate-javadoc + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.7 + + true + + + + attach-javadoc + verify + + jar + + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + install + + sign + + + + + + + + - - - - - - - mobicents-public-repository-group - Mobicens Public Maven Repository Group - https://oss.sonatype.org/content/groups/public - default - - true - never - - - true - never - - - - jboss-public-repository-group - JBoss Public Maven Repository Group - https://repository.jboss.org/nexus/content/groups/public-jboss/ - default - - true - never - - - true - never - - - \ No newline at end of file From eb0b505e6d0f4e5157ff43c8c0695b3cef6793f4 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Thu, 8 Mar 2018 23:37:13 +0200 Subject: [PATCH 07/41] all elements in place, testing missing (cherry picked from commit 58dbfa4) --- .../src/main/resources/descriptor.xml | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml index c62fa43cb0..b714b119ab 100644 --- a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml +++ b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml @@ -5,17 +5,24 @@ zip - ${project.build.finalName} + Restcomm-JBoss-Wildfly10-${project.version} + ${project.build.directory}/dependency/restcomm-sip-servlets-${sipservletapi.version}-wildfly-10.0.0.Final / + + + standalone/configuration/dars/mobicents-dar.properties + standalone/configuration/mss-sip-stack.properties + ${project.build.directory}/dependency/restcomm-media-server /mediaserver + **/*.sh @@ -23,19 +30,16 @@ ${project.build.directory}/dependency/restcomm-media-server /mediaserver + **/*.sh 555 + ${project.basedir}/src/main/resources/assembly-resources / - - **/*.sh - - - 555 @@ -57,21 +61,20 @@ - /standalone/deployments + /standalone/deployments/restcomm.war true - restcomm.war org.restcomm:restcomm-connect.application - + - /standalone/deployments/restcomm.war - true - + false + /standalone/deployments + restcomm-management.war - org.restcomm:restcomm-connect.configuration + org.restcomm:restcomm-connect-management - + From 2768552a0ab930f4c4092cffd9a4c0e1204ff2f5 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 02:13:15 +0200 Subject: [PATCH 08/41] changed file mode to be exec:wq (cherry picked from commit ecccc12) --- .../bin/restcomm/autoconfigure.sh | 35 +++ .../bin/restcomm/collect_jmap.sh | 96 ++++++++ .../bin/restcomm/gsed_macos.sh | 6 + .../assembly-resources/bin/restcomm/jvmtop.sh | 24 ++ .../bin/restcomm/logs_collect.sh | 206 ++++++++++++++++++ .../bin/restcomm/restart-restcomm.sh | 83 +++++++ .../bin/restcomm/set-log-level.sh | 114 ++++++++++ .../bin/restcomm/start-mediaserver.sh | 19 ++ .../bin/restcomm/start-restcomm.sh | 165 ++++++++++++++ .../bin/restcomm/stop-mediaserver.sh | 11 + .../bin/restcomm/stop-restcomm.sh | 26 +++ .../bin/restcomm/verify-dependencies.sh | 56 +++++ 12 files changed, 841 insertions(+) create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh new file mode 100755 index 0000000000..454c5dca4d --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh @@ -0,0 +1,35 @@ +#! /bin/bash + +## Description: Executes all RestComm configuration scripts for a given version. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +autoconfigure() { + local BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + + ## We want this file to be executed last since its contains xmlstarlet based config script + ## https://telestax.atlassian.net/browse/RESTCOMM-1140 + local LAST_FILE_TO_BE_EXECUTED=$BASEDIR/autoconfig.d/config-restcomm.sh + + # load configuration values + #source $BASEDIR/restcomm.conf + echo '' + echo 'RestComm automatic configuration started:' + echo "LAST_FILE_TO_BE_EXECUTED is: $LAST_FILE_TO_BE_EXECUTED" + for f in $BASEDIR/autoconfig.d/*.sh; do + echo "Executing configuration file $f..." + if [ "$f" != "$LAST_FILE_TO_BE_EXECUTED" ]; then + source $f + echo "Finished executing configuration file $f!" + echo '' + fi + done + + source $LAST_FILE_TO_BE_EXECUTED + echo "Finished executing configuration file $LAST_FILE_TO_BE_EXECUTED!" + echo '' + + echo 'RestComm automatic configuration finished!' + echo '' +} + +autoconfigure \ No newline at end of file diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh new file mode 100755 index 0000000000..58b00dc67b --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +## Author : George Vagenas +# + +##Global Parameters +DATE=$(date +%F_%H_%M) +DIR_NAME=restcomm_$DATE +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +JMAP_DIR=$BASEDIR/$DIR_NAME + +JMAP="true" +DTAR="true" + +## +## FUNCTIONS +## +getPID(){ + RESTCOMM_PID=" " + RMS_PID="" + + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + +} + +restcomm_jmap(){ +if [[ -z "$RESTCOMM_PID" ]]; then + getPID +fi + +if [[ -z "$RESTCOMM_PID" ]]; then + echo "Please make sure that RestComm is running..." + else + echo "****************************************************************" > $JMAP_DIR/restcomm_mem + echo "GC Histogram before GC.run" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + jcmd $RESTCOMM_PID GC.class_histogram | grep org.restcomm.connect >> $JMAP_DIR/restcomm_mem + + jcmd $RESTCOMM_PID GC.run + sleep 5 + + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + echo "GC Histogram after GC.run" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + jcmd $RESTCOMM_PID GC.class_histogram | grep org.restcomm.connect >> $JMAP_DIR/restcomm_mem + + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + echo "JVMTop" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + $BASEDIR/jvmtop.sh -n 1 >> $JMAP_DIR/restcomm_mem + + jmap -dump:live,format=b,file=restcomm_jmap_$DATE.bin $RESTCOMM_PID + mv restcomm_jmap_$DATE.bin $JMAP_DIR + fi + +} + +rms_jmap(){ +if [[ -z "$RMS_PID" ]]; then + getPID +fi + +if [[ -z "$RMS_PID" ]]; then + echo "Please make sure that Mediaserver is running..." + else + jcmd $RMS_PID GC.run + sleep 2 + jmap -dump:live,format=b,file=rms_jmap_$DATE.bin $RMS_PID + mv rms_jmap_$DATE.bin $JMAP_DIR + fi +} + +make_tar() { + if [ -d "$JMAP_DIR" ]; then + echo TAR_FILE : $JMAP_DIR.tar.gz + tar -zcf $JMAP_DIR.tar.gz -C $JMAP_DIR . 3>&1 1>&2 2>&3 + rm -rf $JMAP_DIR + return 0 + fi + exit 1 +} + +mkdir $JMAP_DIR +restcomm_jmap +rms_jmap +make_tar diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh new file mode 100755 index 0000000000..2c934ea154 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh @@ -0,0 +1,6 @@ +#!/bin/bash +## Description: Change 'sed' to 'gsed' for MacOS users in order for the autoconfig scripts to work properly +## Prerequisites: Install gnu-sed using homebrew (brew install gnu-sed) +## Author: George Vagenas +gsed -i 's/sed/gsed/g' ./*.sh +gsed -i 's/sed/gsed/g' ./autoconfig.d/*.sh diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh new file mode 100755 index 0000000000..32aa5305b2 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# jvmtop - java monitoring for the command-line +# launch script +# +# author: Markus Kolb +# + +DIR=`cd "\`dirname "$0"\`" && pwd` + +if [ -z "$JAVA_HOME" ] ; then + JAVA_HOME=`readlink -f \`which java 2>/dev/null\` 2>/dev/null | \ + sed 's/\/bin\/java//'` +fi + +TOOLSJAR="$JAVA_HOME/../lib/tools.jar" + +if [ ! -f "$TOOLSJAR" ] ; then + echo "$JAVA_HOME seems to be no JDK!" >&2 + exit 1 +fi + +"$JAVA_HOME"/bin/java $JAVA_OPTS -cp "$DIR/jvmtop.jar:$TOOLSJAR" \ +com.jvmtop.JvmTop "$@" +exit $? diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh new file mode 100755 index 0000000000..f253f176be --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh @@ -0,0 +1,206 @@ +#!/bin/bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +# +DATE=$(date +%F_%H_%M) +DIR_NAME=restcomm_$DATE +RESTCOMM_CORE_FILE=server.log +MEDIASERVER_FILE=server.log +SYSLOGS_DIR=/var/log +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_LOG_BASE=$(cd $BASEDIR/../../ && pwd) +RESTCOMM_CORE_LOG=$RESTCOMM_LOG_BASE/standalone/log +RVD_LOG=$RESTCOMM_LOG_BASE/standalone/log/rvd +RVD_LOG_FILE=rvd.log +MMS_LOGS=$RESTCOMM_LOG_BASE/mediaserver/log +LOGS_DIR_ZIP=$BASEDIR/$DIR_NAME + +restcomm_logs () { + if [ -f $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE ]; then + cp $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE $LOGS_DIR_ZIP/restcomm_server.log + fi +} +restcomm_logs_bytime () { + if [ -f $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE ]; then + IN=$1 + IFS="," + arr=($IN) + unset IFS + FROM=`grep -n "^${arr[0]}" $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE |cut -f1 -d: | tail -1` + TO=`grep -n "^${arr[1]}" $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE |cut -f1 -d: | tail -1` + awk 'NR=="'"$FROM"'", NR=="'"$TO"'"; NR=="'"$TO"'" {print; exit}' $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE > $LOGS_DIR_ZIP/RestCommlinesTime.log + fi +} +rvd_logs () { + if [ -f $RVD_LOG/$RVD_LOG_FILE ]; then + cp $RVD_LOG/$RVD_LOG_FILE $LOGS_DIR_ZIP/rvd_server.log + fi +} +mediaserver_logs () { + if [ -f $MMS_LOGS/$MEDIASERVER_FILE ]; then + cp $MMS_LOGS/$MEDIASERVER_FILE $LOGS_DIR_ZIP/mms_server.log + fi +} +system_logs () { + if [ -f $SYSLOGS_DIR/messages ]; then + cp $SYSLOGS_DIR/messages $LOGS_DIR_ZIP/ + fi + if [ -f $SYSLOGS_DIR/syslog ]; then + cp $SYSLOGS_DIR/syslog $LOGS_DIR_ZIP/ + fi +} +JVM_perfo_stats () { + if [ -n "$RESTCOMM_PID" ]; then + jstack -l $RESTCOMM_PID > $LOGS_DIR_ZIP/restcomm_jstack_trace_$DATE + fi + if [ -n "$RMS_PID" ]; then + jstack -l $RMS_PID > $LOGS_DIR_ZIP/mms_jstack_trace_$DATE + fi +} +system_usage_info () { + echo "---top:" > $LOGS_DIR_ZIP/usage_stats_$DATE + echo CPU\(s\): `top -b -n1 | grep "Cpu(s)" | awk '{print $2" : " $4}'` >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo >> $LOGS_DIR_ZIP/usage_stats_$DATE + top -b -n1 | grep Mem >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo "---free:" >> $LOGS_DIR_ZIP/usage_stats_$DATE + free >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo "---df:" >> $LOGS_DIR_ZIP/usage_stats_$DATE + df -h >> $LOGS_DIR_ZIP/usage_stats_$DATE + ps aux > $LOGS_DIR_ZIP/top_$DATE +} +jvm_process_info () { + if [ -n "$RESTCOMM_PID" ]; then + echo "----------------------- restcomm ---------------------------" > $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnew $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Space Size-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnewcapacity $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------Garbage-collected heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gc $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + fi + if [ -n "$RMS_PID" ]; then + echo "----------------------- mediaserver ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "-------- New Generation Heap -------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnew $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Space Size-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnewcapacity $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------Garbage-collected heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gc $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + fi + echo "--------------------------------- ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "----------------------- More INFO ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo " http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html " >> $LOGS_DIR_ZIP/jvm_process_$DATE +} +LWP_threads_logs () { + pat=`ps -ef | grep java | grep -v grep | awk '{print $2}'` + ps -eLo pid,lwp,nlwp,ruser,pcpu,stime,etime,args | grep -F "${pat}" > $LOGS_DIR_ZIP/lwpthread_$DATE.txt + return 0 +} +netstat_stats () { + echo "----------------------- netstat -s ---------------------------" > $LOGS_DIR_ZIP/netstat_stats_$DATE + netstat -s >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo "----------------------- netstat -anp ---------------------------" >> $LOGS_DIR_ZIP/netstat_stats_$DATE + netstat -anp >> $LOGS_DIR_ZIP/netstat_stats_$DATE +} +make_tar () { + echo TAR_FILE : $LOGS_DIR_ZIP.tar.gz + tar -zcf $LOGS_DIR_ZIP.tar.gz -C $LOGS_DIR_ZIP . 3>&1 1>&2 2>&3 + rm -rf $LOGS_DIR_ZIP +} +set_info() { + echo "$1" > $LOGS_DIR_ZIP/issue_info.txt +} +jvm_top() { + ./jvmtop.sh --once > $LOGS_DIR_ZIP/jvm_top.txt +} +sys_date() { + echo `date` > $LOGS_DIR_ZIP/sys_date.txt +} +getPID(){ + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + if [[ -z "$RESTCOMM_PID" ]]; then + echo "RestComm is not Running, will try to collect all available logs" + fi + if [[ -z "$RMS_PID" ]]; then + echo "RMS is not Running, will try to collect all available logs" + fi +} +usage () { + cat << EOF +Usage: logs_collect.sh +options: +-m : optional message of the problem. +-t : Restcomm log file time extractor (e.g "06:20:0*,06:23:0*"). +-h : prints this message +-z : Create .tar file +EOF + exit 1 +} +#MAIN +tflag=false +zflag=false +TEMP=`getopt --long -o ":t:m:hz" "$@"` +eval set -- "$TEMP" +while true ; do + case "$1" in + -m ) + mkdir -p $LOGS_DIR_ZIP + set_info "$2" + shift 2 + ;; + -t ) + tflag=true + var=$2 + shift 2 + ;; + -z ) + zflag=true + break + ;; + -h ) + usage + ;; + *) + break + ;; + esac +done; +if [ ! -e $LOGS_DIR_ZIP ]; then + echo "create DIR $LOGS_DIR_ZIP" + mkdir -p $LOGS_DIR_ZIP +fi +if [ -d "$LOGS_DIR_ZIP" ]; then + getPID + restcomm_logs + rvd_logs + mediaserver_logs + system_logs + JVM_perfo_stats + jvm_process_info + LWP_threads_logs + system_usage_info + netstat_stats + jvm_top + sys_date + if $tflag ; then + restcomm_logs_bytime $var + fi + if $zflag ; then + make_tar + fi +else + echo "Directory $LOGS_DIR_ZIP not created, going to exit." + exit 1 +fi diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh new file mode 100755 index 0000000000..90e9470a76 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +# + +JMAP="false" + +## +## FUNCTIONS +## +getPID(){ + RESTCOMM_PID=" " + RMS_PID="" + + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + +} + +stopRestComm(){ + echo "...stoping RestComm" + ./stop-restcomm.sh + + while [[ ! -z "$RESTCOMM_PID" || ! -z "$RMS_PID" ]]; do + getPID + echo "...waiting RestComm and MS to stop" + sleep 2 + done +} + +startRestComm(){ + echo "...starting RestComm" + ./start-restcomm.sh +} + +#MAIN +# parse the flag options (and their arguments) +while getopts "hmz" OPT; do + case "$OPT" in + h) + echo "Description: Collects system data. The output is a compressed file." + echo " " + echo "restart-restcomm.sh [options]" + echo " " + echo "options:" + echo "-m collect jmap" + echo "now will jusr restart Restcomm right now" + echo "-h show brief help" + exit 0 + ;; + m) + JMAP="true" + ;; + now) + JMAP="false" + ;; + ?) + echo "Invalid option: $OPTARG" + echo "Type \"restart-restcomm.sh -help\" for instructions" + exit 1 ;; + esac +done + +# get rid of the just-finished flag arguments +shift $(($OPTIND-1)) + + +if [ "$JMAP" == "true" ]; then + echo "...JMAP files will be collected" + ./collect_jmap.sh +fi + +stopRestComm +sleep 2 +startRestComm diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh new file mode 100755 index 0000000000..e3acd40f3b --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh @@ -0,0 +1,114 @@ +#!/bin/bash +## Description: Set log_level on the fly +## Author: Lefteris Banos +##Using Jboss Command Line Interface - CLI (https://developer.jboss.org/wiki/CommandLineInterface) + + +# VARIABLES +BASE_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_BIN=$BASE_DIR/.. +CLIFILE=$BASE_DIR/log.cli + + +changelog() { + cat <> $CLIFILE + /subsystem=logging/logger=$1:write-attribute(name=level,value=$2) +EOT +} + +changelogROOT() { + cat <> $CLIFILE + /subsystem=logging/root-logger=$1:write-attribute(name=level,value=$2) +EOT +} + +changelogCONSOLE() { + cat <> $CLIFILE + /subsystem=logging/console-handler=$1:write-attribute(name=level,value=$2) +EOT +} + + +listlog(){ + cat <> $CLIFILE +/subsystem=logging/logger=org.mobicents.servlet.sip:read-resource +/subsystem=logging/logger=org.mobicents.servlet.sip.restcomm:read-resource +/subsystem=logging/logger=org.restcomm.connect:read-resource +/subsystem=logging/logger=gov.nist:read-resource +/subsystem=logging/console-handler=CONSOLE:read-resource +/subsystem=logging/root-logger=ROOT:read-resource +EOT +} + +if [ $# -eq 0 ] + then + arr="help" +else + arr=( "$@" ) +fi + +for compt in $arr + do + case "$compt" in + servlet) + COMPONENT=org.mobicents.servlet.sip + changelog $COMPONENT $2 + ;; + + govnist) + COMPONENT=gov.nist + changelog $COMPONENT $2 + ;; + siprestcomm) + COMPONENT=org.mobicents.servlet.sip.restcomm + changelog $COMPONENT $2 + ;; + restcomm) + COMPONENT=org.restcomm.connect + changelog $COMPONENT $2 + # update RVD's logging level too. TODO do this separately on 'rvd)' when docker scripts are updated too + COMPONENT=org.restcomm.connect.rvd.LOCAL + changelog $COMPONENT $2 + COMPONENT=org.restcomm.connect.rvd.GLOBAL + changelog $COMPONENT $2 + ;; + rvd) + COMPONENT=org.restcomm.connect.rvd.LOCAL + changelog $COMPONENT $2 + COMPONENT=org.restcomm.connect.rvd.GLOBAL + changelog $COMPONENT $2 + ;; + root) + COMPONENT=ROOT + changelogROOT $COMPONENT $2 + ;; + console) + COMPONENT=CONSOLE + changelogCONSOLE $COMPONENT $2 + ;; + list) + listlog + ;; + *) + echo "Usage: $0 \"servlet govnist siprestcomm restscomm console root\" DEBUG. Can also set each element individually" + echo "Usage: $0 list (To list the actual log levels)" + exit 1 + esac +done + + n=0 + until [ $n -ge 5 ] + do + n=$[$n+1] + $RESTCOMM_BIN/jboss-cli.sh --connect controller=127.0.0.1 --file="$CLIFILE" # substitute your command here + if [ $? -eq 0 ]; then echo "LOG level changed properly" && break; fi + + if [ $n -eq 5 ]; then echo "Command Fail.. please try again"; fi + sleep 2 + done + + + +rm $CLIFILE + + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh new file mode 100755 index 0000000000..cadee45e16 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh @@ -0,0 +1,19 @@ +#! /bin/bash + +## Description: Starts Media Server with auto-configuration. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +startMediaServer() { + local basedir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + local ms_conf=$basedir/mediaserver.conf + local ms_home=$RESTCOMM_HOME/mediaserver + + chmod +x $ms_home/*.sh + chmod +x $ms_home/.autoconfig/*.sh + chmod +x $ms_home/.autoconfig/autoconfig.d/*.sh + chmod +x $ms_home/bin/*.sh + + $ms_home/start-mediaserver.sh $ms_conf +} + +startMediaServer diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh new file mode 100755 index 0000000000..ae6ba7538e --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh @@ -0,0 +1,165 @@ +#! /bin/bash +## +## Description: Starts RestComm with auto-configuration. +## +## Parameters : 1. Bind Address (default: 127.0.0.1) +## 2. Run Mode [standalone|standalone-lb|domain|domain-lb] (default:standalone) +## +## Author : Henrique Rosa +## +# set environment variables for execution +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_HOME=$(cd $BASEDIR/../../ && pwd) +MMS_HOME=$RESTCOMM_HOME/mediaserver +LB_HOME=$RESTCOMM_HOME/tools/sip-balancer + +## +## FUNCTIONS +## +startRestcomm() { + run_mode="$1" + bind_address="$2" + ExtraOpts="-Djboss.bind.address.management=127.0.0.1" + + # Check if RestComm is already running + if tmux ls | grep -q 'restcomm'; then + echo 'TelScale RestComm is already running on terminal session "restcomm"!' + exit 1; + fi + + if [ -n "$MGMT_PASS" ] && [ -n "$MGMT_USER" ]; then + echo "MGMT_PASS, MGMT_USER is set will be added to MGMNT configuration" + grep -q "$MGMT_USER" $RESTCOMM_HOME/standalone/configuration/mgmt-users.properties || $RESTCOMM_HOME/bin/add-user.sh "$MGMT_USER" "$MGMT_PASS" -s + #Management bind address + ExtraOpts="-Djboss.bind.address.management=$bind_address" + fi + + case $run_mode in + 'standalone'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + echo 'TelScale RestComm started running on standalone mode. Terminal session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + if [[ "$RUN_DOCKER" == "true" || "$RUN_DOCKER" == "TRUE" ]]; then + $RESTCOMM_HOME/bin/standalone.sh -b $bind_address "${ExtraOpts}" + else + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + fi + ;; + 'domain'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/domain.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/domain.sh -b $bind_address ${ExtraOpts}" + echo 'TelScale RestComm started running on domain mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + *) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + echo 'TelScale RestComm started running on standalone mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + esac + +} + +verifyDependencies() { + source $BASEDIR/verify-dependencies.sh +} + +loadConfigurationParams() { + source $BASEDIR/restcomm.conf + source $BASEDIR/advanced.conf +} + +## +## MAIN +## +verifyDependencies +loadConfigurationParams + +echo BASEDIR: $BASEDIR +echo RESTCOMM_HOME: $RESTCOMM_HOME + +# input parameters and default values +RUN_MODE='standalone' +BIND_ADDRESS='' + +while getopts "s:r:i:" optname +do + case "$optname" in + "s") + STATIC_ADDRESS="$OPTARG" + ;; + "r") + RUN_MODE="$OPTARG" + ;; + "i") + NET_INTERFACE="$OPTARG" + ;; + ":") + echo "No argument value for option $OPTARG" + exit 1 + ;; + "?") + echo "Unknown option $OPTARG" + exit 1 + ;; + *) + echo 'Unknown error while processing options' + exit 1 + ;; + esac +done + +# validate network interface and extract network properties +if [[ -z "$NET_INTERFACE" ]]; then +NET_INTERFACE='eth0' +echo "Looking for the appropriate interface" + NET_INTERFACES=$(ifconfig | expand | cut -c1-8 | sort | uniq -u | awk -F: '{print $1;}') + if [[ -z $(echo $NET_INTERFACES | sed -n "/$NET_INTERFACE/p") ]]; then + echo "The network interface $NET_INTERFACE is not available or does not exist." + echo "The list of available interfaces is: $NET_INTERFACES" + exit 1 + fi +fi + +# load network properties for chosen interface +if [[ -z "$PRIVATE_IP" || -z "$SUBNET_MASK" || -z "$NETWORK" || -z "$BROADCAST_ADDRESS" ]]; then +echo "Looking for the IP Address, subnet, network and broadcast_address" + source $BASEDIR/utils/read-network-props.sh "$NET_INTERFACE" +fi + +BIND_ADDRESS="$PRIVATE_IP" +BIND_NETWORK="$NETWORK" +BIND_SUBNET_MASK="$SUBNET_MASK" + +if [[ -z "$STATIC_ADDRESS" ]]; then + STATIC_ADDRESS=$BIND_ADDRESS +fi + +if [[ -z "$MEDIASERVER_EXTERNAL_ADDRESS" ]]; then + MEDIASERVER_EXTERNAL_ADDRESS="$STATIC_ADDRESS" +fi + +if [[ -z "$PUBLIC_IP" ]]; then + PUBLIC_IP=$STATIC_ADDRESS +fi + +if [[ -z "$SMS_OUTBOUND_PROXY" ]]; then + SMS_OUTBOUND_PROXY=$OUTBOUND_PROXY +fi + +# configure restcomm installation + +if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + source $BASEDIR/autoconfigure.sh +fi + +if [[ "$MS_EXTERNAL" == "false" || "$MS_EXTERNAL" == "FALSE" ]]; then + source $BASEDIR/start-mediaserver.sh +fi +# start restcomm in selected run mode +startRestcomm "$RUN_MODE" "$BIND_ADDRESS" +exit 0 diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh new file mode 100755 index 0000000000..a8f2904939 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +## Description: Stops Media Server running in a terminal session. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +stopMediaServer() { + local ms_home=$RESTCOMM_HOME/mediaserver + $ms_home/stop-mediaserver.sh +} + +stopMediaServer diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh new file mode 100755 index 0000000000..6c91d6232d --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh @@ -0,0 +1,26 @@ +#! /bin/bash +## +## Description: Stops RestComm and Media Server processes running on terminal sessions +## Authors : Henrique Rosa (henrique.rosa@telestax.com) +## + +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_HOME=$(cd $BASEDIR/../../ && pwd) +MS_HOME=$RESTCOMM_HOME/mediaserver + +stopMediaServer() { + source $BASEDIR/stop-mediaserver.sh +} + +stopRestComm() { + echo 'Shutting down RestComm...' + if tmux ls | grep -q 'restcomm'; then + tmux kill-session -t restcomm + echo '...stopped RestComm instance running on terminal session "restcomm"!' + else + echo '...restComm already stopped!' + fi +} + +stopMediaServer +stopRestComm diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh new file mode 100755 index 0000000000..dbf06b3195 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh @@ -0,0 +1,56 @@ +#!/bin/bash +## Description: Verifies if all dependencies are installed. +## Author: Henrique Rosa (henrique.rosa@telestax.com) + +verifyJava() { + if [ -n "$(which java)" ]; then + if [ $(java -version 2>&1 | head -n 1 | cut -d'"' -f2 | cut -d'.' -f2) -ne "7" ]; then + echo "Only Java 1.7 required." + exit 1 + fi + else + echo "Java dependency is missing." + echo "CentOS/RHEL: java-1.7.0-openjdk-devel.x86_64" + echo "Debian/Ubuntu:" + echo " add-apt-repository ppa:openjdk-r/ppa" + echo " apt-get update" + echo " apt-get install openjdk-7-jdk" + echo "macOS: brew cask install java7" + exit 1 + fi +} + +verifyTmux() { + if [ -z "$(which tmux)" ]; then + echo "TMux dependency is missing." + echo "CentOS/RHEL: yum install tmux" + echo "Debian/Ubuntu: apt-get install tmux" + echo "macOS: brew install tmux" + exit 1 + fi +} + +verifyXmlstarlet() { + if [ -z "$(which xmlstarlet)" ]; then + echo "XML Starlet dependency is missing." + echo "CentOS/RHEL: yum install xmlstarlet" + echo "Debian/Ubuntu: apt-get install xmlstarlet" + echo "macOS: brew install xmlstarlet" + exit 1 + fi +} + +verifyIpcalc() { + if [ -z "$(which ipcalc)" ]; then + echo "IP Calc dependency is missing." + echo "CentOS/RHEL: yum install ipcalc" + echo "Debian/Ubuntu: apt-get install ipcalc" + echo "macOS: brew install ipcalc" + exit 1 + fi +} + +verifyJava +verifyTmux +verifyXmlstarlet +verifyIpcalc From 46a62821eabd399233e38f52424ad1e6bfd0ca60 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 02:14:04 +0200 Subject: [PATCH 09/41] media scripts are already exec (cherry picked from commit 98febea) --- .../src/main/resources/descriptor.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml index b714b119ab..9441f9295d 100644 --- a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml +++ b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml @@ -21,21 +21,7 @@ ${project.build.directory}/dependency/restcomm-media-server /mediaserver - - - **/*.sh - - - ${project.build.directory}/dependency/restcomm-media-server - /mediaserver - - - **/*.sh - - - 555 - ${project.basedir}/src/main/resources/assembly-resources From 46e25e59a5aa3ee45b7aff7bd212d4ab81cd0f6d Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 02:28:53 +0200 Subject: [PATCH 10/41] bash scripts file mode (cherry picked from commit bfe3efe) --- .../restcomm/autoconfig.d/config-SecureSSL.sh | 205 ++++ .../restcomm/autoconfig.d/config-dashboard.sh | 30 + .../autoconfig.d/config-dialogic-xms.sh | 57 ++ .../restcomm/autoconfig.d/config-jboss-as.sh | 18 + .../autoconfig.d/config-load-balancer.sh | 47 + .../bin/restcomm/autoconfig.d/config-logs.sh | 81 ++ .../bin/restcomm/autoconfig.d/config-mysql.sh | 249 +++++ .../restcomm/autoconfig.d/config-olympus.sh | 46 + .../restcomm/autoconfig.d/config-restcomm.sh | 893 ++++++++++++++++++ .../autoconfig.d/config-rvd-logging.sh | 190 ++++ .../bin/restcomm/autoconfig.d/config-rvd.sh | 92 ++ .../autoconfig.d/config-sip-connectors.sh | 160 ++++ .../restcomm/autoconfig.d/config-utensil.sh | 155 +++ .../restcomm/monitoring/Graylog_Monitoring.sh | 61 ++ .../bin/restcomm/utils/read-network-props.sh | 48 + 15 files changed, 2332 insertions(+) create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh create mode 100755 release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh new file mode 100755 index 0000000000..e8c2d7ee1d --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh @@ -0,0 +1,205 @@ +#!/usr/bin/env bash + +## +## Description: Configures RestComm +## Author: Lefteris Banos (eleftherios.banos@telestax.com) +## + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DARS=$RESTCOMM_HOME/standalone/configuration/dars +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + +###Functions for SECURESSL=false### +#Disable HTTPS when SECURESSL=false for RC. +NoSslRestConf(){ + FILE=$RESTCOMM_CONF/standalone-sip.xml + sed -e "s//<\!--connector name=\"https\" \1>/" \ + -e "s/<\/connector>/<\/connector-->/" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s/<.*connector name=\"http\".*>/ /" $FILE > $FILE.bak + mv $FILE.bak $FILE + + sed -i "s|SSL_ENABLED=.*|SSL_ENABLED=false|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_KEYSTORE=.*|SSL_KEYSTORE=restcomm.jks|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_PASSWORD=.*|SSL_PASSWORD=changeme|" $RESTCOMM_BIN/restcomm/mediaserver.conf +} + +####funcitions for SECURESSL="SELF" || SECURESSL="AUTH" #### +#HTTPS configuration. +#Usage of certificate. +SslRestCommConf(){ + FILE=$RESTCOMM_CONF/standalone-sip.xml + echo "Will properly configure HTTPS Connector "; + FILERESTCOMMXML=$BASEDIR/standalone/deployments/restcomm.war/WEB-INF/web.xml + FILEMANAGERXML=$BASEDIR/standalone/deployments/restcomm-management.war/WEB-INF/web.xml + FILERVDXML=$BASEDIR/standalone/deployments/restcomm-rvd.war/WEB-INF/web.xml + FILEOLYMPUSXML=$BASEDIR/standalone/deployments/olympus.war/WEB-INF/web.xml + #Disable HTTP if set to true. + if [[ "$DISABLE_HTTP" == "true" || "$DISABLE_HTTP" == "TRUE" ]]; then + echo "DISABLE_HTTP is '$DISABLE_HTTP'. Will disable HTTP Connector" + sed -e "s/<.*connector name=\"http\".*>/<\!--connector name=\"http\" protocol=\"HTTP\/1.1\" scheme=\"http\" socket-binding=\"http\"-->/" $FILE > $FILE.bak + mv $FILE.bak $FILE + + grep -q '' $FILERESTCOMMXML && sed -e "s///" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + grep -qs '' $FILEMANAGERXML && sed -e "s///" $FILEMANAGERXML.bak > $FILEMANAGERXML + grep -q '' $FILERVDXML && sed -e "s///" $FILERVDXML.bak > $FILERVDXML + grep -q '' $FILEOLYMPUSXML && sed -e "s///" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + elif [[ "$DISABLE_HTTP" == "REDIRECT" || "$DISABLE_HTTP" == "redirect" ]]; then + sed -e "s/<.*connector name=\"http\".*>//" $FILE > $FILE.bak + mv $FILE.bak $FILE + if [ ! -d "$BASEDIR/standalone/deployments/restcomm-management.war" ]; then + mkdir $BASEDIR/standalone/deployments/restcomm-management-exploded.war + unzip -q $BASEDIR/standalone/deployments/restcomm-management.war -d $BASEDIR/standalone/deployments/restcomm-management-exploded.war/ + rm -f $BASEDIR/standalone/deployments/restcomm-management.war + mv -f $BASEDIR/standalone/deployments/restcomm-management-exploded.war $BASEDIR/standalone/deployments/restcomm-management.war + fi + + sed -e "s//<\/security-constraint>/" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + sed -e "s//<\/security-constraint>/" $FILEMANAGERXML.bak > $FILEMANAGERXML + sed -e "s//<\/security-constraint>/" $FILERVDXML.bak > $FILERVDXML + sed -e "s//<\/security-constraint>/" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + else + sed -e "s/<.*connector name=\"http\".*>/ /" $FILE > $FILE.bak + mv $FILE.bak $FILE + + grep -q '' $FILERESTCOMMXML && sed -e "s///" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + grep -qs '' $FILEMANAGERXML && sed -e "s///" $FILEMANAGERXML.bak > $FILEMANAGERXML + grep -q '' $FILERVDXML && sed -e "s///" $FILERVDXML.bak > $FILERVDXML + grep -q '' $FILEOLYMPUSXML && sed -e "s///" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + fi + #If File contains path, or just the name. + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + CERTIFICATION_FILE=$TRUSTSTORE_FILE + else + CERTIFICATION_FILE="\\\${jboss.server.config.dir}/$TRUSTSTORE_FILE" + fi + #enable HTTPS and certificate file. + #Cipher `TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA` removed because it enables non-secure cipher ECDHE-RSA-DES-CBC3-SHA + echo "Will use trust store at location: $CERTIFICATION_FILE" + sed -e "s/<\!--connector name=\"https\" \(.*\)>//" \ + -e "s|||" \ + -e "s/<\/connector-->/<\/connector>/" $FILE > $FILE.bak + mv $FILE.bak $FILE + echo "Properly configured HTTPS Connector to use trustStore file $CERTIFICATION_FILE" +} + +#If self-sighned create certificate. +#else use authorized. +CertConfigure(){ + #Certificate setup (Authority certificate or self-signed) + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + if [ "$SECURESSL" = "AUTH" ]; then + echo "Authorized certificate is used" + elif [ "$SECURESSL" = "SELF" ]; then + echo "TRUSTSTORE_FILE is not provided but SECURE is TRUE. We will create and configure self signed certificate" + + sed -e "s/.*<\/ssl-mode>/allowall<\/ssl-mode>/" $FILE > $FILE.bak #When Self-signed used ssl-mode must set to "allowall" + mv $FILE.bak $FILE + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + TRUSTSTORE_LOCATION=$TRUSTSTORE_FILE + else + TRUSTSTORE_LOCATION=$RESTCOMM_HOME/standalone/configuration/$TRUSTSTORE_FILE + fi + + echo "TRUSTSTORE_LOCATION: $TRUSTSTORE_LOCATION" + echo "PUBLIC_IP: $PUBLIC_IP" + echo "RESTCOMM_HOSTNAME: $RESTCOMM_HOSTNAME" + #Use HOSTNAME to create certificate is used. Else use STATIC_ADDRESS + if [ -n "$RESTCOMM_HOSTNAME" ]; then + HOSTNAME="${RESTCOMM_HOSTNAME}" + keytool -genkey -alias $TRUSTSTORE_ALIAS -keyalg RSA -keystore $TRUSTSTORE_LOCATION -dname "CN=$HOSTNAME" -storepass $TRUSTSTORE_PASSWORD -keypass $TRUSTSTORE_PASSWORD + else + HOSTNAME="${PUBLIC_IP}" + keytool -genkey -alias $TRUSTSTORE_ALIAS -keyalg RSA -keystore $TRUSTSTORE_LOCATION -dname "CN=restcomm" -ext san=ip:"$HOSTNAME" -storepass $TRUSTSTORE_PASSWORD -keypass $TRUSTSTORE_PASSWORD + fi + echo "The generated truststore file at $TRUSTSTORE_LOCATION " + fi + + #Final necessary configuration. Protocols permitted, etc. + grep -q 'ephemeralDHKeySize' $RESTCOMM_BIN/standalone.conf || sed -i "s|-Djava.awt.headless=true|& -Djdk.tls.ephemeralDHKeySize=2048|" $RESTCOMM_BIN/standalone.conf + grep -q 'https.protocols' $RESTCOMM_BIN/standalone.conf || sed -i "s|-Djava.awt.headless=true|& -Dhttps.protocols=TLSv1.1,TLSv1.2|" $RESTCOMM_BIN/standalone.conf +} + +#SIP-Servlets configuration for HTTPS. +#For both Self-signed and Authorized certificate. +MssStackConf(){ + FILE=$RESTCOMM_CONF/mss-sip-stack.properties + + if grep -q "gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE=${TLS_CLIENT_AUTH_TYPE}" "$FILE"; then + sed -i '/gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE='"$TLS_CLIENT_AUTH_TYPE"'/,+5d' $FILE + fi + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + TRUSTSTORE_LOCATION=$TRUSTSTORE_FILE + else + TRUSTSTORE_LOCATION=$RESTCOMM_HOME/standalone/configuration/$TRUSTSTORE_FILE + fi + + #check for port offset + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + #https://github.com/RestComm/Restcomm-Connect/issues/2606 + sed -i '/org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=.*/ a \ + \gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE='"$TLS_CLIENT_AUTH_TYPE"'\ + \javax.net.ssl.keyStore='"$TRUSTSTORE_LOCATION"'\ + \javax.net.ssl.keyStorePassword='" $TRUSTSTORE_PASSWORD"'\ + \javax.net.ssl.trustStorePassword='"$TRUSTSTORE_PASSWORD"'\ + \javax.net.ssl.trustStore='"$TRUSTSTORE_LOCATION"'\ + \javax.net.ssl.keyStoreType=JKS\ + ' $RESTCOMM_CONF/mss-sip-stack.properties +} + + +#SIP-Servlets configuration for HTTPS. +#For both Self-signed and Authorized certificate. +SslRMSConf(){ + if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + CERTIFICATION_FILE=$TRUSTSTORE_FILE + else + CERTIFICATION_FILE="$RESTCOMM_CONF/$TRUSTSTORE_FILE" + fi + + sed -i "s|SSL_ENABLED=.*|SSL_ENABLED=true|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_KEYSTORE=.*|SSL_KEYSTORE=${CERTIFICATION_FILE}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_PASSWORD=.*|SSL_PASSWORD=${TRUSTSTORE_PASSWORD}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + fi +} + +# MAIN +echo 'RestComm SSL Configuring ...' + +if [[ "$SECURESSL" = "SELF" || "$SECURESSL" = "AUTH" ]]; then + if [[ -z $TRUSTSTORE_ALIAS || -z $TRUSTSTORE_PASSWORD || -z $TRUSTSTORE_FILE ]]; then + echo 'Need to set all: TRUSTSTORE_ALIAS, TRUSTSTORE_PASSWORD,TRUSTSTORE_FILE ' + else + echo "SECURE $SECURESSL" + SslRestCommConf + CertConfigure + MssStackConf + SslRMSConf + fi +elif [[ "$SECURESSL" == "false" || "$SECURESSL" == "FALSE" ]]; then + NoSslRestConf +else + echo "Allowed values for SECURESSL: SELF, AUTH, FALSE" +fi diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh new file mode 100755 index 0000000000..ec8c1b1117 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh @@ -0,0 +1,30 @@ +#!/bin/bash +## +## Configures dashboard.json based on global configuration options in restcomm.conf and advanced.conf. +## +## requirements: +## +## RESTCOMM_HOME env variable to be set +## dashboard.json should be in place (under $RESTCOMM_HOME/standalone/deployments/restcomm-management.war) +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +echo "Configuring Dashboard..." + + +# MAIN +if [ -z "$RESTCOMM_HOME" ] +then + echo "RESTCOMM_HOME env variable not set. Aborting." + exit 1 +fi + + +# Variables +DASHBOARD_ROOT="$RESTCOMM_HOME"/standalone/deployments/restcomm-management.war +DASHBOARD_JSON_FILE="$DASHBOARD_ROOT"/conf/dashboard.json + +sed -i "s|\"rvdUrl\":\"[^\"]*\"|\"rvdUrl\":\"$RVD_URL/restcomm-rvd\"|" "$DASHBOARD_JSON_FILE" + +echo "Dasboard configured:" +cat $DASHBOARD_JSON_FILE \ No newline at end of file diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh new file mode 100755 index 0000000000..4b4a8d6403 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh @@ -0,0 +1,57 @@ +#!/bin/bash +## Description: Configures Dialogic XMS +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +RESTCOMM_STANDALONE=$RESTCOMM_HOME/standalone +RESTCOMM_DEPLOY=$RESTCOMM_STANDALONE/deployments/restcomm.war + +## Description: Elects Dialogic XMS as the active Media Server for RestComm +activateXMS() { + restcomm_conf=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + ms_address="$1" + + sed -e "// { + N; s|.*<\/compatibility>|$MS_COMPATIBILITY_MODE<\/compatibility>| + N; s||| + N; s|
.*<\/address>|
$ms_address<\/address>| + }" $restcomm_conf > $restcomm_conf.bak + mv -f $restcomm_conf.bak $restcomm_conf + echo '...activated Dialogic XMS...' +} + +fetchExternalResources() { + if [[ "$MS_COMPATIBILITY_MODE" == "xms" ]]; then + + echo "Checking required libraries ..." + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogic309-3.2-snapshot-jboss.jar ]; then + echo "JSR309 library ready" + else + echo "Downloading JSR309 library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogic309-3.2-snapshot-jboss.jar https://www.dialogic.com/files/jsr-309/3.2GA/3.2Snapshot/dialogic309-3.2-snapshot-jboss.jar + fi + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogicsmiltypes-3.2-GA-14621.jar ]; then + echo "SMIL Types library ready" + else + echo "Downloading SMIL Types library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogicsmiltypes-3.2-GA-14621.jar https://www.dialogic.com/files/jsr-309/3.2GA/dialogicsmiltypes-3.2-GA-14621.jar + fi + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogicmsmltypes-3.2-GA-14621.jar ]; then + echo "MSML Types library ready" + else + echo "Downloading SMIL Types library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogicmsmltypes-3.2-GA-14621.jar https://www.dialogic.com/files/jsr-309/3.2GA/dialogicmsmltypes-3.2-GA-14621.jar + fi + fi +} + +#MAIN +echo "Configuring Dialogic XMS...MS_MODE: $MS_COMPATIBILITY_MODE" +activateXMS $MS_ADDRESS +fetchExternalResources +echo '...finished configuring Dialogic XMS!' diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh new file mode 100755 index 0000000000..c324c99337 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh @@ -0,0 +1,18 @@ +#! /bin/bash +## +## Description: Configures JBoss AS +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## + +## FUNCTIONS +disableSplashScreen() { + FILE="$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml" + sed -e 's|enable-welcome-root=".*"|enable-welcome-root="false"|' $FILE > $FILE.bak + mv -f $FILE.bak $FILE +} + +## MAIN +echo 'Configuring JBoss AS...' +disableSplashScreen +echo '...disabled JBoss splash screen...' +echo 'Finished configuring JBoss AS!' \ No newline at end of file diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh new file mode 100755 index 0000000000..77b5c56486 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh @@ -0,0 +1,47 @@ +#! /bin/bash +## +## Description: Configures SIP Load Balancer +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## Author : Pavel Slegr (pavel.slegr@telestax.com) +## Author : Charles Roufay (charles.roufay@telestax.com) +## +## Last update: 22/03/2016 +## Change Log: Move away from Telestax Proxy and configure LB from restcomm.conf +## FUNCTIONS +## +## +## +## +configSipStack() { + lb_sipstack_file="$RESTCOMM_HOME/standalone/configuration/mss-sip-stack.properties" + + #delete additional connectors if any added to erlier run of the script. + if grep -q "## lb-configuration ##" $lb_sipstack_file + then + echo "Additional Connectors Created earlier, going to delete the connectors" + sed '/## lb-configuration ##/,/## lb-configuration ##/d' $lb_sipstack_file > $lb_sipstack_file.bak + mv $lb_sipstack_file.bak $lb_sipstack_file + else + echo "LB was not configured earlier" + fi + + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + if [ -z "$LB_INTERNAL_IP" ]; then + LB_INTERNAL_IP=$LB_PUBLIC_IP + fi + sed -e "/Mobicents Load Balancer/a\ + ## lb-configuration ##\n\ + gov.nist.javax.sip.PATCH_SIP_WEBSOCKETS_HEADERS=false\n\ + org.mobicents.ha.javax.sip.REACHABLE_CHECK=false\n\ + org.mobicents.ha.javax.sip.LoadBalancerHeartBeatingServiceClassName=org.mobicents.ha.javax.sip.MultiNetworkLoadBalancerHeartBeatingServiceImpl\n\ + ## lb-configuration ##" $lb_sipstack_file > $lb_sipstack_file.bak + + mv $lb_sipstack_file.bak $lb_sipstack_file + echo 'Load Balancer has been activated and mss-sip-stack.properties file updated' + fi +} + +## MAIN +configSipStack + + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh new file mode 100755 index 0000000000..5eb9ee7934 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh @@ -0,0 +1,81 @@ +#!/bin/bash +## +## Description: Configures RestComm && RMS logs level +## Authos: Lefteris Banos (eleftherios.banos@telestax.com) + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration + + +check_if_logger_exist(){ +FILE=$RESTCOMM_CONF/standalone-sip.xml + #delete additional bindings if any added to erlier run of the script. + echo + if grep -q "${1}" $FILE + then + echo "Logger exist" + else + echo "Need to add logger ${1}" + sed -i "//i \\n\\n" $FILE + fi + +} + +configure_RC_component_log(){ + check_if_logger_exist $1 + sed -i "// {N; s///}" $RESTCOMM_CONF/standalone-sip.xml +} + +configure_RC_logs(){ + sed -i "/ / { + N; s||| + }" $RESTCOMM_CONF/standalone-sip.xml +} + +config_on_thefly(){ + FILE=$RESTCOMM_BIN/restcomm/set-log-level.sh + MNGMTPORT=$((9999 + PORT_OFFSET)) + sed -i "s|jboss-cli.sh --connect controller=.*|jboss-cli.sh --connect controller=$BIND_ADDRESS:${MNGMTPORT} --file=\"\$CLIFILE\"|" $FILE +} + +config_AKKA_logs(){ + FILE=$RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/classes/application.conf + echo "Update AKKA log level to ${AKKA_LOG_LEVEL}" + sed -i "s|loglevel = \".*\"|loglevel = \"${AKKA_LOG_LEVEL}\"|" $FILE + sed -i "s|stdout-loglevel = \".*\"|stdout-loglevel = \"${AKKA_LOG_LEVEL}\"|" $FILE +} + + +#MAIN +if [ -n "$LOG_LEVEL" ]; then + configure_RC_logs + config_on_thefly + config_AKKA_logs + for i in $( set -o posix ; set | grep ^LOG_LEVEL_COMPONENT_ | sort -rn ); do + component=$(echo ${i} | cut -d = -f1 | cut -d _ -f4 ) + level=$(echo ${i} | cut -d = -f2) + case "$component" in + SIPSERVLET) + COMPONENT=org.mobicents.servlet.sip + ;; + GOVNIST) + COMPONENT=gov.nist + ;; + SIPRESTCOMM) + COMPONENT=org.mobicents.servlet.sip.restcomm + ;; + RESTCOMM) + COMPONENT=org.restcomm.connect + ;; + *) + echo "$component not possible to configure need to add it." + continue + esac + + echo "Configuring log level for: $component -> $level" + configure_RC_component_log "$COMPONENT" "$level" + done + fi + + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh new file mode 100755 index 0000000000..7478e55e88 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh @@ -0,0 +1,249 @@ +#!/bin/bash +## Description: Enables and configures MySQL datasource +## Params: +## 1. RESTCOMM_VERSION +## Author: Henrique Rosa +## Author: Lefteris Banos + +# VARIABLES +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + + +creteMysqlDataSource(){ + if [ -z "$RESTCOMM_HOME" ]; then + echo "RESTCOMM_HOME is not defined. Please setup this environment variable and try again." + exit 1 + fi + + # Variables + MYSQLDB_MODULE=$RESTCOMM_HOME/modules/system/layers/base/com/mysql/main + STANDALONE_SIP=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + # Download and install MariaDB driver as a JBoss module + mkdir -p $MYSQLDB_MODULE + if [ ! -f $MYSQLDB_MODULE/mysql-connector-java-5.1.36.jar ]; then + echo "Mysql driver not found!" + wget http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar -O /tmp/mysql-connector-java-5.1.36.jar + cp /tmp/mysql-connector-java-5.1.36.jar $MYSQLDB_MODULE + rm -f /tmp/mysql-connector-java-5.1.36.jar + else + echo "Mysql driver already downloaded" + fi + + +cat > $MYSQLDB_MODULE/module.xml << 'EOF' + + + + + + + + + + +EOF + +query=$(grep -q 'driver name=\"com.mysql\"' $STANDALONE_SIP) +if [ $? -eq 0 ]; then + echo "Datasource already populated" +else + echo "Going to populate the datasource" + + if [ -n "$MYSQL_SNDHOST" ]; then + # Update JBoss configuration to create a MariaDB datasource + sed -e '// a\ + \ \ + \ com.mysql.jdbc.Driver\ + \ com.mysql.jdbc.jdbc2.optional.MysqlXADataSource\ + \ ' \ + -e '// a\ + \ \ + \ jdbc:mysql://localhost:3306/restcomm \ + \ | \ + \ false \ + \ com.mysql \ + \ com.mysql.jdbc.Driver \ + \ TRANSACTION_READ_COMMITTED \ + \ \ + \ 5 \ + \ 50 \ + \ \ + \ \ + \ username \ + \ password \ + \ \ + \ \ + \ 100 \ + \ \ + \ \ + \ \ + \ true \ + \ \ + \ \ + \ select 1 \ + \ \ + \ ' $STANDALONE_SIP > $STANDALONE_SIP.bak + mv $STANDALONE_SIP.bak $STANDALONE_SIP + + else + # Update JBoss configuration to create a MariaDB datasource + sed -e '// a\ + \ \ + \ com.mysql.jdbc.Driver\ + \ com.mysql.jdbc.jdbc2.optional.MysqlXADataSource\ + \ ' \ + -e '// a\ + \ \ + \ jdbc:mysql://localhost:3306/restcomm \ + \ com.mysql \ + \ TRANSACTION_READ_COMMITTED \ + \ \ + \ 100 \ + \ 200 \ + \ \ + \ \ + \ username \ + \ password \ + \ \ + \ \ + \ 100 \ + \ \ + \ \ + \ ' $STANDALONE_SIP > $STANDALONE_SIP.bak + mv $STANDALONE_SIP.bak $STANDALONE_SIP + fi +fi +} + +## Description: Configures MyBatis for MySQL +## Parameters : none +configMybatis() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/mybatis.xml + + grep -q '' $FILE || sed -i '// a \ + \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + ' $FILE + + sed -e '// s|default=".*"|default="mysql"|' $FILE > $FILE.bak + mv $FILE.bak $FILE + echo 'Activated mybatis environment for MySQL'; +} + +configureMySQLDataSource() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + if [ -n "$5" ]; then + #DB failover configuration. + sed -e "s|.*|jdbc:mysql://$1:3306/$4\|jdbc:mysql://$5:3306/$4|g" $FILE > $FILE.bak + else + # Update DataSource + sed -e "s|.*|jdbc:mysql://$1:3306/$4|g" $FILE > $FILE.bak + fi + mv $FILE.bak $FILE + sed -e "s|.*|$2|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s|.*|$3|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + echo 'Updated MySQL DataSource Configuration' +} + +## Description: Enables MySQL Datasource while disabling the remaining +## Parameters : none +enableDataSource() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + # Disable all datasources but MySQL + sed -e '/ $FILE.bak + + mv $FILE.bak $FILE + echo 'Enabled MySQL datasource' +} + +## Description: Configures RestComm DAO manager to use MySQL +## Params: none +configDaoManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/dao-manager.xml + + sed -e "s|.*||g" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s|.*|\${restcomm:home}/WEB-INF/scripts/mariadb/sql|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + + echo 'Configured MySQL Dao Manager for MySQL' +} + +## Description: Set Password for Adminitrator@company.com user. Only for fresh installation. +initUserPassword(){ + SQL_FILE=$RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + if [ -n "$INITIAL_ADMIN_USER" ]; then + # change admin user + if grep -q "uninitialized" $SQL_FILE; then + echo "Update Admin user" + sed -i "s/administrator@company.com/${INITIAL_ADMIN_USER}/g" $SQL_FILE + else + echo "Adminitrator User Already changed" + fi + fi + + if [ -n "$INITIAL_ADMIN_PASSWORD" ]; then + echo "change admin password" + if grep -q "uninitialized" $SQL_FILE; then + PASSWORD_ENCRYPTED=`echo -n "${INITIAL_ADMIN_PASSWORD}" | md5sum |cut -d " " -f1` + #echo "Update password to ${INITIAL_ADMIN_PASSWORD}($PASSWORD_ENCRYPTED)" + sed -i "s/uninitialized/active/g" $SQL_FILE + sed -i "s/77f8c12cc7b8f8423e5c38b035249166/$PASSWORD_ENCRYPTED/g" $SQL_FILE + sed -i 's/Date("2012-04-24")/now()/' $SQL_FILE + sed -i 's/Date("2012-04-24")/now()/' $SQL_FILE + # end + else + echo "Adminitrator Password Already changed" + fi + fi +} + +## Description: populated DB with necessary starting point data if not done. +populateDB(){ + #Change script to defined schema + echo "Use RestComm Database:$MYSQL_SCHEMA " + sed -i "s|CREATE DATABASE IF NOT EXISTS .*| CREATE DATABASE IF NOT EXISTS ${MYSQL_SCHEMA};|" $RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + sed -i "s|USE .*|USE ${MYSQL_SCHEMA};|" $RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + + if mysql -u $2 -p$3 -h $1 -e "SELECT * FROM \`$4\`.restcomm_clients;" &>/dev/null ; then + # Update config settings + echo "Database already populated" + else + echo "Database not populated, importing schema and updating config file" + FILE=$RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + mysql -u $2 -p$3 -h $1 < $FILE + mysql -u $2 -p$3 -h $1 --execute='show databases;' + mysql -u $2 -p$3 -h $1 --execute='show tables;' $4; + echo "Database population done" + fi +} + +# MAIN +if [[ "$ENABLE_MYSQL" == "true" || "$ENABLE_MYSQL" == "TRUE" ]]; then + if [[ -z $MYSQL_HOST || -z $MYSQL_USER || -z $MYSQL_PASSWORD || -z $MYSQL_SCHEMA ]]; then + echo 'one or more variables are undefined' + echo 'Not possible to continue with Mysql configuration' + exit 1 + else + echo "Configuring MySQL datasource... $MYSQL_HOST $MYSQL_SCHEMA $MYSQL_USER $MYSQL_SNDHOST" + creteMysqlDataSource + enableDataSource + configMybatis + configDaoManager + configureMySQLDataSource $MYSQL_HOST $MYSQL_USER $MYSQL_PASSWORD $MYSQL_SCHEMA $MYSQL_SNDHOST + initUserPassword + populateDB $MYSQL_HOST $MYSQL_USER $MYSQL_PASSWORD $MYSQL_SCHEMA + echo 'Finished configuring MySQL datasource!' + fi +fi \ No newline at end of file diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh new file mode 100755 index 0000000000..24f3f93115 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh @@ -0,0 +1,46 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Lefteris Banos (eleftherios.banos@telestax.com) +## + +BASEDIR=$RESTCOMM_HOME + +if [ ! -d "$BASEDIR/standalone/deployments/olympus.war" ]; then + mkdir $BASEDIR/standalone/deployments/olympus-exploded.war + unzip -q $BASEDIR/standalone/deployments/olympus.war -d $BASEDIR/standalone/deployments/olympus-exploded.war/ + rm -f $BASEDIR/standalone/deployments/olympus.war + mv -f $BASEDIR/standalone/deployments/olympus-exploded.war $BASEDIR/standalone/deployments/olympus.war +fi + +# Set Olympus ports +olympusPortConf(){ +FILE=$BASEDIR/standalone/deployments/olympus.war/resources/xml/olympus.xml + +# Check for Port Offset + local SIP_PORT_WS=$((SIP_PORT_WS + PORT_OFFSET)) + local SIP_PORT_WSS=$((SIP_PORT_WSS + PORT_OFFSET)) + + if [ -z "$SECURESSL" ] || [ "$SECURESSL" == "false" ] || [ "$SECURESSL" == "FALSE" ]; then + xmlstarlet ed -L -P -u "/olympus/server/@secure" -v "false" $FILE + else + xmlstarlet ed -L -P -u "/olympus/server/@secure" -v "true" $FILE + fi + + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + xmlstarlet ed -L -P -u "/olympus/server/port" -v ${LB_EXTERNAL_PORT_WS} $FILE + xmlstarlet ed -L -P -u "/olympus/server/secure-port" -v ${LB_EXTERNAL_PORT_WSS} $FILE + else + xmlstarlet ed -L -P -u "/olympus/server/port" -v ${SIP_PORT_WS} $FILE + xmlstarlet ed -L -P -u "/olympus/server/secure-port" -v ${SIP_PORT_WSS} $FILE + fi + +} + + + + +# MAIN +echo 'Configuring Olympus...' +#Reload Variables +olympusPortConf diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh new file mode 100755 index 0000000000..92397c287e --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh @@ -0,0 +1,893 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Henrique Rosa (henrique.rosa@telestax.com) +## Author: Pavel Slegr (pavel.slegr@telestax.com) +## Author: Maria Farooq (maria.farooq@telestax.com) +## + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DARS=$RESTCOMM_HOME/standalone/configuration/dars +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war +RVD_DEPLOY_PATH=$RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war + +## FUNCTIONS + +## Description: Configures Java Options for Application Server +## Parameters : none +configRCJavaOpts() { + FILE=$RESTCOMM_BIN/standalone.conf + echo "RestComm java options with: $RC_JAVA_OPTS" + sed -e "/if \[ \"x\$JAVA_OPTS\" = \"x\" \]; then/ { + N; s|JAVA_OPTS=.*|JAVA_OPTS=\"$RC_JAVA_OPTS\"| + }" $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +## Description: Updates RestComm configuration file +## Parameters : 1.STATIC_ADDRESS +configRestcomm() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + static_address="$1" + + sed -i "s|<\!--.*.*<\/external-ip>.*-->|$static_address<\/external-ip>|" $FILE + sed -i "s|.*<\/external-ip>|$static_address<\/external-ip>|" $FILE + + sed -i "s||$static_address<\/external-ip>|" $FILE + + echo 'Updated RestComm configuration' + + #If "STRICT" no self-signed certificate is permitted. + if [ "$SSL_MODE" == "strict" ] || [ "$SSL_MODE" == "STRICT" ]; then + sed -e "s/.*<\/ssl-mode>/strict<\/ssl-mode>/g;s//strict<\/ssl-mode>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + else + sed -e "s/.*<\/ssl-mode>/allowall<\/ssl-mode>/g;s//allowall<\/ssl-mode>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + fi + + #Configure RESTCOMM_HOSTNAME at restcomm.xml. If not set "STATIC_ADDRESS" will be used. + if [ -n "$RESTCOMM_HOSTNAME" ]; then + echo "HOSTNAME $RESTCOMM_HOSTNAME" + + sed -i "s|.*<\/hostname>|${RESTCOMM_HOSTNAME}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s||${RESTCOMM_HOSTNAME}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if ! grep "${BIND_ADDRESS}.*${RESTCOMM_HOSTNAME}" /etc/hosts ; then + if hash host 2>/dev/null; then + if ! host ${RESTCOMM_HOSTNAME} > /dev/null + then + echo "${BIND_ADDRESS} ${RESTCOMM_HOSTNAME}" >> /etc/hosts + fi + else + echo "INFO: \"host\" programm does not exist ('dnsutils' package) please make sure that used hostname has a valid DNS resolution." + echo "INFO:IF not add the necessary hostname Ip resolution at /etc/hosts file: e.g echo RestC0mm_BIND_IP RESTCOMM_HOSTNAME >> /etc/hosts " + fi +fi + else + sed -i "s|.*<\/hostname>|${PUBLIC_IP}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s||${PUBLIC_IP}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + fi +} +## Description: OutBoundProxy configuration. +configOutboundProxy(){ + echo "Configure outbound-proxy" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s|.*<\/outbound-proxy-uri>|$OUTBOUND_PROXY<\/outbound-proxy-uri>|" $FILE + sed -i "s|.*<\/outbound-proxy-user>|$OUTBOUND_PROXY_USERNAME<\/outbound-proxy-user>|" $FILE + sed -i "s|.*<\/outbound-proxy-password>|$OUTBOUND_PROXY_PASSWORD<\/outbound-proxy-password>|" $FILE + + sed -i "s||$OUTBOUND_PROXY<\/outbound-proxy-uri>|" $FILE + sed -i "s||$OUTBOUND_PROXY_USERNAME<\/outbound-proxy-user>|" $FILE + sed -i "s||$OUTBOUND_PROXY_PASSWORD<\/outbound-proxy-password>|" $FILE +} +## Description: Push notification server configuration. +configPushNotificationServer() { + echo "Configure push-notification-server" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "s|.*<\/push-notification-server-enabled>|$PUSH_NOTIFICATION_SERVER_ENABLED<\/push-notification-server-enabled>|" $FILE + sed -i "s|.*<\/push-notification-server-url>|$PUSH_NOTIFICATION_SERVER_URL<\/push-notification-server-url>|;" $FILE + sed -i "s|.*<\/push-notification-server-delay>|$PUSH_NOTIFICATION_SERVER_DELAY<\/push-notification-server-delay>|" $FILE + + sed -i "s||$PUSH_NOTIFICATION_SERVER_ENABLED<\/push-notification-server-enabled>|" $FILE + sed -i "s||$PUSH_NOTIFICATION_SERVER_URL<\/push-notification-server-url>|" $FILE + sed -i "s||$PUSH_NOTIFICATION_SERVER_DELAY<\/push-notification-server-delay>|" $FILE +} +## Description: Configures Voip Innovations Credentials +## Parameters : 1.Login +## 2.Password +## 3.Endpoint +configVoipInnovations() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured Voip Innovation credentials' +} + +## Description: PROVISION MANAGER configuration. +# MANAGERS : VI (Voip innovations),NX (nexmo),VB (Voxbone), BW(Bandwidth). +configDidProvisionManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [[ "$PROVISION_PROVIDER" == "VI" || "$PROVISION_PROVIDER" == "vi" ]]; then + sed -e "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.vi.VoIPInnovationsNumberProvisioningManager\"|" $FILE > $FILE.bak + + mv $FILE.bak $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + echo 'Configured Voip Innovation credentials' + else + if [[ "$PROVISION_PROVIDER" == "BW" || "$PROVISION_PROVIDER" == "bw" ]]; then + sed -e "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.bandwidth.BandwidthNumberProvisioningManager\"|" $FILE > $FILE.bak + + mv $FILE.bak $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$6| + N; s|.*|$4| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$6| + N; s||$4| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + echo 'Configured Bandwidth credentials' + else + if [[ "$PROVISION_PROVIDER" == "NX" || "$PROVISION_PROVIDER" == "nx" ]]; then + echo "Nexmo PROVISION_PROVIDER" + sed -i "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.nexmo.NexmoPhoneNumberProvisioningManager\"|" $FILE + + if [[ -z "$8" ]]; then + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + else + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + fi + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N + N; s|.*|$7| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N + N; s||$7| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"true"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"true"<\/outboudproxy-user-at-from-header>|" $FILE + + else + if [[ "$PROVISION_PROVIDER" == "VB" || "$PROVISION_PROVIDER" == "vb" ]]; then + echo "Voxbone PROVISION_PROVIDER" + sed -i "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.voxbone.VoxbonePhoneNumberProvisioningManager\"|" $FILE + + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + }" $FILE + sed -i "// { + N; s||$1| + N; s||$2| + }" $FILE + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + + fi + fi + fi + fi +} + +## Description: Configures Fax Service Credentials +## Parameters : 1.Username +## 2.Password +configFaxService() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + }" $FILE + + echo 'Configured Fax Service credentials' +} + +## Description: Configures Sms Aggregator +## Parameters : 1.Outbound endpoint IP +## +configSmsAggregator() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$2| + N; s|.*|$1| + }" $FILE + + sed -i "// { + N; s||$2| + N; s||$1| + }" $FILE + echo "Configured Sms Aggregator using OUTBOUND PROXY $1" +} + +## Description: Configures Speech Recognizer +## Parameters : 1.iSpeech Key +configSpeechRecognizer() { + if [ -n "$ISPEECH_KEY" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s||$1| + }" $FILE + + sed -i "// { + N; s||$1| + }" $FILE + + echo 'Configured the Speech Recognizer' + fi +} + +## Description: Configures available speech synthesizers +## Parameters : none +configSpeechSynthesizers() { + if [[ "$TTSSYSTEM" == "voicerss" ]]; then + configVoiceRSS $VOICERSS_KEY + + elif [[ "$TTSSYSTEM" == "awspolly" ]]; then + configAWSPolly $AWS_ACCESS_KEY $AWS_SECRET_KEY $AWS_REGION + + else + configAcapela $ACAPELA_APPLICATION $ACAPELA_LOGIN $ACAPELA_PASSWORD + fi +} + +## Description: Configures Acapela Speech Synthesizer +## Parameters : 1.Application Code +## 2.Login +## 3.Password +configAcapela() { + if [[ -z $ACAPELA_APPLICATION || -z $ACAPELA_LOGIN || -z $ACAPELA_PASSWORD ]]; then + echo '!Please make sure that all necessary settings for acapela are set!' + else + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "// { + N + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured Acapela Speech Synthesizer' + fi +} + + +## Description: Configures VoiceRSS Speech Synthesizer +## Parameters : 1.API key +configVoiceRSS() { + if [ -n "$VOICERSS_KEY" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "/http:\/\/api.voicerss.org<\/service-root>/ { + N; s|.*|$1| + }" $FILE + + sed -i "/http:\/\/api.voicerss.org<\/service-root>/ { + N; s||$1| + }" $FILE + + echo 'Configured VoiceRSS Speech Synthesizer' + + else + echo 'Please set KEY for VoiceRSS TTS' + fi +} + +## Description: Configures AWS Polly Speech Synthesizer +## Parameters : 1.AWS Access Key +## 2.AWS Secret key +## 3.AWS Region +configAWSPolly() { + if [[ -z $AWS_ACCESS_KEY || -z $AWS_SECRET_KEY || -z $AWS_REGION ]]; then + echo '!Please make sure that all necessary settings for AWS Polly are set!' + else + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "// { + N + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured AWS Polly Speech Synthesizer' + fi +} + +## Description: Updates RestComm DARS properties for RestComm +## Parameters : none +configDARSProperties() { + FILE=$RESTCOMM_DARS/mobicents-dar.properties + sed -e 's|^ALL=.*|ALL=("RestComm", "DAR\:From", "NEUTRAL", "", "NO_ROUTE", "0")|' $FILE > $FILE.bak + mv $FILE.bak $FILE + echo "Updated mobicents-dar properties" +} + +## Description: Configures TeleStax Proxy +## Parameters : 1.Enabled +## 2.login +## 3.password +## 4.Endpoint +## 5.Proxy IP +configTelestaxProxy() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + enabled="$1" + if [ "$enabled" == "true" ] || [ "$enabled" == "TRUE" ]; then + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + N; s|.*|$4| + N; s|.*|$6| + N; s|.*|http:\/\/$5:2080| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + N; s||$4| + N; s||$6| + N; s||http:\/\/$5:2080| + }" $FILE + + echo 'Enabled TeleStax Proxy' + else + sed -i "// { + N; s|.*|false| + N; s|.*|| + N; s|.*|| + N; s|.*|| + N; s|.*|| + N; s|.*|http:\/\/127.0.0.1:2080| + }" $FILE + + sed -i "// { + N; s||false| + N; s||| + N; s||| + N; s||| + N; s||| + N; s||http:\/\/127.0.0.1:2080| + }" $FILE + + echo 'Disabled TeleStax Proxy' + fi +} + + +## Description: Configures Media Server Manager +## Parameters : 1.Enabled +## 2.private IP +## 3.public IP + +configMediaServerManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + bind_address="$1" + ms_address="$2" + ms_external_address="$3" + + #Check for Por Offset + local LOCALMGCP=$((LOCALMGCP + PORT_OFFSET)) + local REMOTEMGCP=$((REMOTEMGCP + PORT_OFFSET)) + + sed -e "s/.*<\/local-address>/$bind_address<\/local-address>/g;s//$bind_address<\/local-address>/g" \ + -e "s/.*<\/local-port>/$LOCALMGCP<\/local-port>/g;s//$LOCALMGCP<\/local-port>/g" \ + -e "s/.*<\/remote-address>/$ms_address<\/remote-address>/g;s//$ms_address<\/remote-address>/g" \ + -e "s/.*<\/remote-port>/$REMOTEMGCP<\/remote-port>/g;s//$REMOTEMGCP<\/remote-port>/g" \ + -e "s/.*<\/response-timeout>/$MGCP_RESPONSE_TIMEOUT<\/response-timeout>/g;s//$MGCP_RESPONSE_TIMEOUT<\/response-timeout>/g" \ + -e "s/<\!--.*.*<\/external-address>.*-->/$ms_external_address<\/external-address>/g;" \ + -e "s/.*<\/external-address>/$ms_external_address<\/external-address>/g;s//$ms_external_address<\/external-address>/g" $FILE > $FILE.bak + + mv $FILE.bak $FILE + echo 'Configured Media Server Manager' +} + +## Description: Configures SMPP Account Details +## Parameters : 1.activate +## 2.systemID +## 3.password +## 4.systemType +## 5.peerIP +## 6.peerPort +## 7.sourceMap +## 8.destinationMap + +configSMPPAccount() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + activate="$1" + systemID="$2" + password="$3" + systemType="$4" + peerIP="$5" + peerPort="$6" + sourceMap="$7" + destinationMap="$8" + + + sed -i "s|||g" $FILE + #Add sourceMap && destinationMap + + + if [ "$activate" == "true" ] || [ "$activate" == "TRUE" ]; then + sed -i "/.*|$systemID| + N; s|.*|$peerIP| + N; s|.*|$peerPort| + N + N + N; s|.*|$password| + N; s|.*|$systemType| + }" $FILE + + sed -i "/$systemID| + N; s||$peerIP| + N; s||$peerPort| + N + N + N; s||$password| + N; s||$systemType| + }" $FILE + + sed -i "s|||" $FILE + echo 'Configured SMPP Account Details' + + else + sed -i "/.*|| + N; s|.*|| + N; s|.*|| + N + N + N; s|.*|| + N; s|.*|| + }" $FILE + + sed -i "/|| + N; s||| + N; s||| + N + N + N; s||| + N; s||| + }" $FILE + + sed -i "s|||" $FILE + echo 'Configured SMPP Account Details' + fi +} + +## Description: Configures RestComm "prompts & cache" URIs +#Mostly used for external MS. +configRestCommURIs() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + #check for port offset + local HTTP_PORT=$((HTTP_PORT + PORT_OFFSET)) + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + if [ -n "$MS_ADDRESS" ] && [ "$MS_ADDRESS" != "$BIND_ADDRESS" ]; then + if [ "$DISABLE_HTTP" = "true" ]; then + PORT="$HTTPS_PORT" + SCHEME='https' + else + PORT="$HTTP_PORT" + SCHEME='http' + fi + + # STATIC_ADDRESS will be populated by user or script before + REMOTE_ADDRESS="${SCHEME}://${PUBLIC_IP}:${PORT}" + + sed -i "s|.*|$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE + sed -i "s|.*/cache-uri>|$REMOTE_ADDRESS/restcomm/cache|" $FILE + sed -i "s|.*|$REMOTE_ADDRESS/restcomm/errors|" $FILE + + sed -i "s||$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE + sed -i "s||$REMOTE_ADDRESS/restcomm/cache|" $FILE + sed -i "s||$REMOTE_ADDRESS/restcomm/errors|" $FILE + + echo "Updated prompts-uri cache-uri error-dictionary-uri External MSaddress for " + fi + echo 'Configured RestCommURIs' +} + +## Description: Specify the path where Recordings are saved. +updateRecordingsPath() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [ -n "$RECORDINGS_PATH" ]; then + sed -i "s|.*|file://${RECORDINGS_PATH}<\/recordings-path>|" $FILE + sed -i "s||file://${RECORDINGS_PATH}<\/recordings-path>|" $FILE + echo "Updated RECORDINGS_PATH " + + else + sed -i "s|.*|file://\${restcomm:home}/recordings<\/recordings-path>|" $FILE + sed -i "s||file://\${restcomm:home}/recordings<\/recordings-path>|" $FILE + fi + echo 'Configured Recordings path' +} + +## Description: Specify HTTP/S ports used. +#Needed when port offset is set. +configHypertextPort(){ + MSSFILE=$RESTCOMM_CONF/mss-sip-stack.properties + + #Check for Por Offset + local HTTP_PORT=$((HTTP_PORT + PORT_OFFSET)) + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + sed -e "s|org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=.*|org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=$HTTP_PORT|" \ + -e "s|org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=.*|org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=$HTTPS_PORT|" $MSSFILE > $MSSFILE.bak + mv $MSSFILE.bak $MSSFILE + echo "Configured HTTP ports" +} + +## Description: Other single configuration +#enable/disable SSLSNI (default:false) +otherRestCommConf(){ + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -e "s/.*<\/play-music-for-conference>/${PLAY_WAIT_MUSIC}<\/play-music-for-conference>/g;s//${PLAY_WAIT_MUSIC}<\/play-music-for-conference>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + + #Remove if is set in earlier run. + grep -q 'allowLegacyHelloMessages' $RESTCOMM_BIN/standalone.conf && sed -i -E "s/(.*)( -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=)(true|false)(.*)/\1\4/" $RESTCOMM_BIN/standalone.conf + + if [[ "$SSLSNI" == "false" || "$SSLSNI" == "FALSE" ]]; then + sed -i "s|-Djava.awt.headless=true|& -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=false|" $RESTCOMM_BIN/standalone.conf + else + sed -i "s|-Djava.awt.headless=true|& -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=true|" $RESTCOMM_BIN/standalone.conf + fi + + if [ -n "$HSQL_DIR" ]; then + echo "HSQL_DIR $HSQL_DIR" + FILEDB=$HSQL_DIR/restcomm.script + sed -i "s|.*|${HSQL_DIR}|" $FILE + if [ ! -f $FILEDB ]; then + mkdir -p $HSQL_DIR + cp $RESTCOMM_DEPLOY/WEB-INF/data/hsql/* $HSQL_DIR + fi + fi + + if [ -n "$USSDGATEWAYURI" ]; then + echo "USSD GATEWAY configuration" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s|.*|$USSDGATEWAYURI|" $FILE + sed -i "s|.*|$USSDGATEWAYUSER|" $FILE + sed -i "s|.*|$USSDGATEWAYPASSWORD|" $FILE + + sed -i "s||$USSDGATEWAYURI|" $FILE + sed -i "s||$USSDGATEWAYUSER|" $FILE + sed -i "s||$USSDGATEWAYPASSWORD|" $FILE + fi + + echo "HTTP_RESPONSE_TIMEOUT $HTTP_RESPONSE_TIMEOUT" + sed -i"." "// { + N + N; + N; + N; + N; s|.*|$HTTP_RESPONSE_TIMEOUT| + }" $FILE + + sed -i"." "// { + N + N; + N; + N; + N; s||$HTTP_RESPONSE_TIMEOUT| + }" $FILE + + echo "CACHE_NO_WAV $CACHE_NO_WAV" + sed -i "s|.*|${CACHE_NO_WAV}|" $FILE + + echo "End Rest RestComm configuration" +} + +disableRVD() { + if [[ -f "$RVD_DEPLOY_PATH.deployed" || -f "$RVD_DEPLOY_PATH.dodeploy" ]]; then + rm -f "$RVD_DEPLOY_PATH.deployed" + rm -f "$RVD_DEPLOY_PATH.dodeploy" + echo "RVD undeployed (or not deployed at all)" + else + echo "RVD not deployed" + fi +} + +enableRVD() { + if [ -f "$RVD_DEPLOY_PATH.deployed" ]; then + echo "RVD already deployed" + else + touch "$RVD_DEPLOY_PATH".dodeploy + echo "RVD deployed" + fi +} + +confRVD(){ + if [[ "$RVD_UNDEPLOY" = true || "$RVD_UNDEPLOY" = True || "$RVD_UNDEPLOY" = TRUE ]]; then + disableRVD + else + enableRVD + echo "Configuring bundled RVD" + if [ -n "$RVD_LOCATION" ]; then + echo "RVD_LOCATION $RVD_LOCATION" + mkdir -p `echo $RVD_LOCATION` + sed -i "s|.*|${RVD_LOCATION}|" $RVD_DEPLOY_PATH/WEB-INF/rvd.xml + + COPYFLAG=$RVD_LOCATION/.demos_initialized + if [ -f "$COPYFLAG" ]; then + #Do nothing, we already copied the demo file to the new workspace + echo "RVD demo application are already copied" + else + echo "Will copy RVD demo applications to the new workspace $RVD_LOCATION" + cp -ar $RVD_DEPLOY_PATH/workspace/* $RVD_LOCATION + touch $COPYFLAG + fi + + fi + fi +} + +## Adds/removes / element based on $RVD_URL +## This version of confRcmlserver() will used xmlstarlet and will probably sed commands that rely on empty elements like instead of +#confRcmlserver(){ +# echo "Configuring ..." +# local RESTCOMM_XML=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml +# if [ -z "$RVD_URL" ]; then +# # remove / element altogether +# xmlstarlet ed -P -d "/restcomm/rcmlserver/base-url" "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" +# mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" +# else +# # remove existing element +# xmlstarlet ed -P -d /restcomm/rcmlserver/base-url "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" +# mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" +# # add it anew +# xmlstarlet ed -P -s /restcomm/rcmlserver -t elem -n base-url -v "$RVD_URL" "${RESTCOMM_XML}" > "${RESTCOMM_XML}.bak" +# mv "${RESTCOMM_XML}.bak" "$RESTCOMM_XML" +# fi +# echo " configured" +#} + +# Updates / according to $RVD_URL +# This version of confRcmlserver() used sed for backwards compatibility with existing sed commands in this +confRcmlserver() { + local RESTCOMM_XML=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed "//,/<\/rcmlserver>/ s|.*|${RVD_URL}|" "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" + mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" + echo "Configured . base-url set to '$RVD_URL'" +} + + +#Auto Configure RMS Networking, if MANUAL_SETUP=false. +configRMSNetworking() { + if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + sed -i "s|BIND_ADDRESS=.*|BIND_ADDRESS=${BIND_ADDRESS}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|MGCP_ADDRESS=.*|MGCP_ADDRESS=${BIND_ADDRESS}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|NETWORK=.*|NETWORK=${BIND_NETWORK}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SUBNET=.*|SUBNET=${BIND_SUBNET_MASK}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + fi +} + +configAsrDriver() { + if [ ! -z "$MG_ASR_DRIVERS" ] && [ ! -z "$MG_ASR_DRIVER_DEFAULT" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/mg-asr-drivers" \ + -s "/restcomm/runtime-settings" -t elem -n mg-asr-drivers \ + -i "/restcomm/runtime-settings/mg-asr-drivers" -t attr -n default -v "$MG_ASR_DRIVER_DEFAULT" \ + $FILE + for driverName in ${MG_ASR_DRIVERS//,/ }; do + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/mg-asr-drivers" -t elem -n "driver" -v "$driverName" \ + $FILE + done + fi +} + +## Description: DNS Provisioning Manager Configuration. +configDnsProvisioningManager() { + echo "Configure DnsProvisioningManager" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n class -v "$DNS_PROVISIONING_CLASS" \ + $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n enabled -v "$DNS_PROVISIONING_ENABLED" \ + $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n class -v "$DNS_PROVISIONING_CLASS" \ + $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning" -t attr -n "enabled" -v "$DNS_PROVISIONING_ENABLED" $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning/aws-route53" \ + -s "/restcomm/runtime-settings/dns-provisioning" -t elem -n aws-route53 $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "restcomm-a-record-value" -v "$DNS_PROVISIONING_AWS_ROUTE53_A_VALUE" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "restcomm-srv-record-value" -v "$DNS_PROVISIONING_AWS_ROUTE53_SRV_VALUE" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "access-key" -v "$DNS_PROVISIONING_AWS_ROUTE53_ACCESS_KEY" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "secret-key" -v "$DNS_PROVISIONING_AWS_ROUTE53_SECRET_KEY" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "region" -v "$DNS_PROVISIONING_AWS_ROUTE53_REGION" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "ttl" -v "$DNS_PROVISIONING_AWS_ROUTE53_TTL" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "hosted-zone-id" -v "$DNS_PROVISIONING_AWS_ROUTE53_HOSTED_ZONE_ID" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "is-alias" -v "$DNS_PROVISIONING_AWS_ROUTE53_IS_ALIAS" $FILE + + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" \ + -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n alias-target $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" -t elem -n "evaluate-target-health" -v "$DNS_PROVISIONING_AWS_ROUTE53_ALIAS_EVALUATE_TARGET_HEALTH" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" -t elem -n "hosted-zone-id" -v "$DNS_PROVISIONING_AWS_ROUTE53_ALIAS_HOSTED_ZONE_ID" $FILE + +} + +configConferenceTimeout(){ + echo "Configure conference timeout $CONFERENCE_TIMEOUT" + xmlstarlet ed --inplace -u "/restcomm/runtime-settings/conference-timeout" -v "$CONFERENCE_TIMEOUT" $FILE +} + +configSdrService(){ + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/sdr-service" $FILE + if [ -n "$SDR_SERVICE_CLASS" ]; then + echo "Configure Sdr service" + xmlstarlet ed --inplace -s "/restcomm/runtime-settings" -t elem -n sdr-service \ + -i "/restcomm/runtime-settings/sdr-service" -t attr -n class -v "$SDR_SERVICE_CLASS" \ + $FILE + if [ -n "$SDR_SERVICE_HTTP_URI" ]; then + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/sdr-service" -t elem -n http-uri -v "$SDR_SERVICE_HTTP_URI" $FILE + fi + if [ -n "$SDR_SERVICE_AMQP_URI" ]; then + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/sdr-service" -t elem -n amqp-uri -v "$SDR_SERVICE_AMQP_URI" $FILE + fi + fi +} + +# MAIN +echo 'Configuring RestComm...' +configRCJavaOpts +configDARSProperties +configRestcomm "$PUBLIC_IP" +#configVoipInnovations "$VI_LOGIN" "$VI_PASSWORD" "$VI_ENDPOINT" + +if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + HOSTFORDID=$LBHOST +else + HOSTFORDID=$PUBLIC_IP + + #Check for port offset. + DID_URIPORT=$((DID_URIPORT + PORT_OFFSET)) +fi + +if [ -z "$MS_ADDRESS" ]; then + MS_ADDRESS=$BIND_ADDRESS +fi + +configDidProvisionManager "$DID_LOGIN" "$DID_PASSWORD" "$DID_ENDPOINT" "$DID_SITEID" "$HOSTFORDID" "$DID_ACCOUNTID" "$SMPP_SYSTEM_TYPE" "$DID_URIPORT" +configFaxService "$INTERFAX_USER" "$INTERFAX_PASSWORD" +configSmsAggregator "$SMS_OUTBOUND_PROXY" "$SMS_PREFIX" +configSpeechRecognizer "$ISPEECH_KEY" +configSpeechSynthesizers +configTelestaxProxy "$ACTIVE_PROXY" "$TP_LOGIN" "$TP_PASSWORD" "$INSTANCE_ID" "$PROXY_IP" "$SITE_ID" +configMediaServerManager "$BIND_ADDRESS" "$MS_ADDRESS" "$MEDIASERVER_EXTERNAL_ADDRESS" +configSMPPAccount "$SMPP_ACTIVATE" "$SMPP_SYSTEM_ID" "$SMPP_PASSWORD" "$SMPP_SYSTEM_TYPE" "$SMPP_PEER_IP" "$SMPP_PEER_PORT" "$SMPP_SOURCE_MAP" "$SMPP_DEST_MAP" +configRestCommURIs +updateRecordingsPath +configHypertextPort +configOutboundProxy +configPushNotificationServer +otherRestCommConf +confRcmlserver +confRVD +configRMSNetworking +configAsrDriver +configDnsProvisioningManager +configConferenceTimeout +configSdrService +echo 'Configured RestComm!' diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh new file mode 100755 index 0000000000..5aed5b9025 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh @@ -0,0 +1,190 @@ +#!/bin/bash +## +## Logging configuration for RVD +## +## standalone-sip.xml is updated with RVD handler and loggers configuration. By default, if the respective +## configuration is missing it is added. Otherwise nothing happens. If the logging LEVEL is specified in the +## command line loggers are updated/created accordingly. +## +## usage: +## +## ./config-rvd-logging.sh - adds handler and logger (INFO) elements if missing +## ./config-rvd-logging.sh DEBUG - creates or updates loggers by setting level to DEBUG +## ./config-rvd-logging.sh DEBUG FILE - creates or updates loggers (DEBUG) but also configures them to use the 'FILE' periodic handler (main restcomm log) +## +## environment: +## +## requires RESTCOMM_HOME env variable to be set +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +# Default values +STANDALONE_SIP=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +LOG_FILE="rvd/rvd.log"; # this is relative to "jboss.server.log.dir" +RVD_LOG_LEVEL=INFO # logging level that will be used if handlers/loggers are missing +LOGGING_HANDLER=RVD # the handler to be used for RVD logging. Set this to 'FILE' to redirect all messages to the main restcomm log (server.log) + +# Variables +XML_UPDATED=false # flag to format xml file only if updated +OVERRIDE=false + +error(){ + echo "error parsing standalone-sip.xml" + exit 1 +} + +createHandler(){ + + # create the RVD handler if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:periodic-rotating-file-handler[@name='RVD']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 ]; then + echo "adding RVD handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:periodic-rotating-file-handler[@name='RVD']" -s "//logns:subsystem" -t elem -n periodic-rotating-file-handler_TMP -v "" \ + -i //periodic-rotating-file-handler_TMP -t attr -n name -v RVD \ + -i //periodic-rotating-file-handler_TMP -t attr -n autoflush -v true \ + -s //periodic-rotating-file-handler_TMP -t elem -n formatter_TMP -v "" \ + -s //formatter_TMP -t elem -n pattern-formatter_TMP -v "" \ + -i //pattern-formatter_TMP -t attr -n pattern -v "%d{MMdd HH:mm:ss,SSS X} %p (%t) %m %n" \ + -s //periodic-rotating-file-handler_TMP -t elem -n file_TMP -v "" \ + -i //file_TMP -t attr -n relative-to -v "jboss.server.log.dir" \ + -i //file_TMP -t attr -n path -v "rvd/rvd.log" \ + -s //periodic-rotating-file-handler_TMP -t elem -n suffix_TMP -v "" \ + -s //suffix_TMP -t attr -n value -v ".yyyy-MM-dd" \ + -s //periodic-rotating-file-handler_TMP -t elem -n append_TMP -v "" \ + -s //append_TMP -t attr -n value -v true \ + -r //periodic-rotating-file-handler_TMP -v periodic-rotating-file-handler \ + -r //formatter_TMP -v formatter \ + -r //pattern-formatter_TMP -v pattern-formatter \ + -r //file_TMP -v file \ + -r //suffix_TMP -v suffix \ + -r //append_TMP -v append \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi + +} + +createLoggers(){ + + # create RVD local logger if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:logger[@category='org.restcomm.connect.rvd.LOCAL']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 -o \( "$result" = 0 -a "$OVERRIDE" = true \) ]; then + echo "adding RVD local logger - $RVD_LOG_LEVEL/$LOGGING_HANDLER handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:logger[@category='org.restcomm.connect.rvd.LOCAL']" \ + -s "//logns:subsystem" -t elem -n logger_TMP -v "" \ + -i //logger_TMP -t attr -n category -v "org.restcomm.connect.rvd.LOCAL" \ + -s //logger_TMP -t elem -n level_TMP -v "" \ + -i //level_TMP -t attr -n name -v "$RVD_LOG_LEVEL" \ + -s //logger_TMP -t elem -n handlers_TMP -v "" \ + -s //handlers_TMP -t elem -n handler_TMP -v "" \ + -s //handler_TMP -t attr -n name -v "$LOGGING_HANDLER" \ + -r //logger_TMP -v logger \ + -r //level_TMP -v level \ + -r //handlers_TMP -v handlers \ + -r //handler_TMP -v handler \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi + + # create RVD global logger if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:logger[@category='org.restcomm.connect.rvd.GLOBAL']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 -o \( "$result" = 0 -a "$OVERRIDE" = true \) ]; then + echo "adding RVD global logger - $RVD_LOG_LEVEL/$LOGGING_HANDLER handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:logger[@category='org.restcomm.connect.rvd.GLOBAL']" \ + -s "//logns:subsystem" -t elem -n logger_TMP -v "" \ + -i //logger_TMP -t attr -n category -v "org.restcomm.connect.rvd.GLOBAL" \ + -s //logger_TMP -t elem -n level_TMP -v "" \ + -i //level_TMP -t attr -n name -v "$RVD_LOG_LEVEL" \ + -s //logger_TMP -t elem -n handlers_TMP -v "" \ + -s //handlers_TMP -t elem -n handler_TMP -v "" \ + -s //handler_TMP -t attr -n name -v "$LOGGING_HANDLER" \ + -r //logger_TMP -v logger \ + -r //level_TMP -v level \ + -r //handlers_TMP -v handlers \ + -r //handler_TMP -v handler \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi +} + +formatXml(){ + tmpfile=$(mktemp -t rvdconfigXXX) + xmlstarlet fo "$STANDALONE_SIP" > "$tmpfile" + mv "$tmpfile" "$STANDALONE_SIP" +} + +# MAIN + +if [ -z "$RESTCOMM_HOME" ] +then + echo "RESTCOMM_HOME env variable not set" + exit 1 +fi + +echo "Configuring RVD logging" + +# if no (level) argument is given, create default loggers only if they are missing +if [ -z $1 ] +then + # OVERRIDE is false + createHandler + createLoggers +else + case "$1" in + FATAL|ERROR|WARN|INFO|DEBUG|TRACE|ALL|OFF) + # specify logging handler to be used - RVD|FILE) + if [ -z "$2" ] + then + LOGGING_HANDLER=RVD + else + case "$2" in + RVD|FILE) + LOGGING_HANDLER=$2 + ;; + *) + echo "invalid arguments: handler should be one of RVD|FILE" + exit 1 + ;; + esac + fi + RVD_LOG_LEVEL=$1 + OVERRIDE=true + createHandler + createLoggers + ;; + *) + echo "invalid arguments: level should be one of FATAL|ERROR|WARN|INFO|DEBUG|TRACE|ALL|OFF" + exit 1 + ;; + esac + +fi + +# format output if any update happened +if [ "$XML_UPDATED" = true ] +then + formatXml + echo "$STANDALONE_SIP updated" +fi + diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh new file mode 100755 index 0000000000..2497dc9a13 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh @@ -0,0 +1,92 @@ +#!/bin/bash +## +## Configures rvd.xml based on global configuration options in restcomm.conf and advanced.conf. +## +## usage: +## +## ./config-rvd-logging.sh - adds handler and logger (INFO) elements if missing +## ./config-rvd-logging.sh DEBUG - creates or updates loggers by setting level to DEBUG +## ./config-rvd-logging.sh DEBUG FILE - creates or updates loggers (DEBUG) but also configures them to use the 'FILE' periodic handler (main restcomm log) +## +## requirements: +## +## RESTCOMM_HOME env variable to be set +## rvd.xml should be in place (under $RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war) +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +# Variables +RVD_ROOT=$RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war +RVD_XML_FILE=$RVD_ROOT/WEB-INF/rvd.xml + +updateVideoSupport() { + matchesCount=`xmlstarlet sel -t -v "count(/rvd/videoSupport)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/videoSupport" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "videoSupport" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi +} + +updateMaxMediaFileSize() { + matchesCount=`xmlstarlet sel -t -v "count(/rvd/maxMediaFileSize)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/maxMediaFileSize" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "maxMediaFileSize" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi +} + +# $1 is RVD_HTTP_TIMEOUT +updateHttpTimeout() { + if [ -z $1 ]; then + xmlstarlet ed -P -d "/rvd/defaultHttpTimeout" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + echo "disabled defaultHttpTimeout option"; + else + matchesCount=`xmlstarlet sel -t -v "count(/rvd/defaultHttpTimeout)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/defaultHttpTimeout" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "defaultHttpTimeout" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi + echo "set defaultHttpTimeout to $1" + fi +} + +# MAIN + +if [[ "$RVD_UNDEPLOY" = true || "$RVD_UNDEPLOY" = TRUE || "$RVD_UNDEPLOY" = True ]]; then + echo "Skipping RVD configuration since it's not deployed" +else + if [ -z "$RESTCOMM_HOME" ] + then + echo "RESTCOMM_HOME env variable not set. Aborting." + exit 1 + fi + if [ ! -f "$RVD_XML_FILE" ] + then + echo "rvd.xml not found. Aborting." + return + fi + + echo "Configuring RVD" + + if [[ "$RVD_VIDEO_SUPPORT" = true || "$RVD_VIDEO_SUPPORT" = TRUE || "$RVD_VIDEO_SUPPORT" = True ]] ; then + updateVideoSupport true + else + updateVideoSupport false + fi + updateMaxMediaFileSize "$RVD_MAX_MEDIA_FILE_SIZE" + + updateHttpTimeout "$RVD_HTTP_TIMEOUT" + + + echo "Updated rvd.xml" +fi \ No newline at end of file diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh new file mode 100755 index 0000000000..b0e86b523e --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh @@ -0,0 +1,160 @@ +#!/bin/bash +## Description: Configures SIP connectors +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## Author : Pavel Slegr (pavel.slegr@telestax.com) + +## Description: Configures the connectors for RestComm & configures Proxy if enabled +## Parameters : 1.Public IP +configConnectors() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + static_address="$1" + + #delete additional connectors if any added to erlier run of the script. + if grep -q "" $FILE + then + echo "Additional Connectors Created earlier, going to delete the connectors" + sed '//,//d' $FILE > $FILE.bak + mv $FILE.bak $FILE + else + echo "Additional Connectors not Created earlier" + fi + + #IF LB activated. (Algorithm "use-load-balancer" used). + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + if [ -z "$LB_INTERNAL_IP" ]; then + LB_INTERNAL_IP=$LB_PUBLIC_IP + fi + sed -e "s|path-name=\"org.mobicents.ext\" \(app-dispatcher-class=.*\)|path-name=\"org.mobicents.ha.balancing.only\" \1|" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + + else + + #Check for Por Offset + local SIP_PORT_UDP=$((SIP_PORT_UDP + PORT_OFFSET)) + local SIP_PORT_TCP=$((SIP_PORT_TCP + PORT_OFFSET)) + local SIP_PORT_TLS=$((SIP_PORT_TLS + PORT_OFFSET)) + local SIP_PORT_WS=$((SIP_PORT_WS + PORT_OFFSET)) + local SIP_PORT_WSS=$((SIP_PORT_WSS + PORT_OFFSET)) + + sed -e "s|path-name=\".*\" \(app-dispatcher-class=.*\)|path-name=\"org.mobicents.ext\" \1|" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + fi + mv $FILE.bak $FILE + echo 'Configured SIP Connectors and Bindings' + + + #Enable SipServlet statistics + grep -q 'gather-statistics' $FILE || sed -i "s|congestion-control-interval=\".*\"|& gather-statistics=\"true\"|" $FILE + echo "Configured gather-statistics" +} + +#Socket Binding configuration for standalone-sip.xml +configSocketbinding() { +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + #delete additional bindings if any added to erlier run of the script. + if grep -q "" $FILE + then + echo "Additional Bindings Created earlier, going to delete the old bindings" + sed '//,//d' $FILE > $FILE.bak + mv $FILE.bak $FILE + else + echo "Additional Bindings not Created earlier" + fi + + #check for port offset + sed -i "s|\port-offset=\".*\"|port-offset=\"${PORT_OFFSET}\"|" $FILE + + sed -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setMoreConnectors(){ +flag1=false +flag2=false + for i in $( set -o posix ; set | grep ^ADDITIONAL_CONNECTOR_ | sort -rn ); do + connector=$(echo ${i} | cut -d = -f2 | cut -d _ -f2 | cut -d : -f1) + port=$(echo ${i} | cut -d = -f2 | cut -d _ -f2 | cut -d : -f2) + if [ "$flag1" = false ] ; then + setInitialSign + flag1=true + fi + addConector $connector $port + addSocketBinding $connector $port + echo "Configuring log level for: $connector -> $port" + flag2=true + done + + if [ "$flag2" = true ] ; then + setFinalSign + fi +} + +addConector(){ +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +connector=$1 +port=$2 + + #check for port offset at the new connectors. + local port=$((port + PORT_OFFSET)) + grep -q "connector name=\"${connector}\"" $FILE || sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + + mv $FILE.bak $FILE + echo 'Configured additional SIP Connectors and Bindings' +} + +addSocketBinding(){ +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +connector=$1 +port=$2 + + grep -q "socket-binding name=\"${connector}\"" $FILE || sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setInitialSign(){ + sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + mv $FILE.bak $FILE + + sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setFinalSign(){ + sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + + mv $FILE.bak $FILE + sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +#MAIN +echo 'Configuring Application Server...' +configSocketbinding +configConnectors "$PUBLIC_IP" +if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + echo "can not set additional connectors under LB." +else + setMoreConnectors +fi +echo 'Finished configuring Application Server!' diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh new file mode 100755 index 0000000000..5816553435 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh @@ -0,0 +1,155 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Henrique Rosa (henrique.rosa@telestax.com) +## Author: Pavel Slegr (pavel.slegr@telestax.com) +## Authos: Lefteris Banos (eleftherios.banos@telestax.com) + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + +configS3Bucket() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [[ "$ACTIVATE_S3_BUCKET" == "true" || "$ACTIVATE_S3_BUCKET" == "TRUE" ]]; then + echo "S3_BUCKET_NAME $S3_BUCKET_NAME S3_ACCESS_KEY $S3_ACCESS_KEY S3_SECURITY_KEY $S3_SECURITY_KEY" + sed -e "// { + N; s|.*|true| + N; s|.*|${S3_BUCKET_NAME}| + N; s|.*|${S3_FOLDER_NAME}| + N; s|.*|${S3_ACCESS_KEY}| + N; s|.*|${S3_SECURITY_KEY}| + }" $FILE > $FILE.bak; + mv $FILE.bak $FILE + + if [ -n "$S3_BUCKET_REGION" ]; then + echo "S3_BUCKET_REGION $S3_BUCKET_REGION" + sed -e "s|.*|${S3_BUCKET_REGION}|" $FILE > $FILE.bak; + mv $FILE.bak $FILE + fi + else + sed -e "// { + N; s|.*|false| + N; s|.*|| + N; s|.*|| + N; s|.*|| + }" $FILE > $FILE.bak; + mv $FILE.bak $FILE + fi +} + +initUserPassword(){ + SQL_FILE=$RESTCOMM_DEPLOY/WEB-INF/data/hsql/restcomm.script + if [ -n "$INITIAL_ADMIN_USER" ]; then + # change admin user + if grep -q "uninitialized" $SQL_FILE; then + echo "Update Admin user" + sed -i "s/administrator@company.com/${INITIAL_ADMIN_USER}/g" $SQL_FILE + else + echo "Adminitrator User Already changed" + fi + fi + + if [ -n "$INITIAL_ADMIN_PASSWORD" ]; then + # change admin password + if grep -q "uninitialized" $SQL_FILE; then + PASSWORD_ENCRYPTED=`echo -n "${INITIAL_ADMIN_PASSWORD}" | md5sum |cut -d " " -f1` + #echo "Update password to ${INITIAL_ADMIN_PASSWORD}($PASSWORD_ENCRYPTED)" + sed -i "s/uninitialized/active/g" $SQL_FILE + sed -i "s/77f8c12cc7b8f8423e5c38b035249166/$PASSWORD_ENCRYPTED/g" $SQL_FILE + sed -i "s/2012-04-24 00:00:00.000000000/`echo "$(date +'%Y-%m-%d %H:%M:%S.%N')"`/" $SQL_FILE + sed -i "s/2012-04-24 00:00:00.000000000/`echo "$(date +'%Y-%m-%d %H:%M:%S.%N')"`/" $SQL_FILE + else + echo "Adminitrator Password Already changed" + fi + fi +} + +configSMTP(){ + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + if [[ -z $SMTP_USER || -z $SMTP_PASSWORD || -z $SMTP_HOST ]]; then + echo 'one or more variables are undefined' + echo 'Not possible to continue with SMTP configuration' + + else + echo "SMTP_USER $SMTP_USER SMTP_PASSWORD $SMTP_PASSWORD SMTP_HOST $SMTP_HOST" + sed -i "// { + N; s|.*|${SMTP_HOST}| + N; s|.*|${SMTP_USER}| + N; s|.*|${SMTP_PASSWORD}| + N; s|.*|${SMTP_PORT}| + }" $FILE + + sed -i "// { + N; s|.*|${SMTP_HOST}| + N; s|.*|${SMTP_USER}| + N; s|.*|${SMTP_PASSWORD}| + N; s|.*|${SMTP_PORT}| + }" $FILE + fi +} + +configMonitoring(){ + if [ -z ${GRAYLOG_SERVER} ]; then + echo "Graylog Monitoring is not configured"; + crontab -l 2>/dev/null > mycron + crontab -l | grep -q 'HDmonitor' && sed -i '/HDmonitor/d' mycron + crontab -l | grep -q 'RMSJVMonitor' && sed -i '/RMSJVMonitor/d' mycron + crontab -l | grep -q 'RCJVMonitor' && sed -i '/RCJVMonitor/d' mycron + crontab -l | grep -q 'SERVERAMonitor' && sed -i '/SERVERAMonitor/d' mycron + #install new cron file + crontab mycron + rm mycron + + else + echo "GRAYLOG_SERVER is: $GRAYLOG_SERVER"; + + #write out current crontab RMSJVMonitor + crontab -l 2>/dev/null > mycron + + #echo new cron into cron file + crontab -l | grep -q 'MAILTO=""' && echo 'entry exists' || echo "MAILTO=\"\"" >> mycron + if [[ "$HD_MONITOR" == "false" || "$HD_MONITOR" == "FALSE" ]]; then + sed -i '/HDmonitor/d' mycron + echo "HD_MONITOR: $HD_MONITOR" + else + crontab -l | grep -q 'Graylog_Monitoring.sh HDmonitor' && echo 'entry exists' || echo "*/30 * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh HDmonitor" >> mycron; + fi + + if [[ "$RMSJVM_MONITOR" == "false" || "$RMSJVM_MONITOR" == "FALSE" ]]; then + sed -i '/RMSJVMonitor/d' mycron + echo "RMSJVM_MONITOR: $RMSJVM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh RMSJVMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh RMSJVMonitor" >> mycron; + fi + + if [[ "$RCJVM_MONITOR" == "false" || "$RCJVM_MONITOR" == "FALSE" ]]; then + sed -i '/RCJVMonitor/d' mycron + echo "RCJVM_MONITOR: $RCJVM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh RCJVMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh RCJVMonitor" >> mycron; + fi + + if [[ "$RAM_MONITOR" == "false" || "$RAM_MONITOR" == "FALSE" ]]; then + sed -i '/SERVERAMonitor/d' mycron + echo "RAM_MONITOR: $RAM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh SERVERAMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh SERVERAMonitor" >> mycron; + fi + + #install new cron file + crontab mycron + rm mycron + + #set Server Label + sed -i "s|SERVERLABEL=.*|SERVERLABEL=\"${SERVERLABEL}\"|" $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh; + sed -i "s|GRAYLOG_SERVER=.*|GRAYLOG_SERVER=\"${GRAYLOG_SERVER}\"|" $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh; + fi +} + +# MAIN +configS3Bucket +initUserPassword +configSMTP +configMonitoring diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh new file mode 100755 index 0000000000..9e28525f0e --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +SERVERLABEL="" +GRAYLOG_SERVER="" + +HDmonitor(){ + #Collect HD Data from Host + hdusage=`df -hP $PWD | awk '/[0-9]%/{print $(NF-1)}'` + #Send data to graylog + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"${hdusage}\""} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:5555/gelf -p0 -d ${message} +} + + +RCJVMonitor(){ + #FInd RMS process number + rcprocess=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + #Run JVMTOP + jvmvars=` $BASEDIR/../jvmtop.sh --once | grep ${rcprocess} | sed -e "s/ */ /g" | sed -e "s/%//g" | sed -e "s/m//g" | cut -f3,4,5,6,7,8 -d ' ' ` + #Send data to graylog + IFS=" " read HPCUR HPMAX NHCUR NHMAX CPU GC <<< $jvmvars + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"RC_JVM_STATS\"","\"_HPCUR\"":"${HPCUR}","\"_HPMAX\"":"${HPMAX}","\"_NHCUR\"":"${NHCUR}","\"_NHMAX\"":"${NHMAX}","\"_CPU\"":"${CPU}","\"_GC\"":"${GC}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:7777/gelf -p0 -d ${message} +} + + +RMSJVMonitor(){ + #FInd RMS process number + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + msprocess=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + + #Run JVMTOP + jvmvars=` $BASEDIR/../jvmtop.sh --once | grep ${msprocess} | sed -e "s/ */ /g" | sed -e "s/%//g" | sed -e "s/m//g" | cut -f3,4,5,6,7,8 -d ' ' ` + #Send data to graylog + IFS=" " read HPCUR HPMAX NHCUR NHMAX CPU GC <<< $jvmvars + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"MS_JVM_STATS\"","\"_HPCUR\"":"${HPCUR}","\"_HPMAX\"":"${HPMAX}","\"_NHCUR\"":"${NHCUR}","\"_NHMAX\"":"${NHMAX}","\"_CPU\"":"${CPU}","\"_GC\"":"${GC}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:7777/gelf -p0 -d ${message} +} + +SERVERAMonitor(){ + #Collect RAM from host data + MemTotal=`awk '( $1 == "MemTotal:" ) { print $2/1048576 }' /proc/meminfo` + MemFree=`awk '( $1 == "MemFree:" ) { print $2/1048576 }' /proc/meminfo` + Buffers=`awk '( $1 == "Buffers:" ) { print $2/1048576 }' /proc/meminfo` + Cache=`awk '( $1 == "Cached:" ) { print $2/1048576 }' /proc/meminfo` + SwapTotal=`awk '( $1 == "SwapTotal:" ) { print $2/1048576 }' /proc/meminfo` + SwapFree=`awk '( $1 == "SwapFree:" ) { print $2/1048576 }' /proc/meminfo` + + #Send data to graylog + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"Host_Heap\"","\"_MemTotal\"":"${MemTotal}","\"_MemFree\"":"${MemFree}","\"_Buffers\"":"${Buffers}","\"_Cache\"":"${Cache}","\"_SwapTotal\"":"${SwapTotal}","\"_SwapFree\"":"${SwapFree}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:6666/gelf -p0 -d ${message} +} + +echo $1 +$1 diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh new file mode 100755 index 0000000000..096a496be7 --- /dev/null +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh @@ -0,0 +1,48 @@ +#!/bin/bash +## +## Description : Utility script to find network properties +## Author : Henrique Rosa - henrique.rosa@telestax.com +## + +# VARIABLES +IP_ADDRESS_PATTERN="[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}" +INTERFACE="$1" + +## Description: Gets the private IP of the instance +## Parameters : none +getPrivateIP() { + echo "$INET_DATA" | grep -o "addr:$IP_ADDRESS_PATTERN" | awk -F: '{print $2}' +} + +## Description: Gets the broadcast address of the instance +## Parameters : none +getBroadcastAddress() { + echo "$INET_DATA" | grep "Bcast:$IP_ADDRESS_PATTERN" | awk '{print $3}' | awk -F: '{print $2}' +} + +## Description: Gets the Subnet Mask of the instance +## Parameters : none +getSubnetMask() { + /sbin/ifconfig $INTERFACE | grep "Mask:$IP_ADDRESS_PATTERN" | awk '{print $4}' | awk -F: '{print $2}' +} + +## Description: Gets the Network of the instance +## Parameters : 1.Private IP +## 2.Subnet Mask +getNetwork() { + #debian/ubuntu + NW=`ipcalc -n $1 $2 | grep -i "Network" | awk '{print $2}' | awk -F/ '{print $1}';` + if [[ -z "$NW" ]]; then + #rhel/centos/amazon + NW=`ipcalc -n $1 $2 | grep -i "Network" | awk -F= '{print $2}';` + fi + echo $NW +} + +# MAIN +INET_DATA=$(/sbin/ifconfig $INTERFACE | grep "inet ") + +PRIVATE_IP=$(getPrivateIP) +SUBNET_MASK=$(getSubnetMask) +NETWORK=$(getNetwork $PRIVATE_IP $SUBNET_MASK) +BROADCAST_ADDRESS=$(getBroadcastAddress) From 8399f6a5cab947ffd34ee50e89d6138259fcf104 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 03:32:59 +0200 Subject: [PATCH 11/41] switched to 9.0.0 (cherry picked from commit 7d0f02f) --- pom.xml | 4 ++-- release/pom.xml | 4 ++-- release/restcomm-assembly-wildfly10/pom.xml | 4 ++-- restcomm/pom.xml | 3 +-- restcomm/restcomm.routing/pom.xml | 1 - 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 6a4d84908d..05f9a44a0e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,9 +6,9 @@ 4.0.1 4.0.0 - org.restcomm.connect + org.restcomm restcomm-connect-root - 8.3.0-SNAPSHOT + 9.0.0-SNAPSHOT pom restcomm diff --git a/release/pom.xml b/release/pom.xml index dac7eda750..20beba8365 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - org.restcomm.connect + org.restcomm restcomm-connect-root - 8.3.0-SNAPSHOT + 9.0.0-SNAPSHOT assembly-parent pom diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index aa239794b2..9a1930a639 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - org.restcomm.connect + org.restcomm assembly-parent - 8.3.0-SNAPSHOT + 9.0.0-SNAPSHOT assembly-wildfly10 pom diff --git a/restcomm/pom.xml b/restcomm/pom.xml index 8d4955902e..a62f4db2c7 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -3,11 +3,10 @@ 4.0.0 - org.restcomm.connect + org.restcomm restcomm-connect-root 9.0.0-SNAPSHOT - org.restcomm restcomm-connect 9.0.0-SNAPSHOT diff --git a/restcomm/restcomm.routing/pom.xml b/restcomm/restcomm.routing/pom.xml index 3c05f7fca7..ef27fa48d1 100644 --- a/restcomm/restcomm.routing/pom.xml +++ b/restcomm/restcomm.routing/pom.xml @@ -9,7 +9,6 @@ org.restcomm restcomm-connect.routing - 9.0.0-SNAPSHOT restcomm-connect.routing http://maven.apache.org From 9e79d7b0adedb295ff430b78f593f65f69e392de Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 12:49:09 +0200 Subject: [PATCH 12/41] maven module for AS7 (cherry picked from commit 6785c18) --- release/restcomm-assembly-as7/pom.xml | 107 +++ .../restcomm/autoconfig.d/config-SecureSSL.sh | 205 ++++ .../restcomm/autoconfig.d/config-dashboard.sh | 30 + .../autoconfig.d/config-dialogic-xms.sh | 57 ++ .../restcomm/autoconfig.d/config-jboss-as.sh | 18 + .../autoconfig.d/config-load-balancer.sh | 47 + .../bin/restcomm/autoconfig.d/config-logs.sh | 81 ++ .../bin/restcomm/autoconfig.d/config-mysql.sh | 249 +++++ .../restcomm/autoconfig.d/config-olympus.sh | 46 + .../restcomm/autoconfig.d/config-restcomm.sh | 893 ++++++++++++++++++ .../autoconfig.d/config-rvd-logging.sh | 190 ++++ .../bin/restcomm/autoconfig.d/config-rvd.sh | 92 ++ .../autoconfig.d/config-sip-connectors.sh | 160 ++++ .../restcomm/autoconfig.d/config-utensil.sh | 155 +++ .../bin/restcomm/autoconfigure.sh | 35 + .../bin/restcomm/collect_jmap.sh | 96 ++ .../bin/restcomm/gsed_macos.sh | 6 + .../assembly-resources/bin/restcomm/jvmtop.sh | 24 + .../bin/restcomm/logs_collect.sh | 206 ++++ .../restcomm/monitoring/Graylog_Monitoring.sh | 61 ++ .../bin/restcomm/restart-restcomm.sh | 83 ++ .../bin/restcomm/set-log-level.sh | 114 +++ .../bin/restcomm/start-mediaserver.sh | 19 + .../bin/restcomm/start-restcomm.sh | 165 ++++ .../bin/restcomm/stop-mediaserver.sh | 11 + .../bin/restcomm/stop-restcomm.sh | 26 + .../bin/restcomm/utils/read-network-props.sh | 48 + .../bin/restcomm/verify-dependencies.sh | 56 ++ .../assembly-resources/docs/restcomm/README | 2 + .../dars/mobicents-dar.properties | 2 + .../configuration/mss-sip-stack.properties | 41 + .../deployments/olympus.war.dodeploy | 1 + .../restcomm-management.war.dodeploy | 1 + .../deployments/restcomm-rvd.war.dodeploy | 1 + .../deployments/restcomm.war.dodeploy | 1 + .../src/main/resources/descriptor.xml | 67 ++ 36 files changed, 3396 insertions(+) create mode 100644 release/restcomm-assembly-as7/pom.xml create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh create mode 100755 release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/docs/restcomm/README create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy create mode 100644 release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy create mode 100644 release/restcomm-assembly-as7/src/main/resources/descriptor.xml diff --git a/release/restcomm-assembly-as7/pom.xml b/release/restcomm-assembly-as7/pom.xml new file mode 100644 index 0000000000..1df91fdeca --- /dev/null +++ b/release/restcomm-assembly-as7/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + org.restcomm + assembly-parent + 9.0.0-SNAPSHOT + + org.restcomm + assembly-as7 + pom + + UTF-8 + 3.2.0-89 + + + + org.restcomm + restcomm-connect-rvd + war + + + org.restcomm + restcomm-connect.application + war + + + + org.restcomm + restcomm-connect-management + war + + + + + org.mobicents.webrtc + webrtc-ui + war + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.1 + + + extractSipServlets + prepare-package + + unpack + + + + + org.mobicents.servlet.sip + sip-servlets-as7 + ${sipservletapi.version} + zip + assembly + + + + + + extractMediaserver + prepare-package + + unpack + + + + + org.mobicents.media + media-server-standalone + zip + assembly + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 + + + src/main/resources/descriptor.xml + + Restcomm-JBoss-AS7-${project.version} + false + + + + package + + single + + + + + + + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh new file mode 100755 index 0000000000..e8c2d7ee1d --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh @@ -0,0 +1,205 @@ +#!/usr/bin/env bash + +## +## Description: Configures RestComm +## Author: Lefteris Banos (eleftherios.banos@telestax.com) +## + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DARS=$RESTCOMM_HOME/standalone/configuration/dars +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + +###Functions for SECURESSL=false### +#Disable HTTPS when SECURESSL=false for RC. +NoSslRestConf(){ + FILE=$RESTCOMM_CONF/standalone-sip.xml + sed -e "s//<\!--connector name=\"https\" \1>/" \ + -e "s/<\/connector>/<\/connector-->/" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s/<.*connector name=\"http\".*>/ /" $FILE > $FILE.bak + mv $FILE.bak $FILE + + sed -i "s|SSL_ENABLED=.*|SSL_ENABLED=false|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_KEYSTORE=.*|SSL_KEYSTORE=restcomm.jks|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_PASSWORD=.*|SSL_PASSWORD=changeme|" $RESTCOMM_BIN/restcomm/mediaserver.conf +} + +####funcitions for SECURESSL="SELF" || SECURESSL="AUTH" #### +#HTTPS configuration. +#Usage of certificate. +SslRestCommConf(){ + FILE=$RESTCOMM_CONF/standalone-sip.xml + echo "Will properly configure HTTPS Connector "; + FILERESTCOMMXML=$BASEDIR/standalone/deployments/restcomm.war/WEB-INF/web.xml + FILEMANAGERXML=$BASEDIR/standalone/deployments/restcomm-management.war/WEB-INF/web.xml + FILERVDXML=$BASEDIR/standalone/deployments/restcomm-rvd.war/WEB-INF/web.xml + FILEOLYMPUSXML=$BASEDIR/standalone/deployments/olympus.war/WEB-INF/web.xml + #Disable HTTP if set to true. + if [[ "$DISABLE_HTTP" == "true" || "$DISABLE_HTTP" == "TRUE" ]]; then + echo "DISABLE_HTTP is '$DISABLE_HTTP'. Will disable HTTP Connector" + sed -e "s/<.*connector name=\"http\".*>/<\!--connector name=\"http\" protocol=\"HTTP\/1.1\" scheme=\"http\" socket-binding=\"http\"-->/" $FILE > $FILE.bak + mv $FILE.bak $FILE + + grep -q '' $FILERESTCOMMXML && sed -e "s///" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + grep -qs '' $FILEMANAGERXML && sed -e "s///" $FILEMANAGERXML.bak > $FILEMANAGERXML + grep -q '' $FILERVDXML && sed -e "s///" $FILERVDXML.bak > $FILERVDXML + grep -q '' $FILEOLYMPUSXML && sed -e "s///" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + elif [[ "$DISABLE_HTTP" == "REDIRECT" || "$DISABLE_HTTP" == "redirect" ]]; then + sed -e "s/<.*connector name=\"http\".*>//" $FILE > $FILE.bak + mv $FILE.bak $FILE + if [ ! -d "$BASEDIR/standalone/deployments/restcomm-management.war" ]; then + mkdir $BASEDIR/standalone/deployments/restcomm-management-exploded.war + unzip -q $BASEDIR/standalone/deployments/restcomm-management.war -d $BASEDIR/standalone/deployments/restcomm-management-exploded.war/ + rm -f $BASEDIR/standalone/deployments/restcomm-management.war + mv -f $BASEDIR/standalone/deployments/restcomm-management-exploded.war $BASEDIR/standalone/deployments/restcomm-management.war + fi + + sed -e "s//<\/security-constraint>/" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + sed -e "s//<\/security-constraint>/" $FILEMANAGERXML.bak > $FILEMANAGERXML + sed -e "s//<\/security-constraint>/" $FILERVDXML.bak > $FILERVDXML + sed -e "s//<\/security-constraint>/" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + else + sed -e "s/<.*connector name=\"http\".*>/ /" $FILE > $FILE.bak + mv $FILE.bak $FILE + + grep -q '' $FILERESTCOMMXML && sed -e "s///" $FILERESTCOMMXML.bak > $FILERESTCOMMXML + grep -qs '' $FILEMANAGERXML && sed -e "s///" $FILEMANAGERXML.bak > $FILEMANAGERXML + grep -q '' $FILERVDXML && sed -e "s///" $FILERVDXML.bak > $FILERVDXML + grep -q '' $FILEOLYMPUSXML && sed -e "s///" $FILEOLYMPUSXML.bak > $FILEOLYMPUSXML + + fi + #If File contains path, or just the name. + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + CERTIFICATION_FILE=$TRUSTSTORE_FILE + else + CERTIFICATION_FILE="\\\${jboss.server.config.dir}/$TRUSTSTORE_FILE" + fi + #enable HTTPS and certificate file. + #Cipher `TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA` removed because it enables non-secure cipher ECDHE-RSA-DES-CBC3-SHA + echo "Will use trust store at location: $CERTIFICATION_FILE" + sed -e "s/<\!--connector name=\"https\" \(.*\)>//" \ + -e "s|||" \ + -e "s/<\/connector-->/<\/connector>/" $FILE > $FILE.bak + mv $FILE.bak $FILE + echo "Properly configured HTTPS Connector to use trustStore file $CERTIFICATION_FILE" +} + +#If self-sighned create certificate. +#else use authorized. +CertConfigure(){ + #Certificate setup (Authority certificate or self-signed) + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + if [ "$SECURESSL" = "AUTH" ]; then + echo "Authorized certificate is used" + elif [ "$SECURESSL" = "SELF" ]; then + echo "TRUSTSTORE_FILE is not provided but SECURE is TRUE. We will create and configure self signed certificate" + + sed -e "s/.*<\/ssl-mode>/allowall<\/ssl-mode>/" $FILE > $FILE.bak #When Self-signed used ssl-mode must set to "allowall" + mv $FILE.bak $FILE + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + TRUSTSTORE_LOCATION=$TRUSTSTORE_FILE + else + TRUSTSTORE_LOCATION=$RESTCOMM_HOME/standalone/configuration/$TRUSTSTORE_FILE + fi + + echo "TRUSTSTORE_LOCATION: $TRUSTSTORE_LOCATION" + echo "PUBLIC_IP: $PUBLIC_IP" + echo "RESTCOMM_HOSTNAME: $RESTCOMM_HOSTNAME" + #Use HOSTNAME to create certificate is used. Else use STATIC_ADDRESS + if [ -n "$RESTCOMM_HOSTNAME" ]; then + HOSTNAME="${RESTCOMM_HOSTNAME}" + keytool -genkey -alias $TRUSTSTORE_ALIAS -keyalg RSA -keystore $TRUSTSTORE_LOCATION -dname "CN=$HOSTNAME" -storepass $TRUSTSTORE_PASSWORD -keypass $TRUSTSTORE_PASSWORD + else + HOSTNAME="${PUBLIC_IP}" + keytool -genkey -alias $TRUSTSTORE_ALIAS -keyalg RSA -keystore $TRUSTSTORE_LOCATION -dname "CN=restcomm" -ext san=ip:"$HOSTNAME" -storepass $TRUSTSTORE_PASSWORD -keypass $TRUSTSTORE_PASSWORD + fi + echo "The generated truststore file at $TRUSTSTORE_LOCATION " + fi + + #Final necessary configuration. Protocols permitted, etc. + grep -q 'ephemeralDHKeySize' $RESTCOMM_BIN/standalone.conf || sed -i "s|-Djava.awt.headless=true|& -Djdk.tls.ephemeralDHKeySize=2048|" $RESTCOMM_BIN/standalone.conf + grep -q 'https.protocols' $RESTCOMM_BIN/standalone.conf || sed -i "s|-Djava.awt.headless=true|& -Dhttps.protocols=TLSv1.1,TLSv1.2|" $RESTCOMM_BIN/standalone.conf +} + +#SIP-Servlets configuration for HTTPS. +#For both Self-signed and Authorized certificate. +MssStackConf(){ + FILE=$RESTCOMM_CONF/mss-sip-stack.properties + + if grep -q "gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE=${TLS_CLIENT_AUTH_TYPE}" "$FILE"; then + sed -i '/gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE='"$TLS_CLIENT_AUTH_TYPE"'/,+5d' $FILE + fi + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + TRUSTSTORE_LOCATION=$TRUSTSTORE_FILE + else + TRUSTSTORE_LOCATION=$RESTCOMM_HOME/standalone/configuration/$TRUSTSTORE_FILE + fi + + #check for port offset + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + #https://github.com/RestComm/Restcomm-Connect/issues/2606 + sed -i '/org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=.*/ a \ + \gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE='"$TLS_CLIENT_AUTH_TYPE"'\ + \javax.net.ssl.keyStore='"$TRUSTSTORE_LOCATION"'\ + \javax.net.ssl.keyStorePassword='" $TRUSTSTORE_PASSWORD"'\ + \javax.net.ssl.trustStorePassword='"$TRUSTSTORE_PASSWORD"'\ + \javax.net.ssl.trustStore='"$TRUSTSTORE_LOCATION"'\ + \javax.net.ssl.keyStoreType=JKS\ + ' $RESTCOMM_CONF/mss-sip-stack.properties +} + + +#SIP-Servlets configuration for HTTPS. +#For both Self-signed and Authorized certificate. +SslRMSConf(){ + if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then + CERTIFICATION_FILE=$TRUSTSTORE_FILE + else + CERTIFICATION_FILE="$RESTCOMM_CONF/$TRUSTSTORE_FILE" + fi + + sed -i "s|SSL_ENABLED=.*|SSL_ENABLED=true|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_KEYSTORE=.*|SSL_KEYSTORE=${CERTIFICATION_FILE}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SSL_PASSWORD=.*|SSL_PASSWORD=${TRUSTSTORE_PASSWORD}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + fi +} + +# MAIN +echo 'RestComm SSL Configuring ...' + +if [[ "$SECURESSL" = "SELF" || "$SECURESSL" = "AUTH" ]]; then + if [[ -z $TRUSTSTORE_ALIAS || -z $TRUSTSTORE_PASSWORD || -z $TRUSTSTORE_FILE ]]; then + echo 'Need to set all: TRUSTSTORE_ALIAS, TRUSTSTORE_PASSWORD,TRUSTSTORE_FILE ' + else + echo "SECURE $SECURESSL" + SslRestCommConf + CertConfigure + MssStackConf + SslRMSConf + fi +elif [[ "$SECURESSL" == "false" || "$SECURESSL" == "FALSE" ]]; then + NoSslRestConf +else + echo "Allowed values for SECURESSL: SELF, AUTH, FALSE" +fi diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh new file mode 100755 index 0000000000..ec8c1b1117 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dashboard.sh @@ -0,0 +1,30 @@ +#!/bin/bash +## +## Configures dashboard.json based on global configuration options in restcomm.conf and advanced.conf. +## +## requirements: +## +## RESTCOMM_HOME env variable to be set +## dashboard.json should be in place (under $RESTCOMM_HOME/standalone/deployments/restcomm-management.war) +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +echo "Configuring Dashboard..." + + +# MAIN +if [ -z "$RESTCOMM_HOME" ] +then + echo "RESTCOMM_HOME env variable not set. Aborting." + exit 1 +fi + + +# Variables +DASHBOARD_ROOT="$RESTCOMM_HOME"/standalone/deployments/restcomm-management.war +DASHBOARD_JSON_FILE="$DASHBOARD_ROOT"/conf/dashboard.json + +sed -i "s|\"rvdUrl\":\"[^\"]*\"|\"rvdUrl\":\"$RVD_URL/restcomm-rvd\"|" "$DASHBOARD_JSON_FILE" + +echo "Dasboard configured:" +cat $DASHBOARD_JSON_FILE \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh new file mode 100755 index 0000000000..4b4a8d6403 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-dialogic-xms.sh @@ -0,0 +1,57 @@ +#!/bin/bash +## Description: Configures Dialogic XMS +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +RESTCOMM_STANDALONE=$RESTCOMM_HOME/standalone +RESTCOMM_DEPLOY=$RESTCOMM_STANDALONE/deployments/restcomm.war + +## Description: Elects Dialogic XMS as the active Media Server for RestComm +activateXMS() { + restcomm_conf=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + ms_address="$1" + + sed -e "// { + N; s|.*<\/compatibility>|$MS_COMPATIBILITY_MODE<\/compatibility>| + N; s||| + N; s|
.*<\/address>|
$ms_address<\/address>| + }" $restcomm_conf > $restcomm_conf.bak + mv -f $restcomm_conf.bak $restcomm_conf + echo '...activated Dialogic XMS...' +} + +fetchExternalResources() { + if [[ "$MS_COMPATIBILITY_MODE" == "xms" ]]; then + + echo "Checking required libraries ..." + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogic309-3.2-snapshot-jboss.jar ]; then + echo "JSR309 library ready" + else + echo "Downloading JSR309 library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogic309-3.2-snapshot-jboss.jar https://www.dialogic.com/files/jsr-309/3.2GA/3.2Snapshot/dialogic309-3.2-snapshot-jboss.jar + fi + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogicsmiltypes-3.2-GA-14621.jar ]; then + echo "SMIL Types library ready" + else + echo "Downloading SMIL Types library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogicsmiltypes-3.2-GA-14621.jar https://www.dialogic.com/files/jsr-309/3.2GA/dialogicsmiltypes-3.2-GA-14621.jar + fi + + if [ -f $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib/dialogicmsmltypes-3.2-GA-14621.jar ]; then + echo "MSML Types library ready" + else + echo "Downloading SMIL Types library ..." + cd $RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/lib + wget -O dialogicmsmltypes-3.2-GA-14621.jar https://www.dialogic.com/files/jsr-309/3.2GA/dialogicmsmltypes-3.2-GA-14621.jar + fi + fi +} + +#MAIN +echo "Configuring Dialogic XMS...MS_MODE: $MS_COMPATIBILITY_MODE" +activateXMS $MS_ADDRESS +fetchExternalResources +echo '...finished configuring Dialogic XMS!' diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh new file mode 100755 index 0000000000..c324c99337 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-jboss-as.sh @@ -0,0 +1,18 @@ +#! /bin/bash +## +## Description: Configures JBoss AS +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## + +## FUNCTIONS +disableSplashScreen() { + FILE="$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml" + sed -e 's|enable-welcome-root=".*"|enable-welcome-root="false"|' $FILE > $FILE.bak + mv -f $FILE.bak $FILE +} + +## MAIN +echo 'Configuring JBoss AS...' +disableSplashScreen +echo '...disabled JBoss splash screen...' +echo 'Finished configuring JBoss AS!' \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh new file mode 100755 index 0000000000..77b5c56486 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-load-balancer.sh @@ -0,0 +1,47 @@ +#! /bin/bash +## +## Description: Configures SIP Load Balancer +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## Author : Pavel Slegr (pavel.slegr@telestax.com) +## Author : Charles Roufay (charles.roufay@telestax.com) +## +## Last update: 22/03/2016 +## Change Log: Move away from Telestax Proxy and configure LB from restcomm.conf +## FUNCTIONS +## +## +## +## +configSipStack() { + lb_sipstack_file="$RESTCOMM_HOME/standalone/configuration/mss-sip-stack.properties" + + #delete additional connectors if any added to erlier run of the script. + if grep -q "## lb-configuration ##" $lb_sipstack_file + then + echo "Additional Connectors Created earlier, going to delete the connectors" + sed '/## lb-configuration ##/,/## lb-configuration ##/d' $lb_sipstack_file > $lb_sipstack_file.bak + mv $lb_sipstack_file.bak $lb_sipstack_file + else + echo "LB was not configured earlier" + fi + + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + if [ -z "$LB_INTERNAL_IP" ]; then + LB_INTERNAL_IP=$LB_PUBLIC_IP + fi + sed -e "/Mobicents Load Balancer/a\ + ## lb-configuration ##\n\ + gov.nist.javax.sip.PATCH_SIP_WEBSOCKETS_HEADERS=false\n\ + org.mobicents.ha.javax.sip.REACHABLE_CHECK=false\n\ + org.mobicents.ha.javax.sip.LoadBalancerHeartBeatingServiceClassName=org.mobicents.ha.javax.sip.MultiNetworkLoadBalancerHeartBeatingServiceImpl\n\ + ## lb-configuration ##" $lb_sipstack_file > $lb_sipstack_file.bak + + mv $lb_sipstack_file.bak $lb_sipstack_file + echo 'Load Balancer has been activated and mss-sip-stack.properties file updated' + fi +} + +## MAIN +configSipStack + + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh new file mode 100755 index 0000000000..5eb9ee7934 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-logs.sh @@ -0,0 +1,81 @@ +#!/bin/bash +## +## Description: Configures RestComm && RMS logs level +## Authos: Lefteris Banos (eleftherios.banos@telestax.com) + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration + + +check_if_logger_exist(){ +FILE=$RESTCOMM_CONF/standalone-sip.xml + #delete additional bindings if any added to erlier run of the script. + echo + if grep -q "${1}" $FILE + then + echo "Logger exist" + else + echo "Need to add logger ${1}" + sed -i "//i \\n\\n" $FILE + fi + +} + +configure_RC_component_log(){ + check_if_logger_exist $1 + sed -i "// {N; s///}" $RESTCOMM_CONF/standalone-sip.xml +} + +configure_RC_logs(){ + sed -i "/ / { + N; s||| + }" $RESTCOMM_CONF/standalone-sip.xml +} + +config_on_thefly(){ + FILE=$RESTCOMM_BIN/restcomm/set-log-level.sh + MNGMTPORT=$((9999 + PORT_OFFSET)) + sed -i "s|jboss-cli.sh --connect controller=.*|jboss-cli.sh --connect controller=$BIND_ADDRESS:${MNGMTPORT} --file=\"\$CLIFILE\"|" $FILE +} + +config_AKKA_logs(){ + FILE=$RESTCOMM_HOME/standalone/deployments/restcomm.war/WEB-INF/classes/application.conf + echo "Update AKKA log level to ${AKKA_LOG_LEVEL}" + sed -i "s|loglevel = \".*\"|loglevel = \"${AKKA_LOG_LEVEL}\"|" $FILE + sed -i "s|stdout-loglevel = \".*\"|stdout-loglevel = \"${AKKA_LOG_LEVEL}\"|" $FILE +} + + +#MAIN +if [ -n "$LOG_LEVEL" ]; then + configure_RC_logs + config_on_thefly + config_AKKA_logs + for i in $( set -o posix ; set | grep ^LOG_LEVEL_COMPONENT_ | sort -rn ); do + component=$(echo ${i} | cut -d = -f1 | cut -d _ -f4 ) + level=$(echo ${i} | cut -d = -f2) + case "$component" in + SIPSERVLET) + COMPONENT=org.mobicents.servlet.sip + ;; + GOVNIST) + COMPONENT=gov.nist + ;; + SIPRESTCOMM) + COMPONENT=org.mobicents.servlet.sip.restcomm + ;; + RESTCOMM) + COMPONENT=org.restcomm.connect + ;; + *) + echo "$component not possible to configure need to add it." + continue + esac + + echo "Configuring log level for: $component -> $level" + configure_RC_component_log "$COMPONENT" "$level" + done + fi + + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh new file mode 100755 index 0000000000..7478e55e88 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-mysql.sh @@ -0,0 +1,249 @@ +#!/bin/bash +## Description: Enables and configures MySQL datasource +## Params: +## 1. RESTCOMM_VERSION +## Author: Henrique Rosa +## Author: Lefteris Banos + +# VARIABLES +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + + +creteMysqlDataSource(){ + if [ -z "$RESTCOMM_HOME" ]; then + echo "RESTCOMM_HOME is not defined. Please setup this environment variable and try again." + exit 1 + fi + + # Variables + MYSQLDB_MODULE=$RESTCOMM_HOME/modules/system/layers/base/com/mysql/main + STANDALONE_SIP=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + # Download and install MariaDB driver as a JBoss module + mkdir -p $MYSQLDB_MODULE + if [ ! -f $MYSQLDB_MODULE/mysql-connector-java-5.1.36.jar ]; then + echo "Mysql driver not found!" + wget http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar -O /tmp/mysql-connector-java-5.1.36.jar + cp /tmp/mysql-connector-java-5.1.36.jar $MYSQLDB_MODULE + rm -f /tmp/mysql-connector-java-5.1.36.jar + else + echo "Mysql driver already downloaded" + fi + + +cat > $MYSQLDB_MODULE/module.xml << 'EOF' + + + + + + + + + + +EOF + +query=$(grep -q 'driver name=\"com.mysql\"' $STANDALONE_SIP) +if [ $? -eq 0 ]; then + echo "Datasource already populated" +else + echo "Going to populate the datasource" + + if [ -n "$MYSQL_SNDHOST" ]; then + # Update JBoss configuration to create a MariaDB datasource + sed -e '// a\ + \ \ + \ com.mysql.jdbc.Driver\ + \ com.mysql.jdbc.jdbc2.optional.MysqlXADataSource\ + \ ' \ + -e '// a\ + \ \ + \ jdbc:mysql://localhost:3306/restcomm \ + \ | \ + \ false \ + \ com.mysql \ + \ com.mysql.jdbc.Driver \ + \ TRANSACTION_READ_COMMITTED \ + \ \ + \ 5 \ + \ 50 \ + \ \ + \ \ + \ username \ + \ password \ + \ \ + \ \ + \ 100 \ + \ \ + \ \ + \ \ + \ true \ + \ \ + \ \ + \ select 1 \ + \ \ + \ ' $STANDALONE_SIP > $STANDALONE_SIP.bak + mv $STANDALONE_SIP.bak $STANDALONE_SIP + + else + # Update JBoss configuration to create a MariaDB datasource + sed -e '// a\ + \ \ + \ com.mysql.jdbc.Driver\ + \ com.mysql.jdbc.jdbc2.optional.MysqlXADataSource\ + \ ' \ + -e '// a\ + \ \ + \ jdbc:mysql://localhost:3306/restcomm \ + \ com.mysql \ + \ TRANSACTION_READ_COMMITTED \ + \ \ + \ 100 \ + \ 200 \ + \ \ + \ \ + \ username \ + \ password \ + \ \ + \ \ + \ 100 \ + \ \ + \ \ + \ ' $STANDALONE_SIP > $STANDALONE_SIP.bak + mv $STANDALONE_SIP.bak $STANDALONE_SIP + fi +fi +} + +## Description: Configures MyBatis for MySQL +## Parameters : none +configMybatis() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/mybatis.xml + + grep -q '' $FILE || sed -i '// a \ + \ \ + \ \ + \ \ + \ \ + \ \ + \ \ + ' $FILE + + sed -e '// s|default=".*"|default="mysql"|' $FILE > $FILE.bak + mv $FILE.bak $FILE + echo 'Activated mybatis environment for MySQL'; +} + +configureMySQLDataSource() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + if [ -n "$5" ]; then + #DB failover configuration. + sed -e "s|.*|jdbc:mysql://$1:3306/$4\|jdbc:mysql://$5:3306/$4|g" $FILE > $FILE.bak + else + # Update DataSource + sed -e "s|.*|jdbc:mysql://$1:3306/$4|g" $FILE > $FILE.bak + fi + mv $FILE.bak $FILE + sed -e "s|.*|$2|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s|.*|$3|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + echo 'Updated MySQL DataSource Configuration' +} + +## Description: Enables MySQL Datasource while disabling the remaining +## Parameters : none +enableDataSource() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + # Disable all datasources but MySQL + sed -e '/ $FILE.bak + + mv $FILE.bak $FILE + echo 'Enabled MySQL datasource' +} + +## Description: Configures RestComm DAO manager to use MySQL +## Params: none +configDaoManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/dao-manager.xml + + sed -e "s|.*||g" $FILE > $FILE.bak + mv $FILE.bak $FILE + sed -e "s|.*|\${restcomm:home}/WEB-INF/scripts/mariadb/sql|g" $FILE > $FILE.bak + mv $FILE.bak $FILE + + echo 'Configured MySQL Dao Manager for MySQL' +} + +## Description: Set Password for Adminitrator@company.com user. Only for fresh installation. +initUserPassword(){ + SQL_FILE=$RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + if [ -n "$INITIAL_ADMIN_USER" ]; then + # change admin user + if grep -q "uninitialized" $SQL_FILE; then + echo "Update Admin user" + sed -i "s/administrator@company.com/${INITIAL_ADMIN_USER}/g" $SQL_FILE + else + echo "Adminitrator User Already changed" + fi + fi + + if [ -n "$INITIAL_ADMIN_PASSWORD" ]; then + echo "change admin password" + if grep -q "uninitialized" $SQL_FILE; then + PASSWORD_ENCRYPTED=`echo -n "${INITIAL_ADMIN_PASSWORD}" | md5sum |cut -d " " -f1` + #echo "Update password to ${INITIAL_ADMIN_PASSWORD}($PASSWORD_ENCRYPTED)" + sed -i "s/uninitialized/active/g" $SQL_FILE + sed -i "s/77f8c12cc7b8f8423e5c38b035249166/$PASSWORD_ENCRYPTED/g" $SQL_FILE + sed -i 's/Date("2012-04-24")/now()/' $SQL_FILE + sed -i 's/Date("2012-04-24")/now()/' $SQL_FILE + # end + else + echo "Adminitrator Password Already changed" + fi + fi +} + +## Description: populated DB with necessary starting point data if not done. +populateDB(){ + #Change script to defined schema + echo "Use RestComm Database:$MYSQL_SCHEMA " + sed -i "s|CREATE DATABASE IF NOT EXISTS .*| CREATE DATABASE IF NOT EXISTS ${MYSQL_SCHEMA};|" $RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + sed -i "s|USE .*|USE ${MYSQL_SCHEMA};|" $RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + + if mysql -u $2 -p$3 -h $1 -e "SELECT * FROM \`$4\`.restcomm_clients;" &>/dev/null ; then + # Update config settings + echo "Database already populated" + else + echo "Database not populated, importing schema and updating config file" + FILE=$RESTCOMM_DEPLOY/WEB-INF/scripts/mariadb/init.sql + mysql -u $2 -p$3 -h $1 < $FILE + mysql -u $2 -p$3 -h $1 --execute='show databases;' + mysql -u $2 -p$3 -h $1 --execute='show tables;' $4; + echo "Database population done" + fi +} + +# MAIN +if [[ "$ENABLE_MYSQL" == "true" || "$ENABLE_MYSQL" == "TRUE" ]]; then + if [[ -z $MYSQL_HOST || -z $MYSQL_USER || -z $MYSQL_PASSWORD || -z $MYSQL_SCHEMA ]]; then + echo 'one or more variables are undefined' + echo 'Not possible to continue with Mysql configuration' + exit 1 + else + echo "Configuring MySQL datasource... $MYSQL_HOST $MYSQL_SCHEMA $MYSQL_USER $MYSQL_SNDHOST" + creteMysqlDataSource + enableDataSource + configMybatis + configDaoManager + configureMySQLDataSource $MYSQL_HOST $MYSQL_USER $MYSQL_PASSWORD $MYSQL_SCHEMA $MYSQL_SNDHOST + initUserPassword + populateDB $MYSQL_HOST $MYSQL_USER $MYSQL_PASSWORD $MYSQL_SCHEMA + echo 'Finished configuring MySQL datasource!' + fi +fi \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh new file mode 100755 index 0000000000..24f3f93115 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh @@ -0,0 +1,46 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Lefteris Banos (eleftherios.banos@telestax.com) +## + +BASEDIR=$RESTCOMM_HOME + +if [ ! -d "$BASEDIR/standalone/deployments/olympus.war" ]; then + mkdir $BASEDIR/standalone/deployments/olympus-exploded.war + unzip -q $BASEDIR/standalone/deployments/olympus.war -d $BASEDIR/standalone/deployments/olympus-exploded.war/ + rm -f $BASEDIR/standalone/deployments/olympus.war + mv -f $BASEDIR/standalone/deployments/olympus-exploded.war $BASEDIR/standalone/deployments/olympus.war +fi + +# Set Olympus ports +olympusPortConf(){ +FILE=$BASEDIR/standalone/deployments/olympus.war/resources/xml/olympus.xml + +# Check for Port Offset + local SIP_PORT_WS=$((SIP_PORT_WS + PORT_OFFSET)) + local SIP_PORT_WSS=$((SIP_PORT_WSS + PORT_OFFSET)) + + if [ -z "$SECURESSL" ] || [ "$SECURESSL" == "false" ] || [ "$SECURESSL" == "FALSE" ]; then + xmlstarlet ed -L -P -u "/olympus/server/@secure" -v "false" $FILE + else + xmlstarlet ed -L -P -u "/olympus/server/@secure" -v "true" $FILE + fi + + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + xmlstarlet ed -L -P -u "/olympus/server/port" -v ${LB_EXTERNAL_PORT_WS} $FILE + xmlstarlet ed -L -P -u "/olympus/server/secure-port" -v ${LB_EXTERNAL_PORT_WSS} $FILE + else + xmlstarlet ed -L -P -u "/olympus/server/port" -v ${SIP_PORT_WS} $FILE + xmlstarlet ed -L -P -u "/olympus/server/secure-port" -v ${SIP_PORT_WSS} $FILE + fi + +} + + + + +# MAIN +echo 'Configuring Olympus...' +#Reload Variables +olympusPortConf diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh new file mode 100755 index 0000000000..92397c287e --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh @@ -0,0 +1,893 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Henrique Rosa (henrique.rosa@telestax.com) +## Author: Pavel Slegr (pavel.slegr@telestax.com) +## Author: Maria Farooq (maria.farooq@telestax.com) +## + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DARS=$RESTCOMM_HOME/standalone/configuration/dars +RESTCOMM_CONF=$RESTCOMM_HOME/standalone/configuration +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war +RVD_DEPLOY_PATH=$RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war + +## FUNCTIONS + +## Description: Configures Java Options for Application Server +## Parameters : none +configRCJavaOpts() { + FILE=$RESTCOMM_BIN/standalone.conf + echo "RestComm java options with: $RC_JAVA_OPTS" + sed -e "/if \[ \"x\$JAVA_OPTS\" = \"x\" \]; then/ { + N; s|JAVA_OPTS=.*|JAVA_OPTS=\"$RC_JAVA_OPTS\"| + }" $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +## Description: Updates RestComm configuration file +## Parameters : 1.STATIC_ADDRESS +configRestcomm() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + static_address="$1" + + sed -i "s|<\!--.*.*<\/external-ip>.*-->|$static_address<\/external-ip>|" $FILE + sed -i "s|.*<\/external-ip>|$static_address<\/external-ip>|" $FILE + + sed -i "s||$static_address<\/external-ip>|" $FILE + + echo 'Updated RestComm configuration' + + #If "STRICT" no self-signed certificate is permitted. + if [ "$SSL_MODE" == "strict" ] || [ "$SSL_MODE" == "STRICT" ]; then + sed -e "s/.*<\/ssl-mode>/strict<\/ssl-mode>/g;s//strict<\/ssl-mode>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + else + sed -e "s/.*<\/ssl-mode>/allowall<\/ssl-mode>/g;s//allowall<\/ssl-mode>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + fi + + #Configure RESTCOMM_HOSTNAME at restcomm.xml. If not set "STATIC_ADDRESS" will be used. + if [ -n "$RESTCOMM_HOSTNAME" ]; then + echo "HOSTNAME $RESTCOMM_HOSTNAME" + + sed -i "s|.*<\/hostname>|${RESTCOMM_HOSTNAME}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s||${RESTCOMM_HOSTNAME}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if ! grep "${BIND_ADDRESS}.*${RESTCOMM_HOSTNAME}" /etc/hosts ; then + if hash host 2>/dev/null; then + if ! host ${RESTCOMM_HOSTNAME} > /dev/null + then + echo "${BIND_ADDRESS} ${RESTCOMM_HOSTNAME}" >> /etc/hosts + fi + else + echo "INFO: \"host\" programm does not exist ('dnsutils' package) please make sure that used hostname has a valid DNS resolution." + echo "INFO:IF not add the necessary hostname Ip resolution at /etc/hosts file: e.g echo RestC0mm_BIND_IP RESTCOMM_HOSTNAME >> /etc/hosts " + fi +fi + else + sed -i "s|.*<\/hostname>|${PUBLIC_IP}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s||${PUBLIC_IP}<\/hostname>|" $RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + fi +} +## Description: OutBoundProxy configuration. +configOutboundProxy(){ + echo "Configure outbound-proxy" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s|.*<\/outbound-proxy-uri>|$OUTBOUND_PROXY<\/outbound-proxy-uri>|" $FILE + sed -i "s|.*<\/outbound-proxy-user>|$OUTBOUND_PROXY_USERNAME<\/outbound-proxy-user>|" $FILE + sed -i "s|.*<\/outbound-proxy-password>|$OUTBOUND_PROXY_PASSWORD<\/outbound-proxy-password>|" $FILE + + sed -i "s||$OUTBOUND_PROXY<\/outbound-proxy-uri>|" $FILE + sed -i "s||$OUTBOUND_PROXY_USERNAME<\/outbound-proxy-user>|" $FILE + sed -i "s||$OUTBOUND_PROXY_PASSWORD<\/outbound-proxy-password>|" $FILE +} +## Description: Push notification server configuration. +configPushNotificationServer() { + echo "Configure push-notification-server" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "s|.*<\/push-notification-server-enabled>|$PUSH_NOTIFICATION_SERVER_ENABLED<\/push-notification-server-enabled>|" $FILE + sed -i "s|.*<\/push-notification-server-url>|$PUSH_NOTIFICATION_SERVER_URL<\/push-notification-server-url>|;" $FILE + sed -i "s|.*<\/push-notification-server-delay>|$PUSH_NOTIFICATION_SERVER_DELAY<\/push-notification-server-delay>|" $FILE + + sed -i "s||$PUSH_NOTIFICATION_SERVER_ENABLED<\/push-notification-server-enabled>|" $FILE + sed -i "s||$PUSH_NOTIFICATION_SERVER_URL<\/push-notification-server-url>|" $FILE + sed -i "s||$PUSH_NOTIFICATION_SERVER_DELAY<\/push-notification-server-delay>|" $FILE +} +## Description: Configures Voip Innovations Credentials +## Parameters : 1.Login +## 2.Password +## 3.Endpoint +configVoipInnovations() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured Voip Innovation credentials' +} + +## Description: PROVISION MANAGER configuration. +# MANAGERS : VI (Voip innovations),NX (nexmo),VB (Voxbone), BW(Bandwidth). +configDidProvisionManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [[ "$PROVISION_PROVIDER" == "VI" || "$PROVISION_PROVIDER" == "vi" ]]; then + sed -e "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.vi.VoIPInnovationsNumberProvisioningManager\"|" $FILE > $FILE.bak + + mv $FILE.bak $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + echo 'Configured Voip Innovation credentials' + else + if [[ "$PROVISION_PROVIDER" == "BW" || "$PROVISION_PROVIDER" == "bw" ]]; then + sed -e "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.bandwidth.BandwidthNumberProvisioningManager\"|" $FILE > $FILE.bak + + mv $FILE.bak $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$6| + N; s|.*|$4| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$6| + N; s||$4| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + echo 'Configured Bandwidth credentials' + else + if [[ "$PROVISION_PROVIDER" == "NX" || "$PROVISION_PROVIDER" == "nx" ]]; then + echo "Nexmo PROVISION_PROVIDER" + sed -i "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.nexmo.NexmoPhoneNumberProvisioningManager\"|" $FILE + + if [[ -z "$8" ]]; then + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + else + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + fi + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N + N; s|.*|$7| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N + N; s||$7| + }" $FILE + + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"true"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"true"<\/outboudproxy-user-at-from-header>|" $FILE + + else + if [[ "$PROVISION_PROVIDER" == "VB" || "$PROVISION_PROVIDER" == "vb" ]]; then + echo "Voxbone PROVISION_PROVIDER" + sed -i "s|phone-number-provisioning class=\".*\"|phone-number-provisioning class=\"org.restcomm.connect.provisioning.number.voxbone.VoxbonePhoneNumberProvisioningManager\"|" $FILE + + sed -i "// { + N; s||| + N; s||| + N; s||| + N; s||| + }" $FILE + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + }" $FILE + sed -i "// { + N; s||$1| + N; s||$2| + }" $FILE + sed -i "s|.*<\/outboudproxy-user-at-from-header>|"false"<\/outboudproxy-user-at-from-header>|" $FILE + sed -i "s||"false"<\/outboudproxy-user-at-from-header>|" $FILE + + fi + fi + fi + fi +} + +## Description: Configures Fax Service Credentials +## Parameters : 1.Username +## 2.Password +configFaxService() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + }" $FILE + + echo 'Configured Fax Service credentials' +} + +## Description: Configures Sms Aggregator +## Parameters : 1.Outbound endpoint IP +## +configSmsAggregator() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s|.*|$2| + N; s|.*|$1| + }" $FILE + + sed -i "// { + N; s||$2| + N; s||$1| + }" $FILE + echo "Configured Sms Aggregator using OUTBOUND PROXY $1" +} + +## Description: Configures Speech Recognizer +## Parameters : 1.iSpeech Key +configSpeechRecognizer() { + if [ -n "$ISPEECH_KEY" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + sed -i "// { + N; s||$1| + }" $FILE + + sed -i "// { + N; s||$1| + }" $FILE + + echo 'Configured the Speech Recognizer' + fi +} + +## Description: Configures available speech synthesizers +## Parameters : none +configSpeechSynthesizers() { + if [[ "$TTSSYSTEM" == "voicerss" ]]; then + configVoiceRSS $VOICERSS_KEY + + elif [[ "$TTSSYSTEM" == "awspolly" ]]; then + configAWSPolly $AWS_ACCESS_KEY $AWS_SECRET_KEY $AWS_REGION + + else + configAcapela $ACAPELA_APPLICATION $ACAPELA_LOGIN $ACAPELA_PASSWORD + fi +} + +## Description: Configures Acapela Speech Synthesizer +## Parameters : 1.Application Code +## 2.Login +## 3.Password +configAcapela() { + if [[ -z $ACAPELA_APPLICATION || -z $ACAPELA_LOGIN || -z $ACAPELA_PASSWORD ]]; then + echo '!Please make sure that all necessary settings for acapela are set!' + else + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "// { + N + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured Acapela Speech Synthesizer' + fi +} + + +## Description: Configures VoiceRSS Speech Synthesizer +## Parameters : 1.API key +configVoiceRSS() { + if [ -n "$VOICERSS_KEY" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "/http:\/\/api.voicerss.org<\/service-root>/ { + N; s|.*|$1| + }" $FILE + + sed -i "/http:\/\/api.voicerss.org<\/service-root>/ { + N; s||$1| + }" $FILE + + echo 'Configured VoiceRSS Speech Synthesizer' + + else + echo 'Please set KEY for VoiceRSS TTS' + fi +} + +## Description: Configures AWS Polly Speech Synthesizer +## Parameters : 1.AWS Access Key +## 2.AWS Secret key +## 3.AWS Region +configAWSPolly() { + if [[ -z $AWS_ACCESS_KEY || -z $AWS_SECRET_KEY || -z $AWS_REGION ]]; then + echo '!Please make sure that all necessary settings for AWS Polly are set!' + else + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i 's|||' $FILE + + sed -i "// { + N + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + }" $FILE + + sed -i "// { + N + N; s||$1| + N; s||$2| + N; s||$3| + }" $FILE + + echo 'Configured AWS Polly Speech Synthesizer' + fi +} + +## Description: Updates RestComm DARS properties for RestComm +## Parameters : none +configDARSProperties() { + FILE=$RESTCOMM_DARS/mobicents-dar.properties + sed -e 's|^ALL=.*|ALL=("RestComm", "DAR\:From", "NEUTRAL", "", "NO_ROUTE", "0")|' $FILE > $FILE.bak + mv $FILE.bak $FILE + echo "Updated mobicents-dar properties" +} + +## Description: Configures TeleStax Proxy +## Parameters : 1.Enabled +## 2.login +## 3.password +## 4.Endpoint +## 5.Proxy IP +configTelestaxProxy() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + enabled="$1" + if [ "$enabled" == "true" ] || [ "$enabled" == "TRUE" ]; then + sed -i "// { + N; s|.*|$1| + N; s|.*|$2| + N; s|.*|$3| + N; s|.*|$4| + N; s|.*|$6| + N; s|.*|http:\/\/$5:2080| + }" $FILE + + sed -i "// { + N; s||$1| + N; s||$2| + N; s||$3| + N; s||$4| + N; s||$6| + N; s||http:\/\/$5:2080| + }" $FILE + + echo 'Enabled TeleStax Proxy' + else + sed -i "// { + N; s|.*|false| + N; s|.*|| + N; s|.*|| + N; s|.*|| + N; s|.*|| + N; s|.*|http:\/\/127.0.0.1:2080| + }" $FILE + + sed -i "// { + N; s||false| + N; s||| + N; s||| + N; s||| + N; s||| + N; s||http:\/\/127.0.0.1:2080| + }" $FILE + + echo 'Disabled TeleStax Proxy' + fi +} + + +## Description: Configures Media Server Manager +## Parameters : 1.Enabled +## 2.private IP +## 3.public IP + +configMediaServerManager() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + bind_address="$1" + ms_address="$2" + ms_external_address="$3" + + #Check for Por Offset + local LOCALMGCP=$((LOCALMGCP + PORT_OFFSET)) + local REMOTEMGCP=$((REMOTEMGCP + PORT_OFFSET)) + + sed -e "s/.*<\/local-address>/$bind_address<\/local-address>/g;s//$bind_address<\/local-address>/g" \ + -e "s/.*<\/local-port>/$LOCALMGCP<\/local-port>/g;s//$LOCALMGCP<\/local-port>/g" \ + -e "s/.*<\/remote-address>/$ms_address<\/remote-address>/g;s//$ms_address<\/remote-address>/g" \ + -e "s/.*<\/remote-port>/$REMOTEMGCP<\/remote-port>/g;s//$REMOTEMGCP<\/remote-port>/g" \ + -e "s/.*<\/response-timeout>/$MGCP_RESPONSE_TIMEOUT<\/response-timeout>/g;s//$MGCP_RESPONSE_TIMEOUT<\/response-timeout>/g" \ + -e "s/<\!--.*.*<\/external-address>.*-->/$ms_external_address<\/external-address>/g;" \ + -e "s/.*<\/external-address>/$ms_external_address<\/external-address>/g;s//$ms_external_address<\/external-address>/g" $FILE > $FILE.bak + + mv $FILE.bak $FILE + echo 'Configured Media Server Manager' +} + +## Description: Configures SMPP Account Details +## Parameters : 1.activate +## 2.systemID +## 3.password +## 4.systemType +## 5.peerIP +## 6.peerPort +## 7.sourceMap +## 8.destinationMap + +configSMPPAccount() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + activate="$1" + systemID="$2" + password="$3" + systemType="$4" + peerIP="$5" + peerPort="$6" + sourceMap="$7" + destinationMap="$8" + + + sed -i "s|||g" $FILE + #Add sourceMap && destinationMap + + + if [ "$activate" == "true" ] || [ "$activate" == "TRUE" ]; then + sed -i "/.*|$systemID| + N; s|.*|$peerIP| + N; s|.*|$peerPort| + N + N + N; s|.*|$password| + N; s|.*|$systemType| + }" $FILE + + sed -i "/$systemID| + N; s||$peerIP| + N; s||$peerPort| + N + N + N; s||$password| + N; s||$systemType| + }" $FILE + + sed -i "s|||" $FILE + echo 'Configured SMPP Account Details' + + else + sed -i "/.*|| + N; s|.*|| + N; s|.*|| + N + N + N; s|.*|| + N; s|.*|| + }" $FILE + + sed -i "/|| + N; s||| + N; s||| + N + N + N; s||| + N; s||| + }" $FILE + + sed -i "s|||" $FILE + echo 'Configured SMPP Account Details' + fi +} + +## Description: Configures RestComm "prompts & cache" URIs +#Mostly used for external MS. +configRestCommURIs() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + #check for port offset + local HTTP_PORT=$((HTTP_PORT + PORT_OFFSET)) + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + if [ -n "$MS_ADDRESS" ] && [ "$MS_ADDRESS" != "$BIND_ADDRESS" ]; then + if [ "$DISABLE_HTTP" = "true" ]; then + PORT="$HTTPS_PORT" + SCHEME='https' + else + PORT="$HTTP_PORT" + SCHEME='http' + fi + + # STATIC_ADDRESS will be populated by user or script before + REMOTE_ADDRESS="${SCHEME}://${PUBLIC_IP}:${PORT}" + + sed -i "s|.*|$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE + sed -i "s|.*/cache-uri>|$REMOTE_ADDRESS/restcomm/cache|" $FILE + sed -i "s|.*|$REMOTE_ADDRESS/restcomm/errors|" $FILE + + sed -i "s||$REMOTE_ADDRESS/restcomm/audio<\/prompts-uri>|" $FILE + sed -i "s||$REMOTE_ADDRESS/restcomm/cache|" $FILE + sed -i "s||$REMOTE_ADDRESS/restcomm/errors|" $FILE + + echo "Updated prompts-uri cache-uri error-dictionary-uri External MSaddress for " + fi + echo 'Configured RestCommURIs' +} + +## Description: Specify the path where Recordings are saved. +updateRecordingsPath() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [ -n "$RECORDINGS_PATH" ]; then + sed -i "s|.*|file://${RECORDINGS_PATH}<\/recordings-path>|" $FILE + sed -i "s||file://${RECORDINGS_PATH}<\/recordings-path>|" $FILE + echo "Updated RECORDINGS_PATH " + + else + sed -i "s|.*|file://\${restcomm:home}/recordings<\/recordings-path>|" $FILE + sed -i "s||file://\${restcomm:home}/recordings<\/recordings-path>|" $FILE + fi + echo 'Configured Recordings path' +} + +## Description: Specify HTTP/S ports used. +#Needed when port offset is set. +configHypertextPort(){ + MSSFILE=$RESTCOMM_CONF/mss-sip-stack.properties + + #Check for Por Offset + local HTTP_PORT=$((HTTP_PORT + PORT_OFFSET)) + local HTTPS_PORT=$((HTTPS_PORT + PORT_OFFSET)) + + sed -e "s|org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=.*|org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=$HTTP_PORT|" \ + -e "s|org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=.*|org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=$HTTPS_PORT|" $MSSFILE > $MSSFILE.bak + mv $MSSFILE.bak $MSSFILE + echo "Configured HTTP ports" +} + +## Description: Other single configuration +#enable/disable SSLSNI (default:false) +otherRestCommConf(){ + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -e "s/.*<\/play-music-for-conference>/${PLAY_WAIT_MUSIC}<\/play-music-for-conference>/g;s//${PLAY_WAIT_MUSIC}<\/play-music-for-conference>/g" $FILE > $FILE.bak + mv $FILE.bak $FILE + + #Remove if is set in earlier run. + grep -q 'allowLegacyHelloMessages' $RESTCOMM_BIN/standalone.conf && sed -i -E "s/(.*)( -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=)(true|false)(.*)/\1\4/" $RESTCOMM_BIN/standalone.conf + + if [[ "$SSLSNI" == "false" || "$SSLSNI" == "FALSE" ]]; then + sed -i "s|-Djava.awt.headless=true|& -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=false|" $RESTCOMM_BIN/standalone.conf + else + sed -i "s|-Djava.awt.headless=true|& -Dsun.security.ssl.allowLegacyHelloMessages=false -Djsse.enableSNIExtension=true|" $RESTCOMM_BIN/standalone.conf + fi + + if [ -n "$HSQL_DIR" ]; then + echo "HSQL_DIR $HSQL_DIR" + FILEDB=$HSQL_DIR/restcomm.script + sed -i "s|.*|${HSQL_DIR}|" $FILE + if [ ! -f $FILEDB ]; then + mkdir -p $HSQL_DIR + cp $RESTCOMM_DEPLOY/WEB-INF/data/hsql/* $HSQL_DIR + fi + fi + + if [ -n "$USSDGATEWAYURI" ]; then + echo "USSD GATEWAY configuration" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed -i "s|.*|$USSDGATEWAYURI|" $FILE + sed -i "s|.*|$USSDGATEWAYUSER|" $FILE + sed -i "s|.*|$USSDGATEWAYPASSWORD|" $FILE + + sed -i "s||$USSDGATEWAYURI|" $FILE + sed -i "s||$USSDGATEWAYUSER|" $FILE + sed -i "s||$USSDGATEWAYPASSWORD|" $FILE + fi + + echo "HTTP_RESPONSE_TIMEOUT $HTTP_RESPONSE_TIMEOUT" + sed -i"." "// { + N + N; + N; + N; + N; s|.*|$HTTP_RESPONSE_TIMEOUT| + }" $FILE + + sed -i"." "// { + N + N; + N; + N; + N; s||$HTTP_RESPONSE_TIMEOUT| + }" $FILE + + echo "CACHE_NO_WAV $CACHE_NO_WAV" + sed -i "s|.*|${CACHE_NO_WAV}|" $FILE + + echo "End Rest RestComm configuration" +} + +disableRVD() { + if [[ -f "$RVD_DEPLOY_PATH.deployed" || -f "$RVD_DEPLOY_PATH.dodeploy" ]]; then + rm -f "$RVD_DEPLOY_PATH.deployed" + rm -f "$RVD_DEPLOY_PATH.dodeploy" + echo "RVD undeployed (or not deployed at all)" + else + echo "RVD not deployed" + fi +} + +enableRVD() { + if [ -f "$RVD_DEPLOY_PATH.deployed" ]; then + echo "RVD already deployed" + else + touch "$RVD_DEPLOY_PATH".dodeploy + echo "RVD deployed" + fi +} + +confRVD(){ + if [[ "$RVD_UNDEPLOY" = true || "$RVD_UNDEPLOY" = True || "$RVD_UNDEPLOY" = TRUE ]]; then + disableRVD + else + enableRVD + echo "Configuring bundled RVD" + if [ -n "$RVD_LOCATION" ]; then + echo "RVD_LOCATION $RVD_LOCATION" + mkdir -p `echo $RVD_LOCATION` + sed -i "s|.*|${RVD_LOCATION}|" $RVD_DEPLOY_PATH/WEB-INF/rvd.xml + + COPYFLAG=$RVD_LOCATION/.demos_initialized + if [ -f "$COPYFLAG" ]; then + #Do nothing, we already copied the demo file to the new workspace + echo "RVD demo application are already copied" + else + echo "Will copy RVD demo applications to the new workspace $RVD_LOCATION" + cp -ar $RVD_DEPLOY_PATH/workspace/* $RVD_LOCATION + touch $COPYFLAG + fi + + fi + fi +} + +## Adds/removes / element based on $RVD_URL +## This version of confRcmlserver() will used xmlstarlet and will probably sed commands that rely on empty elements like instead of +#confRcmlserver(){ +# echo "Configuring ..." +# local RESTCOMM_XML=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml +# if [ -z "$RVD_URL" ]; then +# # remove / element altogether +# xmlstarlet ed -P -d "/restcomm/rcmlserver/base-url" "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" +# mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" +# else +# # remove existing element +# xmlstarlet ed -P -d /restcomm/rcmlserver/base-url "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" +# mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" +# # add it anew +# xmlstarlet ed -P -s /restcomm/rcmlserver -t elem -n base-url -v "$RVD_URL" "${RESTCOMM_XML}" > "${RESTCOMM_XML}.bak" +# mv "${RESTCOMM_XML}.bak" "$RESTCOMM_XML" +# fi +# echo " configured" +#} + +# Updates / according to $RVD_URL +# This version of confRcmlserver() used sed for backwards compatibility with existing sed commands in this +confRcmlserver() { + local RESTCOMM_XML=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + sed "//,/<\/rcmlserver>/ s|.*|${RVD_URL}|" "$RESTCOMM_XML" > "${RESTCOMM_XML}.bak" + mv ${RESTCOMM_XML}.bak "$RESTCOMM_XML" + echo "Configured . base-url set to '$RVD_URL'" +} + + +#Auto Configure RMS Networking, if MANUAL_SETUP=false. +configRMSNetworking() { + if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + sed -i "s|BIND_ADDRESS=.*|BIND_ADDRESS=${BIND_ADDRESS}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|MGCP_ADDRESS=.*|MGCP_ADDRESS=${BIND_ADDRESS}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|NETWORK=.*|NETWORK=${BIND_NETWORK}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + sed -i "s|SUBNET=.*|SUBNET=${BIND_SUBNET_MASK}|" $RESTCOMM_BIN/restcomm/mediaserver.conf + fi +} + +configAsrDriver() { + if [ ! -z "$MG_ASR_DRIVERS" ] && [ ! -z "$MG_ASR_DRIVER_DEFAULT" ]; then + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/mg-asr-drivers" \ + -s "/restcomm/runtime-settings" -t elem -n mg-asr-drivers \ + -i "/restcomm/runtime-settings/mg-asr-drivers" -t attr -n default -v "$MG_ASR_DRIVER_DEFAULT" \ + $FILE + for driverName in ${MG_ASR_DRIVERS//,/ }; do + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/mg-asr-drivers" -t elem -n "driver" -v "$driverName" \ + $FILE + done + fi +} + +## Description: DNS Provisioning Manager Configuration. +configDnsProvisioningManager() { + echo "Configure DnsProvisioningManager" + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n class -v "$DNS_PROVISIONING_CLASS" \ + $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n enabled -v "$DNS_PROVISIONING_ENABLED" \ + $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning" \ + -s "/restcomm/runtime-settings" -t elem -n dns-provisioning \ + -i "/restcomm/runtime-settings/dns-provisioning" -t attr -n class -v "$DNS_PROVISIONING_CLASS" \ + $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning" -t attr -n "enabled" -v "$DNS_PROVISIONING_ENABLED" $FILE + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning/aws-route53" \ + -s "/restcomm/runtime-settings/dns-provisioning" -t elem -n aws-route53 $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "restcomm-a-record-value" -v "$DNS_PROVISIONING_AWS_ROUTE53_A_VALUE" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "restcomm-srv-record-value" -v "$DNS_PROVISIONING_AWS_ROUTE53_SRV_VALUE" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "access-key" -v "$DNS_PROVISIONING_AWS_ROUTE53_ACCESS_KEY" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "secret-key" -v "$DNS_PROVISIONING_AWS_ROUTE53_SECRET_KEY" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "region" -v "$DNS_PROVISIONING_AWS_ROUTE53_REGION" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "ttl" -v "$DNS_PROVISIONING_AWS_ROUTE53_TTL" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "hosted-zone-id" -v "$DNS_PROVISIONING_AWS_ROUTE53_HOSTED_ZONE_ID" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n "is-alias" -v "$DNS_PROVISIONING_AWS_ROUTE53_IS_ALIAS" $FILE + + + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" \ + -s "/restcomm/runtime-settings/dns-provisioning/aws-route53" -t elem -n alias-target $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" -t elem -n "evaluate-target-health" -v "$DNS_PROVISIONING_AWS_ROUTE53_ALIAS_EVALUATE_TARGET_HEALTH" $FILE + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/dns-provisioning/aws-route53/alias-target" -t elem -n "hosted-zone-id" -v "$DNS_PROVISIONING_AWS_ROUTE53_ALIAS_HOSTED_ZONE_ID" $FILE + +} + +configConferenceTimeout(){ + echo "Configure conference timeout $CONFERENCE_TIMEOUT" + xmlstarlet ed --inplace -u "/restcomm/runtime-settings/conference-timeout" -v "$CONFERENCE_TIMEOUT" $FILE +} + +configSdrService(){ + xmlstarlet ed --inplace -d "/restcomm/runtime-settings/sdr-service" $FILE + if [ -n "$SDR_SERVICE_CLASS" ]; then + echo "Configure Sdr service" + xmlstarlet ed --inplace -s "/restcomm/runtime-settings" -t elem -n sdr-service \ + -i "/restcomm/runtime-settings/sdr-service" -t attr -n class -v "$SDR_SERVICE_CLASS" \ + $FILE + if [ -n "$SDR_SERVICE_HTTP_URI" ]; then + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/sdr-service" -t elem -n http-uri -v "$SDR_SERVICE_HTTP_URI" $FILE + fi + if [ -n "$SDR_SERVICE_AMQP_URI" ]; then + xmlstarlet ed --inplace -s "/restcomm/runtime-settings/sdr-service" -t elem -n amqp-uri -v "$SDR_SERVICE_AMQP_URI" $FILE + fi + fi +} + +# MAIN +echo 'Configuring RestComm...' +configRCJavaOpts +configDARSProperties +configRestcomm "$PUBLIC_IP" +#configVoipInnovations "$VI_LOGIN" "$VI_PASSWORD" "$VI_ENDPOINT" + +if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + HOSTFORDID=$LBHOST +else + HOSTFORDID=$PUBLIC_IP + + #Check for port offset. + DID_URIPORT=$((DID_URIPORT + PORT_OFFSET)) +fi + +if [ -z "$MS_ADDRESS" ]; then + MS_ADDRESS=$BIND_ADDRESS +fi + +configDidProvisionManager "$DID_LOGIN" "$DID_PASSWORD" "$DID_ENDPOINT" "$DID_SITEID" "$HOSTFORDID" "$DID_ACCOUNTID" "$SMPP_SYSTEM_TYPE" "$DID_URIPORT" +configFaxService "$INTERFAX_USER" "$INTERFAX_PASSWORD" +configSmsAggregator "$SMS_OUTBOUND_PROXY" "$SMS_PREFIX" +configSpeechRecognizer "$ISPEECH_KEY" +configSpeechSynthesizers +configTelestaxProxy "$ACTIVE_PROXY" "$TP_LOGIN" "$TP_PASSWORD" "$INSTANCE_ID" "$PROXY_IP" "$SITE_ID" +configMediaServerManager "$BIND_ADDRESS" "$MS_ADDRESS" "$MEDIASERVER_EXTERNAL_ADDRESS" +configSMPPAccount "$SMPP_ACTIVATE" "$SMPP_SYSTEM_ID" "$SMPP_PASSWORD" "$SMPP_SYSTEM_TYPE" "$SMPP_PEER_IP" "$SMPP_PEER_PORT" "$SMPP_SOURCE_MAP" "$SMPP_DEST_MAP" +configRestCommURIs +updateRecordingsPath +configHypertextPort +configOutboundProxy +configPushNotificationServer +otherRestCommConf +confRcmlserver +confRVD +configRMSNetworking +configAsrDriver +configDnsProvisioningManager +configConferenceTimeout +configSdrService +echo 'Configured RestComm!' diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh new file mode 100755 index 0000000000..5aed5b9025 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd-logging.sh @@ -0,0 +1,190 @@ +#!/bin/bash +## +## Logging configuration for RVD +## +## standalone-sip.xml is updated with RVD handler and loggers configuration. By default, if the respective +## configuration is missing it is added. Otherwise nothing happens. If the logging LEVEL is specified in the +## command line loggers are updated/created accordingly. +## +## usage: +## +## ./config-rvd-logging.sh - adds handler and logger (INFO) elements if missing +## ./config-rvd-logging.sh DEBUG - creates or updates loggers by setting level to DEBUG +## ./config-rvd-logging.sh DEBUG FILE - creates or updates loggers (DEBUG) but also configures them to use the 'FILE' periodic handler (main restcomm log) +## +## environment: +## +## requires RESTCOMM_HOME env variable to be set +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +# Default values +STANDALONE_SIP=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +LOG_FILE="rvd/rvd.log"; # this is relative to "jboss.server.log.dir" +RVD_LOG_LEVEL=INFO # logging level that will be used if handlers/loggers are missing +LOGGING_HANDLER=RVD # the handler to be used for RVD logging. Set this to 'FILE' to redirect all messages to the main restcomm log (server.log) + +# Variables +XML_UPDATED=false # flag to format xml file only if updated +OVERRIDE=false + +error(){ + echo "error parsing standalone-sip.xml" + exit 1 +} + +createHandler(){ + + # create the RVD handler if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:periodic-rotating-file-handler[@name='RVD']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 ]; then + echo "adding RVD handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:periodic-rotating-file-handler[@name='RVD']" -s "//logns:subsystem" -t elem -n periodic-rotating-file-handler_TMP -v "" \ + -i //periodic-rotating-file-handler_TMP -t attr -n name -v RVD \ + -i //periodic-rotating-file-handler_TMP -t attr -n autoflush -v true \ + -s //periodic-rotating-file-handler_TMP -t elem -n formatter_TMP -v "" \ + -s //formatter_TMP -t elem -n pattern-formatter_TMP -v "" \ + -i //pattern-formatter_TMP -t attr -n pattern -v "%d{MMdd HH:mm:ss,SSS X} %p (%t) %m %n" \ + -s //periodic-rotating-file-handler_TMP -t elem -n file_TMP -v "" \ + -i //file_TMP -t attr -n relative-to -v "jboss.server.log.dir" \ + -i //file_TMP -t attr -n path -v "rvd/rvd.log" \ + -s //periodic-rotating-file-handler_TMP -t elem -n suffix_TMP -v "" \ + -s //suffix_TMP -t attr -n value -v ".yyyy-MM-dd" \ + -s //periodic-rotating-file-handler_TMP -t elem -n append_TMP -v "" \ + -s //append_TMP -t attr -n value -v true \ + -r //periodic-rotating-file-handler_TMP -v periodic-rotating-file-handler \ + -r //formatter_TMP -v formatter \ + -r //pattern-formatter_TMP -v pattern-formatter \ + -r //file_TMP -v file \ + -r //suffix_TMP -v suffix \ + -r //append_TMP -v append \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi + +} + +createLoggers(){ + + # create RVD local logger if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:logger[@category='org.restcomm.connect.rvd.LOCAL']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 -o \( "$result" = 0 -a "$OVERRIDE" = true \) ]; then + echo "adding RVD local logger - $RVD_LOG_LEVEL/$LOGGING_HANDLER handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:logger[@category='org.restcomm.connect.rvd.LOCAL']" \ + -s "//logns:subsystem" -t elem -n logger_TMP -v "" \ + -i //logger_TMP -t attr -n category -v "org.restcomm.connect.rvd.LOCAL" \ + -s //logger_TMP -t elem -n level_TMP -v "" \ + -i //level_TMP -t attr -n name -v "$RVD_LOG_LEVEL" \ + -s //logger_TMP -t elem -n handlers_TMP -v "" \ + -s //handlers_TMP -t elem -n handler_TMP -v "" \ + -s //handler_TMP -t attr -n name -v "$LOGGING_HANDLER" \ + -r //logger_TMP -v logger \ + -r //level_TMP -v level \ + -r //handlers_TMP -v handlers \ + -r //handler_TMP -v handler \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi + + # create RVD global logger if it is missing + xmlstarlet sel -Q -N logns=urn:jboss:domain:logging:1.2 -t -m "//logns:logger[@category='org.restcomm.connect.rvd.GLOBAL']" -o "found" $STANDALONE_SIP + result=$? + if [ "$result" -eq 1 -o \( "$result" = 0 -a "$OVERRIDE" = true \) ]; then + echo "adding RVD global logger - $RVD_LOG_LEVEL/$LOGGING_HANDLER handler" + xmlstarlet ed -P -N logns=urn:jboss:domain:logging:1.2 -d "//logns:logger[@category='org.restcomm.connect.rvd.GLOBAL']" \ + -s "//logns:subsystem" -t elem -n logger_TMP -v "" \ + -i //logger_TMP -t attr -n category -v "org.restcomm.connect.rvd.GLOBAL" \ + -s //logger_TMP -t elem -n level_TMP -v "" \ + -i //level_TMP -t attr -n name -v "$RVD_LOG_LEVEL" \ + -s //logger_TMP -t elem -n handlers_TMP -v "" \ + -s //handlers_TMP -t elem -n handler_TMP -v "" \ + -s //handler_TMP -t attr -n name -v "$LOGGING_HANDLER" \ + -r //logger_TMP -v logger \ + -r //level_TMP -v level \ + -r //handlers_TMP -v handlers \ + -r //handler_TMP -v handler \ + $STANDALONE_SIP > ${STANDALONE_SIP}_tmp + mv ${STANDALONE_SIP}_tmp $STANDALONE_SIP + XML_UPDATED=true + else + if [ "$result" -eq 3 ]; + then + error + fi + fi +} + +formatXml(){ + tmpfile=$(mktemp -t rvdconfigXXX) + xmlstarlet fo "$STANDALONE_SIP" > "$tmpfile" + mv "$tmpfile" "$STANDALONE_SIP" +} + +# MAIN + +if [ -z "$RESTCOMM_HOME" ] +then + echo "RESTCOMM_HOME env variable not set" + exit 1 +fi + +echo "Configuring RVD logging" + +# if no (level) argument is given, create default loggers only if they are missing +if [ -z $1 ] +then + # OVERRIDE is false + createHandler + createLoggers +else + case "$1" in + FATAL|ERROR|WARN|INFO|DEBUG|TRACE|ALL|OFF) + # specify logging handler to be used - RVD|FILE) + if [ -z "$2" ] + then + LOGGING_HANDLER=RVD + else + case "$2" in + RVD|FILE) + LOGGING_HANDLER=$2 + ;; + *) + echo "invalid arguments: handler should be one of RVD|FILE" + exit 1 + ;; + esac + fi + RVD_LOG_LEVEL=$1 + OVERRIDE=true + createHandler + createLoggers + ;; + *) + echo "invalid arguments: level should be one of FATAL|ERROR|WARN|INFO|DEBUG|TRACE|ALL|OFF" + exit 1 + ;; + esac + +fi + +# format output if any update happened +if [ "$XML_UPDATED" = true ] +then + formatXml + echo "$STANDALONE_SIP updated" +fi + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh new file mode 100755 index 0000000000..2497dc9a13 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-rvd.sh @@ -0,0 +1,92 @@ +#!/bin/bash +## +## Configures rvd.xml based on global configuration options in restcomm.conf and advanced.conf. +## +## usage: +## +## ./config-rvd-logging.sh - adds handler and logger (INFO) elements if missing +## ./config-rvd-logging.sh DEBUG - creates or updates loggers by setting level to DEBUG +## ./config-rvd-logging.sh DEBUG FILE - creates or updates loggers (DEBUG) but also configures them to use the 'FILE' periodic handler (main restcomm log) +## +## requirements: +## +## RESTCOMM_HOME env variable to be set +## rvd.xml should be in place (under $RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war) +## +## Author: otsakir@gmail.com - Orestis Tsakiridis + +# Variables +RVD_ROOT=$RESTCOMM_HOME/standalone/deployments/restcomm-rvd.war +RVD_XML_FILE=$RVD_ROOT/WEB-INF/rvd.xml + +updateVideoSupport() { + matchesCount=`xmlstarlet sel -t -v "count(/rvd/videoSupport)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/videoSupport" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "videoSupport" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi +} + +updateMaxMediaFileSize() { + matchesCount=`xmlstarlet sel -t -v "count(/rvd/maxMediaFileSize)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/maxMediaFileSize" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "maxMediaFileSize" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi +} + +# $1 is RVD_HTTP_TIMEOUT +updateHttpTimeout() { + if [ -z $1 ]; then + xmlstarlet ed -P -d "/rvd/defaultHttpTimeout" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + echo "disabled defaultHttpTimeout option"; + else + matchesCount=`xmlstarlet sel -t -v "count(/rvd/defaultHttpTimeout)" "$RVD_XML_FILE"` + if [ $matchesCount -ge 1 ]; then + xmlstarlet ed -P -u "/rvd/defaultHttpTimeout" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + else + xmlstarlet ed -P -s "/rvd" -t elem -n "defaultHttpTimeout" -v "$1" "$RVD_XML_FILE" > ${RVD_XML_FILE}_tmp + mv ${RVD_XML_FILE}_tmp ${RVD_XML_FILE} + fi + echo "set defaultHttpTimeout to $1" + fi +} + +# MAIN + +if [[ "$RVD_UNDEPLOY" = true || "$RVD_UNDEPLOY" = TRUE || "$RVD_UNDEPLOY" = True ]]; then + echo "Skipping RVD configuration since it's not deployed" +else + if [ -z "$RESTCOMM_HOME" ] + then + echo "RESTCOMM_HOME env variable not set. Aborting." + exit 1 + fi + if [ ! -f "$RVD_XML_FILE" ] + then + echo "rvd.xml not found. Aborting." + return + fi + + echo "Configuring RVD" + + if [[ "$RVD_VIDEO_SUPPORT" = true || "$RVD_VIDEO_SUPPORT" = TRUE || "$RVD_VIDEO_SUPPORT" = True ]] ; then + updateVideoSupport true + else + updateVideoSupport false + fi + updateMaxMediaFileSize "$RVD_MAX_MEDIA_FILE_SIZE" + + updateHttpTimeout "$RVD_HTTP_TIMEOUT" + + + echo "Updated rvd.xml" +fi \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh new file mode 100755 index 0000000000..b0e86b523e --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-sip-connectors.sh @@ -0,0 +1,160 @@ +#!/bin/bash +## Description: Configures SIP connectors +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## Author : Pavel Slegr (pavel.slegr@telestax.com) + +## Description: Configures the connectors for RestComm & configures Proxy if enabled +## Parameters : 1.Public IP +configConnectors() { + FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + static_address="$1" + + #delete additional connectors if any added to erlier run of the script. + if grep -q "" $FILE + then + echo "Additional Connectors Created earlier, going to delete the connectors" + sed '//,//d' $FILE > $FILE.bak + mv $FILE.bak $FILE + else + echo "Additional Connectors not Created earlier" + fi + + #IF LB activated. (Algorithm "use-load-balancer" used). + if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + if [ -z "$LB_INTERNAL_IP" ]; then + LB_INTERNAL_IP=$LB_PUBLIC_IP + fi + sed -e "s|path-name=\"org.mobicents.ext\" \(app-dispatcher-class=.*\)|path-name=\"org.mobicents.ha.balancing.only\" \1|" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + + else + + #Check for Por Offset + local SIP_PORT_UDP=$((SIP_PORT_UDP + PORT_OFFSET)) + local SIP_PORT_TCP=$((SIP_PORT_TCP + PORT_OFFSET)) + local SIP_PORT_TLS=$((SIP_PORT_TLS + PORT_OFFSET)) + local SIP_PORT_WS=$((SIP_PORT_WS + PORT_OFFSET)) + local SIP_PORT_WSS=$((SIP_PORT_WSS + PORT_OFFSET)) + + sed -e "s|path-name=\".*\" \(app-dispatcher-class=.*\)|path-name=\"org.mobicents.ext\" \1|" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + fi + mv $FILE.bak $FILE + echo 'Configured SIP Connectors and Bindings' + + + #Enable SipServlet statistics + grep -q 'gather-statistics' $FILE || sed -i "s|congestion-control-interval=\".*\"|& gather-statistics=\"true\"|" $FILE + echo "Configured gather-statistics" +} + +#Socket Binding configuration for standalone-sip.xml +configSocketbinding() { +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml + + #delete additional bindings if any added to erlier run of the script. + if grep -q "" $FILE + then + echo "Additional Bindings Created earlier, going to delete the old bindings" + sed '//,//d' $FILE > $FILE.bak + mv $FILE.bak $FILE + else + echo "Additional Bindings not Created earlier" + fi + + #check for port offset + sed -i "s|\port-offset=\".*\"|port-offset=\"${PORT_OFFSET}\"|" $FILE + + sed -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + -e "s|||" \ + $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setMoreConnectors(){ +flag1=false +flag2=false + for i in $( set -o posix ; set | grep ^ADDITIONAL_CONNECTOR_ | sort -rn ); do + connector=$(echo ${i} | cut -d = -f2 | cut -d _ -f2 | cut -d : -f1) + port=$(echo ${i} | cut -d = -f2 | cut -d _ -f2 | cut -d : -f2) + if [ "$flag1" = false ] ; then + setInitialSign + flag1=true + fi + addConector $connector $port + addSocketBinding $connector $port + echo "Configuring log level for: $connector -> $port" + flag2=true + done + + if [ "$flag2" = true ] ; then + setFinalSign + fi +} + +addConector(){ +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +connector=$1 +port=$2 + + #check for port offset at the new connectors. + local port=$((port + PORT_OFFSET)) + grep -q "connector name=\"${connector}\"" $FILE || sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + + mv $FILE.bak $FILE + echo 'Configured additional SIP Connectors and Bindings' +} + +addSocketBinding(){ +FILE=$RESTCOMM_HOME/standalone/configuration/standalone-sip.xml +connector=$1 +port=$2 + + grep -q "socket-binding name=\"${connector}\"" $FILE || sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setInitialSign(){ + sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + mv $FILE.bak $FILE + + sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +setFinalSign(){ + sed -e "/path-name=\"org.mobicents.ext\"/a\ + " $FILE > $FILE.bak + + mv $FILE.bak $FILE + sed "/name=\"management-https\"/a " $FILE > $FILE.bak + mv $FILE.bak $FILE +} + +#MAIN +echo 'Configuring Application Server...' +configSocketbinding +configConnectors "$PUBLIC_IP" +if [ "$ACTIVATE_LB" == "true" ] || [ "$ACTIVATE_LB" == "TRUE" ]; then + echo "can not set additional connectors under LB." +else + setMoreConnectors +fi +echo 'Finished configuring Application Server!' diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh new file mode 100755 index 0000000000..5816553435 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-utensil.sh @@ -0,0 +1,155 @@ +#!/bin/bash +## +## Description: Configures RestComm +## Author: Henrique Rosa (henrique.rosa@telestax.com) +## Author: Pavel Slegr (pavel.slegr@telestax.com) +## Authos: Lefteris Banos (eleftherios.banos@telestax.com) + +# VARIABLES +RESTCOMM_BIN=$RESTCOMM_HOME/bin +RESTCOMM_DEPLOY=$RESTCOMM_HOME/standalone/deployments/restcomm.war + +configS3Bucket() { + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + + if [[ "$ACTIVATE_S3_BUCKET" == "true" || "$ACTIVATE_S3_BUCKET" == "TRUE" ]]; then + echo "S3_BUCKET_NAME $S3_BUCKET_NAME S3_ACCESS_KEY $S3_ACCESS_KEY S3_SECURITY_KEY $S3_SECURITY_KEY" + sed -e "// { + N; s|.*|true| + N; s|.*|${S3_BUCKET_NAME}| + N; s|.*|${S3_FOLDER_NAME}| + N; s|.*|${S3_ACCESS_KEY}| + N; s|.*|${S3_SECURITY_KEY}| + }" $FILE > $FILE.bak; + mv $FILE.bak $FILE + + if [ -n "$S3_BUCKET_REGION" ]; then + echo "S3_BUCKET_REGION $S3_BUCKET_REGION" + sed -e "s|.*|${S3_BUCKET_REGION}|" $FILE > $FILE.bak; + mv $FILE.bak $FILE + fi + else + sed -e "// { + N; s|.*|false| + N; s|.*|| + N; s|.*|| + N; s|.*|| + }" $FILE > $FILE.bak; + mv $FILE.bak $FILE + fi +} + +initUserPassword(){ + SQL_FILE=$RESTCOMM_DEPLOY/WEB-INF/data/hsql/restcomm.script + if [ -n "$INITIAL_ADMIN_USER" ]; then + # change admin user + if grep -q "uninitialized" $SQL_FILE; then + echo "Update Admin user" + sed -i "s/administrator@company.com/${INITIAL_ADMIN_USER}/g" $SQL_FILE + else + echo "Adminitrator User Already changed" + fi + fi + + if [ -n "$INITIAL_ADMIN_PASSWORD" ]; then + # change admin password + if grep -q "uninitialized" $SQL_FILE; then + PASSWORD_ENCRYPTED=`echo -n "${INITIAL_ADMIN_PASSWORD}" | md5sum |cut -d " " -f1` + #echo "Update password to ${INITIAL_ADMIN_PASSWORD}($PASSWORD_ENCRYPTED)" + sed -i "s/uninitialized/active/g" $SQL_FILE + sed -i "s/77f8c12cc7b8f8423e5c38b035249166/$PASSWORD_ENCRYPTED/g" $SQL_FILE + sed -i "s/2012-04-24 00:00:00.000000000/`echo "$(date +'%Y-%m-%d %H:%M:%S.%N')"`/" $SQL_FILE + sed -i "s/2012-04-24 00:00:00.000000000/`echo "$(date +'%Y-%m-%d %H:%M:%S.%N')"`/" $SQL_FILE + else + echo "Adminitrator Password Already changed" + fi + fi +} + +configSMTP(){ + FILE=$RESTCOMM_DEPLOY/WEB-INF/conf/restcomm.xml + if [[ -z $SMTP_USER || -z $SMTP_PASSWORD || -z $SMTP_HOST ]]; then + echo 'one or more variables are undefined' + echo 'Not possible to continue with SMTP configuration' + + else + echo "SMTP_USER $SMTP_USER SMTP_PASSWORD $SMTP_PASSWORD SMTP_HOST $SMTP_HOST" + sed -i "// { + N; s|.*|${SMTP_HOST}| + N; s|.*|${SMTP_USER}| + N; s|.*|${SMTP_PASSWORD}| + N; s|.*|${SMTP_PORT}| + }" $FILE + + sed -i "// { + N; s|.*|${SMTP_HOST}| + N; s|.*|${SMTP_USER}| + N; s|.*|${SMTP_PASSWORD}| + N; s|.*|${SMTP_PORT}| + }" $FILE + fi +} + +configMonitoring(){ + if [ -z ${GRAYLOG_SERVER} ]; then + echo "Graylog Monitoring is not configured"; + crontab -l 2>/dev/null > mycron + crontab -l | grep -q 'HDmonitor' && sed -i '/HDmonitor/d' mycron + crontab -l | grep -q 'RMSJVMonitor' && sed -i '/RMSJVMonitor/d' mycron + crontab -l | grep -q 'RCJVMonitor' && sed -i '/RCJVMonitor/d' mycron + crontab -l | grep -q 'SERVERAMonitor' && sed -i '/SERVERAMonitor/d' mycron + #install new cron file + crontab mycron + rm mycron + + else + echo "GRAYLOG_SERVER is: $GRAYLOG_SERVER"; + + #write out current crontab RMSJVMonitor + crontab -l 2>/dev/null > mycron + + #echo new cron into cron file + crontab -l | grep -q 'MAILTO=""' && echo 'entry exists' || echo "MAILTO=\"\"" >> mycron + if [[ "$HD_MONITOR" == "false" || "$HD_MONITOR" == "FALSE" ]]; then + sed -i '/HDmonitor/d' mycron + echo "HD_MONITOR: $HD_MONITOR" + else + crontab -l | grep -q 'Graylog_Monitoring.sh HDmonitor' && echo 'entry exists' || echo "*/30 * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh HDmonitor" >> mycron; + fi + + if [[ "$RMSJVM_MONITOR" == "false" || "$RMSJVM_MONITOR" == "FALSE" ]]; then + sed -i '/RMSJVMonitor/d' mycron + echo "RMSJVM_MONITOR: $RMSJVM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh RMSJVMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh RMSJVMonitor" >> mycron; + fi + + if [[ "$RCJVM_MONITOR" == "false" || "$RCJVM_MONITOR" == "FALSE" ]]; then + sed -i '/RCJVMonitor/d' mycron + echo "RCJVM_MONITOR: $RCJVM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh RCJVMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh RCJVMonitor" >> mycron; + fi + + if [[ "$RAM_MONITOR" == "false" || "$RAM_MONITOR" == "FALSE" ]]; then + sed -i '/SERVERAMonitor/d' mycron + echo "RAM_MONITOR: $RAM_MONITOR"; + else + crontab -l | grep -q 'Graylog_Monitoring.sh SERVERAMonitor' && echo 'entry exists' || echo "* * * * * $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh SERVERAMonitor" >> mycron; + fi + + #install new cron file + crontab mycron + rm mycron + + #set Server Label + sed -i "s|SERVERLABEL=.*|SERVERLABEL=\"${SERVERLABEL}\"|" $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh; + sed -i "s|GRAYLOG_SERVER=.*|GRAYLOG_SERVER=\"${GRAYLOG_SERVER}\"|" $RESTCOMM_BIN/restcomm/monitoring/Graylog_Monitoring.sh; + fi +} + +# MAIN +configS3Bucket +initUserPassword +configSMTP +configMonitoring diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh new file mode 100755 index 0000000000..454c5dca4d --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfigure.sh @@ -0,0 +1,35 @@ +#! /bin/bash + +## Description: Executes all RestComm configuration scripts for a given version. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +autoconfigure() { + local BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + + ## We want this file to be executed last since its contains xmlstarlet based config script + ## https://telestax.atlassian.net/browse/RESTCOMM-1140 + local LAST_FILE_TO_BE_EXECUTED=$BASEDIR/autoconfig.d/config-restcomm.sh + + # load configuration values + #source $BASEDIR/restcomm.conf + echo '' + echo 'RestComm automatic configuration started:' + echo "LAST_FILE_TO_BE_EXECUTED is: $LAST_FILE_TO_BE_EXECUTED" + for f in $BASEDIR/autoconfig.d/*.sh; do + echo "Executing configuration file $f..." + if [ "$f" != "$LAST_FILE_TO_BE_EXECUTED" ]; then + source $f + echo "Finished executing configuration file $f!" + echo '' + fi + done + + source $LAST_FILE_TO_BE_EXECUTED + echo "Finished executing configuration file $LAST_FILE_TO_BE_EXECUTED!" + echo '' + + echo 'RestComm automatic configuration finished!' + echo '' +} + +autoconfigure \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh new file mode 100755 index 0000000000..58b00dc67b --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/collect_jmap.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +## Author : George Vagenas +# + +##Global Parameters +DATE=$(date +%F_%H_%M) +DIR_NAME=restcomm_$DATE +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +JMAP_DIR=$BASEDIR/$DIR_NAME + +JMAP="true" +DTAR="true" + +## +## FUNCTIONS +## +getPID(){ + RESTCOMM_PID=" " + RMS_PID="" + + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + +} + +restcomm_jmap(){ +if [[ -z "$RESTCOMM_PID" ]]; then + getPID +fi + +if [[ -z "$RESTCOMM_PID" ]]; then + echo "Please make sure that RestComm is running..." + else + echo "****************************************************************" > $JMAP_DIR/restcomm_mem + echo "GC Histogram before GC.run" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + jcmd $RESTCOMM_PID GC.class_histogram | grep org.restcomm.connect >> $JMAP_DIR/restcomm_mem + + jcmd $RESTCOMM_PID GC.run + sleep 5 + + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + echo "GC Histogram after GC.run" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + jcmd $RESTCOMM_PID GC.class_histogram | grep org.restcomm.connect >> $JMAP_DIR/restcomm_mem + + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + echo "JVMTop" >> $JMAP_DIR/restcomm_mem + echo "****************************************************************" >> $JMAP_DIR/restcomm_mem + $BASEDIR/jvmtop.sh -n 1 >> $JMAP_DIR/restcomm_mem + + jmap -dump:live,format=b,file=restcomm_jmap_$DATE.bin $RESTCOMM_PID + mv restcomm_jmap_$DATE.bin $JMAP_DIR + fi + +} + +rms_jmap(){ +if [[ -z "$RMS_PID" ]]; then + getPID +fi + +if [[ -z "$RMS_PID" ]]; then + echo "Please make sure that Mediaserver is running..." + else + jcmd $RMS_PID GC.run + sleep 2 + jmap -dump:live,format=b,file=rms_jmap_$DATE.bin $RMS_PID + mv rms_jmap_$DATE.bin $JMAP_DIR + fi +} + +make_tar() { + if [ -d "$JMAP_DIR" ]; then + echo TAR_FILE : $JMAP_DIR.tar.gz + tar -zcf $JMAP_DIR.tar.gz -C $JMAP_DIR . 3>&1 1>&2 2>&3 + rm -rf $JMAP_DIR + return 0 + fi + exit 1 +} + +mkdir $JMAP_DIR +restcomm_jmap +rms_jmap +make_tar diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh new file mode 100755 index 0000000000..2c934ea154 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/gsed_macos.sh @@ -0,0 +1,6 @@ +#!/bin/bash +## Description: Change 'sed' to 'gsed' for MacOS users in order for the autoconfig scripts to work properly +## Prerequisites: Install gnu-sed using homebrew (brew install gnu-sed) +## Author: George Vagenas +gsed -i 's/sed/gsed/g' ./*.sh +gsed -i 's/sed/gsed/g' ./autoconfig.d/*.sh diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh new file mode 100755 index 0000000000..32aa5305b2 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/jvmtop.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# jvmtop - java monitoring for the command-line +# launch script +# +# author: Markus Kolb +# + +DIR=`cd "\`dirname "$0"\`" && pwd` + +if [ -z "$JAVA_HOME" ] ; then + JAVA_HOME=`readlink -f \`which java 2>/dev/null\` 2>/dev/null | \ + sed 's/\/bin\/java//'` +fi + +TOOLSJAR="$JAVA_HOME/../lib/tools.jar" + +if [ ! -f "$TOOLSJAR" ] ; then + echo "$JAVA_HOME seems to be no JDK!" >&2 + exit 1 +fi + +"$JAVA_HOME"/bin/java $JAVA_OPTS -cp "$DIR/jvmtop.jar:$TOOLSJAR" \ +com.jvmtop.JvmTop "$@" +exit $? diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh new file mode 100755 index 0000000000..f253f176be --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/logs_collect.sh @@ -0,0 +1,206 @@ +#!/bin/bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +# +DATE=$(date +%F_%H_%M) +DIR_NAME=restcomm_$DATE +RESTCOMM_CORE_FILE=server.log +MEDIASERVER_FILE=server.log +SYSLOGS_DIR=/var/log +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_LOG_BASE=$(cd $BASEDIR/../../ && pwd) +RESTCOMM_CORE_LOG=$RESTCOMM_LOG_BASE/standalone/log +RVD_LOG=$RESTCOMM_LOG_BASE/standalone/log/rvd +RVD_LOG_FILE=rvd.log +MMS_LOGS=$RESTCOMM_LOG_BASE/mediaserver/log +LOGS_DIR_ZIP=$BASEDIR/$DIR_NAME + +restcomm_logs () { + if [ -f $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE ]; then + cp $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE $LOGS_DIR_ZIP/restcomm_server.log + fi +} +restcomm_logs_bytime () { + if [ -f $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE ]; then + IN=$1 + IFS="," + arr=($IN) + unset IFS + FROM=`grep -n "^${arr[0]}" $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE |cut -f1 -d: | tail -1` + TO=`grep -n "^${arr[1]}" $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE |cut -f1 -d: | tail -1` + awk 'NR=="'"$FROM"'", NR=="'"$TO"'"; NR=="'"$TO"'" {print; exit}' $RESTCOMM_CORE_LOG/$RESTCOMM_CORE_FILE > $LOGS_DIR_ZIP/RestCommlinesTime.log + fi +} +rvd_logs () { + if [ -f $RVD_LOG/$RVD_LOG_FILE ]; then + cp $RVD_LOG/$RVD_LOG_FILE $LOGS_DIR_ZIP/rvd_server.log + fi +} +mediaserver_logs () { + if [ -f $MMS_LOGS/$MEDIASERVER_FILE ]; then + cp $MMS_LOGS/$MEDIASERVER_FILE $LOGS_DIR_ZIP/mms_server.log + fi +} +system_logs () { + if [ -f $SYSLOGS_DIR/messages ]; then + cp $SYSLOGS_DIR/messages $LOGS_DIR_ZIP/ + fi + if [ -f $SYSLOGS_DIR/syslog ]; then + cp $SYSLOGS_DIR/syslog $LOGS_DIR_ZIP/ + fi +} +JVM_perfo_stats () { + if [ -n "$RESTCOMM_PID" ]; then + jstack -l $RESTCOMM_PID > $LOGS_DIR_ZIP/restcomm_jstack_trace_$DATE + fi + if [ -n "$RMS_PID" ]; then + jstack -l $RMS_PID > $LOGS_DIR_ZIP/mms_jstack_trace_$DATE + fi +} +system_usage_info () { + echo "---top:" > $LOGS_DIR_ZIP/usage_stats_$DATE + echo CPU\(s\): `top -b -n1 | grep "Cpu(s)" | awk '{print $2" : " $4}'` >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo >> $LOGS_DIR_ZIP/usage_stats_$DATE + top -b -n1 | grep Mem >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo "---free:" >> $LOGS_DIR_ZIP/usage_stats_$DATE + free >> $LOGS_DIR_ZIP/usage_stats_$DATE + echo "---df:" >> $LOGS_DIR_ZIP/usage_stats_$DATE + df -h >> $LOGS_DIR_ZIP/usage_stats_$DATE + ps aux > $LOGS_DIR_ZIP/top_$DATE +} +jvm_process_info () { + if [ -n "$RESTCOMM_PID" ]; then + echo "----------------------- restcomm ---------------------------" > $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnew $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Space Size-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnewcapacity $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------Garbage-collected heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gc $RESTCOMM_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + fi + if [ -n "$RMS_PID" ]; then + echo "----------------------- mediaserver ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "-------- New Generation Heap -------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnew $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------New Generation Space Size-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gcnewcapacity $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "--------Garbage-collected heap-------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + jstat -gc $RMS_PID >> $LOGS_DIR_ZIP/jvm_process_$DATE + fi + echo "--------------------------------- ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo "----------------------- More INFO ---------------------------" >> $LOGS_DIR_ZIP/jvm_process_$DATE + echo " http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html " >> $LOGS_DIR_ZIP/jvm_process_$DATE +} +LWP_threads_logs () { + pat=`ps -ef | grep java | grep -v grep | awk '{print $2}'` + ps -eLo pid,lwp,nlwp,ruser,pcpu,stime,etime,args | grep -F "${pat}" > $LOGS_DIR_ZIP/lwpthread_$DATE.txt + return 0 +} +netstat_stats () { + echo "----------------------- netstat -s ---------------------------" > $LOGS_DIR_ZIP/netstat_stats_$DATE + netstat -s >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo >> $LOGS_DIR_ZIP/netstat_stats_$DATE + echo "----------------------- netstat -anp ---------------------------" >> $LOGS_DIR_ZIP/netstat_stats_$DATE + netstat -anp >> $LOGS_DIR_ZIP/netstat_stats_$DATE +} +make_tar () { + echo TAR_FILE : $LOGS_DIR_ZIP.tar.gz + tar -zcf $LOGS_DIR_ZIP.tar.gz -C $LOGS_DIR_ZIP . 3>&1 1>&2 2>&3 + rm -rf $LOGS_DIR_ZIP +} +set_info() { + echo "$1" > $LOGS_DIR_ZIP/issue_info.txt +} +jvm_top() { + ./jvmtop.sh --once > $LOGS_DIR_ZIP/jvm_top.txt +} +sys_date() { + echo `date` > $LOGS_DIR_ZIP/sys_date.txt +} +getPID(){ + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + if [[ -z "$RESTCOMM_PID" ]]; then + echo "RestComm is not Running, will try to collect all available logs" + fi + if [[ -z "$RMS_PID" ]]; then + echo "RMS is not Running, will try to collect all available logs" + fi +} +usage () { + cat << EOF +Usage: logs_collect.sh +options: +-m : optional message of the problem. +-t : Restcomm log file time extractor (e.g "06:20:0*,06:23:0*"). +-h : prints this message +-z : Create .tar file +EOF + exit 1 +} +#MAIN +tflag=false +zflag=false +TEMP=`getopt --long -o ":t:m:hz" "$@"` +eval set -- "$TEMP" +while true ; do + case "$1" in + -m ) + mkdir -p $LOGS_DIR_ZIP + set_info "$2" + shift 2 + ;; + -t ) + tflag=true + var=$2 + shift 2 + ;; + -z ) + zflag=true + break + ;; + -h ) + usage + ;; + *) + break + ;; + esac +done; +if [ ! -e $LOGS_DIR_ZIP ]; then + echo "create DIR $LOGS_DIR_ZIP" + mkdir -p $LOGS_DIR_ZIP +fi +if [ -d "$LOGS_DIR_ZIP" ]; then + getPID + restcomm_logs + rvd_logs + mediaserver_logs + system_logs + JVM_perfo_stats + jvm_process_info + LWP_threads_logs + system_usage_info + netstat_stats + jvm_top + sys_date + if $tflag ; then + restcomm_logs_bytime $var + fi + if $zflag ; then + make_tar + fi +else + echo "Directory $LOGS_DIR_ZIP not created, going to exit." + exit 1 +fi diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh new file mode 100755 index 0000000000..9e28525f0e --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/monitoring/Graylog_Monitoring.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +SERVERLABEL="" +GRAYLOG_SERVER="" + +HDmonitor(){ + #Collect HD Data from Host + hdusage=`df -hP $PWD | awk '/[0-9]%/{print $(NF-1)}'` + #Send data to graylog + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"${hdusage}\""} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:5555/gelf -p0 -d ${message} +} + + +RCJVMonitor(){ + #FInd RMS process number + rcprocess=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + #Run JVMTOP + jvmvars=` $BASEDIR/../jvmtop.sh --once | grep ${rcprocess} | sed -e "s/ */ /g" | sed -e "s/%//g" | sed -e "s/m//g" | cut -f3,4,5,6,7,8 -d ' ' ` + #Send data to graylog + IFS=" " read HPCUR HPMAX NHCUR NHMAX CPU GC <<< $jvmvars + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"RC_JVM_STATS\"","\"_HPCUR\"":"${HPCUR}","\"_HPMAX\"":"${HPMAX}","\"_NHCUR\"":"${NHCUR}","\"_NHMAX\"":"${NHMAX}","\"_CPU\"":"${CPU}","\"_GC\"":"${GC}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:7777/gelf -p0 -d ${message} +} + + +RMSJVMonitor(){ + #FInd RMS process number + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + msprocess=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + + #Run JVMTOP + jvmvars=` $BASEDIR/../jvmtop.sh --once | grep ${msprocess} | sed -e "s/ */ /g" | sed -e "s/%//g" | sed -e "s/m//g" | cut -f3,4,5,6,7,8 -d ' ' ` + #Send data to graylog + IFS=" " read HPCUR HPMAX NHCUR NHMAX CPU GC <<< $jvmvars + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"MS_JVM_STATS\"","\"_HPCUR\"":"${HPCUR}","\"_HPMAX\"":"${HPMAX}","\"_NHCUR\"":"${NHCUR}","\"_NHMAX\"":"${NHMAX}","\"_CPU\"":"${CPU}","\"_GC\"":"${GC}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:7777/gelf -p0 -d ${message} +} + +SERVERAMonitor(){ + #Collect RAM from host data + MemTotal=`awk '( $1 == "MemTotal:" ) { print $2/1048576 }' /proc/meminfo` + MemFree=`awk '( $1 == "MemFree:" ) { print $2/1048576 }' /proc/meminfo` + Buffers=`awk '( $1 == "Buffers:" ) { print $2/1048576 }' /proc/meminfo` + Cache=`awk '( $1 == "Cached:" ) { print $2/1048576 }' /proc/meminfo` + SwapTotal=`awk '( $1 == "SwapTotal:" ) { print $2/1048576 }' /proc/meminfo` + SwapFree=`awk '( $1 == "SwapFree:" ) { print $2/1048576 }' /proc/meminfo` + + #Send data to graylog + message={"\"host\"":"\"${SERVERLABEL}\"","\"message\"":"\"Host_Heap\"","\"_MemTotal\"":"${MemTotal}","\"_MemFree\"":"${MemFree}","\"_Buffers\"":"${Buffers}","\"_Cache\"":"${Cache}","\"_SwapTotal\"":"${SwapTotal}","\"_SwapFree\"":"${SwapFree}"} + curl --connect-timeout 10 --max-time 15 -XPOST http://$GRAYLOG_SERVER:6666/gelf -p0 -d ${message} +} + +echo $1 +$1 diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh new file mode 100755 index 0000000000..90e9470a76 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/restart-restcomm.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +## +## Descript+ion: Script that collects all necessary system logs and data. +## Author : Lefteris Banos +# + +JMAP="false" + +## +## FUNCTIONS +## +getPID(){ + RESTCOMM_PID=" " + RMS_PID="" + + RESTCOMM_PID=$(jps | grep jboss-modules.jar | cut -d " " -f 1) + + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) + +} + +stopRestComm(){ + echo "...stoping RestComm" + ./stop-restcomm.sh + + while [[ ! -z "$RESTCOMM_PID" || ! -z "$RMS_PID" ]]; do + getPID + echo "...waiting RestComm and MS to stop" + sleep 2 + done +} + +startRestComm(){ + echo "...starting RestComm" + ./start-restcomm.sh +} + +#MAIN +# parse the flag options (and their arguments) +while getopts "hmz" OPT; do + case "$OPT" in + h) + echo "Description: Collects system data. The output is a compressed file." + echo " " + echo "restart-restcomm.sh [options]" + echo " " + echo "options:" + echo "-m collect jmap" + echo "now will jusr restart Restcomm right now" + echo "-h show brief help" + exit 0 + ;; + m) + JMAP="true" + ;; + now) + JMAP="false" + ;; + ?) + echo "Invalid option: $OPTARG" + echo "Type \"restart-restcomm.sh -help\" for instructions" + exit 1 ;; + esac +done + +# get rid of the just-finished flag arguments +shift $(($OPTIND-1)) + + +if [ "$JMAP" == "true" ]; then + echo "...JMAP files will be collected" + ./collect_jmap.sh +fi + +stopRestComm +sleep 2 +startRestComm diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh new file mode 100755 index 0000000000..e3acd40f3b --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/set-log-level.sh @@ -0,0 +1,114 @@ +#!/bin/bash +## Description: Set log_level on the fly +## Author: Lefteris Banos +##Using Jboss Command Line Interface - CLI (https://developer.jboss.org/wiki/CommandLineInterface) + + +# VARIABLES +BASE_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_BIN=$BASE_DIR/.. +CLIFILE=$BASE_DIR/log.cli + + +changelog() { + cat <> $CLIFILE + /subsystem=logging/logger=$1:write-attribute(name=level,value=$2) +EOT +} + +changelogROOT() { + cat <> $CLIFILE + /subsystem=logging/root-logger=$1:write-attribute(name=level,value=$2) +EOT +} + +changelogCONSOLE() { + cat <> $CLIFILE + /subsystem=logging/console-handler=$1:write-attribute(name=level,value=$2) +EOT +} + + +listlog(){ + cat <> $CLIFILE +/subsystem=logging/logger=org.mobicents.servlet.sip:read-resource +/subsystem=logging/logger=org.mobicents.servlet.sip.restcomm:read-resource +/subsystem=logging/logger=org.restcomm.connect:read-resource +/subsystem=logging/logger=gov.nist:read-resource +/subsystem=logging/console-handler=CONSOLE:read-resource +/subsystem=logging/root-logger=ROOT:read-resource +EOT +} + +if [ $# -eq 0 ] + then + arr="help" +else + arr=( "$@" ) +fi + +for compt in $arr + do + case "$compt" in + servlet) + COMPONENT=org.mobicents.servlet.sip + changelog $COMPONENT $2 + ;; + + govnist) + COMPONENT=gov.nist + changelog $COMPONENT $2 + ;; + siprestcomm) + COMPONENT=org.mobicents.servlet.sip.restcomm + changelog $COMPONENT $2 + ;; + restcomm) + COMPONENT=org.restcomm.connect + changelog $COMPONENT $2 + # update RVD's logging level too. TODO do this separately on 'rvd)' when docker scripts are updated too + COMPONENT=org.restcomm.connect.rvd.LOCAL + changelog $COMPONENT $2 + COMPONENT=org.restcomm.connect.rvd.GLOBAL + changelog $COMPONENT $2 + ;; + rvd) + COMPONENT=org.restcomm.connect.rvd.LOCAL + changelog $COMPONENT $2 + COMPONENT=org.restcomm.connect.rvd.GLOBAL + changelog $COMPONENT $2 + ;; + root) + COMPONENT=ROOT + changelogROOT $COMPONENT $2 + ;; + console) + COMPONENT=CONSOLE + changelogCONSOLE $COMPONENT $2 + ;; + list) + listlog + ;; + *) + echo "Usage: $0 \"servlet govnist siprestcomm restscomm console root\" DEBUG. Can also set each element individually" + echo "Usage: $0 list (To list the actual log levels)" + exit 1 + esac +done + + n=0 + until [ $n -ge 5 ] + do + n=$[$n+1] + $RESTCOMM_BIN/jboss-cli.sh --connect controller=127.0.0.1 --file="$CLIFILE" # substitute your command here + if [ $? -eq 0 ]; then echo "LOG level changed properly" && break; fi + + if [ $n -eq 5 ]; then echo "Command Fail.. please try again"; fi + sleep 2 + done + + + +rm $CLIFILE + + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh new file mode 100755 index 0000000000..cadee45e16 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-mediaserver.sh @@ -0,0 +1,19 @@ +#! /bin/bash + +## Description: Starts Media Server with auto-configuration. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +startMediaServer() { + local basedir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + local ms_conf=$basedir/mediaserver.conf + local ms_home=$RESTCOMM_HOME/mediaserver + + chmod +x $ms_home/*.sh + chmod +x $ms_home/.autoconfig/*.sh + chmod +x $ms_home/.autoconfig/autoconfig.d/*.sh + chmod +x $ms_home/bin/*.sh + + $ms_home/start-mediaserver.sh $ms_conf +} + +startMediaServer diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh new file mode 100755 index 0000000000..ae6ba7538e --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/start-restcomm.sh @@ -0,0 +1,165 @@ +#! /bin/bash +## +## Description: Starts RestComm with auto-configuration. +## +## Parameters : 1. Bind Address (default: 127.0.0.1) +## 2. Run Mode [standalone|standalone-lb|domain|domain-lb] (default:standalone) +## +## Author : Henrique Rosa +## +# set environment variables for execution +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_HOME=$(cd $BASEDIR/../../ && pwd) +MMS_HOME=$RESTCOMM_HOME/mediaserver +LB_HOME=$RESTCOMM_HOME/tools/sip-balancer + +## +## FUNCTIONS +## +startRestcomm() { + run_mode="$1" + bind_address="$2" + ExtraOpts="-Djboss.bind.address.management=127.0.0.1" + + # Check if RestComm is already running + if tmux ls | grep -q 'restcomm'; then + echo 'TelScale RestComm is already running on terminal session "restcomm"!' + exit 1; + fi + + if [ -n "$MGMT_PASS" ] && [ -n "$MGMT_USER" ]; then + echo "MGMT_PASS, MGMT_USER is set will be added to MGMNT configuration" + grep -q "$MGMT_USER" $RESTCOMM_HOME/standalone/configuration/mgmt-users.properties || $RESTCOMM_HOME/bin/add-user.sh "$MGMT_USER" "$MGMT_PASS" -s + #Management bind address + ExtraOpts="-Djboss.bind.address.management=$bind_address" + fi + + case $run_mode in + 'standalone'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + echo 'TelScale RestComm started running on standalone mode. Terminal session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + if [[ "$RUN_DOCKER" == "true" || "$RUN_DOCKER" == "TRUE" ]]; then + $RESTCOMM_HOME/bin/standalone.sh -b $bind_address "${ExtraOpts}" + else + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + fi + ;; + 'domain'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/domain.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/domain.sh -b $bind_address ${ExtraOpts}" + echo 'TelScale RestComm started running on domain mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + *) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + echo 'TelScale RestComm started running on standalone mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + esac + +} + +verifyDependencies() { + source $BASEDIR/verify-dependencies.sh +} + +loadConfigurationParams() { + source $BASEDIR/restcomm.conf + source $BASEDIR/advanced.conf +} + +## +## MAIN +## +verifyDependencies +loadConfigurationParams + +echo BASEDIR: $BASEDIR +echo RESTCOMM_HOME: $RESTCOMM_HOME + +# input parameters and default values +RUN_MODE='standalone' +BIND_ADDRESS='' + +while getopts "s:r:i:" optname +do + case "$optname" in + "s") + STATIC_ADDRESS="$OPTARG" + ;; + "r") + RUN_MODE="$OPTARG" + ;; + "i") + NET_INTERFACE="$OPTARG" + ;; + ":") + echo "No argument value for option $OPTARG" + exit 1 + ;; + "?") + echo "Unknown option $OPTARG" + exit 1 + ;; + *) + echo 'Unknown error while processing options' + exit 1 + ;; + esac +done + +# validate network interface and extract network properties +if [[ -z "$NET_INTERFACE" ]]; then +NET_INTERFACE='eth0' +echo "Looking for the appropriate interface" + NET_INTERFACES=$(ifconfig | expand | cut -c1-8 | sort | uniq -u | awk -F: '{print $1;}') + if [[ -z $(echo $NET_INTERFACES | sed -n "/$NET_INTERFACE/p") ]]; then + echo "The network interface $NET_INTERFACE is not available or does not exist." + echo "The list of available interfaces is: $NET_INTERFACES" + exit 1 + fi +fi + +# load network properties for chosen interface +if [[ -z "$PRIVATE_IP" || -z "$SUBNET_MASK" || -z "$NETWORK" || -z "$BROADCAST_ADDRESS" ]]; then +echo "Looking for the IP Address, subnet, network and broadcast_address" + source $BASEDIR/utils/read-network-props.sh "$NET_INTERFACE" +fi + +BIND_ADDRESS="$PRIVATE_IP" +BIND_NETWORK="$NETWORK" +BIND_SUBNET_MASK="$SUBNET_MASK" + +if [[ -z "$STATIC_ADDRESS" ]]; then + STATIC_ADDRESS=$BIND_ADDRESS +fi + +if [[ -z "$MEDIASERVER_EXTERNAL_ADDRESS" ]]; then + MEDIASERVER_EXTERNAL_ADDRESS="$STATIC_ADDRESS" +fi + +if [[ -z "$PUBLIC_IP" ]]; then + PUBLIC_IP=$STATIC_ADDRESS +fi + +if [[ -z "$SMS_OUTBOUND_PROXY" ]]; then + SMS_OUTBOUND_PROXY=$OUTBOUND_PROXY +fi + +# configure restcomm installation + +if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + source $BASEDIR/autoconfigure.sh +fi + +if [[ "$MS_EXTERNAL" == "false" || "$MS_EXTERNAL" == "FALSE" ]]; then + source $BASEDIR/start-mediaserver.sh +fi +# start restcomm in selected run mode +startRestcomm "$RUN_MODE" "$BIND_ADDRESS" +exit 0 diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh new file mode 100755 index 0000000000..a8f2904939 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-mediaserver.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +## Description: Stops Media Server running in a terminal session. +## Author : Henrique Rosa (henrique.rosa@telestax.com) + +stopMediaServer() { + local ms_home=$RESTCOMM_HOME/mediaserver + $ms_home/stop-mediaserver.sh +} + +stopMediaServer diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh new file mode 100755 index 0000000000..6c91d6232d --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/stop-restcomm.sh @@ -0,0 +1,26 @@ +#! /bin/bash +## +## Description: Stops RestComm and Media Server processes running on terminal sessions +## Authors : Henrique Rosa (henrique.rosa@telestax.com) +## + +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_HOME=$(cd $BASEDIR/../../ && pwd) +MS_HOME=$RESTCOMM_HOME/mediaserver + +stopMediaServer() { + source $BASEDIR/stop-mediaserver.sh +} + +stopRestComm() { + echo 'Shutting down RestComm...' + if tmux ls | grep -q 'restcomm'; then + tmux kill-session -t restcomm + echo '...stopped RestComm instance running on terminal session "restcomm"!' + else + echo '...restComm already stopped!' + fi +} + +stopMediaServer +stopRestComm diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh new file mode 100755 index 0000000000..096a496be7 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/utils/read-network-props.sh @@ -0,0 +1,48 @@ +#!/bin/bash +## +## Description : Utility script to find network properties +## Author : Henrique Rosa - henrique.rosa@telestax.com +## + +# VARIABLES +IP_ADDRESS_PATTERN="[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}" +INTERFACE="$1" + +## Description: Gets the private IP of the instance +## Parameters : none +getPrivateIP() { + echo "$INET_DATA" | grep -o "addr:$IP_ADDRESS_PATTERN" | awk -F: '{print $2}' +} + +## Description: Gets the broadcast address of the instance +## Parameters : none +getBroadcastAddress() { + echo "$INET_DATA" | grep "Bcast:$IP_ADDRESS_PATTERN" | awk '{print $3}' | awk -F: '{print $2}' +} + +## Description: Gets the Subnet Mask of the instance +## Parameters : none +getSubnetMask() { + /sbin/ifconfig $INTERFACE | grep "Mask:$IP_ADDRESS_PATTERN" | awk '{print $4}' | awk -F: '{print $2}' +} + +## Description: Gets the Network of the instance +## Parameters : 1.Private IP +## 2.Subnet Mask +getNetwork() { + #debian/ubuntu + NW=`ipcalc -n $1 $2 | grep -i "Network" | awk '{print $2}' | awk -F/ '{print $1}';` + if [[ -z "$NW" ]]; then + #rhel/centos/amazon + NW=`ipcalc -n $1 $2 | grep -i "Network" | awk -F= '{print $2}';` + fi + echo $NW +} + +# MAIN +INET_DATA=$(/sbin/ifconfig $INTERFACE | grep "inet ") + +PRIVATE_IP=$(getPrivateIP) +SUBNET_MASK=$(getSubnetMask) +NETWORK=$(getNetwork $PRIVATE_IP $SUBNET_MASK) +BROADCAST_ADDRESS=$(getBroadcastAddress) diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh new file mode 100755 index 0000000000..dbf06b3195 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/verify-dependencies.sh @@ -0,0 +1,56 @@ +#!/bin/bash +## Description: Verifies if all dependencies are installed. +## Author: Henrique Rosa (henrique.rosa@telestax.com) + +verifyJava() { + if [ -n "$(which java)" ]; then + if [ $(java -version 2>&1 | head -n 1 | cut -d'"' -f2 | cut -d'.' -f2) -ne "7" ]; then + echo "Only Java 1.7 required." + exit 1 + fi + else + echo "Java dependency is missing." + echo "CentOS/RHEL: java-1.7.0-openjdk-devel.x86_64" + echo "Debian/Ubuntu:" + echo " add-apt-repository ppa:openjdk-r/ppa" + echo " apt-get update" + echo " apt-get install openjdk-7-jdk" + echo "macOS: brew cask install java7" + exit 1 + fi +} + +verifyTmux() { + if [ -z "$(which tmux)" ]; then + echo "TMux dependency is missing." + echo "CentOS/RHEL: yum install tmux" + echo "Debian/Ubuntu: apt-get install tmux" + echo "macOS: brew install tmux" + exit 1 + fi +} + +verifyXmlstarlet() { + if [ -z "$(which xmlstarlet)" ]; then + echo "XML Starlet dependency is missing." + echo "CentOS/RHEL: yum install xmlstarlet" + echo "Debian/Ubuntu: apt-get install xmlstarlet" + echo "macOS: brew install xmlstarlet" + exit 1 + fi +} + +verifyIpcalc() { + if [ -z "$(which ipcalc)" ]; then + echo "IP Calc dependency is missing." + echo "CentOS/RHEL: yum install ipcalc" + echo "Debian/Ubuntu: apt-get install ipcalc" + echo "macOS: brew install ipcalc" + exit 1 + fi +} + +verifyJava +verifyTmux +verifyXmlstarlet +verifyIpcalc diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/docs/restcomm/README b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/docs/restcomm/README new file mode 100644 index 0000000000..e69f60bc40 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/docs/restcomm/README @@ -0,0 +1,2 @@ +For Restcomm documentation please visit +https://www.restcomm.com/docs/connect/index.html \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties new file mode 100644 index 0000000000..4027360c94 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/dars/mobicents-dar.properties @@ -0,0 +1,2 @@ +#Application Router Configuration +ALL=("RestComm","DAR\:From","ORIGINATING","","NO_ROUTE","0") diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties new file mode 100644 index 0000000000..a1309d2c75 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties @@ -0,0 +1,41 @@ +gov.nist.javax.sip.LOG_MESSAGE_CONTENT=true +gov.nist.javax.sip.LOG4J_LOGGER_NAME=gov.nist +gov.nist.javax.sip.TRACE_LEVEL=LOG4J +gov.nist.javax.sip.DEBUG_LOG=logs/mss-jsip-debuglog.txt +gov.nist.javax.sip.SERVER_LOG=logs/mss-jsip-messages.xml +javax.sip.STACK_NAME=Restcomm-SIP-Servlets +javax.sip.AUTOMATIC_DIALOG_SUPPORT=off +gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY=true +gov.nist.javax.sip.THREAD_POOL_SIZE=64 +gov.nist.javax.sip.REENTRANT_LISTENER=true +# prevent DOS attacks +gov.nist.javax.sip.MAX_LISTENER_RESPONSE_TIME=120 +gov.nist.javax.sip.MAX_MESSAGE_SIZE=40000 +# setting up the buffer size to reduce retransmissions and avoid loosing messages +gov.nist.javax.sip.RECEIVE_UDP_BUFFER_SIZE=131072 +gov.nist.javax.sip.SEND_UDP_BUFFER_SIZE=131072 +gov.nist.javax.sip.AGGRESSIVE_CLEANUP=true +gov.nist.javax.sip.MAX_FORK_TIME_SECONDS=0 +# set to true so that the stack do more validation on dialog, +# but won't work on chained applications so false by default +gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING=false +gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY=gov.nist.javax.sip.stack.NioMessageProcessorFactory +org.mobicents.servlet.sip.USER_AGENT_HEADER=Restcomm ${project.version} +org.mobicents.servlet.sip.SERVER_HEADER=Restcomm ${project.version} +#Uncomment the following line to enable Congestion Control +#gov.nist.javax.sip.SIP_MESSAGE_VALVE=org.mobicents.ext.javax.sip.congestion.CongestionControlMessageValve +org.mobicents.ext.javax.sip.congestion.SIP_SCANNERS= +org.mobicents.ext.javax.sip.congestion.CONGESTION_CONTROL_MONITOR_INTERVAL=-1 +#org.mobicents.ext.javax.sip.congestion.MEMORY_THRESHOLD", "85"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_MEMORY_THRESHOLD", "80"); +#org.mobicents.ext.javax.sip.congestion.CPU_PROCESS_THRESHOLD", "85"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_CPU_PROCESS_THRESHOLD", "80"); +#org.mobicents.ext.javax.sip.congestion.SERVER_TRANSACTIONS_THRESHOLD", "15000"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_SERVER_TRANSACTIONS_THRESHOLD", "10000"); +#org.mobicents.ext.javax.sip.congestion.DIALOGS_THRESHOLD", "200000"); +#org.mobicents.ext.javax.sip.congestion.BACK_TO_NORMAL_DIALOGS_THRESHOLD", "180000"); +#Uncomment the following line to work with the Mobicents Load Balancer +#org.mobicents.ha.javax.sip.BALANCERS=127.0.0.1 +org.mobicents.ha.javax.sip.LOCAL_HTTP_PORT=8080 +org.mobicents.ha.javax.sip.LOCAL_SSL_PORT=8443 +#org.mobicents.ha.javax.sip.REACHABLE_CHECK= diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/olympus.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-management.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm-rvd.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/standalone/deployments/restcomm.war.dodeploy @@ -0,0 +1 @@ + diff --git a/release/restcomm-assembly-as7/src/main/resources/descriptor.xml b/release/restcomm-assembly-as7/src/main/resources/descriptor.xml new file mode 100644 index 0000000000..c7760910ff --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/resources/descriptor.xml @@ -0,0 +1,67 @@ + + assembly + + zip + + Restcomm-JBoss-AS7-${project.version} + + + + ${project.build.directory}/dependency/restcomm-sip-servlets-${sipservletapi.version}-jboss-as-7.2.0.Final + / + + + standalone/configuration/dars/mobicents-dar.properties + standalone/configuration/mss-sip-stack.properties + + + + + ${project.build.directory}/dependency/restcomm-media-server + /mediaserver + + + + ${project.basedir}/src/main/resources/assembly-resources + / + + + + + /standalone/deployments + false + restcomm-rvd.war + + org.restcomm:restcomm-connect-rvd + + + + /standalone/deployments + false + olympus.war + + org.mobicents.webrtc:webrtc-ui + + + + + /standalone/deployments/restcomm.war + true + + org.restcomm:restcomm-connect.application + + + + false + /standalone/deployments + restcomm-management.war + + org.restcomm:restcomm-connect-management + + + + + + From c3a33f797664b4509b78844afb3528062e74ac17 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 12:49:55 +0200 Subject: [PATCH 13/41] replace version using maven filtering (cherry picked from commit 50915fa) --- .../standalone/configuration/mss-sip-stack.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties index d677a45474..a1309d2c75 100644 --- a/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties +++ b/release/restcomm-assembly-wildfly10/src/main/resources/assembly-resources/standalone/configuration/mss-sip-stack.properties @@ -20,8 +20,8 @@ gov.nist.javax.sip.MAX_FORK_TIME_SECONDS=0 # but won't work on chained applications so false by default gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING=false gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY=gov.nist.javax.sip.stack.NioMessageProcessorFactory -org.mobicents.servlet.sip.USER_AGENT_HEADER=Restcomm MAJOR_VERSION_NUMBER.BUILD_NUMBER -org.mobicents.servlet.sip.SERVER_HEADER=Restcomm MAJOR_VERSION_NUMBER.BUILD_NUMBER +org.mobicents.servlet.sip.USER_AGENT_HEADER=Restcomm ${project.version} +org.mobicents.servlet.sip.SERVER_HEADER=Restcomm ${project.version} #Uncomment the following line to enable Congestion Control #gov.nist.javax.sip.SIP_MESSAGE_VALVE=org.mobicents.ext.javax.sip.congestion.CongestionControlMessageValve org.mobicents.ext.javax.sip.congestion.SIP_SCANNERS= From d6359b8f49ed23a06d01d40afa0c25cfad0ec943 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Fri, 9 Mar 2018 12:50:10 +0200 Subject: [PATCH 14/41] removed wild10 from parent depends (cherry picked from commit 168fd77) --- release/pom.xml | 10 ++-------- release/restcomm-assembly-wildfly10/pom.xml | 1 + 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/release/pom.xml b/release/pom.xml index 20beba8365..bebdc9bf30 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -22,13 +22,6 @@ [1.1,1.1.999) war - - org.mobicents.servlet.sip - sip-servlets-wildfly-10 - ${sipservletapi.version} - zip - assembly - org.mobicents.media media-server-standalone @@ -52,9 +45,10 @@ + restcomm-assembly-as7 restcomm-assembly-wildfly10 diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index 9a1930a639..0de8d9e86d 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -55,6 +55,7 @@ org.mobicents.servlet.sip sip-servlets-wildfly-10 + ${sipservletapi.version} zip assembly From b966299d390f09a782a4eadf9ad66f050cee1384 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Tue, 20 Mar 2018 01:39:42 +0200 Subject: [PATCH 15/41] filterign resources vefore including (cherry picked from commit fbcdd54) --- release/restcomm-assembly-wildfly10/pom.xml | 8 +++++++- .../src/main/resources/descriptor.xml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index 0de8d9e86d..f2a3d095ef 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -7,7 +7,7 @@ 9.0.0-SNAPSHOT assembly-wildfly10 - pom + jar UTF-8 3.2.0-89 @@ -38,6 +38,12 @@ + + + src/main/resources + true + + org.apache.maven.plugins diff --git a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml index 9441f9295d..c48601416a 100644 --- a/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml +++ b/release/restcomm-assembly-wildfly10/src/main/resources/descriptor.xml @@ -24,7 +24,7 @@ - ${project.basedir}/src/main/resources/assembly-resources + ${project.build.directory}/classes/assembly-resources / From c0d859a501017129e7863dfe869e21087389bf68 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Tue, 20 Mar 2018 14:05:20 +0200 Subject: [PATCH 16/41] using assembly filterign instead (cherry picked from commit 7e0af37) --- release/restcomm-assembly-wildfly10/pom.xml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index f2a3d095ef..e168cac4d8 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -37,13 +37,7 @@ war - - - - src/main/resources - true - - + org.apache.maven.plugins @@ -93,7 +87,7 @@ 3.1.0 - src/main/resources/descriptor.xml + src/assembly/descriptor.xml Restcomm-JBoss-Wildfly10-${project.version} false From b0ee7ad313d8f9ae50e1370bef8fe84828165341 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Tue, 20 Mar 2018 14:05:33 +0200 Subject: [PATCH 17/41] fixes after merge (cherry picked from commit 46e27f1) --- restcomm/pom.xml | 199 +++++++++++++++++++++++------------------------ 1 file changed, 99 insertions(+), 100 deletions(-) diff --git a/restcomm/pom.xml b/restcomm/pom.xml index a62f4db2c7..0a9ef9b917 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -9,7 +9,6 @@ org.restcomm restcomm-connect - 9.0.0-SNAPSHOT pom RestComm-Connect A unified communications platform for web developers. @@ -81,105 +80,105 @@ UTF-8 - 2.10.1 - 2.1.2 - 14.0.1 - 1.2.16 - 1.5.5 - 1.7 - 2.4 - 1.10 - 2.6 - 1.0 - 1.2.0 - 6.0.23 - 1.4 - 2.5 - 3.2.0-98 - 1.0.1 - 1.2.0 - 7.0.50 - 1.2.0 - 1.2.0 - 1.13 - 4.5.2 - 4.1.3 - 2.3.1 - 1.4.2 - 2.7.2 - 3.2.2 - 2.9.7 - 4.3 - 4.11 - 1.9.1 - 2.3.2 - 1.2.293 - 1.0.3.Final - 1.0.3 - 1.0.2 - 2.2.6 - 2.0.4 - - 7.0.64 - 1.0.0.FINAL - 2.9.1 - 1.0.0-ALPHA2 - 1.11.179 - - 5.0.8 - 6.0.2 - 3.0.0 - 3.0.2 - 3.9.6.Final - 1.1.3 - 3.1.0 - 7.1.0-79 - 2.8.9 - - - - - restcomm.application - restcomm.commons - restcomm.dao - restcomm.asr - restcomm.tts.acapela - restcomm.mgcp - restcomm.fax - restcomm.mscontrol.api - restcomm.mscontrol.mms - restcomm.mscontrol.jsr309 - restcomm.sms.api - restcomm.telephony.api - restcomm.interpreter - restcomm.http - restcomm.sms - restcomm.provisioning.number.api - restcomm.provisioning.number.vi - restcomm.provisioning.number.nexmo - restcomm.provisioning.number.bandwidth - restcomm.provisioning.number.voxbone - restcomm.telephony - restcomm.tts.api - restcomm.tts.voicerss - - restcomm.ui - restcomm.tts.att - restcomm.ussd - restcomm.routing - restcomm.email - restcomm.email.api - restcomm.extension.api - restcomm.extension.controller - restcomm.identity - restcomm.mrb - restcomm.mrb.api - restcomm.dns.api - restcomm.monitoring.service - restcomm.tts.awspolly - restcomm.sdr.apirestcomm.core - + 2.10.1 + 2.1.2 + 14.0.1 + 1.2.16 + 1.5.5 + 1.7 + 2.4 + 1.10 + 2.6 + 1.0 + 1.2.0 + 6.0.23 + 1.4 + 2.5 + 3.2.0-98 + 1.0.1 + 1.2.0 + 7.0.50 + 1.2.0 + 1.2.0 + 1.13 + 4.5.2 + 4.1.3 + 2.3.1 + 1.4.2 + 2.7.2 + 3.2.2 + 2.9.7 + 4.3 + 4.11 + 1.9.1 + 2.3.2 + 1.2.293 + 1.0.3.Final + 1.0.3 + 1.0.2 + 2.2.6 + 2.0.4 + + 7.0.64 + 1.0.0.FINAL + 2.9.1 + 1.0.0-ALPHA2 + 1.11.179 + + 5.0.8 + 6.0.2 + 3.0.0 + 3.0.2 + 3.9.6.Final + 1.1.3 + 3.1.0 + 7.1.0-79 + 2.8.9 + + + + + restcomm.application + restcomm.commons + restcomm.dao + restcomm.asr + restcomm.tts.acapela + restcomm.mgcp + restcomm.fax + restcomm.mscontrol.api + restcomm.mscontrol.mms + restcomm.mscontrol.jsr309 + restcomm.sms.api + restcomm.telephony.api + restcomm.interpreter + restcomm.http + restcomm.sms + restcomm.provisioning.number.api + restcomm.provisioning.number.vi + restcomm.provisioning.number.nexmo + restcomm.provisioning.number.bandwidth + restcomm.provisioning.number.voxbone + restcomm.telephony + restcomm.tts.api + restcomm.tts.voicerss + restcomm.ui + restcomm.tts.att + restcomm.ussd + restcomm.routing + restcomm.email + restcomm.email.api + restcomm.extension.api + restcomm.extension.controller + restcomm.identity + restcomm.mrb + restcomm.mrb.api + restcomm.dns.api + restcomm.monitoring.service + restcomm.tts.awspolly + restcomm.sdr.apirestcomm.core + restcomm-connect.core + From ad0792579f0d5359973b250b42cff853aaabbb19 Mon Sep 17 00:00:00 2001 From: Jaime Casero Date: Mon, 9 Apr 2018 12:03:58 +0300 Subject: [PATCH 18/41] removed any unnecesary tomcat dependencies (cherry picked from commit 4b5fc6c) --- restcomm/pom.xml | 165 ++---------------- restcomm/restcomm.application/pom.xml | 7 +- restcomm/restcomm.dao/pom.xml | 12 +- restcomm/restcomm.dns.api/pom.xml | 7 +- restcomm/restcomm.extension.api/pom.xml | 12 +- .../restcomm.extension.controller/pom.xml | 7 +- restcomm/restcomm.http/pom.xml | 21 --- restcomm/restcomm.monitoring.service/pom.xml | 7 +- .../restcomm.provisioning.number.api/pom.xml | 13 +- restcomm/restcomm.telephony.api/pom.xml | 6 +- restcomm/restcomm.telephony/pom.xml | 12 +- restcomm/restcomm.testsuite/pom.xml | 87 +++++---- 12 files changed, 72 insertions(+), 284 deletions(-) diff --git a/restcomm/pom.xml b/restcomm/pom.xml index 0a9ef9b917..09442e1281 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -204,114 +204,6 @@ restcomm-connect.mrb ${project.version} - - org.restcomm - restcomm-connect.application - ${project.version} - war - - - org.restcomm - restcomm-connect.extension.api - ${project.version} - - - org.restcomm - restcomm-connect.extension.controller - ${project.version} - - - org.restcomm - restcomm-connect.monitoring.service - ${project.version} - - - org.restcomm - restcomm-connect.dao - ${project.version} - - - org.restcomm - restcomm-connect.telephony - ${project.version} - - - org.restcomm - restcomm-connect.telephony.api - ${project.version} - - - - org.restcomm - restcomm-connect.http - ${project.version} - - - org.restcomm - restcomm-connect.extension.api - ${project.version} - - - - org.restcomm - restcomm-connect.testsuite - ${project.version} - - - - org.restcomm - restcomm-connect.commons - ${project.version} - - - org.restcomm - restcomm-connect.email.api - ${project.version} - - - - org.restcomm - restcomm-connect.sms - ${project.version} - - - org.restcomm - restcomm-connect.mgcp - ${project.version} - - - - org.restcomm - restcomm-connect.mscontrol.api - ${project.version} - - - - org.restcomm - restcomm-connect.mscontrol.mms - ${project.version} - - - org.restcomm - restcomm-connect.dns.api - ${project.version} - - - org.restcomm - restcomm-connect-management - ${project.version} - war - - - - - - - - org.restcomm - restcomm-connect.sms.api - ${project.version} - com.cloudhopper @@ -433,6 +325,12 @@ ${sipservletapi.version} provided + + org.mobicents.servlet.sip + sip-servlets-client + ${sipservletapi.version} + provided + @@ -551,19 +449,6 @@ test - - org.apache.tomcat - tomcat-coyote - ${tomcat7.version} - provided - - - - org.apache.tomcat - tomcat-jasper - ${tomcat7.version} - provided - javax.sip @@ -572,19 +457,6 @@ test - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - ${sipservletapi.version} - provided - - - - org.mobicents.servlet.sip - sip-servlets-core-api - ${sipservletapi.version} - - org.mobicents.servlet.sip sip-servlets-application-router @@ -757,29 +629,12 @@ test - - org.apache.tomcat - tomcat-coyote - test - - - - org.apache.tomcat - tomcat-jasper - test - - javax.sip jain-sip-ri test - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - test - org.mobicents.servlet.sip @@ -787,6 +642,14 @@ test + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.hsqldb hsqldb diff --git a/restcomm/restcomm.application/pom.xml b/restcomm/restcomm.application/pom.xml index fefb6c34ea..a688a6a628 100644 --- a/restcomm/restcomm.application/pom.xml +++ b/restcomm/restcomm.application/pom.xml @@ -67,12 +67,7 @@ sip-servlets-spec provided - - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - provided - + javax.servlet diff --git a/restcomm/restcomm.dao/pom.xml b/restcomm/restcomm.dao/pom.xml index f95d46890e..1f8f3e46f4 100644 --- a/restcomm/restcomm.dao/pom.xml +++ b/restcomm/restcomm.dao/pom.xml @@ -68,17 +68,7 @@ provided - - org.apache.tomcat - tomcat-coyote - provided - - - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - provided - + com.googlecode.libphonenumber diff --git a/restcomm/restcomm.dns.api/pom.xml b/restcomm/restcomm.dns.api/pom.xml index 2b3cb34eae..410d0fbd63 100644 --- a/restcomm/restcomm.dns.api/pom.xml +++ b/restcomm/restcomm.dns.api/pom.xml @@ -19,11 +19,6 @@ ${project.version} - - org.apache.tomcat - tomcat-coyote - provided - - + diff --git a/restcomm/restcomm.extension.api/pom.xml b/restcomm/restcomm.extension.api/pom.xml index 9a934c1da8..a893c01b12 100644 --- a/restcomm/restcomm.extension.api/pom.xml +++ b/restcomm/restcomm.extension.api/pom.xml @@ -39,16 +39,6 @@ - - org.apache.tomcat - tomcat-coyote - provided - - - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - provided - + diff --git a/restcomm/restcomm.extension.controller/pom.xml b/restcomm/restcomm.extension.controller/pom.xml index ba7c6a2711..4373e2f580 100644 --- a/restcomm/restcomm.extension.controller/pom.xml +++ b/restcomm/restcomm.extension.controller/pom.xml @@ -47,12 +47,7 @@ provided - - org.apache.tomcat - tomcat-coyote - provided - - + org.restcomm restcomm-connect.dao diff --git a/restcomm/restcomm.http/pom.xml b/restcomm/restcomm.http/pom.xml index 5b74e9fa6d..3a3ace0b05 100644 --- a/restcomm/restcomm.http/pom.xml +++ b/restcomm/restcomm.http/pom.xml @@ -182,13 +182,6 @@ test - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - ${sipservletapi.version} - test - - org.mobicents.servlet.sip sip-servlets-application-router @@ -196,20 +189,6 @@ test - - org.apache.tomcat - tomcat-coyote - ${tomcat7.version} - test - - - - org.apache.tomcat - tomcat-jasper - ${tomcat7.version} - test - - junit junit diff --git a/restcomm/restcomm.monitoring.service/pom.xml b/restcomm/restcomm.monitoring.service/pom.xml index b1b60ce8b9..5bb555c5a9 100644 --- a/restcomm/restcomm.monitoring.service/pom.xml +++ b/restcomm/restcomm.monitoring.service/pom.xml @@ -74,12 +74,7 @@ provided - - org.apache.tomcat - tomcat-coyote - provided - - + javax.sip jain-sip-api diff --git a/restcomm/restcomm.provisioning.number.api/pom.xml b/restcomm/restcomm.provisioning.number.api/pom.xml index baa38505e4..9bddffebdf 100644 --- a/restcomm/restcomm.provisioning.number.api/pom.xml +++ b/restcomm/restcomm.provisioning.number.api/pom.xml @@ -14,13 +14,12 @@ restcomm-connect.commons ${project.version} - - - org.apache.tomcat - tomcat-coyote - provided - - + + + javax.servlet + javax.servlet-api + provided + diff --git a/restcomm/restcomm.telephony.api/pom.xml b/restcomm/restcomm.telephony.api/pom.xml index 24059bee29..37725c12c0 100644 --- a/restcomm/restcomm.telephony.api/pom.xml +++ b/restcomm/restcomm.telephony.api/pom.xml @@ -23,10 +23,10 @@ provided - + - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 + org.mobicents.servlet.sip + sip-servlets-client provided diff --git a/restcomm/restcomm.telephony/pom.xml b/restcomm/restcomm.telephony/pom.xml index 5d695a60b9..a83b1e3cd9 100644 --- a/restcomm/restcomm.telephony/pom.xml +++ b/restcomm/restcomm.telephony/pom.xml @@ -67,17 +67,7 @@ provided - - org.apache.tomcat - tomcat-jasper - provided - - - - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - provided - + javax.servlet diff --git a/restcomm/restcomm.testsuite/pom.xml b/restcomm/restcomm.testsuite/pom.xml index f1c119ed41..b6bb407654 100644 --- a/restcomm/restcomm.testsuite/pom.xml +++ b/restcomm/restcomm.testsuite/pom.xml @@ -167,36 +167,20 @@ - org.mobicents.servlet.sip.containers - sip-servlets-catalina-7 - ${sipservletapi.version} - compile - - - org.mobicents.servlet.sip.containers - sip-servlets-tomcat-7 - ${sipservletapi.version} - compile - + org.mobicents.sipunit + sipunit + 2.0.3 + compile + - org.mobicents.arquillian.container - mss-tomcat-embedded-7 - ${mss.arquillian.version} - compile - + org.wildfly.arquillian + wildfly-arquillian-container-embedded + 2.1.0.Final + test + - - - - com.cloudhopper @@ -253,7 +237,7 @@ javax.sip jain-sip-api 1.2 - test + compile @@ -285,19 +269,7 @@ test - - org.apache.tomcat - tomcat-coyote - ${tomcat7.version} - test - - - org.apache.tomcat - tomcat-jasper - ${tomcat7.version} - test - org.mockito @@ -321,12 +293,6 @@ standalone - - org.apache.tomcat - tomcat-catalina - ${tomcat7.version} - - org.mobicents.commtesting mgcpUnit @@ -403,6 +369,31 @@ + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack + process-test-classes + + unpack + + + + + org.wildfly + wildfly-dist + 10.0.0.Final + zip + false + target + + + + + + maven-compiler-plugin @@ -469,6 +460,12 @@ -Xms256m -Xmx2048m -XX:MaxPermSize=1024m ${jacocoArgLine} false + + org.jboss.logmanager.LogManager + ${project.basedir}/target/wildfly-10.0.0.Final + ${project.basedir}/target/wildfly-10.0.0.Final/modules + wildfly10 + From 71679ce4df9588c8f335b04398db257bf36e2fbe Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Thu, 3 May 2018 10:45:07 +0300 Subject: [PATCH 19/41] Ported over latest changes in autoconfig scripts latest changes from `master` @ `$PROJECT_HOME/restcomm/configuration/config-scripts/as7-config-scripts/restcomm/autoconfig.d/` --- .../restcomm/autoconfig.d/config-SecureSSL.sh | 19 ++++++++++++ .../restcomm/autoconfig.d/config-olympus.sh | 9 ++++++ .../restcomm/autoconfig.d/config-restcomm.sh | 30 +++++++++++++++++-- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh index e8c2d7ee1d..6a1a099f62 100755 --- a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-SecureSSL.sh @@ -147,6 +147,25 @@ MssStackConf(){ sed -i '/gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE='"$TLS_CLIENT_AUTH_TYPE"'/,+5d' $FILE fi + if [ -n "$SSL_PROTOCOLS" ]; then + if grep -q "gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS" "$FILE"; then + sed -i "s|gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS=.*|gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS=$SSL_PROTOCOLS|" $FILE + else + echo "gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS=$SSL_PROTOCOLS"'' >> $FILE + fi + + fi + + if [ -n "$SSL_CIPHER_SUITES" ]; then + if grep -q "gov.nist.javax.sip.ENABLED_CIPHER_SUITES" "$FILE"; then + sed -i "s|gov.nist.javax.sip.ENABLED_CIPHER_SUITES=.*|gov.nist.javax.sip.ENABLED_CIPHER_SUITES=$SSL_CIPHER_SUITES|" $FILE + else + echo 'gov.nist.javax.sip.ENABLED_CIPHER_SUITES='"$SSL_CIPHER_SUITES"'' >> $FILE + fi + + fi + + if [[ "$TRUSTSTORE_FILE" = /* ]]; then TRUSTSTORE_LOCATION=$TRUSTSTORE_FILE else diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh index 24f3f93115..ba52bad2f5 100755 --- a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-olympus.sh @@ -38,9 +38,18 @@ FILE=$BASEDIR/standalone/deployments/olympus.war/resources/xml/olympus.xml } +DomainConf(){ +#Configure Web Olympus Domain. +FILE=$BASEDIR/standalone/deployments/olympus.war/resources/xml/olympus.xml + echo "WebOlympusDomain: $WebOlympusDomain" + if [ ! -z "${WebOlympusDomain}" ]; then + xmlstarlet ed -L -P -u "/olympus/server/address" -v ${WebOlympusDomain} $FILE + fi +} # MAIN echo 'Configuring Olympus...' #Reload Variables olympusPortConf +DomainConf diff --git a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh index 92397c287e..05ada88547 100755 --- a/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh +++ b/release/restcomm-assembly-as7/src/main/resources/assembly-resources/bin/restcomm/autoconfig.d/config-restcomm.sh @@ -492,6 +492,8 @@ configSMPPAccount() { peerPort="$6" sourceMap="$7" destinationMap="$8" + inboundEncoding="$9" + outboundEncoding="${10}" sed -i "s|||g" $FILE @@ -528,6 +530,13 @@ configSMPPAccount() { }" $FILE sed -i "s|||" $FILE + + if [ ! -z "${inboundEncoding}" ]; then + xmlstarlet ed -L -P -u "/restcomm/smpp/connections/connection/inboundencoding" -v $inboundEncoding $FILE + fi + if [ ! -z "${outboundEncoding}" ]; then + xmlstarlet ed -L -P -u "/restcomm/smpp/connections/connection/outboundencoding" -v $outboundEncoding $FILE + fi echo 'Configured SMPP Account Details' else @@ -560,6 +569,10 @@ configSMPPAccount() { }" $FILE sed -i "s|||" $FILE + + xmlstarlet ed -L -P -u "/restcomm/smpp/connections/connection/inboundencoding" -v "" $FILE + xmlstarlet ed -L -P -u "/restcomm/smpp/connections/connection/outboundencoding" -v "" $FILE + echo 'Configured SMPP Account Details' fi } @@ -687,6 +700,10 @@ otherRestCommConf(){ echo "CACHE_NO_WAV $CACHE_NO_WAV" sed -i "s|.*|${CACHE_NO_WAV}|" $FILE + #Configure USESBC + echo "USESBC: $RCUSESBC" + sed -i "s|.*|${RCUSESBC}|" $FILE + echo "End Rest RestComm configuration" } @@ -866,7 +883,14 @@ else fi if [ -z "$MS_ADDRESS" ]; then - MS_ADDRESS=$BIND_ADDRESS + MS_ADDRESS=$BIND_ADDRESS +fi + +if [ "a" == "a$MGCP_LOCAL_ADDRESS" ]; then + # $MGCP_LOCAL_ADDRESS is empty, so just use bind address + MGCP_ADDRESS=$BIND_ADDRESS +else + MGCP_ADDRESS=$MGCP_LOCAL_ADDRESS fi configDidProvisionManager "$DID_LOGIN" "$DID_PASSWORD" "$DID_ENDPOINT" "$DID_SITEID" "$HOSTFORDID" "$DID_ACCOUNTID" "$SMPP_SYSTEM_TYPE" "$DID_URIPORT" @@ -875,8 +899,8 @@ configSmsAggregator "$SMS_OUTBOUND_PROXY" "$SMS_PREFIX" configSpeechRecognizer "$ISPEECH_KEY" configSpeechSynthesizers configTelestaxProxy "$ACTIVE_PROXY" "$TP_LOGIN" "$TP_PASSWORD" "$INSTANCE_ID" "$PROXY_IP" "$SITE_ID" -configMediaServerManager "$BIND_ADDRESS" "$MS_ADDRESS" "$MEDIASERVER_EXTERNAL_ADDRESS" -configSMPPAccount "$SMPP_ACTIVATE" "$SMPP_SYSTEM_ID" "$SMPP_PASSWORD" "$SMPP_SYSTEM_TYPE" "$SMPP_PEER_IP" "$SMPP_PEER_PORT" "$SMPP_SOURCE_MAP" "$SMPP_DEST_MAP" +configMediaServerManager "$MGCP_ADDRESS" "$MS_ADDRESS" "$MEDIASERVER_EXTERNAL_ADDRESS" +configSMPPAccount "$SMPP_ACTIVATE" "$SMPP_SYSTEM_ID" "$SMPP_PASSWORD" "$SMPP_SYSTEM_TYPE" "$SMPP_PEER_IP" "$SMPP_PEER_PORT" "$SMPP_SOURCE_MAP" "$SMPP_DEST_MAP" "$SMPP_INBOUND_ENCODING" "$SMPP_OUTBOUND_ENCODING" configRestCommURIs updateRecordingsPath configHypertextPort From a311d18abddcbdf5827dfbba5adb0734fe4d8a17 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 21:45:07 +0300 Subject: [PATCH 20/41] Copy-pasted scripts from Restcomm-Docker project Moving them into this GH repo, so they can be included in the docker image build. As we are moving towards using the docker image as our binary (instead of just the WAR file), it makes sense to keep all those components that are used to build the image in the same repository anyway. --- .../src/main/docker/cron_files/core_crontab | 3 + .../main/docker/cron_files/tcpdump_crontab | 4 + .../src/main/docker/scripts/docker_do.sh | 357 ++++++++++++++++++ .../src/main/docker/scripts/dockercleanup.sh | 27 ++ .../main/docker/scripts/restcomm-runlevels.sh | 12 + .../main/docker/scripts/restcomm_autoconf.sh | 54 +++ .../src/main/docker/scripts/restcomm_conf.sh | 43 +++ .../main/docker/scripts/restcomm_extconf.sh | 108 ++++++ .../main/docker/scripts/restcomm_service.sh | 6 + .../main/docker/scripts/restcomm_sslconf.sh | 49 +++ .../src/main/docker/scripts/restcomm_tag.sh | 22 ++ .../main/docker/scripts/restcomm_toolsconf.sh | 42 +++ .../src/main/docker/scripts/start-restcomm.sh | 156 ++++++++ 13 files changed, 883 insertions(+) create mode 100644 release/restcomm-assembly-as7/src/main/docker/cron_files/core_crontab create mode 100644 release/restcomm-assembly-as7/src/main/docker/cron_files/tcpdump_crontab create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/docker_do.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/dockercleanup.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm-runlevels.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_autoconf.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_conf.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_extconf.sh create mode 100755 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_service.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_sslconf.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_tag.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_toolsconf.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/start-restcomm.sh diff --git a/release/restcomm-assembly-as7/src/main/docker/cron_files/core_crontab b/release/restcomm-assembly-as7/src/main/docker/cron_files/core_crontab new file mode 100644 index 0000000000..acf97e5f83 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/cron_files/core_crontab @@ -0,0 +1,3 @@ +5 8 * * 0 root find /opt/Restcomm-JBoss-AS7/standalone/log/server.log -mtime +7 -exec rm {} \; +# An empty line is required at the end of this file for a valid cron file. + diff --git a/release/restcomm-assembly-as7/src/main/docker/cron_files/tcpdump_crontab b/release/restcomm-assembly-as7/src/main/docker/cron_files/tcpdump_crontab new file mode 100644 index 0000000000..d4d1f829ee --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/cron_files/tcpdump_crontab @@ -0,0 +1,4 @@ +5 8 * * 0 root find /path/to/restcomm_trace_* -mtime +7 -exec rm {} \; +# An empty line is required at the end of this file for a valid cron file. + + diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/docker_do.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/docker_do.sh new file mode 100644 index 0000000000..339363f290 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/docker_do.sh @@ -0,0 +1,357 @@ +#!/bin/bash + +DATE=$(date +%F_%H_%M) +DIR_NAME=restcomm_$DATE + +RESTCOMM_LOG_BASE=/var/log +RESTCOMM_TRACE=$RESTCOMM_LOG_BASE/$RESTCOMM_TRACE_LOG +LOGS_DIR_ZIP=$RESTCOMM_LOG_BASE/$DIR_NAME +LOGS_DIR_HOST=$LOGS_DIR_ZIP/host + + +SYSLOGS_DIR=/var/log + +restcomm_version () { + if [ -d "$LOGS_DIR_HOST" ]; then + cp $RESTCOMM_LOG_BASE/version $LOGS_DIR_HOST/ + return 0 + fi + exit 1 +} + +docker_logs () { +if [ -d "$LOGS_DIR_HOST" ]; then + docker logs $1 2>&1 | head -n 1250 > $LOGS_DIR_HOST/DockerLogs + return 0 + fi + exit 1 +} + +system_usage_info () { +if [ -d "$LOGS_DIR_HOST" ]; then + echo CPU\(s\): `top -b -n1 | grep "Cpu(s)" | awk '{print $2" : " $4}'` > $LOGS_DIR_HOST/usage_stats_$DATE + echo >> $LOGS_DIR_HOST/usage_stats_$DATE + top -b -n1 | grep Mem >> $LOGS_DIR_HOST/usage_stats_$DATE + ps aux > $LOGS_DIR_HOST/top_$DATE + return 0 + fi + exit 1 +} + +sys_date() { +if [ -d "$LOGS_DIR_HOST" ]; then + echo `date` > $LOGS_DIR_HOST/sys_date.txt + return 0 + fi + exit 1 +} + +netstat_stats () { + +if [ -d "$LOGS_DIR_HOST" ]; then + echo "----------------------- netstat -s ---------------------------" > $LOGS_DIR_HOST/netstat_stats_$DATE + netstat -s >> $LOGS_DIR_HOST/netstat_stats_$DATE + echo >> $LOGS_DIR_HOST/netstat_stats_$DATE + echo >> $LOGS_DIR_HOST/netstat_stats_$DATE + echo "----------------------- netstat -anp ---------------------------" >> $LOGS_DIR_HOST/netstat_stats_$DATE + netstat -anp >> $LOGS_DIR_HOST/netstat_stats_$DATE + return 0 + fi + exit 1 +} + +tcpdump_logs () { +if [ -d "$LOGS_DIR_HOST" ]; then + ls -t1 $RESTCOMM_TRACE/*.pcap* | head -n 2 | xargs -i -exec cp -p {} $LOGS_DIR_ZIP/ + return 0 + fi + exit 1 +} + +system_logs () { +if [ -d "$LOGS_DIR_HOST" ]; then + if [ -f $SYSLOGS_DIR/messages ]; then + cp $SYSLOGS_DIR/messages $LOGS_DIR_HOST/ + fi + if [ -f $SYSLOGS_DIR/syslog ]; then + cp $SYSLOGS_DIR/syslog $LOGS_DIR_HOST/ + fi + return 0 + fi + exit 1 +} + +collect_logs () { +echo -en "\e[92mpull collect logs container $1 , file: $LOGS_DIR_ZIP \e[0m\n" +time_logs="" +if $tflag ; then + time_logs="-t $time_marg" + echo $time_marg +fi + +if $zflag ; then + dtar="-z" +fi + +mkdir -p $LOGS_DIR_HOST + +tcpdump_logs +docker_logs $1 +netstat_stats +system_usage_info +system_logs +restcomm_version +sys_date + +docker exec $1 /bin/sh -c "/opt/Restcomm-JBoss-AS7/bin/restcomm/logs_collect.sh $time_logs $dtar" +} + + +stop_container () { + echo -en "\e[92mstop container $1\e[0m\n" + docker stop $1 +} + +start_container () { + echo -en "\e[92mstart container $1\e[0m\n" + docker start $1 +} + +run_container () { + echo -en "\e[92mrun container\e[0m\n" + echo "need to be done" +} + +pull_container () { + echo -en "\e[92mpull container $1\e[0m\n" + docker pull $1 +} + +info_container () { + docker ps; +} + +collect_logs_time () { +echo -en "\e[92mpull collect logs by time for container $1\e[0m\n" +docker exec $1 /bin/sh -c "/opt/Restcomm-JBoss-AS7/bin/restcomm/logs_collect.sh $2" +} + +docker_login() { + docker login +} + +delete_container () { +read -p "Are you sure about deleting container $1? " -n 1 -r +echo # (optional) move to a new line +if [[ $REPLY =~ ^[Yy]$ ]] +then + echo -en "\e[92mdelete container $1\e[0m\n" + docker rm $1 +else + echo "container no deleted" + exit 1 +fi +} + +change_log() { + echo -en "\e[92mchange log level for $2 to $3 for container $1\e[0m\n" + docker exec $1 /bin/sh -c "/opt/Restcomm-JBoss-AS7/bin/restcomm/set-log-level.sh $2 $3" +} + +usage () { + cat << EOF +Usage: docker_do.sh + +options: +-s : stop container (-c obligatory). +-S : start container (-c obligatory). +-r : run new container (-H obligatory). Optional (-n). +-H : Host name (only with -r) +-n : Container name (only with -r), if not used default name "telscale-restcomm" +-l : collect logs (-c obligatory). +-z : Create Tar file, and delete the original directory. +-t : collect logs by time (-l obligatory) e.g. "21:03:0*,22:00:0*". +-i : running containers. +-p : pull from hub (-L obligatory). +-L : login to docker hub. +-c : container to use. +-a : change log level (-c CONTAINER-a "servlet govnist" -k WARN or -c CONTAINER -a "servlet" -k INFO , -c CONTAINER -a list , etc) +-k : set log level (Can be used only with -a) +-d : delete container. +-h : prints this message +EOF + exit 1 +} + +#MAIN +sflag=false +Sflag=false +rflag=false +lflag=false +cflag=false +pflag=false +iflag=false +Lflag=false +iflag=false +dflag=false +tflag=false +Hflag=false +nflag=false +zflag=false +aflag=false +kflag=false +login=false + + +#Global variables + container_name="telscale-restcomm" + +if [ $# -eq 0 ]; +then + usage + exit 0 +else + + while getopts ":rH:n:sSp:c:a:k:ilLdht:z" opt; do + case $opt in + s ) + sflag=true + ;; + S ) + Sflag=true + ;; + H ) + Hflag=true + host=$OPTARG + ;; + n ) + nflag=true + container_name=$OPTARG + ;; + r ) + rflag=true + ;; + l ) + lflag=true + ;; + c ) + cflag=true + container=$OPTARG + ;; + p ) + pflag=true + pull_repo=$OPTARG + ;; + t ) + tflag=true + time_marg=$OPTARG + ;; + i ) + iflag=true + ;; + L ) + Lflag=true + ;; + + d ) + dflag=true + ;; + z ) + zflag=true + ;; + a ) + aflag=true + input=$OPTARG + ;; + k ) + kflag=true + level=$OPTARG + ;; + h ) + usage + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + if ("$opt" = "p"); then + pull_repo="restcomm/restcomm-cloud:master" + read -p "Default hub repo $pull_repo will be used OK?" -n 1 -r + echo # move to a new line + if [[ $REPLY =~ ^[Yy]$ ]] + then + pflag=true + continue + else + echo + fi + fi + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac + done; + + + if [[ ( "$sflag" = "true" || "$Sflag" = "true" || "$lflag" = "true" || "$dflag" = "true" || "$aflag" = "true" ) && ( "$cflag" = "false" ) ]]; then + echo " For flags (-s, -S, -l, -d, -a) a container must be specified (-c) " >&2 + exit 1 + fi + + if [[ "$aflag" = "true" && "$input" != "list" && "$kflag" = "false" ]]; then + echo " For flag -a flag -k must be specified " >&2 + exit 1 + fi + + if [[ "$tflag" = "true" && "$lflag" = "false" ]]; then + echo " For flag -t flag -l must be specified " >&2 + exit 1 + fi + + if [[ "$rflag" = "true" && "$Hflag" = "false" ]]; then + echo " To run a container Hostname is necessary (flag -H) " >&2 + exit 1 + fi + + if $lflag ; then + collect_logs $container + fi + + + if $sflag ; then + stop_container $container + fi + + if $Lflag ; then + login=true + docker_login + fi + + if $pflag ; then + if ! $login ; then + echo -en "\e[31mMake sure you are connected to docker hub (-L)\e[0m\n" + fi + pull_container $pull_repo + fi + + if $dflag ; then + delete_container $container + fi + + if $Sflag ; then + start_container $container + fi + + if $rflag ; then + run_container $host + fi + + if $iflag ; then + info_container + fi + + if $aflag ; then + change_log $container \""$input"\" $level + fi +fi \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/dockercleanup.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/dockercleanup.sh new file mode 100644 index 0000000000..34ce6ebd7d --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/dockercleanup.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +log() { + logger -s -t $(basename $0) $1 +} + + +read -p "Are you sure you want to proceed, all stopped containers will be deleted? " -n 1 -r +echo # (optional) move to a new line +if [[ $REPLY =~ ^[Yy]$ ]]; then + # If yes & enter - proceed to delete stopped containers and unused images. + log "Started" + + containers=$(docker ps -a -q -f "status=exited") + if [ -n "${containers}" ]; then + log "Cleanup stopped container id(s): ${containers}" + docker rm $containers + fi + + images=$(docker images -q --filter "dangling=true") + if [ -n "${images}" ]; then + log "Cleanup dangling image id(s): ${images}" + docker rmi $images + fi + + log "Done" +fi \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm-runlevels.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm-runlevels.sh new file mode 100644 index 0000000000..2d97f10056 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm-runlevels.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +mkdir -p /etc/runit/runsvdir/default +mkdir -p /etc/runit/runsvdir/second + +cd /etc/runit/runsvdir +ln -s default /etc/runit/runsvdir/current +cp -pR /etc/service/* /etc/runit/runsvdir/current/ +mv -f /etc/service /service.old && ln -s /etc/runit/runsvdir/current /etc/service + +#auto delete script after run once. No need more. +rm -- "$0" \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_autoconf.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_autoconf.sh new file mode 100644 index 0000000000..20eba4a147 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_autoconf.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +#Maintainer Lefteris Banos -liblefty@telestax.com + +echo "Will check if Enviromental variables script file is set" + +CONFFILE=/tmp/conf.sh + +function download_conf(){ +echo "url $1 $2 $3" +if [[ `wget -S --spider $1 $2 $3 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then + if [ -n "$2" ] && [ -n "$3" ]; then + wget $1 $2 $3 -O $4 + else + wget $1 -O $2 + fi + return 0; + else + echo "false" + wget -S --spider $1 $2 $3 + exit 1; + fi +} + + +function run_conf(){ + echo "Run configuratin file /tmp/conf.sh" + if [ -f $CONFFILE ]; then + chmod +x $CONFFILE + source $CONFFILE + rm -f $CONFFILE + return 0 + else + echo "$CONFFILE not found." + return 1 + fi +} + +if [ -n "$ENVCONFURL" ]; then + echo "Configuration file URL is: $ENVCONFURL" + if [ -n "$REPOUSR" ] && [ -n "$REPOPWRD" ]; then + USR="--user=$REPOUSR" + PASS="--password=$REPOPWRD" + fi + URL="$ENVCONFURL $USR $PASS" + download_conf $URL $CONFFILE + run_conf +fi + +#auto delete script after run once. No need more. +rm -- "$0" + + + diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_conf.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_conf.sh new file mode 100644 index 0000000000..3f9660a5a9 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_conf.sh @@ -0,0 +1,43 @@ +#!/bin/bash +#Maintainer Lefteris Banos -liblefty@telestax.com +#Maintainer Maria Farooq -maria.farooq@telestax.com + +echo "Will configure advanced.conf" + +source /etc/container_environment.sh + +BASEDIR=/opt/Restcomm-JBoss-AS7 + +getOptions() { + ( set -o posix ; set ) | grep "^$1" | awk -F "$1" '{print $2}' +} + +configValues() { + local options=$(getOptions $1) + if [ -n "$options" ]; then + while read -r option; do + IFS='=' read ar1 ar2 <<<$option + cli_var="CLI_$ar1" + if env | grep -q ^$cli_var= ;then + ar2=${!cli_var} + fi + if [ ! -z "$2" ]; then + echo "Setting $ar1 to $ar2" + sed -i "s|${ar1}=.*|${ar1}=${ar2}|" $BASEDIR/bin/restcomm/$2 + fi + echo -e "$ar2" | xargs > /etc/container_environment/$ar1 + done <<< "$options" + fi +} + +#MAIN +# Declare associative array +typeset -A OPTS=( [RCBCONF_]=restcomm.conf [RCADVCONF_]=advanced.conf [EXTCONF_]="" [LBCONF_]=advanced.conf [RMSCONF_]=mediaserver.conf ) + + for opt in "${!OPTS[@]}"; do + printf 'conf value %s file: %q\n' "$opt" "${OPTS[$opt]}" + configValues $opt ${OPTS[$opt]} + done + +#auto delete script after run once. No need more. +rm -- "$0" diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_extconf.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_extconf.sh new file mode 100644 index 0000000000..c820f4c2fe --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_extconf.sh @@ -0,0 +1,108 @@ +#!/usr/bin/env bash + +source /etc/container_environment.sh + +BASEDIR=/opt/Restcomm-JBoss-AS7 +RESTCOMM_CORE_LOG=$BASEDIR/standalone/log +MMS_LOGS=$BASEDIR/mediaserver/log + +#Patch provided for the RVD backup Directory for the migration process (in order to save the backup at the host need to  mount this directory e.g. -v host_path:RVD_MIGRATION_BACKUP). +if [ -n "$RVD_MIGRATION_BACKUP" ]; then + echo "RVD_MIGRATION_BACKUP $RVD_MIGRATION_BACKUP" + sed -i "s|.*|${RVD_MIGRATION_BACKUP}|" $BASEDIR/standalone/deployments/restcomm-rvd.war/WEB-INF/rvd.xml +fi + +if [ -n "$PATCHRURI" ]; then + echo "PATCHRURI $PATCHRURI" + sed -i "s|true|${PATCHRURI}|" $BASEDIR/standalone/deployments/restcomm.war/WEB-INF/conf/restcomm.xml +fi + +if [[ "$ALERTING" != "TRUE" ]]; then + echo "ALERTING FALSE" + + FILE=/etc/cron.d/graylog_cron + if [ -f $FILE ]; then + rm $FILE + fi +fi + +#logs configuration +if [ -n "$RESTCOMM_LOGS" ]; then + echo "RESTCOMM_LOGS $RESTCOMM_LOGS" + sed -i "s|BASEDIR=.*| |" $BASEDIR/bin/restcomm/logs_collect.sh + sed -i "s|./jvmtop.sh|${BASEDIR}/bin/restcomm/jvmtop.sh|" $BASEDIR/bin/restcomm/logs_collect.sh + sed -i "s|LOGS_DIR_ZIP=.*|LOGS_DIR_ZIP=$RESTCOMM_LOGS/\$DIR_NAME|" $BASEDIR/bin/restcomm/logs_collect.sh + sed -i "s|RESTCOMM_LOG_BASE=.*|RESTCOMM_LOG_BASE=${RESTCOMM_LOGS}|" /opt/embed/restcomm_docker.sh + + LOGS_LOCATE=$RESTCOMM_LOGS + mkdir -p "$LOGS_LOCATE/extralogs" + RESTCOMM_CORE_LOG=$LOGS_LOCATE + MMS_LOGS=$LOGS_LOCATE + LOGS_TRACE=$LOGS_LOCATE +fi + +if [ -n "$CORE_LOGS_LOCATION" ]; then + echo "CORE_LOGS_LOCATION $CORE_LOGS_LOCATION" + mkdir -p $RESTCOMM_CORE_LOG/$CORE_LOGS_LOCATION + + sed -i "s|find .*restcomm_core_|find $RESTCOMM_CORE_LOG/$CORE_LOGS_LOCATION/restcommCore-server.log|" /etc/cron.d/restcommcore-cron + sed -i "s|||" $BASEDIR/standalone/configuration/standalone-sip.xml + #logs collect script conficuration + sed -i "s/RESTCOMM_CORE_FILE=server.log/RESTCOMM_CORE_FILE=restcommCore-server.log/" /opt/Restcomm-JBoss-AS7/bin/restcomm/logs_collect.sh + sed -i "s|RESTCOMM_CORE_LOG=.*|RESTCOMM_CORE_LOG=$RESTCOMM_CORE_LOG/$CORE_LOGS_LOCATION|" /opt/Restcomm-JBoss-AS7/bin/restcomm/logs_collect.sh + sed -i "s|RESTCOMM_LOG_BASE=.*|RESTCOMM_LOG_BASE=$CORE_LOGS_LOCATION|" /opt/Restcomm-JBoss-AS7/bin/restcomm/logs_collect.sh + +fi + +if [ -n "$RESTCOMM_TRACE_LOG" ]; then + echo "RESTCOMM_TRACE_LOG $RESTCOMM_TRACE_LOG" + mkdir -p $LOGS_TRACE/$RESTCOMM_TRACE_LOG + + sed -i "s|find .*restcomm_trace_|find $LOGS_TRACE/$RESTCOMM_TRACE_LOG/restcomm_trace_|" /etc/cron.d/restcommtcpdump-cron + sed -i "s|RESTCOMM_TRACE=.*|RESTCOMM_TRACE=\$RESTCOMM_LOG_BASE/$RESTCOMM_TRACE_LOG|" /opt/embed/restcomm_docker.sh + + nohup xargs bash -c "tcpdump -pni any -t -n -s 0 -G 3500 -w $LOGS_TRACE/$RESTCOMM_TRACE_LOG/restcomm_trace_%Y-%m-%d_%H:%M:%S-%Z.pcap -z gzip" & + + #Used to start TCPDUMP when restarting container + TCPFILE="/etc/my_init.d/restcommtrace.sh" + cat <> $TCPFILE +#!/bin/bash + nohup xargs bash -c "tcpdump -pni any -t -n -s 0 -G 3500 -w $LOGS_TRACE/$RESTCOMM_TRACE_LOG/restcomm_trace_%Y-%m-%d_%H:%M:%S-%Z.pcap -z gzip" & +EOT + chmod 777 $TCPFILE + #rm /tmp/myports +fi + +#Media-server Log configuration. +if [ -n "$MEDIASERVER_LOGS_LOCATION" ]; then + echo "MEDIASERVER_LOGS_LOCATION $MEDIASERVER_LOGS_LOCATION" + mkdir -p $MMS_LOGS/$MEDIASERVER_LOGS_LOCATION + + sed -i "s|find .*restcomm_ms_|find $MMS_LOGS/$MEDIASERVER_LOGS_LOCATION/media-server.log|" /etc/cron.d/restcommmediaserver-cron + sed -i "s|LOG_FILE_URL=.*|LOG_FILE_URL=$MMS_LOGS/$MEDIASERVER_LOGS_LOCATION/media-server.log|" $BASEDIR/bin/restcomm/mediaserver.conf + + #Daily log rotation for MS. + sed -i "s|.*|${SCHEME}://${STATIC_ADDRESS}:${RVD_PORT}/|" $RVD_DEPLOY/WEB-INF/rvd.xml +fi + + + +#auto delete script after run once. No need more. +rm -- "$0" \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_service.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_service.sh new file mode 100755 index 0000000000..b239f370e6 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_service.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +BASEDIR=/opt/Restcomm-JBoss-AS7 + +export RUN_DOCKER=true +exec $BASEDIR/bin/restcomm/start-restcomm.sh diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_sslconf.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_sslconf.sh new file mode 100644 index 0000000000..19edbc9abf --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_sslconf.sh @@ -0,0 +1,49 @@ +#!/bin/bash +#Maintainer George Vagenas - gvagenas@telestax.com +#Maintainer Jean Deruelle - jean.deruelle@telestax.com +#Maintainer Lefteris Banos -liblefty@telestax.com + +source /etc/container_environment.sh + +BASEDIR=/opt/Restcomm-JBoss-AS7 + +TRUSTSTORE_FILE_NAME=restcomm-combined.jks +TRUSTSTORE_FILE=$BASEDIR/standalone/configuration/$TRUSTSTORE_FILE_NAME +DERFILE=$BASEDIR/ca-authority.der +CONFFILE=/tmp/conf.sh + + +function download_conf(){ +echo "url $1 $2 $3" +if [[ `wget -S --spider $1 $2 $3 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then + if [ -n "$2" ] && [ -n "$3" ]; then + wget $1 $2 $3 -O $4 + else + wget $1 -O $2 + fi + return 0; + else + echo "false" + exit 1; + fi +} + +if [[ "$SECURESSL" = "SELF" || "$SECURESSL" = "AUTH" ]]; then + # Add StartComm certificate to the truststore to avoid SSL Exception when fetching the URL + keytool -importcert -alias startssl -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file $BASEDIR/ca-startcom.der -noprompt + sed -i "s|SECURESSL=.*|SECURESSL='${SECURESSL}'|" $BASEDIR/bin/restcomm/advanced.conf + sed -i "s|TRUSTSTORE_FILE=.*|TRUSTSTORE_FILE='${TRUSTSTORE_FILE_NAME}'|" $BASEDIR/bin/restcomm/advanced.conf +fi + +if [ -n "$CERTCONFURL" ]; then + echo "Certification file URL is: $CERTCONFURL" + if [ -n "$CERTREPOUSR" ] && [ -n "$CERTREPOPWRD" ]; then + USR="--user=${CERTREPOUSR}" + PASS="--password=${CERTREPOPWRD}" + fi + URL="$CERTCONFURL $USR $PASS" + download_conf $URL $TRUSTSTORE_FILE +fi + +#auto delete script after run once. No need more. +rm -- "$0" \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_tag.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_tag.sh new file mode 100644 index 0000000000..a9a9b52a03 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_tag.sh @@ -0,0 +1,22 @@ +#!/bin/bash +#Maintainer Lefteris Banos -liblefty@telestax.com +#set runlevel for runit +runsvchdir default >/dev/null +cat << "EOF" + ____ _ ____ + | _ \ ___ ___| |_ / ___|___ _ __ ___ _ __ ___ + | |_) / _ \/ __| __| | / _ \| '_ ` _ \| '_ ` _ \ + | _ < __/\__ \ |_| |__| (_) | | | | | | | | | | | + |_|_\_\___||___/\__|\____\___/|_| |_| |_|_| |_| |_| + | |__ _ _ + | '_ \| | | | + | |_) | |_| | + |_.__/ \__, | + |___/ + _____ _ _ + |_ _|__| | ___ ___| |_ __ ___ __ + | |/ _ \ |/ _ \/ __| __/ _` \ \/ / + | | __/ | __/\__ \ || (_| |> < + |_|\___|_|\___||___/\__\__,_/_/\_\ + +EOF \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_toolsconf.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_toolsconf.sh new file mode 100644 index 0000000000..e21f4a2346 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/restcomm_toolsconf.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +source /etc/container_environment.sh + +BASEDIR=/opt/Restcomm-JBoss-AS7 + + +if [ -n "$RCADVCONF_GRAYLOG_SERVER" ]; then + #Modify the Script for Graylog to docker needs. + sed -i "s|hdusage=.*|hdusage=\$\(df -h \| grep /dev/xvda1 \| awk -F \" \" '{print \$5}'\)|" $BASEDIR/bin/restcomm/monitoring/Graylog_Monitoring.sh + sed -i "s|cut -d \" \" -f 1|cut -d \" \" -f 2|" $BASEDIR/bin/restcomm/monitoring/Graylog_Monitoring.sh + sed -i "s|cut -f3,4,5,6,7,8 -d ' '|cut -f4,5,6,7,8,9 -d ' '|" $BASEDIR/bin/restcomm/monitoring/Graylog_Monitoring.sh +fi + +chmod +x $BASEDIR/bin/*.sh +chmod +x $BASEDIR/bin/restcomm/*.sh +chmod +x $BASEDIR/bin/restcomm/monitoring/*.sh +chmod +x /opt/embed/*.sh +mkdir -p "${RESTCOMM_LOGS}"/opt/ +cp /tmp/version "${RESTCOMM_LOGS}" +cp /opt/embed/dockercleanup.sh "${RESTCOMM_LOGS}"/opt/ +cp /opt/embed/restcomm_docker.sh "${RESTCOMM_LOGS}"/opt/ + +# Ensure cron is allowed to run" +sed -i 's/^\(session\s\+required\s\+pam_loginuid\.so.*$\)/# \1/g' /etc/pam.d/cron + +mkdir -p /etc/service/restcomm +mv /tmp/start-restcomm.sh $BASEDIR/bin/restcomm/start-restcomm.sh +chmod +x $BASEDIR/bin/restcomm/start-restcomm.sh +mv /tmp/restcomm_service.sh /etc/service/restcomm/run +chmod +x /etc/service/restcomm/run + +mkdir -p /etc/sv/rms +mv /tmp/start-mediaserver.sh $BASEDIR/mediaserver/start-mediaserver.sh +chmod +x $BASEDIR/mediaserver/start-mediaserver.sh +mv /tmp/rms_service.sh /etc/sv/rms/run +chmod +x /etc/sv/rms/run + +echo "RestComm configured Properly!" + +#auto delete script after run once. No need more. +rm -- "$0" \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/start-restcomm.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/start-restcomm.sh new file mode 100644 index 0000000000..ee208c6891 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/start-restcomm.sh @@ -0,0 +1,156 @@ +#! /bin/bash +## +## Description: Starts RestComm with auto-configuration. +## +## Parameters : 1. Bind Address (default: 127.0.0.1) +## 2. Run Mode [standalone|standalone-lb|domain|domain-lb] (default:standalone) +## +## Author : Henrique Rosa +## +# set environment variables for execution +BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMM_HOME=$(cd $BASEDIR/../../ && pwd) +MMS_HOME=$RESTCOMM_HOME/mediaserver +LB_HOME=$RESTCOMM_HOME/tools/sip-balancer + +## +## FUNCTIONS +## +startRestcomm() { + run_mode="$1" + bind_address="$2" + ExtraOpts="-Djboss.bind.address.management=$bind_address" + + if [ -n "$MGMT_PASS" ] && [ -n "$MGMT_USER" ]; then + echo "MGMT_PASS, MGMT_USER is set will be added to MGMNT configuration" + grep -q "$MGMT_USER" $RESTCOMM_HOME/standalone/configuration/mgmt-users.properties || $RESTCOMM_HOME/bin/add-user.sh "$MGMT_USER" "$MGMT_PASS" -s + fi + + case $run_mode in + 'standalone'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + echo ' Telestax RestComm started running on standalone mode. Terminal session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + if [[ "$RUN_DOCKER" == "true" || "$RUN_DOCKER" == "TRUE" ]]; then + #change to second runlevel. + runsvchdir second >/dev/null + $RESTCOMM_HOME/bin/standalone.sh -b $bind_address "${ExtraOpts}" + else + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + fi + ;; + 'domain'*) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/domain.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/domain.sh -b $bind_address ${ExtraOpts}" + echo 'Telestax RestComm started running on domain mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + *) + # start restcomm on standalone mode + chmod +x $RESTCOMM_HOME/bin/standalone.sh + tmux new -s restcomm -d "$RESTCOMM_HOME/bin/standalone.sh -b $bind_address ${ExtraOpts}" + echo 'Telestax RestComm started running on standalone mode. Screen session: restcomm.' + echo "Using IP Address: $BIND_ADDRESS" + ;; + esac + +} + +verifyDependencies() { + source $BASEDIR/verify-dependencies.sh +} + +loadConfigurationParams() { + source $BASEDIR/restcomm.conf + source $BASEDIR/advanced.conf +} + +## +## MAIN +## +#verifyDependencies +loadConfigurationParams + +echo BASEDIR: $BASEDIR +echo RESTCOMM_HOME: $RESTCOMM_HOME + +# input parameters and default values +RUN_MODE='standalone' +BIND_ADDRESS='' + +while getopts "s:r:i:" optname +do + case "$optname" in + "s") + STATIC_ADDRESS="$OPTARG" + ;; + "r") + RUN_MODE="$OPTARG" + ;; + "i") + NET_INTERFACE="$OPTARG" + ;; + ":") + echo "No argument value for option $OPTARG" + exit 1 + ;; + "?") + echo "Unknown option $OPTARG" + exit 1 + ;; + *) + echo 'Unknown error while processing options' + exit 1 + ;; + esac +done + +# validate network interface and extract network properties +if [[ -z "$NET_INTERFACE" ]]; then +NET_INTERFACE='eth0' +echo "Looking for the appropriate interface" + NET_INTERFACES=$(ifconfig | expand | cut -c1-8 | sort | uniq -u | awk -F: '{print $1;}') + if [[ -z $(echo $NET_INTERFACES | sed -n "/$NET_INTERFACE/p") ]]; then + echo "The network interface $NET_INTERFACE is not available or does not exist." + echo "The list of available interfaces is: $NET_INTERFACES" + exit 1 + fi +fi + +# load network properties for chosen interface +if [[ -z "$PRIVATE_IP" || -z "$SUBNET_MASK" || -z "$NETWORK" || -z "$BROADCAST_ADDRESS" ]]; then +echo "Looking for the IP Address, subnet, network and broadcast_address" + source $BASEDIR/utils/read-network-props.sh "$NET_INTERFACE" +fi + +BIND_ADDRESS="$PRIVATE_IP" +BIND_NETWORK="$NETWORK" +BIND_SUBNET_MASK="$SUBNET_MASK" + +if [[ -z "$STATIC_ADDRESS" ]]; then + STATIC_ADDRESS=$BIND_ADDRESS +fi + +if [[ -z "$MEDIASERVER_EXTERNAL_ADDRESS" ]]; then + MEDIASERVER_EXTERNAL_ADDRESS="$STATIC_ADDRESS" +fi + +if [[ -z "$PUBLIC_IP" ]]; then + PUBLIC_IP=$STATIC_ADDRESS +fi + +if [[ -z "$SMS_OUTBOUND_PROXY" ]]; then + SMS_OUTBOUND_PROXY=$OUTBOUND_PROXY +fi + +# configure restcomm installation + +if [[ "$MANUAL_SETUP" == "false" || "$MANUAL_SETUP" == "FALSE" ]]; then + source $BASEDIR/autoconfigure.sh +fi + +# start restcomm in selected run mode +startRestcomm "$RUN_MODE" "$BIND_ADDRESS" +exit 0 From 72279dd1da218271288f366f775ad71000a71132 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 22:04:35 +0300 Subject: [PATCH 21/41] Adapted Dockerfile from Restcomm-Docker project Major differences are two: 1. restcomm binary is NOT retrieved from Box, rather it is expected to be available in the local filesystem. This is because this `Dockerfile` will be used as part of the maven build, so the WAR file will (just) have been created anyway. 2. The Dockerfile now comes in 2 variants: one is `Dockerfile_standalone`, which includes *just* restcomm-connect (i.e. no mediaserver, no rvd, no webrtc-ui). As such, any mediaserver, etc. files are removed from the Dockerfile_standalone. On the other hand, the `Dockerfile_all-in-one` is a more straightforward port from `Restcomm-Docker` repo and basically just includes change (1) above and some reordering (to make continuous rebuilds of docker image faster, leveraging cached layers. --- .../Dockerfile_all-in-one | 73 +++++++++++++++++++ .../Dockerfile_standalone | 71 ++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 release/restcomm-assembly-as7/Dockerfile_all-in-one create mode 100644 release/restcomm-assembly-as7/Dockerfile_standalone diff --git a/release/restcomm-assembly-as7/Dockerfile_all-in-one b/release/restcomm-assembly-as7/Dockerfile_all-in-one new file mode 100644 index 0000000000..e5921f2117 --- /dev/null +++ b/release/restcomm-assembly-as7/Dockerfile_all-in-one @@ -0,0 +1,73 @@ +FROM phusion/baseimage:latest + +MAINTAINER George Vagenas - gvagenas@telestax.com +MAINTAINER Jean Deruelle - jean.deruelle@telestax.com +MAINTAINER Lefteris Banos - liblefty@telestax.com +MAINTAINER Yorgos Saslis - yorgos.saslis@telestax.com + +ENV install_dir /opt/Restcomm-JBoss-AS7 +ARG CONNECT_VERSION + +# Use baseimage-docker's init system. +CMD ["/sbin/my_init"] + +EXPOSE 5080/udp 5080/tcp 5081/tcp 5082/tcp 5083/tcp 8080/tcp 8443/tcp 5060/udp 5060/tcp 5061/tcp 5062/tcp 5063/tcp 80/tcp 443/tcp 9990/tcp 65000-65535/udp + + +ENV DEBIAN_FRONTEND noninteractive +ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64 + +RUN locale-gen en_US en_US.UTF-8 && dpkg-reconfigure locales + +RUN add-apt-repository ppa:openjdk-r/ppa -y \ + && apt-cache search mysql-client-core \ + && apt-get update \ + && apt-get install -y screen \ + wget \ + ipcalc \ + bsdtar \ + openjdk-7-jdk \ + mysql-client-core-5.7 \ + openssl \ + unzip \ + nfs-common \ + tcpdump \ + dnsutils \ + net-tools \ + xmlstarlet \ + && apt-get autoremove \ + && apt-get autoclean \ + && rm -rf /var/lib/apt/lists/* + + +# one idea here would be to move to different dockerfiles per directory, in order to replace the `CONNECT_VERSION` parameter +# and also keep multiple builds around, for different LTS versions... +ADD target/Connect-JBoss-AS7-${CONNECT_VERSION}.tar.gz /opt/ + +RUN mv /opt/Restcomm-JBoss-AS7-*/ ${install_dir} \ + && mkdir -p /opt/embed/ \ + && mkdir -p /etc/my_init.d + +ADD ./ca-startcom.der /opt/Restcomm-JBoss-AS7/ca-startcom.der +ADD ./src/main/docker/cron_files/tcpdump_crontab /etc/cron.d/restcommtcpdump-cron +ADD ./src/main/docker/cron_files/core_crontab /etc/cron.d/restcommcore-cron +ADD ./src/main/docker/cron_files/mediaserver_crontab /etc/cron.d/restcommmediaserver-cron +ADD ./src/main/docker/scripts/dockercleanup.sh /opt/embed/dockercleanup.sh +ADD ./src/main/docker/scripts/docker_do.sh /opt/embed/restcomm_docker.sh + +ADD ./src/main/docker/scripts/restcomm_autoconf.sh /etc/my_init.d/restcomm1.sh +ADD ./src/main/docker/scripts/restcomm_conf.sh /etc/my_init.d/restcomm2.sh +ADD ./src/main/docker/scripts/restcomm_sslconf.sh /etc/my_init.d/restcomm3.sh +ADD ./src/main/docker/scripts/restcomm_extconf.sh /etc/my_init.d/restcomm4.sh +ADD ./src/main/docker/scripts/restcomm_toolsconf.sh /etc/my_init.d/restcomm5.sh +ADD ./src/main/docker/scripts/restcomm-runlevels.sh /etc/my_init.d/restcomm6.sh +ADD ./src/main/docker/scripts/restcomm_tag.sh /etc/my_init.d/restcomm7.sh + +ADD ./src/main/docker/scripts/restcomm_service.sh /tmp/restcomm_service.sh +ADD ./src/main/docker/scripts/rms_service.sh /tmp/rms_service.sh +ADD ./src/main/docker/scripts/start-mediaserver.sh /tmp/start-mediaserver.sh +ADD ./src/main/docker/scripts/start-restcomm.sh /tmp/start-restcomm.sh + +RUN chmod +x /etc/my_init.d/restcomm*.sh + + diff --git a/release/restcomm-assembly-as7/Dockerfile_standalone b/release/restcomm-assembly-as7/Dockerfile_standalone new file mode 100644 index 0000000000..46b6bbdffd --- /dev/null +++ b/release/restcomm-assembly-as7/Dockerfile_standalone @@ -0,0 +1,71 @@ +FROM phusion/baseimage:latest + +MAINTAINER George Vagenas - gvagenas@telestax.com +MAINTAINER Jean Deruelle - jean.deruelle@telestax.com +MAINTAINER Lefteris Banos - liblefty@telestax.com +MAINTAINER Yorgos Saslis - yorgos.saslis@telestax.com + +ENV install_dir /opt/Restcomm-JBoss-AS7 +ARG CONNECT_VERSION + +# Use baseimage-docker's init system. +CMD ["/sbin/my_init"] + +EXPOSE 5080/udp 5080/tcp 5081/tcp 5082/tcp 5083/tcp 8080/tcp 8443/tcp 5060/udp 5060/tcp 5061/tcp 5062/tcp 5063/tcp 80/tcp 443/tcp 9990/tcp 65000-65535/udp + + +ENV DEBIAN_FRONTEND noninteractive +ENV JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk-amd64 + +RUN locale-gen en_US en_US.UTF-8 && dpkg-reconfigure locales + +RUN add-apt-repository ppa:openjdk-r/ppa -y \ + && apt-cache search mysql-client-core \ + && apt-get update \ + && apt-get install -y screen \ + wget \ + ipcalc \ + bsdtar \ + openjdk-7-jdk \ + mysql-client-core-5.7 \ + openssl \ + unzip \ + nfs-common \ + tcpdump \ + dnsutils \ + net-tools \ + xmlstarlet \ + && apt-get autoremove \ + && apt-get autoclean \ + && rm -rf /var/lib/apt/lists/* + + +# one idea here would be to move to different dockerfiles per directory, in order to replace the `CONNECT_VERSION` parameter +# and also keep multiple builds around, for different LTS versions... +ADD target/Connect-JBoss-AS7-${CONNECT_VERSION}.tar.gz /opt/ + +RUN mv /opt/Restcomm-JBoss-AS7-*/ ${install_dir} \ + && mkdir -p /opt/embed/ \ + && mkdir -p /etc/my_init.d + +ADD ./ca-startcom.der /opt/Restcomm-JBoss-AS7/ca-startcom.der +ADD ./src/main/docker/cron_files/tcpdump_crontab /etc/cron.d/restcommtcpdump-cron +ADD ./src/main/docker/cron_files/core_crontab /etc/cron.d/restcommcore-cron + +ADD ./src/main/docker/scripts/dockercleanup.sh /opt/embed/dockercleanup.sh +ADD ./src/main/docker/scripts/docker_do.sh /opt/embed/restcomm_docker.sh + +ADD ./src/main/docker/scripts/restcomm_autoconf.sh /etc/my_init.d/restcomm1.sh +ADD ./src/main/docker/scripts/restcomm_conf.sh /etc/my_init.d/restcomm2.sh +ADD ./src/main/docker/scripts/restcomm_sslconf.sh /etc/my_init.d/restcomm3.sh +ADD ./src/main/docker/scripts/restcomm_extconf.sh /etc/my_init.d/restcomm4.sh +ADD ./src/main/docker/scripts/restcomm_toolsconf.sh /etc/my_init.d/restcomm5.sh +ADD ./src/main/docker/scripts/restcomm-runlevels.sh /etc/my_init.d/restcomm6.sh +ADD ./src/main/docker/scripts/restcomm_tag.sh /etc/my_init.d/restcomm7.sh + +ADD ./src/main/docker/scripts/restcomm_service.sh /tmp/restcomm_service.sh +ADD ./src/main/docker/scripts/start-restcomm.sh /tmp/start-restcomm.sh + +RUN chmod +x /etc/my_init.d/restcomm*.sh + + From de2d94e0e85275bd94934f371ddbeab958af26cb Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 22:18:01 +0300 Subject: [PATCH 22/41] Split the maven build in 2 profiles `standalone` and `all-in-one` In a nutshell, the `standalone` profile includes just restcomm-connect. The `all-in-one` includes RC + RMS + RVD + WebRTC UI, just like it used to be before introducing these 2 profiles. (Eventually, we should be getting rid of this second one, but for the moment, for backwards compatibility and for moving forward with a smoother migration process, we should keep it around and just focus on improving the WAR + docker image generation on that part (in maven build, instead of `ant` + separate restcomm-docker repo). --- release/restcomm-assembly-as7/pom.xml | 253 ++++++++++++++++---------- 1 file changed, 161 insertions(+), 92 deletions(-) diff --git a/release/restcomm-assembly-as7/pom.xml b/release/restcomm-assembly-as7/pom.xml index 1df91fdeca..508ded375a 100644 --- a/release/restcomm-assembly-as7/pom.xml +++ b/release/restcomm-assembly-as7/pom.xml @@ -2,106 +2,175 @@ 4.0.0 - org.restcomm - assembly-parent - 9.0.0-SNAPSHOT - + org.restcomm + assembly-parent + 9.0.0-SNAPSHOT + org.restcomm assembly-as7 pom UTF-8 3.2.0-89 - - - - org.restcomm - restcomm-connect-rvd - war - - - org.restcomm - restcomm-connect.application - war - - - - org.restcomm - restcomm-connect-management - war - - - - - org.mobicents.webrtc - webrtc-ui - war - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.0.1 - - - extractSipServlets - prepare-package - - unpack - + + + + all-in-one + + + org.restcomm + restcomm-connect-rvd + war + + + org.restcomm + restcomm-connect.application + war + + + + org.restcomm + restcomm-connect-management + war + + + org.mobicents.webrtc + webrtc-ui + war + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.1 + + + extractSipServlets + prepare-package + + unpack + + + + + org.mobicents.servlet.sip + sip-servlets-as7 + ${sipservletapi.version} + zip + assembly + + + + + + extractMediaserver + prepare-package + + unpack + + + + + org.mobicents.media + media-server-standalone + zip + assembly + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 - - - org.mobicents.servlet.sip - sip-servlets-as7 - ${sipservletapi.version} - zip - assembly - - + + src/main/resources/descriptor.xml + + Restcomm-JBoss-AS7-${project.version} + false - - - extractMediaserver - prepare-package - - unpack - + + + package + + single + + + + + + + + + standalone + + + org.restcomm + restcomm-connect.application + war + + + + org.restcomm + restcomm-connect-management + war + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.1 + + + extractSipServlets + prepare-package + + unpack + + + + + org.mobicents.servlet.sip + sip-servlets-as7 + ${sipservletapi.version} + zip + assembly + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.0 - - - org.mobicents.media - media-server-standalone - zip - assembly - - + + src/main/resources/descriptor.xml + + Connect-JBoss-AS7-${project.version} + false - - - - - org.apache.maven.plugins - maven-assembly-plugin - 3.1.0 - - - src/main/resources/descriptor.xml - - Restcomm-JBoss-AS7-${project.version} - false - - - - package - - single - - - - - - + + + package + + single + + + + + + + + + From 0d1879c26f566f534b4d788f49e3a75806e57a61 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 22:28:41 +0300 Subject: [PATCH 23/41] Added docker image generation through fabric8 docker maven plugin the plugin is used in each of the 2 maven profiles (`standalone` and `all-in-one`) to pick up the corresponding Dockerfile (`Dockerfile_standalone` and `Dockerfile_all-in-one`) and build the appropriate docker image (`restcomm/restcomm` and `restcomm/connect` respectively). For the moment - and this is perhaps a point for discussion - the plugin's `build` goal is bound to the `pre-integration-test` phase, as the fabric8 philosophy suggests you build a docker image (which is the resulting binary artifact from your maven build) and then you `start` it - still within the `pre-integration-test` phase - (together with all of its dependencies, e.g. database docker containers, 3rd party dependencies, etc.) so that you can then run the `verify` phase tests against the running system. There is also a binding to the plugin's `stop` goal, in the `post-integration-phase`, which tears down the above setup. I am leaving some of the above bindings commented out, on purpose, so you, oh dear reviewer, can get a better idea of how this works, in case you're not familiar. Whether we choose to adopt this setup (which in my previous experience is pretty damn awesome!! ) largely depends however on what tests we already run in the `verify` phase and whether we would care to move some to other phases - or even other jenkins pipeline stages. If we don't want to adopt the above approach, then we can consider binding the docker image creation in some other phase of mvn lifecycle. --- release/restcomm-assembly-as7/pom.xml | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/release/restcomm-assembly-as7/pom.xml b/release/restcomm-assembly-as7/pom.xml index 508ded375a..acd6253ec8 100644 --- a/release/restcomm-assembly-as7/pom.xml +++ b/release/restcomm-assembly-as7/pom.xml @@ -103,6 +103,46 @@ + + io.fabric8 + docker-maven-plugin + 0.25.2 + + + + + restcomm/restcomm + + + ${project.version} + latest + + ${*} + ../../../Dockerfile_all-in-one + + + + + + + start + pre-integration-test + + + build + + + + + stop + post-integration-test + + + + + + @@ -168,6 +208,46 @@ + + io.fabric8 + docker-maven-plugin + 0.25.2 + + + + + restcomm/connect + + + ${project.version} + latest + + ${*} + ../../../Dockerfile_standalone + + + + + + + start + pre-integration-test + + + build + + + + + stop + post-integration-test + + + + + + From 9ec0ec07083de7142acbd2d38ed38424f6915f9e Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 22:29:18 +0300 Subject: [PATCH 24/41] Ensure we don't commit anything we shouldn't --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index b92a79e654..9b52e7b525 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ bin csv .metadata .idea +release/target-as7 +release/target-tomcat +*.iml \ No newline at end of file From 755cad23ef38fb0200a34cadefa70fd0e1b8a540 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sat, 5 May 2018 22:30:25 +0300 Subject: [PATCH 25/41] Fixed duplicate module definition --- restcomm/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/restcomm/pom.xml b/restcomm/pom.xml index 09442e1281..f9e3d187f2 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -176,8 +176,8 @@ restcomm.dns.api restcomm.monitoring.service restcomm.tts.awspolly - restcomm.sdr.apirestcomm.core - restcomm-connect.core + restcomm.sdr.api + restcomm.core From 908e217140efa70bf31bb62d9f5ad9ef118d2378 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Sun, 6 May 2018 09:12:43 +0300 Subject: [PATCH 26/41] uncommitted change from 4b5fc6c75cec5d4d5e9132a8407e09239d3ce6dc cherry pick (due to previous merge conflicts) i.e. this change was introduced in 4b5fc6c75cec5d4d5e9132a8407e09239d3ce6dc, but the cherry pick didn't bring it along due to some merge conflict. --- restcomm/restcomm.core/pom.xml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/restcomm/restcomm.core/pom.xml b/restcomm/restcomm.core/pom.xml index bcc864919b..551fd90ad4 100644 --- a/restcomm/restcomm.core/pom.xml +++ b/restcomm/restcomm.core/pom.xml @@ -1,5 +1,5 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.restcomm @@ -30,7 +30,12 @@ com.googlecode.libphonenumber libphonenumber - + + + log4j + log4j + provided + \ No newline at end of file From 878c329df4ac95742f446b7858e1d64b79e9ab15 Mon Sep 17 00:00:00 2001 From: George Vagenas Date: Fri, 13 Apr 2018 12:21:12 +0300 Subject: [PATCH 27/41] Added repository Fixes for restcomm-assembly-wildfly10 (cherry picked from commit 5004ef1) --- pom.xml | 13 +++++++--- release/restcomm-assembly-wildfly10/pom.xml | 28 ++++++++++----------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 05f9a44a0e..334c864988 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.restcomm restcomm-parent 4.0.1 - + 4.0.0 org.restcomm restcomm-connect-root @@ -38,8 +38,8 @@ UTF-8 6.0.23 2.5 - - + + mobicents-public-repository-group @@ -69,6 +69,11 @@ never + + cxsnexus-releases + http://cxsnexus.restcomm.com/nexus/content/repositories/releases/ + default + + + ${project.build.directory}/dependency/restcomm-sip-servlets-${sipservletapi.version}-jboss-as-7.2.0.Final + / + + + standalone/configuration/dars/mobicents-dar.properties + standalone/configuration/mss-sip-stack.properties + + + + + ${project.build.directory}/dependency/restcomm-media-server + /mediaserver + + + + ${project.basedir}/src/main/resources/assembly-resources + / + + + + + /standalone/deployments + false + restcomm-rvd.war + + org.restcomm:restcomm-connect-rvd + + + + /standalone/deployments + false + olympus.war + + org.mobicents.webrtc:webrtc-ui + + + + + /standalone/deployments/restcomm.war + true + + org.restcomm:restcomm-connect.application + + + + false + /standalone/deployments + restcomm-management.war + + org.restcomm:restcomm-connect-management + + + + + + From d23c5f23cd986b166c2153532828b44480a05188 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 10:32:44 +0300 Subject: [PATCH 34/41] Removed mediaserver, RVD and Olympus from Standalone assembly --- .../main/resources/descriptor_standalone.xml | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml index e04b188a94..aac8e7f5a5 100644 --- a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml +++ b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml @@ -18,35 +18,17 @@ standalone/configuration/mss-sip-stack.properties - - - ${project.build.directory}/dependency/restcomm-media-server - /mediaserver - ${project.basedir}/src/main/resources/assembly-resources / + + standalone/deployments/olympus.war.dodeploy + standalone/deployments/restcomm-rvd.war.dodeploy + - - - /standalone/deployments - false - restcomm-rvd.war - - org.restcomm:restcomm-connect-rvd - - - - /standalone/deployments - false - olympus.war - - org.mobicents.webrtc:webrtc-ui - - - + /standalone/deployments/restcomm.war true From d5e0bccbcbadd8a2e77437b78760e99f716d9e9c Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 11:13:47 +0300 Subject: [PATCH 35/41] Removed sample apps these were also being excluded in the [build.xml](https://github.com/RestComm/Restcomm-Connect/blob/master/release/build.xml#L198) --- .../src/main/resources/descriptor_standalone.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml index aac8e7f5a5..cd232bb864 100644 --- a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml +++ b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml @@ -15,8 +15,10 @@ standalone/configuration/dars/mobicents-dar.properties - standalone/configuration/mss-sip-stack.properties - + standalone/configuration/mss-sip-stack.properties + standalone/deployments/media-jsr309-servlet.war + standalone/deployments/click2call.war + From c2b007a55302a0231ad719c6268dbd95908328bb Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 11:17:30 +0300 Subject: [PATCH 36/41] Cleanup --- release/pom.xml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/release/pom.xml b/release/pom.xml index bebdc9bf30..9b42c62d01 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -21,7 +21,7 @@ webrtc-ui [1.1,1.1.999) war - + org.mobicents.media media-server-standalone @@ -44,11 +44,7 @@ - - restcomm-assembly-as7 + restcomm-assembly-as7 restcomm-assembly-wildfly10 From d6c217fc8a9e1d7ac35d7f9423716b000734b188 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 16:00:16 +0300 Subject: [PATCH 37/41] Necessary fixes for `all-in-one` profile Manually uploaded media server 6.0.23 in our own CXS Nexus releases repo and fixed artifact ID. Also added some missing files, which are needed for the all-in-one docker image bundle. --- release/pom.xml | 11 ++- release/restcomm-assembly-as7/pom.xml | 2 +- .../docker/cron_files/mediaserver_crontab | 3 + .../src/main/docker/scripts/rms_service.sh | 10 ++ .../main/docker/scripts/start-mediaserver.sh | 98 +++++++++++++++++++ 5 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 release/restcomm-assembly-as7/src/main/docker/cron_files/mediaserver_crontab create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/rms_service.sh create mode 100644 release/restcomm-assembly-as7/src/main/docker/scripts/start-mediaserver.sh diff --git a/release/pom.xml b/release/pom.xml index 9b42c62d01..0368141e9a 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -24,10 +24,10 @@ org.mobicents.media - media-server-standalone + server ${mobicents.mgcp.impl.version} zip - assembly + assembly org.restcomm @@ -47,4 +47,11 @@ restcomm-assembly-as7 restcomm-assembly-wildfly10 + + + cxsnexus-releases + http://cxsnexus.restcomm.com/nexus/content/repositories/releases/ + default + + diff --git a/release/restcomm-assembly-as7/pom.xml b/release/restcomm-assembly-as7/pom.xml index f26580f1e4..5a39b7bee7 100644 --- a/release/restcomm-assembly-as7/pom.xml +++ b/release/restcomm-assembly-as7/pom.xml @@ -75,7 +75,7 @@ org.mobicents.media - media-server-standalone + server zip assembly diff --git a/release/restcomm-assembly-as7/src/main/docker/cron_files/mediaserver_crontab b/release/restcomm-assembly-as7/src/main/docker/cron_files/mediaserver_crontab new file mode 100644 index 0000000000..642f8951bd --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/cron_files/mediaserver_crontab @@ -0,0 +1,3 @@ +5 8 * * 0 root find /opt/Restcomm-JBoss-AS7/mediaserver/log/server.log -mtime +7 -exec rm {} \; +# An empty line is required at the end of this file for a valid cron file. + diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/rms_service.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/rms_service.sh new file mode 100644 index 0000000000..8f9b176d37 --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/rms_service.sh @@ -0,0 +1,10 @@ +#! /bin/bash + +export RUN_DOCKER=true + +BASEDIR=/opt/Restcomm-JBoss-AS7 +RMS_CONF=$BASEDIR/bin/restcomm +ms_conf=$RMS_CONF/mediaserver.conf +ms_home=$BASEDIR/mediaserver + +exec $ms_home/start-mediaserver.sh $ms_conf \ No newline at end of file diff --git a/release/restcomm-assembly-as7/src/main/docker/scripts/start-mediaserver.sh b/release/restcomm-assembly-as7/src/main/docker/scripts/start-mediaserver.sh new file mode 100644 index 0000000000..d2cb89174b --- /dev/null +++ b/release/restcomm-assembly-as7/src/main/docker/scripts/start-mediaserver.sh @@ -0,0 +1,98 @@ +#! /bin/bash +## Description: Starts Media Server with auto-configuration. +## Author : Henrique Rosa (henrique.rosa@telestax.com) +## Parameters : 1. path to conf file (optional) + +export MS_HOME=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) +RESTCOMME_DIR=/opt/Restcomm-JBoss-AS7 +source /etc/container_environment.sh + +getPID(){ + while read -r line + do + if ps -ef | grep $line | grep -q mediaserver + then + RMS_PID=$line + fi + done < <(jps | grep Main | cut -d " " -f 1) +} + +configNetwork() { +# Configure RMS network using the read-network-props.sh from RC +if [ "${MS_EXTERNAL^^}" = "FALSE" ]; then + echo "Looking for the IP Address, subnet, network and broadcast_address for RMS" + source $RESTCOMME_DIR/bin/restcomm/utils/read-network-props.sh "eth0" + + if [ ! -f /etc/container_environment/BIND_ADDRESS ]; then + sed -i "s|BIND_ADDRESS=.*|BIND_ADDRESS=${PRIVATE_IP}|" $RESTCOMME_DIR/bin/restcomm/mediaserver.conf + fi + + if [ ! -f /etc/container_environment/NETWORK ]; then + sed -i "s|NETWORK=.*|NETWORK=${NETWORK}|" $RESTCOMME_DIR/bin/restcomm/mediaserver.conf + fi + + if [ ! -f /etc/container_environment/SUBNET ]; then + sed -i "s|SUBNET=.*|SUBNET=${SUBNET_MASK}|" $RESTCOMME_DIR/bin/restcomm/mediaserver.conf + fi + + if [ ! -f /etc/container_environment/RMSCONF_MGCP_ADDRESS ]; then + sed -i "s|MGCP_ADDRESS=.*|MGCP_ADDRESS=${PRIVATE_IP}|" $RESTCOMME_DIR/bin/restcomm/mediaserver.conf + fi + +fi + +} + +verifyDependencies() { + source $MS_HOME/.autoconfig/verify-dependencies.sh +} + +loadConfigurationParams() { + local override_conf=$1 + + # load default configuration files + source $MS_HOME/mediaserver.conf + source $MS_HOME/logger.conf + source $MS_HOME/ssl.conf + + # load file to override configuration (if any) + if [ -n "$override_conf" ]; then + source $override_conf + fi +} + +configureMediaServer() { + # Configure media server + source $MS_HOME/.autoconfig/autoconfigure.sh + # Set permissions of run script because it may have been overwritten by commands like sed + chmod 755 $MS_HOME/bin/run.sh +} + +startMediaServer() { + echo 'Starting RestComm Media Server...' + # Check if RestComm is already running + if [[ "$RUN_DOCKER" == "true" || "$RUN_DOCKER" == "TRUE" ]]; then + if [ -n "$RMS_PID" ]; then + echo '... already running Aborted.' + exit 1; + else + $MS_HOME/bin/run.sh + echo '...RestComm Media Server started running!' + fi + else + if tmux ls | grep -q 'mediaserver'; then + echo '... already running a session named "mediaserver"! Aborted.' + exit 1 + else + tmux new -s mediaserver -d $MS_HOME/bin/run.sh + echo '...RestComm Media Server started running on session named "mediaserver"!' + fi + fi +} + +getPID +#verifyDependencies +configNetwork +loadConfigurationParams $1 +configureMediaServer +startMediaServer From 8598bd973ea8eb53dd319592fd375364efba224c Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 16:06:08 +0300 Subject: [PATCH 38/41] Fixed, but Disabled wildfly maven module Restcomm does not yet fully support it --- release/pom.xml | 2 +- release/restcomm-assembly-wildfly10/pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/release/pom.xml b/release/pom.xml index 0368141e9a..94fcfd8e2b 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -45,7 +45,7 @@ restcomm-assembly-as7 - restcomm-assembly-wildfly10 + diff --git a/release/restcomm-assembly-wildfly10/pom.xml b/release/restcomm-assembly-wildfly10/pom.xml index 10632081ba..01df69dbb2 100644 --- a/release/restcomm-assembly-wildfly10/pom.xml +++ b/release/restcomm-assembly-wildfly10/pom.xml @@ -72,7 +72,7 @@ org.mobicents.media - media-server-standalone + server zip assembly @@ -87,7 +87,7 @@ 3.1.0 - src/assembly/descriptor.xml + src/main/resources/descriptor.xml Restcomm-JBoss-Wildfly10-${project.version} false From 25e6f3c8a331c8d69cdc45de74cb28df82a1dfa4 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 17:59:19 +0300 Subject: [PATCH 39/41] Revert "removed any unnecesary tomcat dependencies" This reverts commit ad07925 --- restcomm/pom.xml | 165 ++++++++++++++++-- restcomm/restcomm.application/pom.xml | 7 +- restcomm/restcomm.dao/pom.xml | 12 +- restcomm/restcomm.dns.api/pom.xml | 7 +- restcomm/restcomm.extension.api/pom.xml | 12 +- .../restcomm.extension.controller/pom.xml | 7 +- restcomm/restcomm.http/pom.xml | 21 +++ restcomm/restcomm.monitoring.service/pom.xml | 7 +- .../restcomm.provisioning.number.api/pom.xml | 13 +- restcomm/restcomm.telephony.api/pom.xml | 6 +- restcomm/restcomm.telephony/pom.xml | 12 +- restcomm/restcomm.testsuite/pom.xml | 87 ++++----- 12 files changed, 284 insertions(+), 72 deletions(-) diff --git a/restcomm/pom.xml b/restcomm/pom.xml index f9e3d187f2..d649d6819c 100644 --- a/restcomm/pom.xml +++ b/restcomm/pom.xml @@ -204,6 +204,114 @@ restcomm-connect.mrb ${project.version} + + org.restcomm + restcomm-connect.application + ${project.version} + war + + + org.restcomm + restcomm-connect.extension.api + ${project.version} + + + org.restcomm + restcomm-connect.extension.controller + ${project.version} + + + org.restcomm + restcomm-connect.monitoring.service + ${project.version} + + + org.restcomm + restcomm-connect.dao + ${project.version} + + + org.restcomm + restcomm-connect.telephony + ${project.version} + + + org.restcomm + restcomm-connect.telephony.api + ${project.version} + + + + org.restcomm + restcomm-connect.http + ${project.version} + + + org.restcomm + restcomm-connect.extension.api + ${project.version} + + + + org.restcomm + restcomm-connect.testsuite + ${project.version} + + + + org.restcomm + restcomm-connect.commons + ${project.version} + + + org.restcomm + restcomm-connect.email.api + ${project.version} + + + + org.restcomm + restcomm-connect.sms + ${project.version} + + + org.restcomm + restcomm-connect.mgcp + ${project.version} + + + + org.restcomm + restcomm-connect.mscontrol.api + ${project.version} + + + + org.restcomm + restcomm-connect.mscontrol.mms + ${project.version} + + + org.restcomm + restcomm-connect.dns.api + ${project.version} + + + org.restcomm + restcomm-connect-management + ${project.version} + war + + + + + + + + org.restcomm + restcomm-connect.sms.api + ${project.version} + com.cloudhopper @@ -325,12 +433,6 @@ ${sipservletapi.version} provided - - org.mobicents.servlet.sip - sip-servlets-client - ${sipservletapi.version} - provided - @@ -449,6 +551,19 @@ test + + org.apache.tomcat + tomcat-coyote + ${tomcat7.version} + provided + + + + org.apache.tomcat + tomcat-jasper + ${tomcat7.version} + provided + javax.sip @@ -457,6 +572,19 @@ test + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + ${sipservletapi.version} + provided + + + + org.mobicents.servlet.sip + sip-servlets-core-api + ${sipservletapi.version} + + org.mobicents.servlet.sip sip-servlets-application-router @@ -630,25 +758,34 @@ - javax.sip - jain-sip-ri + org.apache.tomcat + tomcat-coyote test + + org.apache.tomcat + tomcat-jasper + test + - org.mobicents.servlet.sip - sip-servlets-application-router + javax.sip + jain-sip-ri test - javax.servlet - javax.servlet-api - 3.1.0 - provided + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + test + + org.mobicents.servlet.sip + sip-servlets-application-router + test + org.hsqldb diff --git a/restcomm/restcomm.application/pom.xml b/restcomm/restcomm.application/pom.xml index a688a6a628..fefb6c34ea 100644 --- a/restcomm/restcomm.application/pom.xml +++ b/restcomm/restcomm.application/pom.xml @@ -67,7 +67,12 @@ sip-servlets-spec provided - + + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + provided + javax.servlet diff --git a/restcomm/restcomm.dao/pom.xml b/restcomm/restcomm.dao/pom.xml index 1f8f3e46f4..f95d46890e 100644 --- a/restcomm/restcomm.dao/pom.xml +++ b/restcomm/restcomm.dao/pom.xml @@ -68,7 +68,17 @@ provided - + + org.apache.tomcat + tomcat-coyote + provided + + + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + provided + com.googlecode.libphonenumber diff --git a/restcomm/restcomm.dns.api/pom.xml b/restcomm/restcomm.dns.api/pom.xml index 410d0fbd63..2b3cb34eae 100644 --- a/restcomm/restcomm.dns.api/pom.xml +++ b/restcomm/restcomm.dns.api/pom.xml @@ -19,6 +19,11 @@ ${project.version} - + + org.apache.tomcat + tomcat-coyote + provided + + diff --git a/restcomm/restcomm.extension.api/pom.xml b/restcomm/restcomm.extension.api/pom.xml index a893c01b12..9a934c1da8 100644 --- a/restcomm/restcomm.extension.api/pom.xml +++ b/restcomm/restcomm.extension.api/pom.xml @@ -39,6 +39,16 @@ - + + org.apache.tomcat + tomcat-coyote + provided + + + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + provided + diff --git a/restcomm/restcomm.extension.controller/pom.xml b/restcomm/restcomm.extension.controller/pom.xml index 4373e2f580..ba7c6a2711 100644 --- a/restcomm/restcomm.extension.controller/pom.xml +++ b/restcomm/restcomm.extension.controller/pom.xml @@ -47,7 +47,12 @@ provided - + + org.apache.tomcat + tomcat-coyote + provided + + org.restcomm restcomm-connect.dao diff --git a/restcomm/restcomm.http/pom.xml b/restcomm/restcomm.http/pom.xml index 3a3ace0b05..5b74e9fa6d 100644 --- a/restcomm/restcomm.http/pom.xml +++ b/restcomm/restcomm.http/pom.xml @@ -182,6 +182,13 @@ test + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + ${sipservletapi.version} + test + + org.mobicents.servlet.sip sip-servlets-application-router @@ -189,6 +196,20 @@ test + + org.apache.tomcat + tomcat-coyote + ${tomcat7.version} + test + + + + org.apache.tomcat + tomcat-jasper + ${tomcat7.version} + test + + junit junit diff --git a/restcomm/restcomm.monitoring.service/pom.xml b/restcomm/restcomm.monitoring.service/pom.xml index 5bb555c5a9..b1b60ce8b9 100644 --- a/restcomm/restcomm.monitoring.service/pom.xml +++ b/restcomm/restcomm.monitoring.service/pom.xml @@ -74,7 +74,12 @@ provided - + + org.apache.tomcat + tomcat-coyote + provided + + javax.sip jain-sip-api diff --git a/restcomm/restcomm.provisioning.number.api/pom.xml b/restcomm/restcomm.provisioning.number.api/pom.xml index 9bddffebdf..baa38505e4 100644 --- a/restcomm/restcomm.provisioning.number.api/pom.xml +++ b/restcomm/restcomm.provisioning.number.api/pom.xml @@ -14,12 +14,13 @@ restcomm-connect.commons ${project.version} - - - javax.servlet - javax.servlet-api - provided - + + + org.apache.tomcat + tomcat-coyote + provided + + diff --git a/restcomm/restcomm.telephony.api/pom.xml b/restcomm/restcomm.telephony.api/pom.xml index 37725c12c0..24059bee29 100644 --- a/restcomm/restcomm.telephony.api/pom.xml +++ b/restcomm/restcomm.telephony.api/pom.xml @@ -23,10 +23,10 @@ provided - + - org.mobicents.servlet.sip - sip-servlets-client + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 provided diff --git a/restcomm/restcomm.telephony/pom.xml b/restcomm/restcomm.telephony/pom.xml index a83b1e3cd9..5d695a60b9 100644 --- a/restcomm/restcomm.telephony/pom.xml +++ b/restcomm/restcomm.telephony/pom.xml @@ -67,7 +67,17 @@ provided - + + org.apache.tomcat + tomcat-jasper + provided + + + + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + provided + javax.servlet diff --git a/restcomm/restcomm.testsuite/pom.xml b/restcomm/restcomm.testsuite/pom.xml index b6bb407654..f1c119ed41 100644 --- a/restcomm/restcomm.testsuite/pom.xml +++ b/restcomm/restcomm.testsuite/pom.xml @@ -167,20 +167,36 @@ - org.mobicents.sipunit - sipunit - 2.0.3 - compile - + org.mobicents.servlet.sip.containers + sip-servlets-catalina-7 + ${sipservletapi.version} + compile + - org.wildfly.arquillian - wildfly-arquillian-container-embedded - 2.1.0.Final - test - + org.mobicents.servlet.sip.containers + sip-servlets-tomcat-7 + ${sipservletapi.version} + compile + + + org.mobicents.arquillian.container + mss-tomcat-embedded-7 + ${mss.arquillian.version} + compile + + + + + com.cloudhopper @@ -237,7 +253,7 @@ javax.sip jain-sip-api 1.2 - compile + test @@ -269,7 +285,19 @@ test + + org.apache.tomcat + tomcat-coyote + ${tomcat7.version} + test + + + org.apache.tomcat + tomcat-jasper + ${tomcat7.version} + test + org.mockito @@ -293,6 +321,12 @@ standalone + + org.apache.tomcat + tomcat-catalina + ${tomcat7.version} + + org.mobicents.commtesting mgcpUnit @@ -369,31 +403,6 @@ - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack - process-test-classes - - unpack - - - - - org.wildfly - wildfly-dist - 10.0.0.Final - zip - false - target - - - - - - maven-compiler-plugin @@ -460,12 +469,6 @@ -Xms256m -Xmx2048m -XX:MaxPermSize=1024m ${jacocoArgLine} false - - org.jboss.logmanager.LogManager - ${project.basedir}/target/wildfly-10.0.0.Final - ${project.basedir}/target/wildfly-10.0.0.Final/modules - wildfly10 - From f8ef975b27ecd37f470d89c1ca567ee517de8543 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 19:00:51 +0300 Subject: [PATCH 40/41] Fixed assembly identifiers for generated artifacts --- .../src/main/resources/descriptor_all-in-one.xml | 2 +- .../src/main/resources/descriptor_standalone.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/restcomm-assembly-as7/src/main/resources/descriptor_all-in-one.xml b/release/restcomm-assembly-as7/src/main/resources/descriptor_all-in-one.xml index e04b188a94..e001853ebb 100644 --- a/release/restcomm-assembly-as7/src/main/resources/descriptor_all-in-one.xml +++ b/release/restcomm-assembly-as7/src/main/resources/descriptor_all-in-one.xml @@ -1,7 +1,7 @@ - assembly + all-in-one zip tar.gz diff --git a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml index cd232bb864..8c27e5a20e 100644 --- a/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml +++ b/release/restcomm-assembly-as7/src/main/resources/descriptor_standalone.xml @@ -1,7 +1,7 @@ - assembly + standalone zip tar.gz From 1ab97c4bf0d776b4f1a48d51bf85035c29f025c5 Mon Sep 17 00:00:00 2001 From: Yorgos Saslis Date: Mon, 7 May 2018 19:11:57 +0300 Subject: [PATCH 41/41] Moved docker image generation to `package` maven phase the bindings to the `pre-integration-test` and `post-integration-test` phases only really make sense if/when we want to start some containers during the `verify` phase. I am keeping those execution bindings in, so we have the hooks ready. However, you can *safely remove* the `start` and `stop` executions of the fabric8 docker maven plugin with no problems. --- release/restcomm-assembly-as7/pom.xml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/release/restcomm-assembly-as7/pom.xml b/release/restcomm-assembly-as7/pom.xml index 5a39b7bee7..2b7f15029b 100644 --- a/release/restcomm-assembly-as7/pom.xml +++ b/release/restcomm-assembly-as7/pom.xml @@ -126,12 +126,16 @@ - start - pre-integration-test + build + package - build + + + + start + package + @@ -231,12 +235,16 @@ - start - pre-integration-test + build + package - build + + + + start + package +