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

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

?? cli_user.c

?? 命令行在嵌入式系統的實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
/************************************************************************
Copyright 200X - 200X+1.

filename     : CLI_User.c

description  : 本文件實現命令行操作用戶的管理,提供用戶的增刪、修改、保存與查詢

author       : Woodhead

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

#include "Ros.h"
#include "Cli_Private.inc"
#include "Cli_User.inc"
#include "ML.h"
#include "Sys_Ml.h"
#include "Cli_MlPriv.h"
#include "Config\Cli_ConfigGlbVar.h"
#include "cm_sock.h"
#if CLI_DBASE_SUPPORT
#include "Rdb.h"
#endif

/* 終端用戶表 (規定第一個表即m_sUserTable[0]用于存儲調試用戶信息)*/
STermUserItem m_sUserTable[MAX_USER_NUM];

#if CLI_DBASE_SUPPORT
RDB_HANDLE      m_ulCliUserHandle   = RDB_INVALID_HANDLE;
RDB_TABLE_GID   m_usUserTable       = RDB_INVALID_TABLE_GID;
RDB_TABLE_GID   m_usHostNameTable   = RDB_INVALID_TABLE_GID;
RDB_TABLE_GID   m_usClientACLTable  = RDB_INVALID_TABLE_GID;
#endif /* CLI_DBASE_SUPPORT */


/* 用戶在數據庫的表創建*/
_U32 CLI_RDB_DataInit(_VOID)
{
#if CLI_DBASE_SUPPORT
    _U32 ulRet = G_SUCCESS;
    _S8 szTbCreatStr[] =
        RDB_DIRECT_TABLE(Cliusers, yes, 16)
        "( valid      bool   1,"
        "  usertype   u8     1, "
        "  userstat   u8     1, "
        "  language   u8     1, "
        "  username   string 16,"
        "  password   u8     16,"
        "  pswdtime   u32    1, "
        "  termid     u32    1, "
        "  level      u32    1, "
        "  validflag  u8     1, "
        "  reserved   u8     3 )";
    _S8 szHostTableStr[] =
        RDB_DIRECT_TABLE(CliHostName, yes, 1)
        "( valid      bool   1, "
        "  hostname   string 35)";

    _S8 szACLTableStr[] =
        RDB_DIRECT_TABLE(CliTelnetACL, yes, 10)
        "( valid      bool 1,"
        "  ucReserv   u8   3,"
        "  ulIpAddr   u32  1,"
        "  ulIpMask   u32  1,"
        "  ulState    u32  1)";

    /* 是否包含RDB模塊 */
    if( G_YES != g_ul_INCLUDE_MODULE_CLI_RDB )
    {
        return G_SUCCESS;
    }

    /* 函數指針是否注冊 */
    if( G_NULL == g_pfn_CFG_CLI_RDB_TableCreate )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    ulRet  = g_pfn_CFG_CLI_RDB_TableCreate((const _S8 *)szTbCreatStr, &m_usUserTable, sizeof(STermUserItem));
    ulRet += g_pfn_CFG_CLI_RDB_TableCreate((const _S8 *)szACLTableStr, &m_usClientACLTable, sizeof(ST_ACL));
    ulRet += g_pfn_CFG_CLI_RDB_TableCreate((const _S8 *)szHostTableStr, &m_usHostNameTable, sizeof(HostName_S));

    return ulRet;
#else
    return G_SUCCESS;
#endif
}


/********************************************************************/
/*      函數名稱    :CLI_UserWrite                                  */
/*      函數功能    :存儲新創建的用戶鏈到數據庫                     */
/*      輸入參數    :無                                             */
/*      輸出參數    :無                                             */
/*      返回值      :成功、失敗                                     */
/*      調用函數    :                                               */
/*      被調函數    :                                               */
/********************************************************************/
#if CLI_DBASE_SUPPORT
_U32 CLI_UserWrite()
{
    _U32 i;
    _U32 ulRet =  G_SUCCESS;

    /* 是否包含RDB模塊 */
    if( G_YES != g_ul_INCLUDE_MODULE_CLI_RDB )
    {
        return G_SUCCESS;
    }

    /* 函數指針是否注冊 */
    if(    ( G_NULL == g_pfn_CFG_CLI_RDB_TableClear )
        || ( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectInsert )
      )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    if (g_pfn_CFG_CLI_RDB_TableClear(m_ulCliUserHandle, m_usUserTable) != G_SUCCESS)
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    for (i = 0; i < MAX_USER_NUM; i++)
    {
        if (m_sUserTable[i].ucUserType == USER_NOT_USED)
        {
            continue;
        }
        if (RDB_SUCCESS != g_pfn_CFG_CLI_RDB_RecordDirectInsert(m_ulCliUserHandle, m_usUserTable, i,
                                                 &m_sUserTable[i]))
        {
            MT_ERRLOG(0);
            ulRet = G_FAILURE;
        }
    }

    return ulRet;
}
#endif

