📄 dbsmgw.h
字号:
/*+============================================================================
File: raddbs.h
Summary: The file defined the interface with database.
History:
2000/05/26 V1.0
Start it. (shencan@263.net)
2001/12/25
Add new class for interface97
Add the method of shared directory by zoohoo@163.com
2001/12/28
Add the license control for interface97 by zoohoo@163.com
2002/01/10
Add the database interface by zoohoO@163.com
Fix the bug of Delete UserAcct Records judgement
============================================================================+*/
#ifndef _RAD_DBS_H
#define _RAD_DBS_H
#include "time.h"
#include <ptlib.h>
#include <set.h>
#include <hash_set.h>
#include "global.h"
#define DB_TIMEOUT 5 // database request timeout value!
#define ACE_WIN32
#define FREQUENCY_TIME 50 // the number of users added, the time for system to get really usernumber
const int maxAuthContinueFail = 3;
const int maxAcctContinueFail = 3;
// String length const
#define ADSI_USER_LEN 24
#define ADSI_PASSWD_LEN 20
#define ADSI_PHONE_LEN 20
#define ADSI_TERMINAL_ID_LEN 20
#define ADSI_PLATFORM_ID_LEN 2
#define ADSI_ACLICP_LEN 32
#define ADSI_ACLCONTENT_LEN 32
#define ADSI_REPLY_LEN 24
#define ADSI_SESSION_LEN 30
#define ADSI_THIRDCALL_LEN 15
#define ADSI_BILL_TYPE_LEN 1
#define ADSI_SEND_STATUS_LEN 1
#define ADSI_PRI_LEN 1
#define ADSI_SMC_ID_LEN 2
#define ADSI_GW_ID_LEN 2
#define ADSI_PRE_GW_ID_LEN 2
#define ADSI_CONTENT_ID_LEN 64
//Below list the maxium length of typical string variables.
#define RAD_PHONENO_LEN 40 /* Dialing number */
#define RAD_ACCESSNUM_LEN 16 /* Access number */
#define RAD_REGIONID_LEN 16 /* Reigion identity */ // old is 4
#define RAD_SECRET_LEN 64 /* Shared secret */
#define RAD_AUTHCATOR_LEN 16 /* Authenticator */
#define RAD_PSWDSEG_LEN 16 /* Password segment */
#define RAD_EVEN_PSWDSEG_LEN 32 /* even Password segment length */
#define RAD_PASSWORD_LEN 128 /* Password */
#define RAD_ATTRSTR_LEN 253 /* Attribute (string) */
#define RAD_USERSTR_LEN 64 /* User name */
#define RAD_ATTRNAME_LEN 32 /* Attribute name */
#define RAD_VALNAME_LEN 64 /* Value name */
#define RAD_MAXLINE 256 /* Line of text file */
#define RAD_FILENAME_LEN 32 /* File name */
#define RAD_DIRNAME_LEN 128 /* File name */
#define RAD_HOSTID_LEN 32 /* Host identity */
#define RAD_LOGMSG_LEN 256 /* Logged message */
#define RAD_HEADER_LEN 20 /* Radius packet header */
#define RAD_SESSIONID_LEN 48 /* Session Identity */
#define RAD_PACKET_LEN (4096 + RAD_SECRET_LEN) /* Default buffer */
#define MAX_GROUP_NUM 10
#define GROUPID_LEN 6
#define ONEBIT 1
#define SETFLAG(x,y) ((x)->m_bitFlag |= (y))
#define UNSETFLAG(x,y) ((x)->m_bitFlag &= ~(y))
#define ISSETFLAG(x,y) ((x)->m_bitFlag & (y))
#define CLEARFLAG(x) ((x)->m_bitFlag = 0)
#define SETVPNFLAG(x,y) ((x)->m_vpnFlag |= (y))
#define UNSETVPNFLAG(x,y) ((x)->m_vpnFlag &= ~(y))
#define ISSETVPNFLAG(x,y) ((x)->m_vpnFlag & (y))
#define CLEARVPNFLAG(x) ((x)->m_vpnFlag = 0)
class AcctInfo {
public:
// In parameters:
unsigned int crv;
char username[ RAD_USERSTR_LEN +1];
char called [ RAD_PHONENO_LEN +1];
char calling [ RAD_PHONENO_LEN +1];
int acctStatus;
char sessionId [ RAD_SESSIONID_LEN +1];
char regionId [ RAD_REGIONID_LEN +1 ];
unsigned int callType;
char accessNumber [ RAD_ACCESSNUM_LEN +1 ];
int localFee;
unsigned int localRadius;
unsigned int orginGkAddr;
unsigned int orginGwAddr;
unsigned int destGkAddr;
unsigned int destGwAddr;
time_t startTime;
int sessionTime;
unsigned int inBytes;
unsigned int outBytes;
unsigned int stopCause;
unsigned int codecType;
unsigned int serviceType; // expanded by ZTE
unsigned int authLevel; // radius or else
unsigned int framedProtocol; // must 1
unsigned int framedAddress;
unsigned int nasAddr;
unsigned int portNo;
unsigned int portType;
unsigned int inputPacket;
unsigned int outputPacket;
unsigned int linkCount;
enum UserType userType; // Is it a Calling user or a Card user,
// This variable isnot set in m_bitFlag.
char type; // get it from NasCall()
char group[4];
long currentTime;
char multiSessionId[RAD_SESSIONID_LEN+1];
char nasId[RAD_USERSTR_LEN +1];
unsigned int acctDelayTime;
time_t eventTimestamp;
// ADSI begin ----
// 仅对信息计帐有效:
char terminalID[ADSI_TERMINAL_ID_LEN+1];
unsigned int conSerType;
unsigned int contentType;
char platformID[ADSI_PLATFORM_ID_LEN+1];
unsigned int icpID;
char thirdCallID[ADSI_THIRDCALL_LEN+1];
char billType[ADSI_BILL_TYPE_LEN+1];
unsigned int contentFee;
unsigned int fixedFee;
unsigned int contentOctets;
char sendStatus[ADSI_SEND_STATUS_LEN+1];
char pri[ADSI_PRI_LEN+1];
char smcID[ADSI_SMC_ID_LEN+1];
char gwID[ADSI_GW_ID_LEN+1];
char preGwID[ADSI_PRE_GW_ID_LEN+1];
unsigned int sendType;
char contentID[ADSI_CONTENT_ID_LEN+1];
enum AttrNum {
// Common
e_radClass = ONEBIT,
e_sessionTime = ONEBIT << 1,
e_inBytes = ONEBIT << 2,
e_outBytes = ONEBIT << 3,
e_stopCause = ONEBIT << 4,
e_serviceType = ONEBIT << 5,
e_authLevel = ONEBIT << 6,
e_framedProtocol= ONEBIT << 7,
e_framedAddress = ONEBIT << 8,
e_nasAddr = ONEBIT << 9,
e_portNo = ONEBIT << 10,
e_portType = ONEBIT << 11,
e_inputPacket = ONEBIT << 12,
e_outputPacket = ONEBIT << 13,
e_linkCount = ONEBIT << 14,
e_acctStatus = ONEBIT << 15, //e_acctStatusType= ONEBIT << 15,
e_acctDelayTime = ONEBIT << 16,
e_inputGigaOctets = ONEBIT << 17,
e_outputGigaOctets = ONEBIT << 18,
// 仅对信息计帐有效:
e_conSerType = ONEBIT << 20,
e_contentType = ONEBIT << 21,
e_icpID = ONEBIT << 22,
e_contentFee = ONEBIT << 23,
e_fixedFee = ONEBIT << 24,
e_contentOctets = ONEBIT << 25,
e_sendType = ONEBIT << 26,
e_eventTimestamp= ONEBIT << 26,
};
unsigned int m_bitFlag;
unsigned int m_vpnFlag;
AcctInfo() { m_bitFlag = 0; m_vpnFlag = 0; }
};
/////////////////////////////////////////////////////////////////////
// Those Database access functions
/////////////////////////////////////////////////////////////////////
#ifdef MSSQL
#define DBNTWIN32
#include "windows.h"
#include <sqlfront.h>
#include <sqldb.h>
#define ITOA(type, buffer, len) itoa(type, buffer, len)
#else
#define ITOA(type, buffer, len) itoa(type, buffer, len)
#include <sybfront.h>
#include <sybdb.h>
#include <syberror.h>
#define PDBPROCESS DBPROCESS *
#endif /* MSSQL */
// return -1 means error, other means success
int DbLogin();
int DbLogoff();
int DbRelogin();
//int DbRecord(AcctInfo * pAcctInfo, int * remainMoney, int isRecordOnly=0);
//int DbSmgwRecord(PString rec);
int SaveDB(UserInterface *);
//////////////////////////////////////////////////////////////////////////
// Common database API
PDBPROCESS DbConnect();
int DbConnectOff(PDBPROCESS dbproc);
int DbReconnect(PDBPROCESS dbproc);
int DbReconnect(int n);
int GetConnectSub(PDBPROCESS dbproc);
int DbFreeResource();
int ConnectAlterDatabase();
#ifdef MSSQL
int DbErrorHandler(PDBPROCESS dbproc, int severity, int dberr,
int oserr, const char * dberrstr, const char * oserrstr);
int DbMsgHandler(PDBPROCESS dbproc, DBINT msgno, int msgstate,
int severity, const char * msgtext, const char * server,
const char * procedure, DBUSMALLINT line);
int DbErrorNULLHandler(PDBPROCESS dbproc, int severity, int dberr,
int oserr, const char * dberrstr, const char * oserrstr);
#else
int __stdcall DbErrorHandler(PDBPROCESS dbproc, int severity, int dberr,
int oserr, char * dberrstr, char * oserrstr);
int __stdcall DbMsgHandler(PDBPROCESS dbproc, DBINT msgno, int msgstate,
int severity, char * msgtext, char * server,
char * procedure, int line);
int __stdcall DbErrorNULLHandler(PDBPROCESS dbproc, int severity, int dberr,
int oserr, char * dberrstr, char * oserrstr);
#endif /* MSSQL */
int GetConnect();
int FreeConnect(int i);
DBPROCESS * GetConnectPointer();
int FreeConnect(DBPROCESS * connect);
class DbConnectGuard
{
public:
DbConnectGuard(int con)
{
m_con = con;
};
~DbConnectGuard()
{
if ( FreeConnect(m_con) == -1 )
PTRACE(3, "Warn, free db connect fail");
}
private:
int m_con;
};
class DbPConnectGuard
{
public:
DbPConnectGuard(DBPROCESS * con)
{
m_con = con;
};
~DbPConnectGuard()
{
if ( FreeConnect(m_con) == -1 )
PTRACE(3, "Warn, free db connect fail");
}
private:
DBPROCESS * m_con;
};
class CInterfaceContent
{
private:
int m_inheritGroup;
int m_userStatus;
int m_retRow;
int m_connection;
char m_sql[SQL_SIZE];
char m_sql2[SQL_SIZE];
int m_license; // the number of license
int m_userNum; // the user's number now
int m_state; // the operation at once. 0:insert 1:delete 2:update
int JudgeTimeType(char * datetime, int size);
void SetInterfaceValue(int num, char * buffer);
void GetInsertSQL(int isLink = 0);
void GetInsertSQL(char * areaNo, char * telNumber, int isLink = 0);
void GetDeleteSQL();
void GetDeleteSQL(char *);
void GetUpdateSQL();
int OperateDb();
int OperateDb_SH(); //add by zjl for ShangHai 97
int GetInfoFromSheetDetail();
int GetInheritType(char * userAccounts);
int GetAdsiAttr(char *userAccounts);
int GetUserStatusFromTable(char* userAccounts);
void SetUserStatus(int userStatus);
void SetUserStatus(int userStatus, char * areaNo, char * telNumber);
void LinkInsert(char * account, char * linkAccount);
void LinkDelete(char * account);
void LinkedDelete(char * account);
int DeleteRecord(char * userAccounts);
int ExecSQL(char * sql, char * sql2);
int GetUserGroup(char * userGroup);
int GetDateDiff(char * userAccounts);
void LinkChange(char * oldTel, char * newTel);
void TransferEndTime(char * endTime, char * buf);
int AddGroupList(char * newTel );
int RemoveGroupList(char * newTel );
int IsGrpInGrpList(char * preGroupList, const char * groupNo );
int RemoveGrpFromGrpList(char * preGroupList, const char * groupNo, char * groupList );
int CheckGrpList(char * pGroupList );
public:
CInterfaceContent(int connection);
~CInterfaceContent();
DBPROCESS * m_dbproc;
char m_serviceId[18];
char m_userGroup[4];
char m_areaNo[6];
char m_teleNumber[13];
char m_oldTeleNum[13];
int m_operateType;
char m_genTime[20];
char m_endTime[20];
char m_sendTime[20];
char m_backTime[20];
char m_userType[2];
char m_password[17];
int m_flag;
int m_remainTime;
char m_aCLICP[33];
char m_aCLContent[33];
int m_sendRecv;
char m_addString[256];
char m_oldUserType[2];
int m_isBackSheet; //add by zjl for ShangHai 97
int m_userSource;
char m_groupList[71];
char m_preGroupList[71];
int m_protocolType;
char m_groupArray[MAX_GROUP_NUM][GROUPID_LEN + 1];
int GetValue(UserInterface* userInterface);
int GetLicenseInfo();
};
#endif /* _RAD_DBS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -