📄 mgcp_scm.c
字号:
/*
*
* Fun: mgScmLoadGwFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmReloadGwFromDb
(
U8 *id,
mgGateway *oldGw
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
U32 num, i;
S16 ret;
myData = sqlConnGet();
sprintf(szSQL,
"select dname, ip_addr, port, id from gateway_tbl where id = \'%s\'",
id);
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
GcpRmvMg(oldGw);
row = sqlGetRow(res);
ret = cmHashListDelete(&mgGwHashList, (PTR)oldGw);
if (ret != ROK) {
scmPrint(( "OOPS: Can't delete the gateway from gateway list.\n"));
RETVALUE(RFAILED);
}
strcpy(oldGw->dName, row[0]);
ret = cmHashListInsert(&mgGwHashList, (PTR)oldGw, _strlwr(oldGw->dName), cmStrlen(oldGw->dName));
if (ret != ROK) {
RETVALUE(RFAILED);
}
if ((row[1] == NULLP) || (cmStrlen(row[1]) == 0)) {
oldGw->ipAddr = 0;
}
else {
CmInetNetAddr address;
if(cmInetConvertStrToIpAddr(cmStrlen(row[1]), row[1], &address) != ROK) {
scmPrint(( "Failed to convert IP address (%s).\n", row[1]));
RETVALUE(RFAILED);
}
oldGw->ipAddr = address.u.ipv4NetAddr;
}
oldGw->port = (U16)strtoul(row[2], &stopStr, 10);
oldGw->gwid = (U16)strtoul(row[3], &stopStr, 10);
GcpCfgMg(oldGw);
}
sqlClear(res);
}
else {
scmPrint(( "SQL_CONN Error: Couldn't execute %s on the server !\n", szSQL));
}
sqlConnPut(myData);
RETVALUE(ROK);
}
/*
*
* Fun: mgScmLoadGwFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmLoadGwFromDb
(
U8 *name
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
mgGateway gw;
U32 num, i;
myData = sqlConnGet();
/* Load Gateways */
if (*name != '*')
sprintf(szSQL,
"select dname, ip_addr, port, id, firmware_version, area_code, vpbx_id, state from gateway_tbl where dname = \'%s\'",
name);
else
sprintf(szSQL,
"select dname, ip_addr, port, id, firmware_version, area_code, vpbx_id, state from gateway_tbl");
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
row = sqlGetRow(res);
strcpy(gw.dName, row[0]);
if ((row[1] == NULLP) || (cmStrlen(row[1]) == 0)) {
gw.ipAddr = 0;
}
else {
CmInetNetAddr address;
if(cmInetConvertStrToIpAddr(cmStrlen(row[1]), row[1], &address) == ROK) {
gw.ipAddr = address.u.ipv4NetAddr;
} else {
scmPrint(( "Failed to convert IP address (%s).\n", row[1]));
gw.ipAddr = (U32) rand();
}
}
gw.port = (U16)strtoul(row[2], &stopStr, 10);
gw.gwid= (U16)strtoul(row[3], &stopStr, 10);
if (row[4] && (row[4][0] =='V' || row[4][0] == 'v'))
strncpy(gw.verStr, row[4], sizeof(gw.verStr));
else
gw.verStr[0] = 0;
if ((row[5] == NULLP) || (strlen(row[5]) == 0)) {
gw.areaCode[0] = '\0';
}
else {
strcpy(gw.areaCode, row[5]);
}
gw.vPBXid = strtoul(row[6], &stopStr, 10);
strncpy(gw.staStr, row[7], sizeof(gw.verStr));
gw.bStatic = TRUE; //(U8)strtoul(row[4], &stopStr, 10);
gw.type = 0; //(U8)strtoul(row[5], &stopStr, 10);
gw.lostPackets = 0;
if (mgScmLoadGw(&gw) != ROK) {
scmPrint(( "Failed to load Gateway (%s)\n", gw.dName));
}
}
sqlClear(res);
}
else {
scmPrint(( "SQL_CONN Error: Couldn't execute %s on the server !\n", szSQL));
}
sqlConnPut(myData);
RETVALUE(ROK);
}
/*
*
* Fun: mgScmLoadEpFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmReloadEpFromDb
(
U8 *domain,
U8 *local,
mgEndpoint *ep
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
U32 num, i;
myData = sqlConnGet();
sprintf(szSQL,
"select dname, lclname, phone, account, vpbx_id, fwd_uncon, fwd_on_busy, fwd_on_no_ans, enabled, fwd_on_hotline, type from endpoint_tbl, dgtMap where enabled=1 and phone!=\'\' and dname = \'%s\' and lclname=\'%s\'",
domain, local);
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
row = sqlGetRow(res);
strcpy(ep->dName, row[0]);
strcpy(ep->lclName, row[1]);
// strcpy(ep.phoneNum, row[2]);
strcpy(ep->extnNum, row[2]); //row[3]
strcpy(ep->account, row[3]);
ep->vPBXid = strtoul(row[4], &stopStr, 10);
if ((row[5] == NULLP) || (strlen(row[5]) == 0)) {
ep->fwdOnAnyPhNum[0] = '\0';
}
else {
strcpy(ep->fwdOnAnyPhNum, row[5]);
}
if ((row[6] == NULLP) || (strlen(row[6]) == 0)) {
ep->fwdOnBusyPhNum[0] = '\0';
}
else {
strcpy(ep->fwdOnBusyPhNum, row[6]);
}
if ((row[7] == NULLP) || (strlen(row[7]) == 0)) {
ep->fwdOnNoAnsPhNum[0] = '\0';
}
else {
strcpy(ep->fwdOnNoAnsPhNum, row[7]);
}
ep->enabled = (U8)strtoul(row[8], &stopStr, 10);
if ((row[9] == NULLP) || (strlen(row[9]) == 0)) {
ep->fwdOnHotline[0] = '\0';
}
else {
strcpy(ep->fwdOnHotline, row[9]);
}
if (row[10][0] != 'o' && row[10][0] != 'O') {
ep->portTye= PT_FXS;
} else {
ep->portTye= PT_FXO;
}
if ((row[11] == NULLP) || (strlen(row[11]) == 0)) {
ep->dgtMap[0] = '\0';
}
else {
strcpy(ep->dgtMap, row[11]);
}
}
sqlClear(res);
}
else {
scmPrint(( "SQL_CONN Error: Couldn't execute %s on the server !\n", szSQL));
}
sqlConnPut(myData);
RETVALUE(ROK);
}
/*
*
* Fun: mgScmLoadEpFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmLoadEpFromDb
(
U8 *domain,
U8 *local
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
mgEndpoint ep;
U32 num, i;
myData = sqlConnGet();
if (*domain == '*')
sprintf(szSQL,
"select dname, lclname, phone, account, vpbx_id, fwd_uncon, fwd_on_busy, fwd_on_no_ans, enabled, fwd_on_hotline, type, dgtMap from endpoint_tbl where enabled='1'");
else
if (*local == '*')
sprintf(szSQL,
"select dname, lclname, phone, account, vpbx_id, fwd_uncon, fwd_on_busy, fwd_on_no_ans, enabled, fwd_on_hotline, type, dgtMap from endpoint_tbl where enabled='1' and dname = \'%s\'", domain);
else
sprintf(szSQL,
"select dname, lclname, phone, account, vpbx_id, fwd_uncon, fwd_on_busy, fwd_on_no_ans, enabled, fwd_on_hotline, type, dgtMap from endpoint_tbl where enabled='1' and dname = \'%s\' and lclname=\'%s\'",
domain, local);
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
row = sqlGetRow(res);
strcpy(ep.dName, row[0]);
strcpy(ep.lclName, row[1]);
// strcpy(ep.phoneNum, row[2]);
strcpy(ep.extnNum, row[2]); //row[3]
strcpy(ep.account, row[3]);
ep.acl = 1;//(U8)strtoul(row[5], &stopStr, 10);
ep.proto = PROTOCOL_MGCP;
ep.bSupCallXfer = TRUE;
ep.bSupCallWaiting = TRUE;
ep.vPBXid = strtoul(row[4], &stopStr, 10);
if ((row[5] == NULLP) || (strlen(row[5]) == 0)) {
ep.fwdOnAnyPhNum[0] = '\0';
}
else {
strcpy(ep.fwdOnAnyPhNum, row[5]);
}
if ((row[6] == NULLP) || (strlen(row[6]) == 0)) {
ep.fwdOnBusyPhNum[0] = '\0';
}
else {
strcpy(ep.fwdOnBusyPhNum, row[6]);
}
if ((row[7] == NULLP) || (strlen(row[7]) == 0)) {
ep.fwdOnNoAnsPhNum[0] = '\0';
}
else {
strcpy(ep.fwdOnNoAnsPhNum, row[7]);
}
ep.enabled = (U8)strtoul(row[8], &stopStr, 10);
if ((row[9] == NULLP) || (strlen(row[9]) == 0)) {
ep.fwdOnHotline[0] = '\0';
}
else {
strcpy(ep.fwdOnHotline, row[9]);
}
if (row[10][0] != 'o' && row[10][0] != 'O') {
ep.portTye= PT_FXS;
} else {
ep.portTye= PT_FXO;
}
if ((row[11] == NULLP) || (strlen(row[11]) == 0)) {
ep.dgtMap[0] = '\0';
}
else {
strcpy(ep.dgtMap, row[11]);
}
if (mgScmLoadEp(&ep) != ROK) {
scmPrint(( "Failed to load endpoint (%s@%s)\n", ep.lclName, ep.dName));
}
}
sqlClear(res);
}
else {
scmPrint(( "SQL_CONN Error: Couldn't execute %s on the server !\n", szSQL));
}
sqlConnPut(myData);
RETVALUE(ROK);
}
/*
*
* Fun: mgScmLoadEpFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmLoadWorkGroupFromDb
(
Void
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
mgWorkGroup group;
U32 num, i;
myData = sqlConnGet();
sprintf(szSQL, "select vpbx_id, phone, dName1, lclname1, dName2, lclname2, dName3, lclname3, \
dName4, lclname4, dName5, lclname5, dName6, lclname6, dName7, lclname7, \
dName8, lclname8 from workgroup_tbl");
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
S32 k =0;
row = sqlGetRow(res);
group.vPBXid = strtoul(row[0], &stopStr, 10);
strcpy(group.phone, row[1]);
if (row[2][0] != '\0' && row[3][0] != '\0') {
strcpy(group.dName[k], row[2]);
strcpy(group.lclName[k], row[3]);
k++;
}
if (row[4][0] != '\0' && row[5][0] != '\0') {
strcpy(group.dName[k], row[4]);
strcpy(group.lclName[k], row[5]);
k++;
}
if (row[6][0] != '\0' && row[7][0] != '\0') {
strcpy(group.dName[k], row[6]);
strcpy(group.lclName[k], row[7]);
k++;
}
if (row[8][0] != '\0' && row[9][0] != '\0') {
strcpy(group.dName[k], row[8]);
strcpy(group.lclName[k], row[9]);
k++;
}
//5
if (row[10][0] != '\0' && row[11][0] != '\0') {
strcpy(group.dName[k], row[10]);
strcpy(group.lclName[k], row[11]);
k++;
}
if (row[12][0] != '\0' && row[13][0] != '\0') {
strcpy(group.dName[k], row[12]);
strcpy(group.lclName[k], row[13]);
k++;
}
if (row[14][0] != '\0' && row[15][0] != '\0') {
strcpy(group.dName[k], row[14]);
strcpy(group.lclName[k], row[15]);
k++;
}
if (row[16][0] != '\0' && row[17][0] != '\0') {
strcpy(group.dName[k], row[16]);
strcpy(group.lclName[k], row[17]);
k++;
}
group.noOfMembers = k;
if (k > 0) {
if (mgScmLoadWorkGroup(&group) != ROK) {
scmPrint(("Failed to load workgroup\n"));
exit(-1);
}
}
}
sqlClear(res);
}
else {
scmPrint(( "SQL_CONN Error: Couldn't execute %s on the server !\n", szSQL));
}
sqlConnPut(myData);
RETVALUE(ROK);
}
/*
*
* Fun: mgScmLoadGenFromDb
*
* Desc: Load a VPBX into memory from databse
*
* Ret: ROK
* RFAILED
*
* Notes: None
*
* File: mgc_scm.c
*
*/
PRIVATE S16 mgScmLoadGenFromDb
(
Void
)
{
Txt szSQL[1024], *stopStr;
SQL_CONN *myData;
SQL_RES *res;
SQL_ROW row;
U32 num, i;
myData = sqlConnGet();
strcpy(szSQL, "select mgc_ip, port, packet_time, silence_sup, codec, cfgport, \
h323CsPort, maxCall, startPort, use_rbt, bill_server, bill_auth_port, bill_acct_port\
from gencfg_tbl");
if (sqlQuery(myData, szSQL, &res) == 0) {
num = sqlGetNumRows(res);
for (i = 0; i < num; i++) {
row = sqlGetRow(res);
if ((row[0] == NULLP) || (cmStrlen(row[0]) == 0)) {
mgCfg.mgcIpAddr = 0;
mgCfg.mgcIpAddrStr[0] = '\0';
}
else {
CmInetNetAddr address;
if(cmInetConvertStrToIpAddr(cmStrlen(row[0]), row[0], &address) != ROK) {
scmPrint(( "Failed to convert IP address (%s).\n", row[0]));
RETVALUE(RFAILED);
}
mgCfg.mgcIpAddr = address.u.ipv4NetAddr;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -