亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cli_webif.c

?? 命令行在嵌入式系統的實現
?? C
?? 第 1 頁 / 共 4 頁
字號:
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
                 "Operation user <%s> is not exist !", szOprName  );
        (_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
        return G_FAILURE;
    }

    /* 操作用戶必須是調試用戶或超級用戶 */
    if( pstOprUser->ulLevel < CT_AL_SUPER )
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
                 "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;
    }

    /* 檢查是否重名 */
    for( i = 0; i < MAX_USER_NUM; i ++ )
    {
        if(     ( 0 == EOS_StriCmp( m_sUserTable[i].szUserName, szUserName) )
             && ( m_sUserTable[i].ucUserType != USER_NOT_USED ) )
        {
            DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
                     "user <%s> has exist !",
                     szOprName  );
            (_VOID)WNM_SendErrString( CLI_USER_HAS_EXISTED );
            return G_FAILURE;
        }
    }

    /* 檢查用戶表是否已滿. 調試用戶為固定用戶,不能被替換 */
    for( i = 1; i < MAX_USER_NUM; i++ )
    {
        if( m_sUserTable[i].ucUserType == USER_NOT_USED )
        {
            break;
        }
    }

    if( i == MAX_USER_NUM )
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserAdd() :: "
                 "user table if full !" );
        (_VOID)WNM_SendErrString( CLI_USER_TABLE_FULL );
        return G_FAILURE;
    }


    /* 配置用戶表 */
    (_VOID)CLI_UserInfoCfg( &m_sUserTable[i],
                     szUserName, szPassword, ucLevel, USER_FOR_WEB, ucLan );

    #if CLI_DBASE_SUPPORT
    /* 是否包含RDB模塊 */
    if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
    {
        /* 函數指針是否注冊 */
        if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectInsert )
        {
            MT_ERRLOG(0);
            return G_FAILURE;
        }

        if( g_pfn_CFG_CLI_RDB_RecordDirectInsert(m_ulCliUserHandle, m_usUserTable, i, &m_sUserTable[i]) != G_SUCCESS )
        {
            m_sUserTable[i].ucUserType = USER_NOT_USED;
            return G_FAILURE;
        }
    }
    #endif

    return G_SUCCESS;

}

/*-----------------------------------------------------------------------------
 函數名稱    : CLI_WebUserDel();
 功能        : 刪除用戶
 輸入參數    : szOprName,   操作用戶名;
               szName,      用戶名;
 輸出參數    : 無.
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數調用說明: woodhead和root不可刪除;
               woodhead和root用戶可以增刪root級別以下(不包括root)的用戶。
               root級別以下的用戶(不包括root)不允許進行增刪操作。
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebUserDel( const _S8* szOprName, const _S8* szUserName )
{
    _U32                i;
    _U8                 ucTmp;
    PTermUserItem       pstOprUser;

    /* 根據用戶名獲取用戶信息 */
    pstOprUser = CLI_GetUserByName( szOprName );
    if( pstOprUser == G_NULL )
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                 "Operation user <%s> is not exist !", szOprName  );
        (_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
        return G_FAILURE;
    }

    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
             "Operation user <%s> . Delelte user <%s> .",
             szOprName, szUserName );

    /* 操作用戶必須是調試用戶或超級用戶 */
    if( pstOprUser->ulLevel < CT_AL_SUPER )
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                 "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;
    }

    /* 遍歷查找匹配用戶 */
    for( i = 0; i < MAX_USER_NUM; i ++ )
    {
        /* 如果用戶名匹配 */
        if(     ( 0 ==EOS_StriCmp(m_sUserTable[i].szUserName, szUserName) )
             && ( m_sUserTable[i].ucUserType != USER_NOT_USED )
          )
        {
            /* 禁止刪除調試用戶和超級用戶 */
            if( m_sUserTable[i].ulLevel >= CT_AL_SUPER )
            {
                DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                         "Can't delete debug user or super user <%s, %ld> !",
                         szUserName, m_sUserTable[i].ulLevel );
                (_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
                return G_FAILURE;
            }
            /* 禁止低級別用戶刪除高級別用戶 */
            else if ( pstOprUser->ulLevel < m_sUserTable[i].ulLevel )
            {
                DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                         "Operation user <%s, %ld> has no right to delete user <%s, %ld> !",
                         szOprName, pstOprUser->ulLevel, szUserName, m_sUserTable[i].ulLevel );
                (_VOID)WNM_SendErrString( CLI_USER_HAS_NO_RIGHT );
                return G_FAILURE;
            }
            /* 禁止刪除在線用戶 */
            else if( m_sUserTable[i].ulTermId != 0 )
            {
                DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                         "Delete user <%s> 's is online !",
                         szUserName  );
                (_VOID)WNM_SendErrString( CLI_USER_DEL_ONLINE );
                return G_FAILURE;
            }
            /* 終于匹配了 */
            else
            {
                break;
            }
        }
    }

    /* 未找到 */
    if( i == MAX_USER_NUM )
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebUserDel() :: "
                 "Can't find Delete user <%s> !",
                 szUserName  );
        (_VOID)WNM_SendErrString( CLI_USER_NOT_EXISTED );
        return G_FAILURE;
    }

    ucTmp = m_sUserTable[i].ucUserType;
    m_sUserTable[i].ucUserType = USER_NOT_USED;

    #if CLI_DBASE_SUPPORT
    /* 是否包含RDB模塊 */
    if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
    {
        /* 函數指針是否注冊 */
        if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectDelete )
        {
            MT_ERRLOG(0);
            return G_FAILURE;
        }

        if (g_pfn_CFG_CLI_RDB_RecordDirectDelete( m_ulCliUserHandle, m_usUserTable, i) != G_SUCCESS)
        {
            m_sUserTable[i].ucUserType = ucTmp;
            MT_ERRLOG(0);
            return G_FAILURE;
        }
    }
    #endif

    return G_SUCCESS;
}


