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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cli_webif.c

?? 命令行在嵌入式系統(tǒng)的實(shí)現(xiàn)
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/************************************************************************
Copyright 200X - 200X+1.

filename     : Cli_WebIf.c

description  : 命令行模塊提供給web網(wǎng)管的接口的源文件;

author       : Woodhead

modification : Woodhead    create              2004-12-07
************************************************************************/

#include "Ros.h"
#include "Dbg.h"
#include "Board_Pub.h"
#include "CLI_Private.inc"
#include "ML.h"
#include "Sys_Ml.h"
#include "Cli_MlPriv.h"
#include "CLI_Io.h"
#include "CLI_User.inc"
#include "CLI_Log.inc"
#include "CLI_Intp.inc"
#include "CLI_Telnet.inc"
#include "Config\Cli_ConfigGlbVar.h"

#include "CLI_WebIf.inc"

#if ( CLI_WEB_SUPPORT == G_YES )

#undef __WNM_IF_LOGIN__


/*-----------------------------------------------------------------------------
 函數(shù)名稱    : CLI_WebTermAlloc();
 功能        : 申請web終端;
 輸入?yún)?shù)    : 無;
 輸出參數(shù)    : pulTermId,   返回的web終端ID
 返回值      : G_SUCCESS,   成功;
               G_FAILURE    失敗;
 函數(shù)調(diào)用說明:
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebTermAlloc( _U32 *pulTermID )
{
    _U32    i;

    if( G_NULL == pulTermID )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    for( i = m_ulCliWebTermFirstIndex; i <= m_ulCliWebTermLastIndex; i ++ )
    {
        DBG_ASSERT( ( m_TDTable[i].pTermStruct->ulTermId - 1 ) == i );

        if( m_TDTable[i].pTermStruct->ucTermStatus == TERM_SLEEPING )
        {
            *pulTermID = i + 1;
            return G_SUCCESS;
        }
    }

    return G_FAILURE;
}


/*-----------------------------------------------------------------------------
 函數(shù)名稱    : CLI_WebLogin();
 功能        : Web網(wǎng)管用戶登錄;
 輸入?yún)?shù)    : ulLogIp,     登錄IP;
               username,    用戶名;
               password,    口令;
 輸出參數(shù)    : pulTermId,   返回終端ID;
 返回值      : G_SUCCESS,               成功;
               G_FAILURE                失敗;
               ERR_CLI_WEB_USER_ONLINE, 用戶在線;
 函數(shù)調(diào)用說明: cli用戶可以踢cli/web用戶; web用戶不能踢cli/web用戶;
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebLogin( _U32 ulLogIp, const _S8* username, const _S8* password,_U32* pulTermId )
{
    _S8                 szUsername[USERNAME_LEN] ;
    _S8                 szPassword[PASSWORD_LEN] ;
    _U32                ulRet;
    _U32                ulTermID;
    PTermUserItem       pTermUser;
    PTerm_Data_S        pstTerm;

    (_VOID)EOS_StrNCpy( szUsername, username, ( USERNAME_LEN - 1 ) );
    szUsername[USERNAME_LEN - 1] = '\0';

    (_VOID)EOS_StrNCpy( szPassword, password, ( PASSWORD_LEN - 1 ) );
    szPassword[PASSWORD_LEN - 1] = '\0';

    /* 用戶名不區(qū)分打小寫 */
    (_VOID)_AffirmStrBeLower( szUsername );

    ulRet = CLI_CheckUserPassword( szUsername, szPassword );
    if( G_SUCCESS != ulRet )
    {
        DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
                 "CLI_WebLogin(): USER <%s> 's PASSWORD <%s> is invalid !",
                 szUsername, szPassword
               );
        return G_FAILURE;
    }

    /* 申請終端控制塊 */
    ulRet = CLI_WebTermAlloc( &ulTermID );
    if( G_SUCCESS != ulRet )
    {
        DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
                 "CLI_WebLogin(): CLI_WebTermAlloc() fail !" );
        return G_FAILURE;
    }

    pstTerm = m_TDTable[ulTermID - 1].pTermStruct;

    DBG_ASSERT( ulTermID == pstTerm->ulTermId );

    /* 獲取用戶信息 */
    pTermUser = CLI_GetUserByName( szUsername );

    /* 如果該用戶對應(yīng)的終端ID不為零,表示該用戶在另一個(gè)終端已經(jīng)登錄 */
    if( pTermUser->ulTermId != 0 )
    {
        DBG_ASSERT( 0 == EOS_StriCmp(szUsername, m_TDTable[pTermUser->ulTermId - 1].pTermStruct->szCurUserName) );

        DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
                 "CLI_WebLogin(): USER <%s> has log on from term <%ld> !",
                 szUsername, pTermUser->ulTermId
               );

        (_VOID)WNM_SendErrString( CLI_USER_ONLINE );

        return ERR_CLI_WEB_USER_ONLINE;
    }

    /* 成功登錄后的一些用戶與終端數(shù)據(jù)初始化 */
    pTermUser->ucUserStatus     = TERM_LOGED;
    pTermUser->ucInvadedFlag    = EN_USER_NOT_INVADED;
    pTermUser->ulTermId         = pstTerm->ulTermId;

    pstTerm->ucTermStatus       = TERM_LOGED;
    pstTerm->iSocket            = SOCKET_FOR_WEB;
    pstTerm->ucUserLevel        = (_U8)pTermUser->ulLevel;
    pstTerm->ulClientIP         = ulLogIp;

    (_VOID)EOS_StrCpy( pstTerm->szCurUserName, szUsername );
    (_VOID)ML_SetLanguage( pstTerm->ulTermId, pTermUser->ucLanguage );


    /* 寫日志 */
    CLI_SaveUserLog(pstTerm->szCurUserName, LOG_MODE_WEB, ulLogIp, "logon[s]") ;

    DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
             "CLI_WebLogin(): USER <%s> log on web term <%d> ! CurTick = %ld",
             szUsername, pTermUser->ulTermId, EOS_GetCurTick() );

    *pulTermId = pstTerm->ulTermId;

    return G_SUCCESS;

}


