?? cli_user.c
字號(hào):
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) :此接口僅被AGENT調(diào)用 */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_SetUserName(_U32 ulIndex, _S8 *szUserName)
{
PTermUserItem pTermUserItem ;
#if CLI_DBASE_SUPPORT
_U32 ulTmp;
#endif
CLI_ASSURE_OR_FAIL(( szUserName != G_NULL ) && ( *szUserName != G_NULL ));
pTermUserItem = &m_sUserTable[ulIndex];
if (pTermUserItem->ucUserType == USER_NOT_USED)
{
return G_FAILURE ;
}
if (pTermUserItem->ulLevel >= CT_AL_DEBUG)
{
return G_FAILURE ;
}
EOS_StrCpy(pTermUserItem->szUserName, szUserName);
#if CLI_DBASE_SUPPORT
/* 是否包含RDB模塊 */
if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
{
/* 函數(shù)指針是否注冊(cè) */
if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectUpdate )
{
MT_ERRLOG(0);
return G_FAILURE;
}
ulTmp = (_U32)(pTermUserItem - m_sUserTable);
ulTmp = g_pfn_CFG_CLI_RDB_RecordDirectUpdate(m_ulCliUserHandle, m_usUserTable, ulTmp, pTermUserItem);
CLI_ASSURE_OR_FAIL(G_SUCCESS == ulTmp);
}
#endif
return G_SUCCESS ;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_SetUserPassword */
/* 函數(shù)功能 :設(shè)定某一用戶的口令 */
/* 輸入?yún)?shù) :_S8 *szUserName 用戶名 */
/* _S8 *szPassword用戶口令 */
/* 輸出參數(shù) :_S8 *szPassword用戶口令 */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_SetUserPassword(const _S8 *szUserName, const _S8 *szPassword)
{
PTermUserItem pTermUserItem ;
ST_TIME sTime;
#if CLI_DBASE_SUPPORT
_U32 ulTmp;
#endif
CLI_ASSURE_OR_FAIL(( szUserName != G_NULL ) && ( szPassword != G_NULL ));
if (EOS_GetTime(&sTime) != G_SUCCESS)
{
sTime.ucYear = 0x03;
sTime.ucMonth = 0x05;
sTime.ucDay = 0x01;
}
pTermUserItem = CLI_GetUserByName(szUserName) ;
if (G_NULL == pTermUserItem)
{
IO_Print(CLI_USER_NOT_EXISTED);
return G_FAILURE ;
}
if (pTermUserItem->ulLevel >= CT_AL_DEBUG)
{
IO_Print(CLI_USER_HAS_NO_RIGHT);
return G_FAILURE ;
}
CLI_Encrypt(pTermUserItem->szPassword, szPassword, 0) ;
/* 刷新密碼的更新時(shí)間 */
pTermUserItem->ulPwdRenewTime = USER_MAKE_DAY(sTime.ucYear, sTime.ucMonth, sTime.ucDay);
#if CLI_DBASE_SUPPORT
/* 是否包含RDB模塊 */
if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
{
ulTmp = (_U32)(pTermUserItem - m_sUserTable);
/* 函數(shù)指針是否注冊(cè) */
if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectUpdate )
{
MT_ERRLOG(0);
return G_FAILURE;
}
ulTmp = g_pfn_CFG_CLI_RDB_RecordDirectUpdate(m_ulCliUserHandle, m_usUserTable, ulTmp, pTermUserItem);
CLI_ASSURE_OR_FAIL(G_SUCCESS == ulTmp);
}
#endif
return G_SUCCESS ;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_SetUserLevel */
/* 函數(shù)功能 :設(shè)定某一用戶的權(quán)限 */
/* 輸入?yún)?shù) :_S8 *szUserName 用戶名 */
/* _U32 ulLevel用戶權(quán)限 */
/* 輸出參數(shù) :_U32 ulLevel用戶權(quán)限 */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_SetUserLevel(const _S8 *szUserName, _U32 ulLevel)
{
PTermUserItem pTermUserItem ;
_U32 ulTmp;
CLI_ASSURE_OR_FAIL( szUserName != G_NULL );
pTermUserItem = CLI_GetUserByName(szUserName) ;
if (G_NULL == pTermUserItem)
return G_FAILURE ;
pTermUserItem->ulLevel = ulLevel ;
#if CLI_DBASE_SUPPORT
/* 是否包含RDB模塊 */
if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
{
/* 函數(shù)指針是否注冊(cè) */
if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectUpdate )
{
MT_ERRLOG(0);
return G_FAILURE;
}
ulTmp = (_U32)(pTermUserItem - m_sUserTable);
ulTmp = g_pfn_CFG_CLI_RDB_RecordDirectUpdate(m_ulCliUserHandle, m_usUserTable, ulTmp, pTermUserItem);
CLI_ASSURE_OR_FAIL(G_SUCCESS == ulTmp);
}
#endif
return G_SUCCESS ;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_SetUserLanguage */
/* 函數(shù)功能 :設(shè)定某一用戶的權(quán)限 */
/* 輸入?yún)?shù) :_S8 *szUserName 用戶名 */
/* _U8 ucLan 用戶慣用語(yǔ)種 */
/* 輸出參數(shù) :無(wú) */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_SetUserLanguage(const _S8 *szUserName, _U8 ucLan)
{
PTermUserItem pTermUserItem ;
#if CLI_DBASE_SUPPORT
_U32 ulTmp;
#endif
CLI_ASSURE_OR_FAIL( szUserName != G_NULL );
/* 語(yǔ)種ID的合法性檢查 */
if( ucLan >= ML_GetLangNum() )
{
MT_ERRLOG(0);
return G_FAILURE;
}
pTermUserItem = CLI_GetUserByName(szUserName) ;
if (G_NULL == pTermUserItem)
{
IO_Print(CLI_USER_NOT_EXISTED);
return G_FAILURE ;
}
pTermUserItem->ucLanguage = ucLan ;
#if CLI_DBASE_SUPPORT
/* 是否包含RDB模塊 */
if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
{
ulTmp = (_U32)(pTermUserItem - m_sUserTable);
/* 函數(shù)指針是否注冊(cè) */
if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectUpdate )
{
MT_ERRLOG(0);
return G_FAILURE;
}
ulTmp = g_pfn_CFG_CLI_RDB_RecordDirectUpdate(m_ulCliUserHandle, m_usUserTable, ulTmp, pTermUserItem);
CLI_ASSURE_OR_FAIL(G_SUCCESS == ulTmp);
}
#endif
return G_SUCCESS ;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_DisplayOneUserInfo */
/* 函數(shù)功能 :輸出某一用戶的信息 */
/* 輸入?yún)?shù) : */
/* 輸出參數(shù) :無(wú) */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_DisplayOneUserInfo(PTermUserItem pTermUserItem)
{
const _S8 *pStat;
PTerm_Data_S pTermStruct;
_U32 ulValidTime = 0;
ST_TIME sTime;
_U32 ulUserLogMode;
_S8 szIp[32];
if ((pTermStruct = CLI_GetCurrentTaskData()) == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
if (EOS_GetTime(&sTime) != G_SUCCESS)
{
sTime.ucYear = 0x03;
sTime.ucMonth = 0x05;
sTime.ucDay = 0x01;
}
/* 查詢調(diào)試用戶或比當(dāng)前用戶等級(jí)高的用戶信息,不響應(yīng)*/
if (pTermStruct->ucUserLevel < pTermUserItem->ulLevel
|| pTermUserItem->ulLevel >= CT_AL_DEBUG
|| pTermUserItem->ucUserType == USER_NOT_USED)
return G_SUCCESS;
ulValidTime = USER_MAKE_DAY(sTime.ucYear, sTime.ucMonth, sTime.ucDay);
if (ulValidTime < pTermUserItem->ulPwdRenewTime)
{
ulValidTime = CLI_USR_PSSWRD_TIME;
}
else if (ulValidTime > pTermUserItem->ulPwdRenewTime + CLI_USR_PSSWRD_TIME)
{
ulValidTime = 0;
}
else
{
ulValidTime = (pTermUserItem->ulPwdRenewTime + CLI_USR_PSSWRD_TIME - ulValidTime) % (CLI_USR_PSSWRD_TIME + 1);
}
if (pTermUserItem->ucUserStatus >= TERM_LOGED)
{
pStat = ML_GetString(pTermStruct->ulTermId, CLI_USER_LOGIN_STAT);
ulUserLogMode = CLI_GetUserLogModeByTermID(pTermUserItem->ulTermId);
}
else
{
pStat = ML_GetString(pTermStruct->ulTermId, CLI_USER_UNLOGIN_STAT);
ulUserLogMode = LOG_MODE_BUTT;
}
/* 如果是從telnet或web登錄, 則獲取IP地址 */
if( ( ulUserLogMode == LOG_MODE_WEB )
|| ( ulUserLogMode == LOG_MODE_TELNET )
)
{
EOS_IPAddrToStr( m_TDTable[pTermUserItem->ulTermId - 1].pTermStruct->ulClientIP, szIp );
}
else
{
EOS_StrCpy( szIp, "---" );
}
IO_Print(CLI_USER_TABLE_ITEM,
pTermUserItem->szUserName,
ML_GetString(pTermStruct->ulTermId, (CLI_USER_LEVEL_1 + pTermUserItem->ulLevel)),
ML_GetString(pTermStruct->ulTermId, (CLI_USER_LANGUAGE_1 + pTermUserItem->ucLanguage%2)),
pStat,
CLI_GetUserLogModeString(ulUserLogMode),
szIp,
ulValidTime
);
return G_SUCCESS;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_DisplayAllUserInfo */
/* 函數(shù)功能 :顯示所有用戶的信息 */
/* 輸入?yún)?shù) : */
/* 輸出參數(shù) :無(wú) */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_DisplayAllUserInfo(_VOID)
{
_U32 i;
for (i = 0; i < MAX_USER_NUM; i++)
{
if (CLI_DisplayOneUserInfo(&m_sUserTable[i]) != G_SUCCESS)
return G_FAILURE;
}
return G_SUCCESS;
}
/********************************************************************/
/* 函數(shù)名稱 :CLI_DisplayOnlineUser */
/* 函數(shù)功能 :顯示所有在線用戶的信息 */
/* 輸入?yún)?shù) :無(wú) */
/* 輸出參數(shù) :無(wú) */
/* 返回值 :成功、失敗 */
/* 調(diào)用函數(shù) : */
/* 被調(diào)函數(shù) : */
/********************************************************************/
_U32 CLI_DisplayOnlineUser(_VOID)
{
_U32 i;
for (i = 0; i < MAX_USER_NUM; i++)
{
if (m_sUserTable[i].ucUserStatus >= TERM_LOGED)
if (CLI_DisplayOneUserInfo(&m_sUserTable[i]) != G_SUCCESS)
return G_FAILURE;
}
return G_SUCCESS;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -