From 92836699af2949ff9181d3a99d838099667cf654 Mon Sep 17 00:00:00 2001 From: Fabricio Santolin da Silva Date: Wed, 28 Sep 2022 09:32:50 +0200 Subject: [PATCH 1/2] speeddial: allow search uri of speed dial by group This new feature provides a way to have multiple users sharing the same speed dial number, if they belong to the same group. --- src/lib/srdb1/schema/entities.xml | 1 + src/lib/srdb1/schema/speed_dial.xml | 10 +- src/modules/speeddial/doc/speeddial_admin.xml | 35 +++ src/modules/speeddial/sdlookup.c | 211 +++++++++++++++--- src/modules/speeddial/sdlookup.h | 2 + src/modules/speeddial/speeddial.c | 8 + src/modules/speeddial/speeddial.h | 15 +- utils/kamctl/db_sqlite/speeddial-create.sql | 2 +- utils/kamctl/mysql/speeddial-create.sql | 2 +- utils/kamctl/oracle/speeddial-create.sql | 2 +- utils/kamctl/postgres/speeddial-create.sql | 2 +- 11 files changed, 251 insertions(+), 39 deletions(-) diff --git a/src/lib/srdb1/schema/entities.xml b/src/lib/srdb1/schema/entities.xml index 8021e8e7389..7d29e27ec46 100644 --- a/src/lib/srdb1/schema/entities.xml +++ b/src/lib/srdb1/schema/entities.xml @@ -11,6 +11,7 @@ + diff --git a/src/lib/srdb1/schema/speed_dial.xml b/src/lib/srdb1/schema/speed_dial.xml index d7ad1b8bbd9..57c4bd17c1d 100644 --- a/src/lib/srdb1/schema/speed_dial.xml +++ b/src/lib/srdb1/schema/speed_dial.xml @@ -9,7 +9,7 @@ speed_dial - 2 + 3&MYSQL_TABLE_TYPE; @@ -100,6 +100,14 @@ Description + + group_id + string + &group_len; + + Group ID + + speed_dial_idx diff --git a/src/modules/speeddial/doc/speeddial_admin.xml b/src/modules/speeddial/doc/speeddial_admin.xml index bb80b62211c..033273eca36 100644 --- a/src/modules/speeddial/doc/speeddial_admin.xml +++ b/src/modules/speeddial/doc/speeddial_admin.xml @@ -249,6 +249,41 @@ if(uri=~"sip:[0-9]{2}@.*") if(uri=~"sip:[0-9]{2}@.*") sd_lookup("speed_dial", "sip:$au@$fd"); ... + + + +
+ + <function moreinfo="none">sd_lookup_group(table , group)</function> + + + The function lookups the short dial number from the group defined in the 'table' and replaces the R-URI with associated address. + + Meaning of the parameters is as follows: + + + table - The name of the table storing the + speed dial records. + + + + group - The group that has the + short dialing codes. + + + + + This function can be used from REQUEST_ROUTE. + + + <function>sd_lookup_group</function> usage + +... +# 'speed_dial' is the default table name created by kamailio db script +# Using 3 digits to differentiate from the simple lookup +if(uri=~"sip:[0-9]{3}@.*") + sd_lookup_group("speed_dial", "group_id"); +...
diff --git a/src/modules/speeddial/sdlookup.c b/src/modules/speeddial/sdlookup.c index e26bc37bb80..4517ce87954 100644 --- a/src/modules/speeddial/sdlookup.c +++ b/src/modules/speeddial/sdlookup.c @@ -58,6 +58,47 @@ static inline int rewrite_ruri(struct sip_msg* _m, char* _s) return 0; } +/** + * + */ +int process_result(db1_res_t* db_res, str *ret, char *buffer) +{ + ret->s=buffer+4; + if (RES_ROW_N(db_res) > 1) + { + LM_WARN("too many similar results, returning first result\n"); + } + switch(RES_ROWS(db_res)[0].values[0].type) + { + case DB1_STRING: + strcpy(ret->s, + (char*)RES_ROWS(db_res)[0].values[0].val.string_val); + ret->len = strlen(ret->s); + break; + case DB1_STR: + strncpy(ret->s, + (char*)RES_ROWS(db_res)[0].values[0].val.str_val.s, + RES_ROWS(db_res)[0].values[0].val.str_val.len); + ret->len = RES_ROWS(db_res)[0].values[0].val.str_val.len; + ret->s[ret->len] = '\0'; + break; + case DB1_BLOB: + strncpy(ret->s, + (char*)RES_ROWS(db_res)[0].values[0].val.blob_val.s, + RES_ROWS(db_res)[0].values[0].val.blob_val.len); + ret->len = RES_ROWS(db_res)[0].values[0].val.blob_val.len; + ret->s[ret->len] = '\0'; + break; + default: + LM_ERR("unknown type of DB new_uri column\n"); + if (db_funcs.free_result(db_handle, db_res) < 0) { + LM_DBG("failed to free result of query\n"); + } + return -1; + } + return 1; +} + /** * */ @@ -175,34 +216,129 @@ int sd_lookup_owner(sip_msg_t* _msg, str* stable, str* sowner) return -1; } - user_s.s = useruri_buf+4; - switch(RES_ROWS(db_res)[0].values[0].type) + if(process_result(db_res, &user_s, useruri_buf) < 0) { - case DB1_STRING: - strcpy(user_s.s, - (char*)RES_ROWS(db_res)[0].values[0].val.string_val); - user_s.len = strlen(user_s.s); - break; - case DB1_STR: - strncpy(user_s.s, - (char*)RES_ROWS(db_res)[0].values[0].val.str_val.s, - RES_ROWS(db_res)[0].values[0].val.str_val.len); - user_s.len = RES_ROWS(db_res)[0].values[0].val.str_val.len; - user_s.s[user_s.len] = '\0'; - break; - case DB1_BLOB: - strncpy(user_s.s, - (char*)RES_ROWS(db_res)[0].values[0].val.blob_val.s, - RES_ROWS(db_res)[0].values[0].val.blob_val.len); - user_s.len = RES_ROWS(db_res)[0].values[0].val.blob_val.len; - user_s.s[user_s.len] = '\0'; - break; - default: - LM_ERR("unknown type of DB new_uri column\n"); - if (db_funcs.free_result(db_handle, db_res) < 0) { - LM_DBG("failed to free result of query\n"); - } - goto err_server; + LM_DBG("failed to process result\n"); + return -1; + } + + /* check 'sip:' */ + if(user_s.len<4 || strncmp(user_s.s, "sip:", 4)) + { + memcpy(useruri_buf, "sip:", 4); + user_s.s -= 4; + user_s.len += 4; + } + + /** + * Free the result because we don't need it anymore + */ + if (db_funcs.free_result(db_handle, db_res) < 0) { + LM_DBG("failed to free result of query\n"); + } + + /* set the URI */ + LM_DBG("URI of sd from R-URI [%s]\n", user_s.s); + if(rewrite_ruri(_msg, user_s.s)<0) + { + LM_ERR("failed to replace the R-URI\n"); + goto err_server; + } + + return 1; + +err_server: + return -1; +} + +/** + * + */ +int sd_lookup_group(sip_msg_t* _msg, str* stable, str* sgroup) +{ + str user_s, table_s; + int nr_keys; + db_key_t db_keys[3]; + db_val_t db_vals[3]; + db_key_t db_cols[1]; + db1_res_t* db_res = NULL; + + if(stable==NULL || stable->s==NULL || stable->len<=0) + { + LM_ERR("invalid table parameter"); + goto err_server; + } + table_s = *stable; + + if(sgroup==NULL || sgroup->s==NULL || sgroup->len<=0) + { + LM_ERR("invalid group parameter"); + goto err_server; + } + + /* init */ + nr_keys = 0; + db_cols[0]=&new_uri_column; + + /* take sd from r-uri */ + if (parse_sip_msg_uri(_msg) < 0) + { + LM_ERR("failed to parsing Request-URI\n"); + goto err_server; + } + + db_keys[nr_keys]=&sd_user_column; + db_vals[nr_keys].type = DB1_STR; + db_vals[nr_keys].nul = 0; + db_vals[nr_keys].val.str_val.s = _msg->parsed_uri.user.s; + db_vals[nr_keys].val.str_val.len = _msg->parsed_uri.user.len; + nr_keys++; + + if(use_domain>=2) + { + db_keys[nr_keys]=&sd_domain_column; + db_vals[nr_keys].type = DB1_STR; + db_vals[nr_keys].nul = 0; + db_vals[nr_keys].val.str_val.s = _msg->parsed_uri.host.s; + db_vals[nr_keys].val.str_val.len = _msg->parsed_uri.host.len; + + if (dstrip_s.s!=NULL && dstrip_s.len>0 + && dstrip_s.len<_msg->parsed_uri.host.len + && strncasecmp(_msg->parsed_uri.host.s,dstrip_s.s,dstrip_s.len)==0) + { + db_vals[nr_keys].val.str_val.s += dstrip_s.len; + db_vals[nr_keys].val.str_val.len -= dstrip_s.len; + } + nr_keys++; + } + + + db_keys[nr_keys]=&group_column; + db_vals[nr_keys].type = DB1_STR; + db_vals[nr_keys].nul = 0; + db_vals[nr_keys].val.str_val = *sgroup; + nr_keys++; + + db_funcs.use_table(db_handle, &table_s); + if(db_funcs.query(db_handle, db_keys, NULL, db_vals, db_cols, + nr_keys /*no keys*/, 1 /*no cols*/, NULL, &db_res)!=0 || db_res==NULL) + { + LM_ERR("failed to query database\n"); + goto err_server; + } + + if(RES_ROW_N(db_res) <= 0 || RES_ROWS(db_res)[0].values[0].nul != 0) { + LM_DBG("no sip address found for R-URI\n"); + if(db_funcs.free_result(db_handle, db_res) < 0) { + LM_DBG("failed to free result of query\n"); + } + goto err_server; + } + + if(process_result(db_res, &user_s, useruri_buf) < 0) + { + LM_DBG("failed to process result\n"); + goto err_server; } /* check 'sip:' */ @@ -259,3 +395,24 @@ int w_sd_lookup(struct sip_msg* _msg, char* _table, char* _owner) return sd_lookup_owner(_msg, &table_s, NULL); } + +/** + * + */ +int w_sd_lookup_group(struct sip_msg* _msg, char* _table, char* _group) +{ + str table_s, group_s; + + if(_table==NULL || fixup_get_svalue(_msg, (gparam_p)_table, &table_s)!=0) + { + LM_ERR("invalid table parameter"); + return -1; + } + + if(_group==NULL ||fixup_get_svalue(_msg, (gparam_p)_group, &group_s)!=0) + { + LM_ERR("invalid group parameter"); + return -1; + } + return sd_lookup_group(_msg, &table_s, &group_s); +} diff --git a/src/modules/speeddial/sdlookup.h b/src/modules/speeddial/sdlookup.h index 582afd4cb9c..5ab14356178 100644 --- a/src/modules/speeddial/sdlookup.h +++ b/src/modules/speeddial/sdlookup.h @@ -27,6 +27,8 @@ #include "../../core/parser/msg_parser.h" int w_sd_lookup(struct sip_msg* _msg, char* _table, char* _owner); +int w_sd_lookup_group(struct sip_msg* _msg, char* _table, char* _group); int sd_lookup_owner(struct sip_msg* _msg, str* _stable, str* _sowner); +int sd_lookup_group(struct sip_msg* _msg, str* _stable, str* _sgroup); #endif /* _SDLOOKUP_H_ */ diff --git a/src/modules/speeddial/speeddial.c b/src/modules/speeddial/speeddial.c index f251744a70d..e29463eb9f3 100644 --- a/src/modules/speeddial/speeddial.c +++ b/src/modules/speeddial/speeddial.c @@ -54,6 +54,7 @@ str domain_column = str_init("domain"); str sd_user_column = str_init("sd_username"); str sd_domain_column = str_init("sd_domain"); str new_uri_column = str_init("new_uri"); +str group_column = str_init("group_id"); int use_domain = 0; static str domain_prefix = {NULL, 0}; @@ -70,6 +71,8 @@ static cmd_export_t cmds[] = { REQUEST_ROUTE}, {"sd_lookup", (cmd_function)w_sd_lookup, 2, fixup_spve_spve, 0, REQUEST_ROUTE}, + {"sd_lookup_group", (cmd_function)w_sd_lookup_group, 2, fixup_spve_spve, 0, + REQUEST_ROUTE}, {0, 0, 0, 0, 0, 0} }; @@ -180,6 +183,11 @@ static sr_kemi_t sr_kemi_speeddial_exports[] = { { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } }, + { str_init("speeddial"), str_init("lookup_group"), + SR_KEMIP_INT, sd_lookup_group, + { SR_KEMIP_STR, SR_KEMIP_STR, SR_KEMIP_NONE, + SR_KEMIP_NONE, SR_KEMIP_NONE, SR_KEMIP_NONE } + }, { {0, 0}, {0, 0}, 0, NULL, { 0, 0, 0, 0, 0, 0 } } }; diff --git a/src/modules/speeddial/speeddial.h b/src/modules/speeddial/speeddial.h index 49dbd6d0eff..de8af5e1305 100644 --- a/src/modules/speeddial/speeddial.h +++ b/src/modules/speeddial/speeddial.h @@ -30,13 +30,14 @@ /* Module parameters variables */ -extern str user_column; /* 'username' column name */ -extern str domain_column; /* 'domain' column name */ -extern str sd_user_column; /* 'sd_username' column name */ -extern str sd_domain_column; /* 'sd_domain' column name */ -extern str new_uri_column; /* 'new_uri' column name */ -extern int use_domain; /* use or not the domain for sd lookup */ -extern str dstrip_s; +extern str user_column; /* 'username' column name */ +extern str domain_column; /* 'domain' column name */ +extern str sd_user_column; /* 'sd_username' column name */ +extern str sd_domain_column; /* 'sd_domain' column name */ +extern str new_uri_column; /* 'new_uri' column name */ +extern str group_column; /* 'group' column name */ +extern int use_domain; /* use or not the domain for sd lookup */ +extern str dstrip_s; extern db_func_t db_funcs; /* Database functions */ extern db1_con_t* db_handle; /* Database connection handle */ diff --git a/utils/kamctl/db_sqlite/speeddial-create.sql b/utils/kamctl/db_sqlite/speeddial-create.sql index 37ed107be8b..4ffaccfea75 100644 --- a/utils/kamctl/db_sqlite/speeddial-create.sql +++ b/utils/kamctl/db_sqlite/speeddial-create.sql @@ -11,5 +11,5 @@ CREATE TABLE speed_dial ( CONSTRAINT speed_dial_speed_dial_idx UNIQUE (username, domain, sd_domain, sd_username) ); -INSERT INTO version (table_name, table_version) values ('speed_dial','2'); +INSERT INTO version (table_name, table_version) values ('speed_dial','3'); diff --git a/utils/kamctl/mysql/speeddial-create.sql b/utils/kamctl/mysql/speeddial-create.sql index f23d6f1b6a8..2f34f644afd 100644 --- a/utils/kamctl/mysql/speeddial-create.sql +++ b/utils/kamctl/mysql/speeddial-create.sql @@ -11,5 +11,5 @@ CREATE TABLE `speed_dial` ( CONSTRAINT speed_dial_idx UNIQUE (`username`, `domain`, `sd_domain`, `sd_username`) ); -INSERT INTO version (table_name, table_version) values ('speed_dial','2'); +INSERT INTO version (table_name, table_version) values ('speed_dial','3'); diff --git a/utils/kamctl/oracle/speeddial-create.sql b/utils/kamctl/oracle/speeddial-create.sql index a1b8dc6509b..f08bc4c3474 100644 --- a/utils/kamctl/oracle/speeddial-create.sql +++ b/utils/kamctl/oracle/speeddial-create.sql @@ -19,5 +19,5 @@ END speed_dial_tr; / BEGIN map2users('speed_dial'); END; / -INSERT INTO version (table_name, table_version) values ('speed_dial','2'); +INSERT INTO version (table_name, table_version) values ('speed_dial','3'); diff --git a/utils/kamctl/postgres/speeddial-create.sql b/utils/kamctl/postgres/speeddial-create.sql index a2cc8604690..bc29b6718d8 100644 --- a/utils/kamctl/postgres/speeddial-create.sql +++ b/utils/kamctl/postgres/speeddial-create.sql @@ -11,5 +11,5 @@ CREATE TABLE speed_dial ( CONSTRAINT speed_dial_speed_dial_idx UNIQUE (username, domain, sd_domain, sd_username) ); -INSERT INTO version (table_name, table_version) values ('speed_dial','2'); +INSERT INTO version (table_name, table_version) values ('speed_dial','3'); From f8a15c42bc21990966aeb47c1ac2345d199b163a Mon Sep 17 00:00:00 2001 From: Fabricio Santolin da Silva Date: Wed, 28 Sep 2022 12:09:24 +0200 Subject: [PATCH 2/2] kamctl: update speeddial schema --- utils/kamctl/db_berkeley/kamailio/speed_dial | 4 +-- utils/kamctl/db_berkeley/kamailio/version | 2 +- utils/kamctl/db_redis/kamailio/speed_dial | 4 +-- utils/kamctl/db_sqlite/speeddial-create.sql | 1 + utils/kamctl/dbtext/kamailio/speed_dial | 2 +- utils/kamctl/dbtext/kamailio/version | 2 +- utils/kamctl/mongodb/kamailio/speed_dial.json | 7 ++++- .../mongodb/kamailio/version-create.mongo | 2 +- utils/kamctl/mysql/speeddial-create.sql | 1 + utils/kamctl/oracle/speeddial-create.sql | 1 + utils/kamctl/postgres/speeddial-create.sql | 1 + utils/kamctl/xhttp_pi/pi_framework.xml | 26 +++++++++++-------- utils/kamctl/xhttp_pi/speeddial-mod | 3 +++ utils/kamctl/xhttp_pi/speeddial-table | 1 + 14 files changed, 37 insertions(+), 20 deletions(-) diff --git a/utils/kamctl/db_berkeley/kamailio/speed_dial b/utils/kamctl/db_berkeley/kamailio/speed_dial index 56642b9bb2f..f20e884c0d1 100644 --- a/utils/kamctl/db_berkeley/kamailio/speed_dial +++ b/utils/kamctl/db_berkeley/kamailio/speed_dial @@ -1,5 +1,5 @@ METADATA_COLUMNS -id(int) username(str) domain(str) sd_username(str) sd_domain(str) new_uri(str) fname(str) lname(str) description(str) +id(int) username(str) domain(str) sd_username(str) sd_domain(str) new_uri(str) fname(str) lname(str) description(str) group_id(str) METADATA_KEY 1 2 METADATA_READONLY @@ -7,4 +7,4 @@ METADATA_READONLY METADATA_LOGFLAGS 0 METADATA_DEFAULTS -NIL|''|''|''|''|''|''|''|'' +NIL|''|''|''|''|''|''|''|''|'' diff --git a/utils/kamctl/db_berkeley/kamailio/version b/utils/kamctl/db_berkeley/kamailio/version index c3052183044..b550ae8685c 100644 --- a/utils/kamctl/db_berkeley/kamailio/version +++ b/utils/kamctl/db_berkeley/kamailio/version @@ -115,7 +115,7 @@ silo|8 sip_trace| sip_trace|4 speed_dial| -speed_dial|2 +speed_dial|3 subscriber| subscriber|7 topos_d| diff --git a/utils/kamctl/db_redis/kamailio/speed_dial b/utils/kamctl/db_redis/kamailio/speed_dial index b4be4bb18fb..34062550abb 100644 --- a/utils/kamctl/db_redis/kamailio/speed_dial +++ b/utils/kamctl/db_redis/kamailio/speed_dial @@ -1,2 +1,2 @@ -id/int,username/string,domain/string,sd_username/string,sd_domain/string,new_uri/string,fname/string,lname/string,description/string, -2 +id/int,username/string,domain/string,sd_username/string,sd_domain/string,new_uri/string,fname/string,lname/string,description/string,group_id/string, +3 diff --git a/utils/kamctl/db_sqlite/speeddial-create.sql b/utils/kamctl/db_sqlite/speeddial-create.sql index 4ffaccfea75..2155754ef1c 100644 --- a/utils/kamctl/db_sqlite/speeddial-create.sql +++ b/utils/kamctl/db_sqlite/speeddial-create.sql @@ -8,6 +8,7 @@ CREATE TABLE speed_dial ( fname VARCHAR(64) DEFAULT '' NOT NULL, lname VARCHAR(64) DEFAULT '' NOT NULL, description VARCHAR(64) DEFAULT '' NOT NULL, + group_id VARCHAR(128) DEFAULT '' NOT NULL, CONSTRAINT speed_dial_speed_dial_idx UNIQUE (username, domain, sd_domain, sd_username) ); diff --git a/utils/kamctl/dbtext/kamailio/speed_dial b/utils/kamctl/dbtext/kamailio/speed_dial index 6436e9ab154..807677a2415 100644 --- a/utils/kamctl/dbtext/kamailio/speed_dial +++ b/utils/kamctl/dbtext/kamailio/speed_dial @@ -1 +1 @@ -id(int,auto) username(string) domain(string) sd_username(string) sd_domain(string) new_uri(string) fname(string) lname(string) description(string) +id(int,auto) username(string) domain(string) sd_username(string) sd_domain(string) new_uri(string) fname(string) lname(string) description(string) group_id(string) diff --git a/utils/kamctl/dbtext/kamailio/version b/utils/kamctl/dbtext/kamailio/version index 465c9cae69b..3bd1f7eab0c 100644 --- a/utils/kamctl/dbtext/kamailio/version +++ b/utils/kamctl/dbtext/kamailio/version @@ -52,7 +52,7 @@ id(int,auto) table_name(string) table_version(int) 0:secfilter:1 0:silo:8 0:sip_trace:4 -0:speed_dial:2 +0:speed_dial:3 0:subscriber:7 0:topos_d:2 0:topos_t:2 diff --git a/utils/kamctl/mongodb/kamailio/speed_dial.json b/utils/kamctl/mongodb/kamailio/speed_dial.json index bf56537da1a..a053aa7c223 100644 --- a/utils/kamctl/mongodb/kamailio/speed_dial.json +++ b/utils/kamctl/mongodb/kamailio/speed_dial.json @@ -1,6 +1,6 @@ { "name": "speed_dial", - "version": 2, + "version": 3, "columns": [ "id": { "type": "int", @@ -46,6 +46,11 @@ "type": "string", "default": "", "null": false + }, + "group_id": { + "type": "string", + "default": "", + "null": false } ] } \ No newline at end of file diff --git a/utils/kamctl/mongodb/kamailio/version-create.mongo b/utils/kamctl/mongodb/kamailio/version-create.mongo index 7a34b760dcf..5797246046c 100644 --- a/utils/kamctl/mongodb/kamailio/version-create.mongo +++ b/utils/kamctl/mongodb/kamailio/version-create.mongo @@ -52,7 +52,7 @@ db.getCollection("version").insert({ table_name: "sca_subscriptions", table_vers db.getCollection("version").insert({ table_name: "secfilter", table_version: NumberInt(1) }); db.getCollection("version").insert({ table_name: "silo", table_version: NumberInt(8) }); db.getCollection("version").insert({ table_name: "sip_trace", table_version: NumberInt(4) }); -db.getCollection("version").insert({ table_name: "speed_dial", table_version: NumberInt(2) }); +db.getCollection("version").insert({ table_name: "speed_dial", table_version: NumberInt(3) }); db.getCollection("version").insert({ table_name: "subscriber", table_version: NumberInt(7) }); db.getCollection("version").insert({ table_name: "topos_d", table_version: NumberInt(2) }); db.getCollection("version").insert({ table_name: "topos_t", table_version: NumberInt(2) }); diff --git a/utils/kamctl/mysql/speeddial-create.sql b/utils/kamctl/mysql/speeddial-create.sql index 2f34f644afd..ebf645d1ef4 100644 --- a/utils/kamctl/mysql/speeddial-create.sql +++ b/utils/kamctl/mysql/speeddial-create.sql @@ -8,6 +8,7 @@ CREATE TABLE `speed_dial` ( `fname` VARCHAR(64) DEFAULT '' NOT NULL, `lname` VARCHAR(64) DEFAULT '' NOT NULL, `description` VARCHAR(64) DEFAULT '' NOT NULL, + `group_id` VARCHAR(128) DEFAULT '' NOT NULL, CONSTRAINT speed_dial_idx UNIQUE (`username`, `domain`, `sd_domain`, `sd_username`) ); diff --git a/utils/kamctl/oracle/speeddial-create.sql b/utils/kamctl/oracle/speeddial-create.sql index f08bc4c3474..8ccf8b2bf4a 100644 --- a/utils/kamctl/oracle/speeddial-create.sql +++ b/utils/kamctl/oracle/speeddial-create.sql @@ -8,6 +8,7 @@ CREATE TABLE speed_dial ( fname VARCHAR2(64) DEFAULT '', lname VARCHAR2(64) DEFAULT '', description VARCHAR2(64) DEFAULT '', + group_id VARCHAR2(128) DEFAULT '', CONSTRAINT speed_dial_speed_dial_idx UNIQUE (username, domain, sd_domain, sd_username) ); diff --git a/utils/kamctl/postgres/speeddial-create.sql b/utils/kamctl/postgres/speeddial-create.sql index bc29b6718d8..ca3ba2a2c65 100644 --- a/utils/kamctl/postgres/speeddial-create.sql +++ b/utils/kamctl/postgres/speeddial-create.sql @@ -8,6 +8,7 @@ CREATE TABLE speed_dial ( fname VARCHAR(64) DEFAULT '' NOT NULL, lname VARCHAR(64) DEFAULT '' NOT NULL, description VARCHAR(64) DEFAULT '' NOT NULL, + group_id VARCHAR(128) DEFAULT '' NOT NULL, CONSTRAINT speed_dial_speed_dial_idx UNIQUE (username, domain, sd_domain, sd_username) ); diff --git a/utils/kamctl/xhttp_pi/pi_framework.xml b/utils/kamctl/xhttp_pi/pi_framework.xml index f6d5ecaca2a..663d6464f38 100644 --- a/utils/kamctl/xhttp_pi/pi_framework.xml +++ b/utils/kamctl/xhttp_pi/pi_framework.xml @@ -219,6 +219,17 @@ attrsDB1_STR descriptionDB1_STR + + + domainpolicy + mysql + idDB1_INT + ruleDB1_STR + typeDB1_STR + attDB1_STR + valDB1_STR + descriptionDB1_STR + domain @@ -239,17 +250,6 @@ valueDB1_STR last_modifiedDB1_DATETIME - - - domainpolicy - mysql - idDB1_INT - ruleDB1_STR - typeDB1_STR - attDB1_STR - valDB1_STR - descriptionDB1_STR - dr_gateways @@ -753,6 +753,7 @@ fnameDB1_STR lnameDB1_STR descriptionDB1_STR + group_idDB1_STR @@ -3937,6 +3938,7 @@
fnamelnamedescription + group_idadd @@ -3951,6 +3953,7 @@ fnamelnamedescription + group_idupdate @@ -3968,6 +3971,7 @@ fnamelnamedescription + group_iddelete diff --git a/utils/kamctl/xhttp_pi/speeddial-mod b/utils/kamctl/xhttp_pi/speeddial-mod index d452b0fb70b..e884674eaa2 100644 --- a/utils/kamctl/xhttp_pi/speeddial-mod +++ b/utils/kamctl/xhttp_pi/speeddial-mod @@ -13,6 +13,7 @@ fnamelnamedescription + group_idadd @@ -27,6 +28,7 @@ fnamelnamedescription + group_idupdate @@ -44,6 +46,7 @@ fnamelnamedescription + group_iddelete diff --git a/utils/kamctl/xhttp_pi/speeddial-table b/utils/kamctl/xhttp_pi/speeddial-table index a738a9fa000..12a97d09592 100644 --- a/utils/kamctl/xhttp_pi/speeddial-table +++ b/utils/kamctl/xhttp_pi/speeddial-table @@ -11,4 +11,5 @@ fnameDB1_STR lnameDB1_STR descriptionDB1_STR + group_idDB1_STR