/*-----------------------------------------------------------------------------
 函數(shù)名稱    : CLI_WebLogout();
 功能        : Web網(wǎng)管用戶退出;
 輸入?yún)?shù)    : ulLogIp,     登錄IP;
               ulTermId,    終端ID;
 輸出參數(shù)    : 無.
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數(shù)調(diào)用說明:
 典型使用示例:
-----------------------------------------------------------------------------*/
_VOID CLI_WebLogout( _U32 ulLogIp, _U32 ulTermId )
{
    PTermUserItem       pTermUser;
    PTerm_Data_S        pstTerm;

    /* web終端ID的合法性檢查 */
    if( ! IS_WEB_TERMID(ulTermId) )
    {
        MT_ERRLOG(ulTermId);
        return;
    }

    pstTerm = m_TDTable[ulTermId - 1].pTermStruct;

    DBG_ASSERT( ulTermId == pstTerm->ulTermId );

    if( TERM_LOGED != pstTerm->ucTermStatus )
    {
        DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
                 "CLI_WebLogout() : try to log out unlogon term <%ld>. pstTerm->ucTermStatus = 0x%lx",
                 ulTermId, pstTerm->ucTermStatus );
        DBG_ErrLog( 0, EN_ERR_LEVEL_GENERAL, ulTermId, pstTerm->ucTermStatus );
        return;
    }

    /* 寫日志 */
    DBG_ASSERT( ulLogIp == pstTerm->ulClientIP );
    CLI_SaveUserLog(pstTerm->szCurUserName, LOG_MODE_WEB, ulLogIp, "logout[s]") ;

    pTermUser = CLI_GetUserByName( pstTerm->szCurUserName );

    /* 如果該終端已經(jīng)注銷過,不能重復(fù)注銷   */
    if( ( G_NULL == pTermUser ) || ( 0 == pTermUser->ulTermId ) )
    {
        DBG_ErrLog( 0, EN_ERR_LEVEL_GENERAL, ulTermId, (_U32)pTermUser );
        return;
    }

    /* 考慮到可能在該終端注銷前另一個(gè)終端已經(jīng)使用同名用戶登錄 ??? */
    if( pTermUser->ulTermId == ulTermId )
    {
        pTermUser->ulTermId     = 0;
        pTermUser->ucUserStatus = TERM_SLEEPING;
    }
    else
    {
        /* 如果是cli用戶踢web用戶, 是否會(huì)走到這里 ??? 應(yīng)該不可能走到這里 */
        DBG_ErrLog( 0, EN_ERR_LEVEL_GENERAL, ulTermId, pTermUser->ulTermId );
    }

    CLI_TaskDataInit( pstTerm );

    DBG_Out( PID_CLI, MT_DBGOUT_NOTE, G_STR_HEAD
             "CLI_WebOut(): USER <%s> Log out from Web term <%d> ! CurTick = %ld",
             pTermUser->szUserName, ulTermId, EOS_GetCurTick() );

    return;

}

