📄 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 + -