#include "StdAfx.h" #include "Config.h" #include "DBCtrl.h" int CConfig::m_ListenPort = SC_LISTEN_PORT; TTS_TYPE CConfig::m_TtsType = TTS_NONE; TCHAR CConfig::m_McAddr[IP_PORT_LEN] = _T("127.0.0.1"); int CConfig::m_McPort = 9001; int CConfig::m_DigitalTrunkCount = 0; int CConfig::m_VoipTrunkCount = 0; TCHAR CConfig::m_VoipSignallingAddr[IP_PORT_LEN] = { 0 }; TCHAR CConfig::m_VoipMediaAddr[IP_PORT_LEN] = { 0 }; TCHAR CConfig::m_FaxServerAddr[IP_PORT_LEN] = { 0 }; int CConfig::m_FaxServerPort = 0; CString CConfig::m_LogFilePath = __T(""); CString CConfig::m_TtsPath = __T(""); CConfig::ExtenMap CConfig::m_MapExten; CCfgSipAccount CConfig::m_SipAccount; CCfgTrunkItem CConfig::m_TrunkItem; CCfgTrunkMatch CConfig::m_TrunkMatch; CConfig::CConfig(void) { } bool CConfig::load(void) { CString DataTemp = _T(""); IOtlConnection* pConn = IOtlConnection::getInstance(); // 打开数据库连接 if(!pConn->Connect()) return false; if(!m_SipAccount.load()) return false; if(!m_TrunkItem.load()) return false; if(!m_TrunkMatch.load()) return false; m_ListenPort = pConn->GetSingleDataStr2Int(_T("SELECT value FROM conf_dev WHERE Name='ScPort'")); DataTemp = pConn->GetSingleDataStr(_T("SELECT value FROM conf_system WHERE Name='TtsType'")); m_TtsType = (TTS_TYPE)atoi(DataTemp); DataTemp = pConn->GetSingleDataStr(_T("SELECT value FROM conf_dev WHERE Name='McAddr'")); lstrcpy(m_McAddr, DataTemp); m_McPort = pConn->GetSingleDataStr2Int(_T("SELECT value FROM conf_dev WHERE Name='McPort'")); m_DigitalTrunkCount = pConn->GetSingleDataStr2Int(_T("SELECT value FROM conf_dev WHERE Name='DigTrunkCount'")); m_VoipTrunkCount = pConn->GetSingleDataStr2Int(_T("SELECT value FROM conf_dev WHERE Name='VoipTrunkCount'")); DataTemp = pConn->GetSingleDataStr(_T("SELECT value FROM conf_dev WHERE Name='VoipSignallingAddr'")); lstrcpy(m_VoipSignallingAddr, DataTemp); DataTemp = pConn->GetSingleDataStr(_T("SELECT value FROM conf_dev WHERE Name='VoipMediaAddr'")); lstrcpy(m_VoipMediaAddr, DataTemp); DataTemp = pConn->GetSingleDataStr(_T("SELECT value FROM conf_dev WHERE Name='FaxServerAddr'")); lstrcpy(m_FaxServerAddr, DataTemp); m_FaxServerPort = pConn->GetSingleDataStr2Int(_T("SELECT value FROM conf_dev WHERE Name='FaxServerPort'")); // 读取日志文件路径 m_LogFilePath = pConn->GetSingleDataStr(_T("SELECT value FROM conf_system WHERE name = 'LogPath'")); m_TtsPath = pConn->GetSingleDataStr(_T("SELECT value FROM conf_system WHERE name = 'TtsBufferPath'")); DataTemp.Format(_T("SELECT id, value FROM conf_line WHERE type = %d"), LINE_EXTEN); IOtlRecordset* pExtens = pConn->QueryRecords(DataTemp); if (NULL != pExtens) { while(!pExtens->IsEOF()) { pExtens->MoveNextRow(); int ExtenId = pExtens->GetValueIntByIndex(1); DataTemp = pExtens->GetValueStrByIndex(2); m_MapExten.SetAt(ExtenId, DataTemp); } // end while IOtlRecordset::DestroyInstance(pExtens); // 释放记录集 } pConn->Disconnect(); return true; } bool CConfig::isContainsExten(char* p_tel) { if (p_tel == NULL) return false; if (strlen(p_tel) == 0) return false; char t_tel_buf[32] = { 0 }; getCallNumFromSipAddr(p_tel, t_tel_buf); UINT t_extenId = atoi(t_tel_buf); CString t_exten; CConfig::ExtenMap& t_ExtMap = CConfig::extenMap(); bool t_b_isFound = t_ExtMap.Lookup(t_extenId, t_exten); if (t_b_isFound) return true; return false; } void CConfig::getCallNumFromSipAddr(char* p_sip_uri, char* p_tel_buf) { if (p_sip_uri == NULL) return; if (p_tel_buf == NULL) return; char* t_p_pos; char t_szTmpAddr[200]; lstrcpy(t_szTmpAddr, p_sip_uri); TCHAR *p = strstr(t_szTmpAddr, _T("@")); if (p != NULL) *p = 0; p = strstr(t_szTmpAddr, _T(":")); if (p == NULL) t_p_pos = t_szTmpAddr; else t_p_pos = p + 1; strncpy(p_tel_buf, t_p_pos, sizeof(p_tel_buf) - 1); return; }