#undef __WNM_IF_ACL__
/*-----------------------------------------------------------------------------
 函數名稱    : CLI_WebAddClientACL();
 功能        : 增加ACL的表項;
 輸入參數    : ulIpaddr     IP地址;
               ulIpMask     子網掩碼;
 輸出參數    : 無.
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數調用說明:
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebAddClientACL( _U32 ulIpaddr, _U32 ulIpMask )
{
    _S8 szIPAdd[20], szIpMsk[20];
    _U32 i;

    /* 轉換為字符串 */
    (_VOID)_IPAddrToStr(ulIpaddr, szIPAdd);
    (_VOID)_IPAddrToStr(ulIpMask, szIpMsk);

    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebAddClientACL() :: "
             "Add ip addr <%s> and mask <%s> to ACL talbe .",
             szIPAdd, szIpMsk );

    /* IP地址和子網掩碼的合法性檢查 */
    if (_VerifyGeneralIPAddress(szIPAdd) != G_SUCCESS
     || _VerifyMASKAddress(szIpMsk) != G_SUCCESS)
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebAddClientACL() :: "
                 "Input ip addr <%s> or mask <%s> is invalid .",
                 szIPAdd, szIpMsk );
        (_VOID)WNM_SendErrString( CLI_CLIENT_PARAM_VERIFY_FAILED );
        return G_FAILURE;
    }

    for (i = 0; i < MT_ACL_NUM; i++)
    {
        if (((m_stCliAcl[i].ulIpAddr & m_stCliAcl[i].ulIpMask)
            == (ulIpaddr & ulIpMask))
            && (m_stCliAcl[i].ulIpMask == ulIpMask))
        {
            DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebAddClientACL() :: "
                     "Input ip addr <%s> and mask <%s> has exist .",
                     szIPAdd, szIpMsk );
            (_VOID)WNM_SendErrString( CLI_CLIENT_LIST_EXISTED );
            return G_FAILURE;
        }
    }

    for (i = 0; i < MT_ACL_NUM; i++)
    {
        if (m_stCliAcl[i].ulState != ACL_USED_FLAG)
        {
            m_stCliAcl[i].ulIpAddr = ulIpaddr;
            m_stCliAcl[i].ulIpMask = ulIpMask;
            m_stCliAcl[i].ulState  = ACL_USED_FLAG;

            #if CLI_DBASE_SUPPORT
            /* 是否包含RDB模塊 */
            if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
            {
                /* 函數指針是否注冊 */
                if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectInsert )
                {
                    MT_ERRLOG(0);
                    return G_FAILURE;
                }

                if (g_pfn_CFG_CLI_RDB_RecordDirectInsert(m_ulCliUserHandle, m_usClientACLTable, i, &m_stCliAcl[i])!= G_SUCCESS)
                {
                    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebAddClientACL() :: "
                             "Input ip addr <%s> and mask <%s> insert to RDB fail .",
                             szIPAdd, szIpMsk );
                    MT_ERRLOG(0);
                    return G_FAILURE;
                }
            }
            #endif

            return G_SUCCESS;
        }
    }

    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebAddClientACL() :: "
             "ACL table is full .",
             szIPAdd, szIpMsk );
    (_VOID)WNM_SendErrString( CLI_CLIENT_TABLE_FULL );

    return G_FAILURE;

}