/*-----------------------------------------------------------------------------
函數(shù)名稱    : CLI_WebSendKickOffUserMsg();
功能        : 向web模塊發(fā)送踢用戶消息;
輸入?yún)?shù)    : ulTermId: 要踢掉的用戶的終端標(biāo)識(shí)符
輸出參數(shù)    : 無
返回值      : G_SUCCESS,   成功;
              其他         失敗;
典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebSendKickOffUserMsg( _U32 ulTermId )
{
    static _U32                 s_ulSeqNo           = 0;
    _U32                        ulRet;
    _U16                        usPayLoadLen;
    ST_MSG*                     pstMsg;
    WNM_KICK_USER_MSG_DATA*     pstKickOffUser;

    /* 消息包凈荷的長度 */
    usPayLoadLen = sizeof(WNM_KICK_USER_MSG_DATA);

    /* 申請消息包 */
    pstMsg = (ST_MSG *)ROS_MsgAlloc( PUBLIC_LENS_TOTAL + usPayLoadLen,
                                     ROS_MSG_ALLOC_OPT_LEAK_CHECK );
    if( G_NULL == pstMsg )
    {
        MT_ERRLOG( usPayLoadLen );
        return G_FAILURE;
    }

    /* 設(shè)置消息包 */
    pstMsg->usSrcBid        = 0;
    pstMsg->usDstBid        = 0;
    pstMsg->usSrcPid        = PID_CLI;
    pstMsg->usDstPid        = PID_WNM;
    pstMsg->ulSendSeq       = s_ulSeqNo ++;

    pstMsg->usMsgCode       = MSG_CODE_WNM_KICK_USER;
    pstMsg->usDataOffset    = 0;
    pstMsg->usDataLens      = usPayLoadLen;

    pstKickOffUser = (WNM_KICK_USER_MSG_DATA *)( pstMsg->ucData );

    EOS_MemZero( pstKickOffUser, usPayLoadLen );
    pstKickOffUser->ulTermId = ulTermId;

    /* 發(fā)送消息包 */
    ulRet = BOARD_SEND_MSG( pstMsg );
    if( G_SUCCESS != ulRet )
    {
        /* 發(fā)送消息失敗,釋放消息包 */
        ROS_MsgFree( pstMsg );

        MT_ERRLOG(ulRet);
        return G_FAILURE;
    }

    // 操作成功
    return G_SUCCESS;

}




