Skip to content

Commit c163904

Browse files
Issue #1981: Fix sticky problem
Issue #1981: WIP Fix MultiProvider constructor Issue #1981: WIP Fix MultiProvider configuration. Fix disabled extension. Fix tlv value. Issue #1981: WIP Fix SmsSession remove hacked tlvs, add proper tlvs to outbound and sip request Issue #1981: WIP Fix SmsSession typo dest_network_id to destination_network_id Issue #1981: WIP. Fix Accounts Extensions DAO. Fix ExtensionConfig to json to XMLConfig mapping. Add example account mappings Issue #1981: WIP. Dao changes. Table changes. Multiprovider Extensions. SMSService changes. ExtensionController fixes. Issue #1981: Make changes to SmsSession objects Issue #1981: Add ExtensionResponse subclasses. Handle Session specific Extension customization by modifying the SmsSession configuration.
1 parent 8a776e6 commit c163904

File tree

29 files changed

+1000
-39
lines changed

29 files changed

+1000
-39
lines changed

restcomm/pom.xml

+2
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@
164164
<module>restcomm.email.api</module>
165165
<module>restcomm.extension.api</module>
166166
<module>restcomm.extension.controller</module>
167+
<!--FIXME: temporary will move to telscale-->
168+
<module>restcomm.extension.multiprovider</module>
167169
<module>restcomm.identity</module>
168170
<module>restcomm.mrb</module>
169171
<module>restcomm.mrb.api</module>

restcomm/restcomm.application/src/main/webapp/WEB-INF/conf/extensions.xml

+4-6
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
MA 02110-1301 USA, or see the FSF site: http://www.fsf.org. -->
1212

1313
<extensions>
14-
<!--
15-
<extension>
16-
<name>ExampleExtension</name>
17-
<class>org.restcomm.connect.ExampleExtension</class>
14+
<!-- extension name="MultiProvider">
15+
<name>MultiProvider</name>
16+
<class>org.restcomm.connect.extension.multiprovider.MultiProvider</class>
1817
<enabled>true</enabled>
19-
</extension>
20-
-->
18+
</extension-->
2119
</extensions>

restcomm/restcomm.application/src/main/webapp/WEB-INF/data/hsql/restcomm.script