/*-----------------------------------------------------------------------------
 函數名稱    : NMS_DelClientACL();
 功能        : 刪除ACL的表項;
 輸入參數    : ulIpaddr     IP地址;
               ulIpMask     子網掩碼;
 輸出參數    : 無.
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數調用說明:
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebDelClientACL( _U32 ulIpaddr, _U32 ulIpMask )
{
    _S8 szIPAdd[20], szIpMsk[20];
    _U32 i;

    /* 轉換為字符串 */
    (_VOID)_IPAddrToStr(ulIpaddr, szIPAdd);
    (_VOID)_IPAddrToStr(ulIpMask, szIpMsk);

    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebDelClientACL() :: "
             "delete ip addr <%s> and mask <%s> from ACL talbe .",
             szIPAdd, szIpMsk );


    /* IP地址和子網掩碼的合法性檢查 */
    if ( _VerifyGeneralIPAddress(szIPAdd) != G_SUCCESS
     || _VerifyMASKAddress(szIpMsk) != G_SUCCESS)
    {
        DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebDelClientACL() :: "
                 "Input ip addr <%s> or mask <%s> is invalid .",
                 szIPAdd, szIpMsk );
        (_VOID)WNM_SendErrString( CLI_CLIENT_PARAM_VERIFY_FAILED );
        return G_FAILURE;
    }

    for (i = 0; i < MT_ACL_NUM; i++)
    {
        if (m_stCliAcl[i].ulIpAddr == ulIpaddr
         && m_stCliAcl[i].ulIpMask == ulIpMask
         && m_stCliAcl[i].ulState == ACL_USED_FLAG)
        {
            /*將Ip地址和掩碼初始化為255.255.255.255*/
            m_stCliAcl[i].ulIpAddr = G_NULL_DWORD;
            m_stCliAcl[i].ulIpMask = G_NULL_DWORD;
            m_stCliAcl[i].ulState  = 0;

            #if CLI_DBASE_SUPPORT
            /* 是否包含RDB模塊 */
            if( G_YES == g_ul_INCLUDE_MODULE_CLI_RDB )
            {
                /* 函數指針是否注冊 */
                if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectDelete )
                {
                    MT_ERRLOG(0);
                    return G_FAILURE;
                }

                if (g_pfn_CFG_CLI_RDB_RecordDirectDelete( m_ulCliUserHandle, m_usClientACLTable, i) != G_SUCCESS)
                {
                    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebDelClientACL() :: "
                             "Input ip addr <%s> and mask <%s> delete from RDB fail .",
                             szIPAdd, szIpMsk );
                    MT_ERRLOG(0);
                    return G_FAILURE;
                }
            }
            #endif

            return G_SUCCESS;
        }
    }

    DBG_Out( PID_CLI, CLI_DBGOUT_NOTE, G_STR_HEAD"CLI_WebDelClientACL() :: "
             "Can't find ip addr <%s> or mask <%s> from ACL table .",
             szIPAdd, szIpMsk );
    (_VOID)WNM_SendErrString( CLI_TELNET_ACL_UNFIND );

    return G_FAILURE;

}