#undef __WNM_IF_USER__
/*-----------------------------------------------------------------------------
 函數(shù)名稱    : CLI_WebGetUserInfoByIndex();
 功能        : 獲取用戶信息;
 輸入?yún)?shù)    : szOprName,   操作用戶名;
               ulIndex,     用戶索引;
 輸出參數(shù)    : szName,      用戶名;
               *pucLevel,   用戶權(quán)限級(jí)別;
               *pucLan,     用戶慣用語種(中文,英文);
               *pbIsLogin,  是否處于登錄狀態(tài);
               *pulLogMode, 用戶登錄方式, 枚舉EN_USER_LOG_MODE.
                            注: ( *pbIsLogin == G_TRUE )才有效
               *pulLogIP,   用戶登錄的IP地址
                            注:    ( *pulLogMode == LOG_MODE_WEB )
                                或 ( *pulLogMode == LOG_MODE_TELNET ) 才有效
 返回值      : G_SUCCESS,   成功;
               其他,        失敗.
 函數(shù)調(diào)用說明:
 典型使用示例:
-----------------------------------------------------------------------------*/
_U32 CLI_WebGetUserInfoByIndex(
                            const _S8* szOprName, _U32 ulIndex,
                            _S8 *szName, _U8* pucLevel, _U8* pucLan,
                            _BOOL* pbIsLogin, _U32* pulLogMode, _U32* pulLogIP )
{
    PTermUserItem       pstOprUser, pstShowUser;

    /* 輸入索引的合法性檢查 */
    if( MAX_USER_NUM <= ulIndex )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

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

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

    pstShowUser = &m_sUserTable[ulIndex];

    /* 此用戶表項(xiàng)未使用 */
    if( pstShowUser->ucUserType == USER_NOT_USED)
    {
        return G_FAILURE;
    }

    /* 檢查當(dāng)前用戶是否有查看的權(quán)限 */
    if( pstOprUser->ulLevel < pstShowUser->ulLevel )
    {
        return G_FAILURE;
    }

    /* 調(diào)試用戶不顯示 */
    if( CT_AL_DEBUG <= pstShowUser->ulLevel)
    {
        return G_FAILURE;
    }

    /* 獲取用戶的當(dāng)前信息 */
    (_VOID)EOS_StrNCpy( szName, pstShowUser->szUserName, ( USERNAME_LEN - 1 ) );
    szName[USERNAME_LEN - 1] = '\0';

    *pucLevel   = (_U8)pstShowUser->ulLevel;
    *pucLan     = (_U8)pstShowUser->ucLanguage;
    *pbIsLogin  = ( TERM_LOGED == pstShowUser->ucUserStatus ) ? G_TRUE : G_FALSE;

    /* 如果已經(jīng)登錄, 則獲取登錄方式 */
    if( G_TRUE == *pbIsLogin )
    {
        *pulLogMode = CLI_GetUserLogModeByTermID( pstShowUser->ulTermId );
    }
    else
    {
        return G_SUCCESS;
    }

    /* 如果是從telnet或web登錄, 則返回IP地址 */
    if(    ( *pulLogMode == LOG_MODE_WEB )
        || ( *pulLogMode == LOG_MODE_TELNET )
      )
    {
        *pulLogIP = m_TDTable[pstShowUser->ulTermId - 1].pTermStruct->ulClientIP;
    }

    return G_SUCCESS;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合999| 久久精品久久精品| 亚洲桃色在线一区| 国产精品乱码一区二区三区软件| 久久综合资源网| 欧美精品一区视频| 国产亚洲精品bt天堂精选| 久久精品一区二区三区不卡牛牛 | 7777女厕盗摄久久久| 欧美日韩在线免费视频| 欧美日韩一区二区在线观看| 欧美军同video69gay| 欧美精品久久一区| 日韩欧美国产三级电影视频| 精品久久五月天| 久久精品夜夜夜夜久久| 国产精品美日韩| 亚洲天堂福利av| 亚洲国产欧美在线| 美日韩一区二区| 国产黄人亚洲片| 91在线观看一区二区| 欧美天天综合网| 欧美一区二区三区在线视频| 久久久久久久一区| 最新久久zyz资源站| 亚洲国产中文字幕在线视频综合| 精品成人免费观看| 97精品国产露脸对白| 国内精品免费在线观看| 亚洲成人一区在线| 另类小说一区二区三区| 黑人巨大精品欧美黑白配亚洲| 欧美日产在线观看| 欧美亚洲综合一区| 日韩欧美一区中文| 亚洲一区二区成人在线观看| 丰满放荡岳乱妇91ww| 51精品久久久久久久蜜臀| 亚洲视频 欧洲视频| 国内成+人亚洲+欧美+综合在线| 欧美日韩精品一区二区在线播放| 国产精品美女久久久久久久久久久| 蜜臀久久久99精品久久久久久| 欧美最猛黑人xxxxx猛交| 国产精品久久久久久久久动漫| 精品一区二区在线免费观看| 欧美日韩国产影片| 一区二区高清在线| 成人h版在线观看| 久久综合久久综合久久| 捆绑调教美女网站视频一区| 欧美精品高清视频| 亚洲高清在线视频| 在线观看av一区二区| 综合久久国产九一剧情麻豆| 国产成人夜色高潮福利影视| 久久人人爽人人爽| 韩国成人精品a∨在线观看| 欧美刺激脚交jootjob| 视频一区二区三区中文字幕| 欧美日韩一级二级| 亚洲成人av福利| 日本精品裸体写真集在线观看| 中文字幕一区二区视频| 国产成人av一区二区三区在线| 精品成人在线观看| 国产一区视频导航| 国产偷国产偷精品高清尤物| 国产精品综合久久| 久久精品视频免费| 国产高清久久久| 国产午夜亚洲精品不卡| 国产成人精品一区二区三区网站观看| 日韩精品专区在线影院观看| 麻豆成人综合网| 精品国产露脸精彩对白| 国产成人综合在线观看| 国产亚洲精品免费| kk眼镜猥琐国模调教系列一区二区| 日本一二三不卡| av电影在线不卡| 亚洲欧美日韩在线| 在线观看国产精品网站| 亚洲6080在线| 日韩精品一区二区三区四区视频| 免费人成网站在线观看欧美高清| 日韩欧美国产电影| 精品写真视频在线观看| 欧美高清在线视频| 99re免费视频精品全部| 亚洲国产综合在线| 日韩视频免费观看高清完整版在线观看| 欧美aaaaaa午夜精品| 国产亚洲精品久| 不卡大黄网站免费看| 日韩毛片一二三区| 欧美日韩国产精选| 久久99精品国产麻豆婷婷| 久久久精品tv| 色悠久久久久综合欧美99| 亚洲国产视频一区| 欧美日本韩国一区| 欧美国产乱子伦| 奇米一区二区三区| 欧美性色综合网| 日本不卡一区二区三区高清视频| 久久午夜免费电影| 91丝袜美女网| 免费成人小视频| 亚洲国产成人在线| 欧美日韩亚洲综合一区二区三区 | 91麻豆免费看| 日本成人在线视频网站| 国产精品久久久久久户外露出 | 麻豆精品一区二区三区| 亚洲国产精品成人久久综合一区| 欧美色倩网站大全免费| 国精产品一区一区三区mba桃花| 日韩一区中文字幕| 欧美一区二区在线观看| 粉嫩高潮美女一区二区三区| 亚洲18色成人| 国产精品午夜在线| 欧美色图第一页| 国产成人综合亚洲91猫咪| 午夜视频在线观看一区| 亚洲国产激情av| 这里只有精品99re| 99国产精品久| 久久99国产精品久久99| 亚洲男人的天堂在线aⅴ视频| 欧美sm极限捆绑bd| 欧洲日韩一区二区三区| 国产精品1024| 秋霞影院一区二区| 亚洲欧洲制服丝袜| 久久久三级国产网站| 欧美精品日韩精品| 91美女在线看| 国产真实乱对白精彩久久| 亚洲成人动漫一区| 一区在线中文字幕| 久久久久久久久久电影| 5858s免费视频成人| 日本韩国一区二区| 成人亚洲精品久久久久软件| 看国产成人h片视频| 亚洲一区二区精品久久av| ㊣最新国产の精品bt伙计久久| 精品99999| 日韩午夜电影在线观看| 欧美性感一类影片在线播放| aaa国产一区| 91精品婷婷国产综合久久性色| av在线不卡电影| 国产 日韩 欧美大片| 老司机精品视频在线| 午夜欧美电影在线观看| 一区二区成人在线视频| 亚洲天堂成人网| 中文字幕日韩精品一区| 国产午夜精品美女毛片视频| 欧美tickling网站挠脚心| 51精品国自产在线| 欧美午夜精品一区二区三区| 99国产精品久久久久久久久久| 成人av第一页| 大胆亚洲人体视频| 成人污视频在线观看| 国产一区在线观看视频| 国产综合久久久久久久久久久久| 日本不卡在线视频| 男男视频亚洲欧美| 日本欧美一区二区三区| 日韩国产欧美三级| 首页国产丝袜综合| 婷婷丁香激情综合| 亚洲国产精品久久久久秋霞影院| 亚洲免费观看高清完整版在线观看 | 国产精品人妖ts系列视频 | 成人激情免费网站| 岛国av在线一区| 成人av网址在线| 91免费在线看| 日本韩国一区二区三区| 欧美视频一区在线观看| 欧美手机在线视频| 91精品国产色综合久久不卡电影| 91精品国产综合久久精品麻豆| 欧美一区二区三区人| 欧美大尺度电影在线| 久久久综合精品| 国产精品免费观看视频| 亚洲精品亚洲人成人网在线播放| 亚洲欧美日本在线| 亚洲不卡在线观看| 蜜桃久久久久久| 国产真实乱对白精彩久久| 丁香亚洲综合激情啪啪综合|