/********************************************************************/
/*      函數名稱    :CLI_UserRead                                   */
/*      函數功能    :從數據庫中讀取用戶列表                         */
/*      輸入參數    :無                                             */
/*      輸出參數    :無                                             */
/*      返回值      :成功、失敗                                     */
/*      調用函數    :                                               */
/*      被調函數    :                                               */
/********************************************************************/
#if CLI_DBASE_SUPPORT
_U32 CLI_UserRead()
{
    _U32 i;

    /* 是否包含RDB模塊 */
    if( G_YES != g_ul_INCLUDE_MODULE_CLI_RDB )
    {
        return G_SUCCESS;
    }

    /* 函數指針是否注冊 */
    if( G_NULL == g_pfn_CFG_CLI_RDB_RecordDirectQuery )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    for (i = 0; i < MAX_USER_NUM; i++)
    {
        if (RDB_SUCCESS == g_pfn_CFG_CLI_RDB_RecordDirectQuery(m_ulCliUserHandle, m_usUserTable, i,
                                                 G_FALSE, &m_sUserTable[i]))
        {
            m_sUserTable[i].ucUserStatus = TERM_SLEEPING;
            m_sUserTable[i].ulTermId = 0;
        }
        else if(i < 2) /* 如果兩個固定用戶恢復失敗,則認為整個恢復失敗 */
        {
            return G_FAILURE;
        }
    }
    /* 判斷調試用戶恢復是否正確,如果調試用戶名和密碼被改寫,則任務數據庫有誤 */
    if (G_SUCCESS != CLI_CheckUserPassword(g_csz_CFG_CLI_DBG_USER_NAME, g_csz_CFG_CLI_DBG_USER_PASSWORD))
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    return G_SUCCESS;
}
#endif

/********************************************************************/
/*      函數名稱    :CLI_UserTableInit                              */
/*      函數功能    :初始化終端用戶表                               */
/*      輸入參數    :無                                             */
/*      輸出參數    :無                                             */
/*      返回值      :成功、失敗                                     */
/*      調用函數    :                                               */
/*      被調函數    :                                               */
/********************************************************************/
_U32 CLI_UserTableInit(_VOID)
{
    int i;

    EOS_MemSet(m_sUserTable, 0, sizeof(m_sUserTable));

    for (i = 0; i< MAX_USER_NUM; i++)
    {
        CLI_UserInfoCfg(&m_sUserTable[i],
                        "", "", 0, USER_NOT_USED,  ML_GetDefaultLang());
    }

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

        if (G_SUCCESS != g_pfn_CFG_CLI_RDB_Open(&m_ulCliUserHandle))
            return G_FAILURE;
    }
#endif /* CLI_DBASE_SUPPORT */

    return G_SUCCESS;
}

/********************************************************************/
/*      函數名稱    :CLI_Encrypt                                    */
/*      函數功能    :密碼加密                                       */
/*      輸入參數    :szSrc  :原密碼                                 */
/*                   ucType :類型澹(0:加密 1:解密)                  */
/*      輸出參數    :szDst :加密結果                                */
/*      返回值      :成功、失敗                                     */
/*      調用函數    :                                               */
/*      被調函數    :                                               */
/********************************************************************/
_U32 CLI_Encrypt(_S8 szDst[PASSWORD_LEN], const _S8 *szSrc, _U8 ucType)
{
    _U8  ucMod[2] = {123, 6};
    _S32 lStrlen, i;

    CLI_ASSURE_OR_FAIL(szSrc != NULL && szDst != NULL);

    EOS_MemSet(szDst, 0, PASSWORD_LEN);

    if (ucType == 1)
    {
        ucMod[1] = (_U8)(256 - ucMod[1]);
        ucMod[0] = (_U8)(256 - ucMod[0]);
    }

    if (EOS_StrLen(szSrc) == 0)
    {
        *szDst = 0;
        return G_SUCCESS;
    }


    lStrlen = (_S32)EOS_StrLen(szSrc) - 1;
    for (i = 0; i <= (_S32)(lStrlen - i); i++)
    {
        if (i == lStrlen - i)
        {
            *(szDst + i) = (_S8)(*(szSrc + i) + ucMod[i%2]);
        }
        else
        {
            *(szDst + i) = (_S8)(*(szSrc + lStrlen - i) + ucMod[i%2]);
            *(szDst + lStrlen - i) = (_S8)(*(szSrc + i) + ucMod[i%2]);
        }
    }
    *(szDst + lStrlen + 1) = '\0';
    return G_SUCCESS;

}