#undef __WNM_IF_LOG__
#if ( LOG_SAVE_FLASH == G_NO )
/*-----------------------------------------------------------------------------
 函數名稱    : CLI_WebGetLogNum();
 功能        : 獲取指定用戶權限級別的日志數目;
 輸入參數    : ucOprLevel,  操作用戶的權限級別;
 輸出參數    : *pulLogNum,  指定用戶權限級別的日志數目;
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數調用說明: 本函數調用CLI_LogMapReset(), 必須保證在后面的幾個函數前調用;
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetLogNum( _U8 ucOprLevel, _U32* pulLogNum )
{
    _U32                    ulRet;
    ST_LOG_INDEX_MAP_CTRL  *pstMapCtrl;

    /* WIN32調試版本, 做一下檢查 */
    #if (EOS_OS_TYPE == EOS_WIN32)
    DBG_ASSERT( CLI_LogTableCheck() == G_SUCCESS );
    #endif

    /* 入口指針的合法性檢查 */
    if( G_NULL == pulLogNum )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    /* 操作用戶的權限級別的合法性檢查 */
    if( CT_AL_NULL <= ucOprLevel )
    {
        MT_ERRLOG(ucOprLevel);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨九色丨国产丨porny| 欧美在线综合视频| 亚洲午夜成aⅴ人片| 精品久久久久久综合日本欧美| 成人av影院在线| 日本aⅴ免费视频一区二区三区| 日本一区二区电影| 日韩欧美黄色影院| 精品视频一区 二区 三区| 国产91丝袜在线播放0| 日韩高清不卡一区二区三区| 亚洲男人电影天堂| 国产视频一区在线观看| 日韩欧美卡一卡二| 欧美日韩国产小视频在线观看| av一区二区三区在线| 国产一区二区h| 美女在线视频一区| 亚洲国产日韩a在线播放性色| 国产亚洲欧美一区在线观看| 日韩一区二区三区四区 | 久久国产福利国产秒拍| 亚洲激情校园春色| 亚洲天堂免费看| 中文字幕+乱码+中文字幕一区| 精品国产精品网麻豆系列| 日韩亚洲欧美一区| 777欧美精品| 91精品国产高清一区二区三区 | 蜜臀av一区二区在线免费观看| 一区二区高清视频在线观看| 亚洲色图20p| 中文字幕日韩一区二区| 国产精品视频一区二区三区不卡 | 亚洲aaa精品| 亚洲妇女屁股眼交7| 亚洲国产精品一区二区久久| 亚洲免费在线视频一区 二区| 1000部国产精品成人观看| 中文字幕一区二区三区不卡在线| 欧美国产日韩a欧美在线观看| 久久久99精品久久| 国产日产亚洲精品系列| 国产日韩欧美精品一区| 国产精品激情偷乱一区二区∴| 国产精品理伦片| 国产精品久久久久久久蜜臀| 中文字幕五月欧美| 怡红院av一区二区三区| 亚洲综合一区二区三区| 亚洲电影在线免费观看| 午夜精品在线视频一区| 毛片av中文字幕一区二区| 精品午夜久久福利影院| 盗摄精品av一区二区三区| 成人爱爱电影网址| 91福利视频网站| 欧美午夜免费电影| 日韩女同互慰一区二区| 日本一区二区免费在线观看视频| 国产精品嫩草影院av蜜臀| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲最新视频在线观看| 久久久精品2019中文字幕之3| 国产精品每日更新| 亚洲欧洲一区二区三区| 亚洲激情自拍视频| 亚洲成av人片在线观看无码| 亚洲高清视频在线| 人人精品人人爱| 国产91在线看| 色婷婷综合久久久中文一区二区 | 色婷婷久久久久swag精品| av成人老司机| 欧美午夜一区二区三区免费大片| 欧美日韩一本到| 日韩精品在线一区| 国产日韩亚洲欧美综合| 日韩美女久久久| 无码av中文一区二区三区桃花岛| 日韩av中文在线观看| 韩国精品主播一区二区在线观看| 国产大陆精品国产| 国产成人免费视频网站| 欧美日韩中文另类| 久久综合久久99| 国产精品久久精品日日| 亚洲成人久久影院| 极品少妇xxxx偷拍精品少妇| 成人av在线一区二区| 欧美吞精做爰啪啪高潮| 欧美一区二区美女| 国产欧美一区二区精品忘忧草| 国产精品国产自产拍高清av | 黄色日韩网站视频| av在线这里只有精品| 欧美日韩你懂得| 久久久久综合网| 亚洲一卡二卡三卡四卡| 亚洲123区在线观看| av不卡免费电影| 91精品国产品国语在线不卡| 中文字幕+乱码+中文字幕一区| 亚洲成人精品影院| 高清av一区二区| 3d动漫精品啪啪1区2区免费| 国产欧美日韩久久| 亚洲一区二区三区三| 波波电影院一区二区三区| 欧美一区二区三区视频免费| 欧美激情一区二区三区| 性久久久久久久久| 成人国产亚洲欧美成人综合网| 欧美蜜桃一区二区三区| 国产精品国产a| 久久国产福利国产秒拍| 欧美视频在线观看一区| 国产精品欧美一区二区三区| 青青草原综合久久大伊人精品| 91女人视频在线观看| 久久中文娱乐网| 丝袜美腿成人在线| 99re66热这里只有精品3直播| 久久亚洲精品国产精品紫薇| 亚洲尤物在线视频观看| 成人sese在线| 2022国产精品视频| 亚洲少妇中出一区| 午夜久久电影网| aaa亚洲精品一二三区| 精品国产麻豆免费人成网站| 视频精品一区二区| 在线视频欧美区| 中文字幕中文字幕一区二区| 久久99精品久久久久久久久久久久| 欧美高清dvd| 五月综合激情网| 91黄色小视频| 亚洲丝袜制服诱惑| 成人av动漫网站| 国产午夜亚洲精品理论片色戒| 亚洲国产另类精品专区| 在线观看免费成人| 夜夜夜精品看看| 欧洲一区二区三区免费视频| 亚洲男人的天堂av| 91麻豆高清视频| 中文字幕亚洲一区二区va在线| 精品影院一区二区久久久| 欧美一区二区三区婷婷月色| 丝袜脚交一区二区| 欧美一区二区三区在线电影| 日韩国产精品久久久久久亚洲| 欧美日韩在线三级| 亚洲国产精品久久久久婷婷884| 成人av网站大全| 亚洲欧美自拍偷拍| 色婷婷av一区二区三区软件| 亚洲精品高清在线| 在线视频欧美精品| 亚洲午夜久久久久中文字幕久| 欧美视频一区二区三区四区| 亚洲精选视频在线| 欧美精品xxxxbbbb| 乱中年女人伦av一区二区| 欧美一级专区免费大片| 麻豆免费看一区二区三区| 日韩欧美国产电影| 国产精品白丝jk白祙喷水网站| 国产精品久久久久久久浪潮网站 | 久久午夜羞羞影院免费观看| 蜜臀av一区二区| 国产亚洲成aⅴ人片在线观看| 成人黄色片在线观看| 亚洲乱码国产乱码精品精98午夜| 欧美亚洲综合色| 男男成人高潮片免费网站| 欧美精品一区二区三区高清aⅴ| 激情五月婷婷综合| 一区二区三区影院| 91精品国产福利在线观看| 国产美女av一区二区三区| 国产精品美女视频| 欧美视频一区二区在线观看| 久久精品国产精品亚洲精品| 国产精品午夜久久| 欧洲一区二区av| 韩国av一区二区| 亚洲欧美一区二区三区久本道91 | 国产丝袜欧美中文另类| 日本高清无吗v一区| 蜜臀va亚洲va欧美va天堂| 精品国产乱码久久久久久免费 | 国产成人h网站| 一区二区三区四区亚洲| 日韩欧美不卡在线观看视频| 99久久国产综合精品麻豆| 蜜桃在线一区二区三区| 国产精品看片你懂得| 欧美一级精品在线|