?? cli_webif.c
字號(hào):
return G_FAILURE;
}
/* 重置映射表 */
ulRet = CLI_LogMapReset();
if( G_SUCCESS != ulRet )
{
MT_ERRLOG(0);
return G_FAILURE;
}
pstMapCtrl = &m_astLogIndexMapCtrl[ucOprLevel];
*pulLogNum = pstMapCtrl->usMapCount;
return G_SUCCESS;
}
/*-----------------------------------------------------------------------------
函數(shù)名稱 : CLI_WebGetLogNextIndex();
功能 : 獲取指定用戶權(quán)限級(jí)別的下一個(gè)(時(shí)間靠后)日志映射表的索引
輸入?yún)?shù) : ucOprLevel, 操作用戶的權(quán)限級(jí)別;
ulCurMapIndex, 映射表的當(dāng)前索引;
輸出參數(shù) : pulNextMapIndex, 相對(duì)于ulCurIndex的下一個(gè)映射表的索引;
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數(shù)調(diào)用說明:
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetLogNextIndex( _U8 ucOprLevel, _U32 ulCurMapIndex, _U32* pulNextMapIndex )
{
_U16 usCurMapIndex, usNextMapIndex;
ST_LOG_INDEX_MAP_CTRL *pstMapCtrl;
/* WIN32調(diào)試版本, 做一下檢查 */
#if (EOS_OS_TYPE == EOS_WIN32)
DBG_ASSERT( CLI_LogTableCheck() == G_SUCCESS );
DBG_ASSERT( G_SUCCESS == CLI_LogMapCheck() );
#endif
/* 入口指針的合法性檢查 */
if( G_NULL == pulNextMapIndex )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 操作用戶的權(quán)限級(jí)別的合法性檢查 */
if( CT_AL_NULL <= ucOprLevel )
{
MT_ERRLOG(ucOprLevel);
return G_FAILURE;
}
/* 輸入映射表索引的合法性檢查 */
if( LOG_MAX_NUM <= ulCurMapIndex )
{
MT_ERRLOG(ulCurMapIndex);
return G_FAILURE;
}
else
{
usCurMapIndex = (_U16)ulCurMapIndex;
}
pstMapCtrl = &m_astLogIndexMapCtrl[ucOprLevel];
/* 映射表無記錄 */
if( 0 == pstMapCtrl->usMapCount )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 獲取下一個(gè)映射表索引 */
usNextMapIndex = CLI_INCCYCLE( usCurMapIndex, LOG_MAX_NUM );
if( LOG_MAX_NUM <= usNextMapIndex )
{
MT_ERRLOG(usNextMapIndex);
return G_FAILURE;
}
if( usNextMapIndex == pstMapCtrl->usMapTail )
{
MT_ERRLOG(0);
return G_FAILURE;
}
*pulNextMapIndex = usNextMapIndex;
return G_SUCCESS;
}
/*-----------------------------------------------------------------------------
函數(shù)名稱 : CLI_WebGetLogPrevIndex();
功能 : 獲取指定用戶權(quán)限級(jí)別的上一個(gè)(時(shí)間靠前)日志映射表的索引
輸入?yún)?shù) : ucOprLevel, 操作用戶的權(quán)限級(jí)別;
ulCurMapIndex, 映射表的當(dāng)前索引;
輸出參數(shù) : pulPrevMapIndex, 相對(duì)于ulCurIndex的上一個(gè)映射表索引;
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數(shù)調(diào)用說明:
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetLogPrevIndex( _U8 ucOprLevel, _U32 ulCurMapIndex, _U32* pulPrevMapIndex )
{
_U16 usCurMapIndex, usPrevMapIndex;
ST_LOG_INDEX_MAP_CTRL *pstMapCtrl;
/* WIN32調(diào)試版本, 做一下檢查 */
#if (EOS_OS_TYPE == EOS_WIN32)
DBG_ASSERT( CLI_LogTableCheck() == G_SUCCESS );
DBG_ASSERT( G_SUCCESS == CLI_LogMapCheck() );
#endif
/* 入口指針的合法性檢查 */
if( G_NULL == pulPrevMapIndex )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 操作用戶的權(quán)限級(jí)別的合法性檢查 */
if( CT_AL_NULL <= ucOprLevel )
{
MT_ERRLOG(ucOprLevel);
return G_FAILURE;
}
/* 輸入映射表索引的合法性檢查 */
if( LOG_MAX_NUM <= ulCurMapIndex )
{
MT_ERRLOG(ulCurMapIndex);
return G_FAILURE;
}
else
{
usCurMapIndex = (_U16)ulCurMapIndex;
}
pstMapCtrl = &m_astLogIndexMapCtrl[ucOprLevel];
/* 映射表無記錄 */
if( 0 == pstMapCtrl->usMapCount )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 到尾了 */
if( usCurMapIndex == pstMapCtrl->usMapTail )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 獲取上一個(gè)映射表索引 */
usPrevMapIndex = CLI_DECCYCLE( usCurMapIndex, LOG_MAX_NUM );
if( LOG_MAX_NUM <= usPrevMapIndex )
{
MT_ERRLOG(usPrevMapIndex);
return G_FAILURE;
}
*pulPrevMapIndex = usPrevMapIndex;
return G_SUCCESS;
}
/*-----------------------------------------------------------------------------
函數(shù)名稱 : CLI_WebGetLogIndexByPageNo();
功能 : 獲取指定頁碼、指定用戶權(quán)限級(jí)別的日志映射表的起始索引和結(jié)束索引.
輸入?yún)?shù) : ucOprLevel, 操作用戶的權(quán)限級(jí)別;
ulPageNo, 指定的頁碼, 從0開始;
ulItemNumPerPage, 每一頁顯示的告警條目的數(shù)目;
輸出參數(shù) : pulBeginMapIndex, 指定頁面的起始映射表索引;
pulEndMapIndex, 指定頁面的結(jié)束映射表索引;;
pulItemNum, 指定頁面顯示的日志條目的實(shí)際數(shù)目;
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數(shù)調(diào)用說明: 逆序顯示;
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetLogIndexByPageNo(
_U8 ucOprLevel,
_U32 ulPageNo, _U32 ulItemNumPerPage,
_U32 *pulBeginMapIndex, _U32 *pulEndMapIndex,
_U32 *pulItemNum )
{
_U32 ulTotalPageNum, ulLastPageNo;
_U32 ulBeginIndex, ulEndIndex, ulItemNum;
ST_LOG_INDEX_MAP_CTRL *pstMapCtrl;
/* WIN32調(diào)試版本, 做一下檢查 */
#if (EOS_OS_TYPE == EOS_WIN32)
DBG_ASSERT( CLI_LogTableCheck() == G_SUCCESS );
DBG_ASSERT( G_SUCCESS == CLI_LogMapCheck() );
#endif
/* 入口參數(shù)的合法性檢查 */
if( ( G_NULL == pulBeginMapIndex )
|| ( G_NULL == pulEndMapIndex )
|| ( G_NULL == pulItemNum )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
if( 0 == ulItemNumPerPage )
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 操作用戶的權(quán)限級(jí)別的合法性檢查 */
if( CT_AL_NULL <= ucOprLevel )
{
MT_ERRLOG(ucOprLevel);
return G_FAILURE;
}
pstMapCtrl = &m_astLogIndexMapCtrl[ucOprLevel];
/* 無記錄 */
if( 0 == pstMapCtrl->usMapCount )
{
return G_FAILURE;
}
/* 總頁數(shù) */
ulTotalPageNum = ( pstMapCtrl->usMapCount + ulItemNumPerPage - 1 ) / ulItemNumPerPage;
DBG_ASSERT( 0 != ulTotalPageNum );
/* 最后一頁的頁碼(時(shí)間最前) */
ulLastPageNo = ulTotalPageNum - 1;
if( ulPageNo > ulLastPageNo )
{
DBG_ASSERT(0);
ulPageNo = ulLastPageNo;
}
/* 如果是最后一頁, 顯示的日志條數(shù) */
if( ulLastPageNo == ulPageNo )
{
ulItemNum = pstMapCtrl->usMapCount % ulItemNumPerPage;
if( 0 == ulItemNum )
{
ulItemNum = ulItemNumPerPage;
}
}
/* 如果不最后一頁, 顯示的日志條數(shù) */
else
{
ulItemNum = ulItemNumPerPage;
}
ulBeginIndex = ( pstMapCtrl->usMapTail + LOG_MAX_NUM - 1 - ulPageNo * ulItemNumPerPage )
% LOG_MAX_NUM;
ulEndIndex = ( ulBeginIndex + LOG_MAX_NUM + 1 - ulItemNum ) % LOG_MAX_NUM;
*pulBeginMapIndex = ulBeginIndex;
*pulEndMapIndex = ulEndIndex;
*pulItemNum = ulItemNum;
return G_SUCCESS;
}
/*-----------------------------------------------------------------------------
函數(shù)名稱 : CLI_WebGetLogInfo();
功能 : 獲取指定索引的日志信息;
輸入?yún)?shù) : ucOprLevel, 操作用戶的權(quán)限級(jí)別;
ulMapIndex, 映射表的索引;
輸出參數(shù) : szName, 用戶名;
pulLogmode, 用戶登錄方式;
pulIP, 登錄客戶端的IP地址;
szContent, 日志操作內(nèi)容字符串;
szTime, 操作時(shí)間字符串;
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數(shù)調(diào)用說明:
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetLogInfo( _U8 ucOprLevel, _U32 ulMapIndex, _S8* szName, _U32* pulLogmode, _U32* pulIP, _S8* szContent, _S8* szTime )
{
_U32 ulRet;
_U16 usMapIndex, usLogIndex;
P_ST_LOG_ITEM pstLogIterm;
ST_LOG_INDEX_MAP_CTRL *pstMapCtrl;
_U16 *ausMapTbl;
/* WIN32調(diào)試版本, 做一下檢查 */
#if (EOS_OS_TYPE == EOS_WIN32)
DBG_ASSERT( CLI_LogTableCheck() == G_SUCCESS );
DBG_ASSERT( G_SUCCESS == CLI_LogMapCheck() );
#endif
/* 入口指針的合法性檢查 */
if( ( G_NULL == szName )
|| ( G_NULL == pulLogmode )
|| ( G_NULL == pulIP )
|| ( G_NULL == szContent )
|| ( G_NULL == szTime )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 操作用戶的權(quán)限級(jí)別的合法性檢查 */
if( CT_AL_NULL <= ucOprLevel )
{
MT_ERRLOG(ucOprLevel);
return G_FAILURE;
}
/* 輸入映射表索引的合法性檢查 */
if( LOG_MAX_NUM <= ulMapIndex )
{
MT_ERRLOG(ulMapIndex);
return G_FAILURE;
}
else
{
usMapIndex = (_U16)ulMapIndex;
}
pstMapCtrl = &m_astLogIndexMapCtrl[ucOprLevel];
/* 無記錄 */
if( 0 == pstMapCtrl->usMapCount )
{
return G_FAILURE;
}
/* 映射表索引轉(zhuǎn)換為日志表索引 */
ausMapTbl = m_ausLogMapIndexTable[ucOprLevel];
usLogIndex = ausMapTbl[usMapIndex];
/* 日志表索引的合法性檢查 */
if( LOG_MAX_NUM <= usLogIndex )
{
MT_ERRLOG(usLogIndex);
return G_FAILURE;
}
pstLogIterm = CLI_GetOneLog( usLogIndex );
/* 日志的合法性檢查 */
ulRet = CLI_LogItemCheck( pstLogIterm );
if( G_SUCCESS != ulRet )
{
return G_FAILURE;
}
/* 如果操作者的權(quán)限比所查詢的日志的用戶權(quán)限小,不允許查詢 */
if( ucOprLevel < (_U8)pstLogIterm->ulLevel )
{
DBG_ErrLog( 0, EN_ERR_LEVEL_GENERAL, ucOprLevel, pstLogIterm->ulLevel );
return G_FAILURE;
}
/* 填寫輸出參數(shù) */
*pulLogmode = pstLogIterm->ulLogMode;
*pulIP = pstLogIterm->ulClientIp;
(_VOID)EOS_StrNCpy( szName, pstLogIterm->szUserName, ( USERNAME_LEN - 1 ) );
szName[USERNAME_LEN - 1] = '\0';
(_VOID)EOS_StrNCpy( szContent, pstLogIterm->szCommand, ( MT_LOG_CMD_LEN - 1 ) );
szContent[MT_LOG_CMD_LEN - 1] = '\0';
(_VOID)EOS_Sprintf( szTime,
"%02d-%02d-%02d %02d:%02d:%02d",
(pstLogIterm->ulLogDate >> 16) & 0xff,
((pstLogIterm->ulLogDate >> 8) & 0xff) + 1,
(pstLogIterm->ulLogDate ) & 0xff,
(pstLogIterm->ulLogTime >> 16) & 0xff,
(pstLogIterm->ulLogTime >> 8) & 0xff,
(pstLogIterm->ulLogTime) & 0xff
);
return G_SUCCESS;
}
#endif
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -