/*
* TeleStax, Open Source Cloud Communications
* Copyright 2011-2015, Telestax Inc and individual contributors
* by the @authors tag.
*
* This program is free software: you can redistribute it and/or modify
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package org.mobicents.tools.smpp.balancer;
import org.mobicents.tools.configuration.LoadBalancerConfiguration;
import org.mobicents.tools.sip.balancer.ActiveStandbyAlgorithm;
import org.mobicents.tools.smpp.multiplexer.SmppToNodeRoundRobinAlgorithm;
import org.mobicents.tools.smpp.multiplexer.SmppToNodeSubmitToAllAlgorithm;
import org.mobicents.tools.smpp.multiplexer.SmppToProviderActiveStandbyAlgorithm;
import com.cloudhopper.commons.charset.CharsetUtil;
import com.cloudhopper.smpp.SmppBindType;
import com.cloudhopper.smpp.SmppServerConfiguration;
import com.cloudhopper.smpp.SmppSessionConfiguration;
import com.cloudhopper.smpp.pdu.SubmitSm;
import com.cloudhopper.smpp.ssl.SslConfiguration;
import com.cloudhopper.smpp.type.Address;
import com.cloudhopper.smpp.type.SmppInvalidArgumentException;
/**
* @author Konstantin Nosach (kostyantyn.nosach@telestax.com)
*/
public class ConfigInit {
static SmppServerConfiguration getSmppServerConfiguration(int i, boolean isSslServer)
{
SmppServerConfiguration config = new SmppServerConfiguration();
config.setName("SMPP Server "+i);
config.setHost("127.0.0.1");
config.setMaxConnectionSize(10);
config.setNonBlockingSocketsEnabled(true);
config.setDefaultRequestExpiryTimeout(30000);
config.setDefaultWindowMonitorInterval(15000);
config.setDefaultWindowSize(5);
config.setDefaultWindowWaitTimeout(config.getDefaultRequestExpiryTimeout());
config.setDefaultSessionCountersEnabled(true);
config.setJmxEnabled(true);
config.setPort(10021 + i);
config.setHost("127.0.0.1");
if(isSslServer)
{
SslConfiguration sslConfig = new SslConfiguration();
sslConfig.setKeyStorePath(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
sslConfig.setKeyStorePassword("123456");
sslConfig.setTrustStorePath(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
sslConfig.setTrustStorePassword("123456");
config.setUseSsl(true);
config.setSslConfiguration(sslConfig);
}
return config;
}
static LoadBalancerConfiguration getLbProperties(boolean isSsl, boolean terminateTLSTraffic, boolean isOneServer)
{
LoadBalancerConfiguration lbConfig = getLbProperties(isSsl,terminateTLSTraffic);
if(isOneServer)
{
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021");
lbConfig.getSmppConfiguration().setSmppToNodeAlgorithmClass(SmppToNodeRoundRobinAlgorithm.class.getName());
}
else
{
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021,127.0.0.1:10022");
lbConfig.getSmppConfiguration().setSmppToProviderAlgorithmClass(SmppToProviderActiveStandbyAlgorithm.class.getName());
}
return lbConfig;
}
static LoadBalancerConfiguration getLbProperties(boolean isSsl, boolean terminateTLSTraffic)
{
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
lbConfig.getSslConfiguration().setTerminateTLSTraffic(terminateTLSTraffic);
//sip property
lbConfig.getSipConfiguration().getInternalLegConfiguration().setTcpPort(5065);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(5060);
//smpp property
lbConfig.getSmppConfiguration().setSmppHost("127.0.0.1");
lbConfig.getSmppConfiguration().setSmppPort(2776);
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021,127.0.0.1:10022,127.0.0.1:10023");
lbConfig.getSmppConfiguration().setDefaultSessionCountersEnabled(true);
lbConfig.getSmppConfiguration().setTimeoutResponse(3000);
lbConfig.getSmppConfiguration().setTimeoutConnection(1000);
lbConfig.getSmppConfiguration().setTimeoutEnquire(1000);
lbConfig.getSmppConfiguration().setReconnectPeriod(500);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckClientSide(2000);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckServerSide(2000);
lbConfig.getSmppConfiguration().setSmppToNodeAlgorithmClass(SmppToNodeSubmitToAllAlgorithm.class.getName());
if(isSsl)
{
lbConfig.getSslConfiguration().setKeyStore(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
lbConfig.getSslConfiguration().setKeyStorePassword("123456");
lbConfig.getSslConfiguration().setTrustStore(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
lbConfig.getSslConfiguration().setTrustStorePassword("123456");
lbConfig.getSmppConfiguration().setSmppSslPort(2876);
}
return lbConfig;
}
static LoadBalancerConfiguration getLbSpliterProperties(boolean isSsl, boolean terminateTLSTraffic)
{
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
lbConfig.getSslConfiguration().setTerminateTLSTraffic(terminateTLSTraffic);
//sip property
lbConfig.getSipConfiguration().getInternalLegConfiguration().setTcpPort(5065);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(5060);
//smpp property
lbConfig.getSmppConfiguration().setSmppHost("127.0.0.1");
lbConfig.getSmppConfiguration().setSmppPort(2776);
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021,127.0.0.1:10022,127.0.0.1:10023");
lbConfig.getSmppConfiguration().setDefaultSessionCountersEnabled(true);
lbConfig.getSmppConfiguration().setTimeoutResponse(3000);
lbConfig.getSmppConfiguration().setTimeoutConnection(1000);
lbConfig.getSmppConfiguration().setTimeoutEnquire(5000);
lbConfig.getSmppConfiguration().setReconnectPeriod(500);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckClientSide(2000);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckServerSide(2000);
lbConfig.getSmppConfiguration().setSmppToNodeAlgorithmClass(SmppToNodeSubmitToAllAlgorithm.class.getName());
lbConfig.getSmppConfiguration().setMuxMode(false);
if(isSsl)
{
lbConfig.getSslConfiguration().setKeyStore(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
lbConfig.getSslConfiguration().setKeyStorePassword("123456");
lbConfig.getSslConfiguration().setTrustStore(ConfigInit.class.getClassLoader().getResource("keystore").getFile());
lbConfig.getSslConfiguration().setTrustStorePassword("123456");
lbConfig.getSmppConfiguration().setSmppSslPort(2876);
}
return lbConfig;
}
static LoadBalancerConfiguration getLbSpliterProperties(boolean isSsl, boolean terminateTLSTraffic, boolean isOneServer)
{
LoadBalancerConfiguration lbConfig = getLbSpliterProperties(isSsl,terminateTLSTraffic);
if(isOneServer)
{
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021");
lbConfig.getSmppConfiguration().setSmppToNodeAlgorithmClass(SmppToNodeRoundRobinAlgorithm.class.getName());
}
else
{
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021,127.0.0.1:10022");
lbConfig.getSmppConfiguration().setSmppToProviderAlgorithmClass(SmppToProviderActiveStandbyAlgorithm.class.getName());
}
return lbConfig;
}
static SmppSessionConfiguration getSmppSessionConfiguration(int i, boolean isSslClient)
{
SmppSessionConfiguration config = new SmppSessionConfiguration();
config.setWindowSize(1);
config.setName("Client " + i);
config.setType(SmppBindType.TRANSCEIVER);
config.setHost("127.0.0.1");
config.setConnectTimeout(10000);
config.setSystemId("RestComm");
config.setPassword("password");
config.getLoggingOptions().setLogBytes(true);
// to enable monitoring (request expiration)
config.setRequestExpiryTimeout(30000);
config.setWindowMonitorInterval(15000);
config.setCountersEnabled(true);
if(isSslClient)
{
config.setPort(2876);
SslConfiguration sslConfig = new SslConfiguration();
sslConfig.setTrustAll(true);
sslConfig.setValidateCerts(true);
sslConfig.setValidatePeerCerts(true);
config.setSslConfiguration(sslConfig);
config.setUseSsl(true);
}else
{
config.setPort(2776);
}
return config;
}
static SubmitSm getSubmitSm() throws SmppInvalidArgumentException
{
String text160 = "Hello world!";
byte[] textBytes = CharsetUtil.encode(text160, CharsetUtil.CHARSET_GSM);
SubmitSm submit = new SubmitSm();
submit.setSourceAddress(new Address((byte)0x03, (byte)0x00, "40404"));
submit.setDestAddress(new Address((byte)0x01, (byte)0x01, "44555519205"));
submit.setShortMessage(textBytes);
return submit;
}
public static LoadBalancerConfiguration getLbPropertiesWithOneServer() {
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration();
//sip property
lbConfig.getSipConfiguration().getInternalLegConfiguration().setTcpPort(5065);
lbConfig.getSipConfiguration().getExternalLegConfiguration().setTcpPort(5060);
//smpp property
lbConfig.getSmppConfiguration().setSmppHost("127.0.0.1");
lbConfig.getSmppConfiguration().setSmppPort(2776);
lbConfig.getSmppConfiguration().setRemoteServers("127.0.0.1:10021");
lbConfig.getSmppConfiguration().setDefaultSessionCountersEnabled(true);
lbConfig.getSmppConfiguration().setTimeoutResponse(1000);
lbConfig.getSmppConfiguration().setTimeoutConnection(1000);
lbConfig.getSmppConfiguration().setTimeoutEnquire(20000);
lbConfig.getSmppConfiguration().setReconnectPeriod(500);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckClientSide(2000);
lbConfig.getSmppConfiguration().setTimeoutConnectionCheckServerSide(2000);
lbConfig.getSmppConfiguration().setSmppToNodeAlgorithmClass(SmppToNodeSubmitToAllAlgorithm.class.getName());
return lbConfig;
}
}