+7
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@ CREATE MEMORY TABLE "restcomm_gateways"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"
2121
CREATE MEMORY TABLE "restcomm_media_servers" ( "ms_id" INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL, "local_ip" VARCHAR(34) NOT NULL, "local_port" INT NOT NULL, "remote_ip" VARCHAR(34) NOT NULL UNIQUE, "remote_port" INT NOT NULL, "compatibility" VARCHAR(34) DEFAULT 'rms', "response_timeout" VARCHAR(34), "external_address" VARCHAR(34))
2222
CREATE MEMORY TABLE "restcomm_media_resource_broker_entity" ("conference_sid" VARCHAR(34) NOT NULL, "slave_ms_id" VARCHAR(34) NOT NULL, "slave_ms_bridge_ep_id" VARCHAR(34),"slave_ms_cnf_ep_id" VARCHAR(34),"is_bridged_together" BOOLEAN DEFAULT FALSE,PRIMARY KEY ("conference_sid" , "slave_ms_id"))
2323
CREATE MEMORY TABLE PUBLIC."restcomm_extensions_configuration"("sid" VARCHAR(34) NOT NULL PRIMARY KEY,"extension" VARCHAR(255) NOT NULL,"configuration_data" VARCHAR(16777216),"configuration_type" VARCHAR(255) NOT NULL,"date_created" TIMESTAMP NOT NULL,"date_updated" TIMESTAMP, "enabled" BOOLEAN DEFAULT TRUE NOT NULL)
24+
CREATE MEMORY TABLE PUBLIC."restcomm_accounts_extensions" ("account_sid" VARCHAR(34) NOT NULL, "extension_sid" VARCHAR(34) NOT NULL, PRIMARY KEY("account_sid", "extension_sid"), "configuration_data" VARCHAR(16777216))
2425
CREATE MEMORY TABLE "restcomm_geolocation"("sid" VARCHAR(34) NOT NULL PRIMARY KEY, "date_created" DATETIME NOT NULL, "date_updated" DATETIME NOT NULL, "date_executed" DATETIME NOT NULL, "account_sid" VARCHAR(34) NOT NULL, "source" VARCHAR(30), "device_identifier" VARCHAR(30) NOT NULL, "geolocation_type" VARCHAR(15) NOT NULL, "response_status" VARCHAR(30), "cell_id" VARCHAR(10), "location_area_code" VARCHAR(10), "mobile_country_code" INTEGER, "mobile_network_code" VARCHAR(3), "network_entity_address" BIGINT, "age_of_location_info" INTEGER, "device_latitude" VARCHAR(15), "device_longitude" VARCHAR(15), "accuracy" BIGINT, "physical_address" VARCHAR(50), "internet_address" VARCHAR(50), "formatted_address" VARCHAR(200), "location_timestamp" DATETIME, "event_geofence_latitude" VARCHAR(15), "event_geofence_longitude" VARCHAR(15), "radius" BIGINT, "geolocation_positioning_type" VARCHAR(15), "last_geolocation_response" VARCHAR(10), "cause" VARCHAR(150), "api_version" VARCHAR(10) NOT NULL, "uri" LONGVARCHAR NOT NULL)
2526
CREATE USER SA PASSWORD ""
2627
GRANT DBA TO SA
2728
SET WRITE_DELAY 10
2829
SET SCHEMA PUBLIC
2930
INSERT INTO "restcomm_accounts" VALUES('ACae6e420f425248d6a26948c17a9e2acf','2012-04-24 00:00:00.000000000','2012-04-24 00:00:00.000000000','[email protected]','Default Administrator Account',NULL,'Full','uninitialized','77f8c12cc7b8f8423e5c38b035249166','Administrator','/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf')
31+
INSERT INTO "restcomm_accounts" VALUES('ACae6e420f425248d6a26948c17a9e2acg','2012-04-24 00:00:00.000000000','2012-04-24 00:00:00.000000000','[email protected]','Second Administrator Account',NULL,'Full','uninitialized','77f8c12cc7b8f8423e5c38b035249166','Administrator','/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acg')
32+
INSERT INTO "restcomm_accounts" VALUES('ACae6e420f425248d6a26948c17a9e2ach','2012-04-24 00:00:00.000000000','2012-04-24 00:00:00.000000000','[email protected]','Third Administrator Account',NULL,'Full','uninitialized','77f8c12cc7b8f8423e5c38b035249166','Administrator','/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2ach')
3033
INSERT INTO "restcomm_applications" VALUES('AP73926e7113fa4d95981aa96b76eca854','2015-09-23 06:56:04.108000','2015-09-23 06:56:04.108000','rvdCollectVerbDemo','ACae6e420f425248d6a26948c17a9e2acf','2012-04-24',FALSE,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Applications/AP73926e7113fa4d95981aa96b76eca854','/restcomm-rvd/services/apps/AP73926e7113fa4d95981aa96b76eca854/controller','voice')
3134
INSERT INTO "restcomm_applications" VALUES('AP81cf45088cba4abcac1261385916d582','2015-09-23 06:56:17.977000','2015-09-23 06:56:17.977000','rvdESDemo','ACae6e420f425248d6a26948c17a9e2acf','2012-04-24',FALSE,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Applications/AP81cf45088cba4abcac1261385916d582','/restcomm-rvd/services/apps/AP81cf45088cba4abcac1261385916d582/controller','voice')
3235
INSERT INTO "restcomm_applications" VALUES('APb70c33bf0b6748f09eaec97030af36f3','2015-09-23 06:56:26.120000','2015-09-23 06:56:26.120000','rvdSayVerbDemo','ACae6e420f425248d6a26948c17a9e2acf','2012-04-24',FALSE,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Applications/APb70c33bf0b6748f09eaec97030af36f3','/restcomm-rvd/services/apps/APb70c33bf0b6748f09eaec97030af36f3/controller','voice')
@@ -42,3 +45,7 @@ INSERT INTO "restcomm_incoming_phone_numbers" VALUES('PN46678e5b01d44973bf184f65
4245
INSERT INTO "restcomm_incoming_phone_numbers" VALUES('PNb43ed9e641364277b6432547ff1109e9','2014-02-17 22:37:19.392000000','2014-02-17 22:37:19.392000000','RVD external services app, customer ID 1 or 2 ','ACae6e420f425248d6a26948c17a9e2acf','+1241','2012-04-24',FALSE,NULL,'POST',NULL,'POST',NULL,'POST','AP81cf45088cba4abcac1261385916d582',NULL,'POST',NULL,'POST',NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/IncomingPhoneNumbers/PNb43ed9e641364277b6432547ff1109e9',NULL,NULL,NULL,NULL, TRUE,'0.0', NULL, NULL)
4346
INSERT INTO "restcomm_clients" VALUES('CLa2b99142e111427fbb489c3de357f60a','2013-11-04 12:52:44.144000000','2013-11-04 12:52:44.144000000','ACae6e420f425248d6a26948c17a9e2acf','2012-04-24','alice','alice','1234',1,NULL,'POST',NULL,'POST',NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Clients/CLa2b99142e111427fbb489c3de357f60a')
4447
INSERT INTO "restcomm_clients" VALUES('CL3003328d0de04ba68f38de85b732ed56','2013-11-04 16:33:39.248000000','2013-11-04 16:33:39.248000000','ACae6e420f425248d6a26948c17a9e2acf','2012-04-24','bob','bob','1234',1,NULL,'POST',NULL,'POST',NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Clients/CL3003328d0de04ba68f38de85b732ed56')
48+
INSERT INTO "restcomm_accounts_extensions" VALUES('ACae6e420f425248d6a26948c17a9e2acf','EX00000000000000000000000000000005','{"outbound-sms": [{"destination_network_id": "1000"}]}')
49+
INSERT INTO "restcomm_accounts_extensions" VALUES('ACae6e420f425248d6a26948c17a9e2acg','EX00000000000000000000000000000005','{"outbound-sms": [{"destination_network_id": "2000"}]}')
50+
INSERT INTO "restcomm_accounts_extensions" VALUES('ACae6e420f425248d6a26948c17a9e2ach','EX00000000000000000000000000000005','{"outbound-sms": [{"destination_network_id": "3000"}]}')
51+
INSERT INTO "restcomm_extensions_configuration" VALUES('EX00000000000000000000000000000005','multi_provider','{"outbound-sms": [{"destination_network_id": "1"}]}','JSON','2012-04-24 00:00:00.000000','2012-04-24 00:00:00.000000',TRUE)

restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/init.sql

+7
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,13 @@ date_updated DATETIME,
381381
enabled BOOLEAN NOT NULL DEFAULT TRUE
382382
);
383383

384+
CREATE TABLE restcomm_accounts_extensions (
385+
account_sid VARCHAR(34) NOT NULL,
386+
extension_sid VARCHAR(34) NOT NULL,
387+
extension_blob CLOB,
388+
PRIMARY KEY (account_sid, extension_sid)
389+
);
390+
384391
INSERT INTO restcomm_accounts VALUES (
385392
"ACae6e420f425248d6a26948c17a9e2acf",
386393
Date("2012-04-24"),

restcomm/restcomm.application/src/main/webapp/WEB-INF/scripts/mariadb/sql/extensions-configuration.xml

+5
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,9 @@
6161
<select id="getDateUpdatedBySid" parameterType="String" resultType="date">
6262
SELECT date_updated FROM restcomm_extensions_configuration WHERE sid=#{sid};
6363
</select>
64+
65+
<select id="getExtensionClob" parameterType="map" resultType="hashmap">
66+
SELECT configuration_data FROM restcomm_accounts_extensions
67+
WHERE account_sid=#{account_sid} AND extension_sid=#{extension_sid};
68+
</select>
6469
</mapper>

restcomm/restcomm.application/src/main/webapp/WEB-INF/sql/extensions-configuration.xml

+5
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,9 @@
6767
<select id="getDateUpdatedBySid" parameterType="String" resultType="date">
6868
SELECT "date_updated" FROM "restcomm_extensions_configuration" WHERE "sid"=#{sid};
6969
</select>
70+
71+
<select id="getExtensionClob" parameterType="map" resultType="hashmap">
72+
SELECT "configuration_data", "account_sid" AS "sid", "extension_sid" AS "extension" FROM "restcomm_accounts_extensions"
73+
WHERE "account_sid"=#{account_sid} AND "extension_sid"=#{extension_sid};
74+
</select>
7075
</mapper>

restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/ExtensionsConfigurationDao.java

+3
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,7 @@ public interface ExtensionsConfigurationDao {
9797
* @return
9898
*/
9999
boolean validate(ExtensionConfiguration extensionConfiguration);
100+
101+
/**/
102+
ExtensionConfiguration getExtensionClob(String accountSid, String extensionSid);
100103
}

restcomm/restcomm.dao/src/main/java/org/restcomm/connect/dao/mybatis/MybatisExtensionsConfigurationDao.java

+25
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,13 @@ private ExtensionConfiguration toExtensionConfiguration(final Map<String, Object
259259
return new ExtensionConfiguration(sid, extension, enabled, confData, confType, dateCreated, dateUpdated);
260260
}
261261

262+
private ExtensionConfiguration toAccountsExtensionConfiguration(final Map<String, Object> map) {
263+
final Sid sid = new Sid((String)map.get("extension"));
264+
final String extension = (String) map.get("extension");
265+
final Object confData = map.get("configuration_data");
266+
return new ExtensionConfiguration(sid, extension, true, confData, null, null, null);
267+
}
268+
262269
private Map<String, Object> toMap(final ExtensionConfiguration extensionConfiguration) {
263270
final Map<String, Object> map = new HashMap<String, Object>();
264271
map.put("sid", DaoUtils.writeSid(extensionConfiguration.getSid()));
@@ -276,4 +283,22 @@ private Map<String, Object> toMap(final ExtensionConfiguration extensionConfigur
276283
map.put("enabled", extensionConfiguration.isEnabled());
277284
return map;
278285
}
286+
287+
@Override
288+
public ExtensionConfiguration getExtensionClob(String accountSid, String extensionSid) {
289+
final SqlSession session = sessions.openSession();
290+
ExtensionConfiguration extensionConfiguration = null;
291+
try {
292+
Map<String, Object> params = new HashMap<String, Object>();
293+
params.put("account_sid", accountSid.toString());
294+
params.put("extension_sid", extensionSid.toString());
295+
final Map<String, Object> result = session.selectOne(namespace + "getExtensionClob", params);
296+
if (result != null) {
297+
extensionConfiguration = toAccountsExtensionConfiguration(result);
298+
}
299+
return extensionConfiguration;
300+
} finally {
301+
session.close();
302+
}
303+
}
279304
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.restcomm.connect.extension.api;
2+
import org.apache.commons.configuration.Configuration;
3+
4+
public class ExtensionRequest {
5+
private Object payload;
6+
private Configuration configuration;
7+
8+
public ExtensionRequest() {}
9+
10+
public Object getObject() {
11+
return payload;
12+
}
13+
14+
public void setObject(Object object) {
15+
this.payload = object;
16+
}
17+
18+
public void setConfiguration(Configuration configuration) {
19+
// TODO Auto-generated method stub
20+
this.configuration = configuration;
21+
}
22+
public Configuration getConfiguration() {
23+
// TODO Auto-generated method stub
24+
return this.configuration;
25+
}
26+
27+
}

restcomm/restcomm.extension.api/src/main/java/org/restcomm/connect/extension/api/ExtensionResponse.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class ExtensionResponse {
2828
private Object object;
29-
private boolean allowed;
29+
private boolean allowed = true;
3030

3131
public ExtensionResponse() {}
3232

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package org.restcomm.connect.extension.api;
2+
public class MessageExtensionResponse extends ExtensionResponse {
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package org.restcomm.connect.extension.api;
2+
public class NodeExtensionResponse extends ExtensionResponse {
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.restcomm.connect.extension.api;
2+
import org.apache.commons.configuration.Configuration;
3+
public class SessionExtensionResponse extends ExtensionResponse {
4+
5+
public void setConfiguration(Configuration configuration){
6+
super.setObject(configuration);
7+
}
8+
public Configuration getConfiguration(){
9+
return (Configuration) super.getObject();
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package org.restcomm.connect.extension.api;
2+
public class SystemExtensionResponse extends ExtensionResponse {
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.restcomm.connect.extension.api;
2+
public class TransactionExtensionResponse extends ExtensionResponse {
3+
4+
}

restcomm/restcomm.extension.controller/src/main/java/org/restcomm/connect/extension/controller/ExtensionBootstrapper.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@ public ExtensionBootstrapper(final ServletContext context, final Configuration c
4747

4848
public void start() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
4949

50-
List<HierarchicalConfiguration> exts = ((XMLConfiguration)configuration).configurationsAt("extensions.extension");
50+
List<HierarchicalConfiguration> exts = ((XMLConfiguration)configuration).configurationsAt("extension");
5151

5252
for (HierarchicalConfiguration ext: exts) {
53-
String name = ext.getString("[@name]");
53+
String name = ext.getString("name");
54+
String extensionSid = ext.getString("extension_sid");
5455
String className = ext.getString("class");
5556
boolean enabled = ext.getBoolean("enabled");
5657
if (enabled) {

0 commit comments

Comments
 (0)