/*********************************************************************/
/* 函數名稱 : CLI_UserInfoCfg()                                      */
/* 函數功能 : 用戶數據配置                                           */
/* 輸入參數 :                                                        */
/* 輸出參數 :                                                        */
/* 創建者   :                                                        */
/* 修改記錄 :                                                        */
/*********************************************************************/

_U32 CLI_UserInfoCfg(PTermUserItem pUserItem, const _S8 *szName,
                    const _S8 *szPassowrd, _U8 ucLevel, _U8 ucUserType, _U8 ucLan)
{
    ST_TIME sTime;

    /* 語種ID的合法性檢查 */
    if( ucLan >= ML_GetLangNum() )
    {
        MT_ERRLOG(0);
        return G_FAILURE;
    }

    if (EOS_GetTime(&sTime) != G_SUCCESS)
    {
        sTime.ucYear  = 0x03;
        sTime.ucMonth = 0x05;
        sTime.ucDay   = 0x01;
    }

    EOS_StrCpy(pUserItem->szUserName, szName);
    if ((CLI_Encrypt(pUserItem->szPassword, szPassowrd, 0)) != G_SUCCESS)
    {
        return G_FAILURE;
    }
    _AffirmStrBeLower(pUserItem->szUserName);
    pUserItem->ulLevel = (_U32)ucLevel;
    pUserItem->ucInvadedFlag = EN_USER_NOT_INVADED;
    pUserItem->ucUserType = ucUserType;
    pUserItem->ulTermId = 0;
    pUserItem->ucUserStatus = TERM_SLEEPING;
    pUserItem->ulPwdRenewTime = USER_MAKE_DAY(sTime.ucYear, sTime.ucMonth, sTime.ucDay);
    pUserItem->ucLanguage   = ucLan;
    if (ucUserType != USER_NOT_USED)
        pUserItem->ucValid   = G_TRUE;
    else
        pUserItem->ucValid   = G_FALSE;
    return G_SUCCESS;
}
/********************************************************************/
/*      函數名稱    :CLI_CreatBasicUser                             */
/*      函數功能    :建立基本終端用戶                               */
/*      輸入參數    :無                                             */
/*      輸出參數    :無                                             */
/*      返回值      :成功、失敗                                     */
/*      調用函數    :                                               */
/*      被調函數    :                                               */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区免费在线观看| 一区二区三区久久久| 欧美日韩国产一级片| 91丨国产丨九色丨pron| 国产剧情在线观看一区二区| 秋霞影院一区二区| 午夜精品一区二区三区免费视频| 日本不卡在线视频| 亚洲一二三区在线观看| 亚洲婷婷国产精品电影人久久| 91免费看片在线观看| 99视频精品在线| 欧美日韩国产精选| 欧美肥妇free| 精品久久久久久久久久久久久久久 | 欧美成人福利视频| 精品国产乱码久久久久久蜜臀| 国产精品理伦片| 亚洲另类中文字| 三级成人在线视频| 国产精品一区二区三区四区| 国产成人av在线影院| 成人夜色视频网站在线观看| 欧美综合天天夜夜久久| 欧美不卡视频一区| 亚洲免费资源在线播放| 九九久久精品视频| 色呦呦国产精品| 国产欧美一区二区精品仙草咪 | 91美女片黄在线观看| 欧美日韩一区不卡| 一区二区三区欧美| 岛国精品在线观看| 国产色产综合色产在线视频 | 国产精品成人在线观看| 毛片av中文字幕一区二区| 色婷婷av一区二区三区gif| 中日韩免费视频中文字幕| 卡一卡二国产精品| 欧美一区二区三区免费观看视频| 色老综合老女人久久久| 欧美激情在线一区二区三区| 久久成人麻豆午夜电影| 国产成人自拍网| 91精品国产综合久久蜜臀| 国产精品久久久久影院色老大| 日本一区二区三区国色天香 | 免费在线观看成人| 99久久99久久精品免费观看| 久久久精品影视| 国产精品99久久久久久久女警| 久久99精品久久久久久久久久久久| 久久99精品久久只有精品| 99久久婷婷国产| 中文字幕一区二区三区在线播放 | 成人亚洲一区二区一| 精品国产一区二区三区久久影院| 国产日韩精品一区二区三区在线| 欧美精品一区二区三区高清aⅴ | 欧美一区二区国产| 亚洲人成7777| 在线观看中文字幕不卡| 日韩精品国产欧美| 久久久不卡影院| 91免费看`日韩一区二区| 亚洲男女毛片无遮挡| 成人精品视频网站| 亚洲一区二三区| 精品剧情v国产在线观看在线| 国产欧美日韩亚州综合| 欧美视频在线观看一区二区| 亚洲乱码国产乱码精品精可以看| 亚洲高清一区二区三区| 欧洲av在线精品| 琪琪一区二区三区| 欧美国产一区视频在线观看| 欧洲精品视频在线观看| 毛片不卡一区二区| 国产精品―色哟哟| 欧美日韩精品免费观看视频 | 天堂午夜影视日韩欧美一区二区| 免费高清不卡av| 亚洲精品乱码久久久久久 | 99久久99久久精品免费观看| 亚洲一二三区不卡| 国产精品无码永久免费888| 欧洲一区二区三区在线| 国产iv一区二区三区| 另类人妖一区二区av| 26uuu色噜噜精品一区| 欧美系列亚洲系列| 91网站最新地址| 视频一区视频二区中文字幕| 精品动漫一区二区三区在线观看| 国产日韩欧美在线一区| 欧美一区二区视频网站| 91在线免费看| 成人av资源站| 国产精品一区在线观看乱码| 亚洲成av人片在线观看无码| 国产精品久久久一本精品| 久久精品一级爱片| 精品国产三级a在线观看| 欧美一区二区视频观看视频| 在线观看欧美精品| 欧美日韩日本视频| 欧美日韩二区三区| 91浏览器打开| 9191成人精品久久| 日韩亚洲欧美成人一区| 欧美成人国产一区二区| 久久久久久久久久电影| 国产精品精品国产色婷婷| 亚洲黄色在线视频| 水野朝阳av一区二区三区| 蜜桃视频在线观看一区| 激情另类小说区图片区视频区| 久久久久久久久伊人| 日韩免费观看高清完整版在线观看| 成人免费高清视频在线观看| 国产精品一区二区三区乱码| 成人av在线观| 91精品国产综合久久精品图片| 国产精品一二三区在线| 不卡高清视频专区| 欧美精品v日韩精品v韩国精品v| 国产专区欧美精品| 国产一区二区三区蝌蚪| 91麻豆自制传媒国产之光| 91麻豆精品国产| 国产精品伦一区| 天天影视色香欲综合网老头| 国产毛片精品一区| 色94色欧美sute亚洲13| 欧美日韩三级一区二区| 久久精品人人做人人爽人人| 亚洲精品综合在线| 国模娜娜一区二区三区| 91麻豆自制传媒国产之光| 久久久青草青青国产亚洲免观| 欧美日韩成人一区| 国产区在线观看成人精品 | 国产精品1区二区.| 91免费视频观看| 中文一区二区完整视频在线观看| 久久精品男人的天堂| 爽好多水快深点欧美视频| www.亚洲国产| 欧美韩日一区二区三区| 精品一区精品二区高清| 91精品福利在线一区二区三区| 在线观看中文字幕不卡| 国产女主播在线一区二区| 久久精品国产一区二区| 欧美日韩亚洲综合在线| 亚洲女性喷水在线观看一区| 国产成人综合网| 国产精品网友自拍| 91蝌蚪porny成人天涯| 国产精品午夜在线| 风间由美性色一区二区三区| 久久精品视频在线看| 国产一区二区三区免费播放| 久久免费电影网| 国产精品一级黄| 欧美激情一区二区三区蜜桃视频| 欧美经典三级视频一区二区三区| 国产精品国产自产拍高清av| 国产精品一品视频| 中文字幕欧美日本乱码一线二线| 一区二区三区免费观看| 精品视频1区2区| 午夜亚洲国产au精品一区二区| 国产成人免费高清| 亚洲精品高清视频在线观看| 日本电影欧美片| 日本午夜一本久久久综合| 精品国产免费一区二区三区四区| 亚洲色图在线视频| 日韩一区二区三区观看| 国产高清精品网站| 亚洲精品乱码久久久久| 欧美一区二区在线看| 日本vs亚洲vs韩国一区三区二区| 不卡区在线中文字幕| 青草国产精品久久久久久| 亚洲黄色免费网站| 日本一区二区免费在线| 欧美高清视频不卡网| 不卡大黄网站免费看| 日韩精彩视频在线观看| 久久噜噜亚洲综合| 欧美一级免费观看| 欧美亚州韩日在线看免费版国语版 | 91在线小视频| 精品亚洲免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线免费观看一区| 成人av在线电影| 日韩av一级片|