?? cli_webif.c
字號:
/*-----------------------------------------------------------------------------
函數名稱 : CLI_WebSetUserPassword();
功能 : 設置用戶密碼
輸入參數 : szOprName, 操作用戶名;
szUserName, 設置用戶名;
szPassword, 設置密碼;
輸出參數 : 無.
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數調用說明: woodhead的密碼不可修改;
woodhead可以修改woodhead級別以下(不包括woodhead)的用戶的密碼。
root可以修改root和root級別以下的用戶的密碼。
root級別以下的用戶(不包括root)只能夠修改自己的密碼。
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebSetUserPassword( const _S8* szOprName,
const _S8* szUserName, const _S8* szPassword )
{
_U32 ulRet;
PTermUserItem pstOprUser, pstSetUser;
/* 輸入指針的合法性檢查 */
if( ( G_NULL == szOprName )
|| ( G_NULL == szUserName )
|| ( G_NULL == szPassword )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 字符串長度的合法性檢查 */
if( ( EOS_StrLen( szUserName ) >= USERNAME_LEN )
|| ( EOS_StrLen( szOprName ) >= USERNAME_LEN )
|| ( EOS_StrLen( szPassword ) >= PASSWORD_LEN )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"Operation user <%s> . Set user <%s>, password <%s> ",
szOprName, szUserName, szPassword );
/* 根據用戶名獲取用戶信息 */
pstOprUser = CLI_GetUserByName( szOprName );
if( pstOprUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"Operation user <%s> is not exist !", szOprName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
pstSetUser = CLI_GetUserByName( szUserName );
if( pstSetUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"Set user <%s> is not exist !", szUserName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
/* ========================================================================
判斷密碼是否被修改, 如果沒有被修改, 返回成功.
此功能本來應該由NMS模塊實現, 先判斷網頁的用戶密碼是否被修改, 再調用本函數,
但其無法判斷網頁是否被修改, 故放此處實現 */
ulRet = CLI_CheckUserPassword( szUserName, szPassword );
if( G_SUCCESS == ulRet )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"User <%s> 's password <%s> is not modified . return success !",
szUserName, szPassword );
return G_SUCCESS;
}
/* ======================================================================== */
/* 調試用戶的密碼不允許修改 */
if( pstSetUser->ulLevel >= CT_AL_DEBUG )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"Debug user <%s> 's password can not be changed !", szUserName );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
/* 調試用戶和超級用戶可以修改超級用戶和低級別用戶的密碼 */
if( ( pstOprUser->ulLevel >= CT_AL_SUPER )
&& ( pstSetUser->ulLevel <= CT_AL_SUPER ) )
{
DBG_ASSERT( pstSetUser->ulLevel <= pstOprUser->ulLevel );
return CLI_SetUserPassword( szUserName, szPassword );
}
/* 其他用戶只能修改自己的密碼 */
else
{
if( 0 == EOS_StriCmp( szOprName, szUserName ) )
{
return CLI_SetUserPassword( szUserName, szPassword );
}
else
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserPassword() :: "
"Operation user <%s> must be equal to set user <%s> !",
szOprName, szUserName );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
}
}
/*-----------------------------------------------------------------------------
函數名稱 : CLI_WebSetUserLevel();
功能 : 設置用戶慣用語種
輸入參數 : szOprName, 操作用戶名;
szUserName, 設置用戶名;
ucLan, 用戶慣用語種;
輸出參數 : 無.
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數調用說明: woodhead可以修改woodhead和woodhead級別以下的用戶的語種;
root可以修改root和root級別以下的用戶的語種;
root級別以下的用戶(不包括root)只能夠修改自己的語種。
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebSetUserLanguage( const _S8* szOprName,
const _S8* szUserName, _U8 ucLan )
{
PTermUserItem pstOprUser, pstSetUser;
/* 輸入指針的合法性檢查 */
if( ( G_NULL == szOprName )
|| ( G_NULL == szUserName )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 字符串長度的合法性檢查 */
if( ( EOS_StrLen( szUserName ) >= USERNAME_LEN )
|| ( EOS_StrLen( szOprName ) >= USERNAME_LEN )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 語種ID的合法性檢查 */
if( ucLan >= ML_GetLangNum() )
{
MT_ERRLOG(0);
return G_FAILURE;
}
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLanguage() :: "
"Operation user <%s> . Set user <%s>, ucLan <%ld> ",
szOprName, szUserName, ucLan );
/* 根據用戶名獲取用戶信息 */
pstOprUser = CLI_GetUserByName( szOprName );
if( pstOprUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLanguage() :: "
"Operation user <%s> is not exist !", szOprName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
pstSetUser = CLI_GetUserByName( szUserName );
if( pstSetUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLanguage() :: "
"Set user <%s> is not exist !", szUserName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
/* ========================================================================
判斷用戶慣用語種是否被修改, 如果沒有被修改, 返回成功.
此功能本來應該由NMS模塊實現, 先判斷網頁的用戶慣用語種是否被修改, 再調用本函數,
但其無法判斷網頁是否被修改, 故放此處實現 */
if( ucLan == pstSetUser->ucLanguage )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLanguage() :: "
"user <%s> 's ucLan <%ld> is not modified . return success !",
szUserName, ucLan );
return G_SUCCESS;
}
/* ======================================================================== */
/* woodhead可以修改woodhead和woodhead級別以下的用戶的語種 */
if( ( pstOprUser->ulLevel == CT_AL_DEBUG )
&& ( pstSetUser->ulLevel <= CT_AL_DEBUG ) )
{
return CLI_SetUserLanguage( szUserName, ucLan );
}
/* root可以修改root和root級別以下的用戶的語種 */
else if( ( pstOprUser->ulLevel == CT_AL_SUPER )
&& ( pstSetUser->ulLevel <= CT_AL_SUPER ) )
{
return CLI_SetUserLanguage( szUserName, ucLan );
}
/* root級別以下的用戶(不包括root)只能夠修改自己的語種。 */
else
{
if( 0 == EOS_StriCmp( szOprName, szUserName ) )
{
return CLI_SetUserLanguage( szUserName, ucLan );
}
else
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLanguage() :: "
"Operation user <%s> must be equal to set user <%s> !",
szOprName, szUserName );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
}
}
/*-----------------------------------------------------------------------------
函數名稱 : CLI_WebSetUserLevel();
功能 : 設置用戶權限級別
輸入參數 : szOprName, 操作用戶名;
szUserName, 設置用戶名;
ucLevel, 用戶權限級別, 即用戶操作級別, 枚舉CLI_OPERAT_LEVEL_T
輸出參數 : 無.
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數調用說明: woodhead和root的權限不可修改;
woodhead和root用戶可以修改root級別以下(不包括root)的用戶的權限;
root級別以下的用戶(不包括root)不允許進行權限修改操作。
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebSetUserLevel( const _S8* szOprName,
const _S8* szUserName, _U8 ucLevel )
{
PTermUserItem pstOprUser, pstSetUser;
/* 輸入指針的合法性檢查 */
if( ( G_NULL == szOprName )
|| ( G_NULL == szUserName )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 字符串長度的合法性檢查 */
if( ( EOS_StrLen( szUserName ) >= USERNAME_LEN )
|| ( EOS_StrLen( szOprName ) >= USERNAME_LEN )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Operation user <%s> . Set user <%s>, ucLevel <%ld> ",
szOprName, szUserName, ucLevel );
/* 根據用戶名獲取用戶信息 */
pstOprUser = CLI_GetUserByName( szOprName );
if( pstOprUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Operation user <%s> is not exist !", szOprName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
pstSetUser = CLI_GetUserByName( szUserName );
if( pstSetUser == G_NULL )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Set user <%s> is not exist !", szUserName );
(_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
return G_FAILURE;
}
/* ========================================================================
判斷用戶權限級別是否被修改, 如果沒有被修改, 返回成功.
此功能本來應該由NMS模塊實現, 先判斷網頁的用戶權限級別是否被修改, 再調用本函數,
但其無法判斷網頁是否被修改, 故放此處實現 */
if( ucLevel == (_U8)pstSetUser->ulLevel )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"user <%s> 's ucLevel <%ld> is not modified . return success !",
szUserName, ucLevel );
return G_SUCCESS;
}
/* ======================================================================== */
/* 輸入的用戶權限的合法性檢查 */
if( ucLevel >= CT_AL_SUPER )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Input user level %ld is too high ! must be lower than super level .",
ucLevel );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
/* 操作用戶必須是調試用戶或超級用戶 */
if( pstOprUser->ulLevel < CT_AL_SUPER )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Operation user <%s> 's level %ld is too lower. must be debug user or super user !",
szOprName, pstOprUser->ulLevel );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
/* 不允許修改調試用戶和超級用戶的權限 */
if( pstSetUser->ulLevel >= CT_AL_SUPER )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebSetUserLevel() :: "
"Debug user or super user <%s> 's level can not be changed !",
szUserName );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
return CLI_SetUserLevel( szUserName, ucLevel );
}
/*-----------------------------------------------------------------------------
函數名稱 : CLI_WebUserAdd();
功能 : 增加用戶
輸入參數 : szOprName, 操作用戶名;
szUserName, 添加用戶名;
szPassword, 密碼(明文);
ucLevel, 用戶權限級別, 即用戶操作級別, 枚舉CLI_OPERAT_LEVEL_T
ucLan, 用戶慣用語種;
輸出參數 : 無.
返回值 : G_SUCCESS, 成功;
其他, 失敗.
函數調用說明: woodhead和root用戶可以增刪root級別以下(不包括root)的用戶。
root級別以下的用戶(不包括root)不允許進行增刪操作。
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebUserAdd( const _S8* szOprName,
const _S8* szUserName, const _S8* szPassword,
_U8 ucLevel, _U8 ucLan )
{
_U32 i;
PTermUserItem pstOprUser;
/* 輸入指針的合法性檢查 */
if( ( G_NULL == szOprName )
|| ( G_NULL == szUserName )
|| ( G_NULL == szPassword )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 字符串長度的合法性檢查 */
if( ( EOS_StrLen( szOprName ) >= USERNAME_LEN )
|| ( EOS_StrLen( szUserName ) >= PASSWORD_LEN )
|| ( EOS_StrLen( szPassword ) >= PASSWORD_LEN )
)
{
MT_ERRLOG(0);
return G_FAILURE;
}
/* 調試用戶或超級用戶是唯一的, 不允許再添加 */
if( ucLevel >= CT_AL_SUPER )
{
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
"Add user <%s> 's level %ld is too higher ! "
"System only support one debug user and one super user !",
szUserName, ucLevel );
(_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
return G_FAILURE;
}
/* 語種ID的合法性檢查 */
if( ucLan >= ML_GetLangNum() )
{
MT_ERRLOG(0);
return G_FAILURE;
}
DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
"Operation user <%s> . Add user <%s>, password <%s>, ucLevel <%ld>, ucLan <%ld> ",
szOprName, szUserName, szPassword, ucLevel, ucLan );
/* 根據用戶名獲取用戶信息 */
pstOprUser = CLI_GetUserByName( szOprName );
if( pstOprUser == G_NULL )
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -