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

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

?? bsc_auth.c

?? 基于nucleus實時操作系統(tǒng)的webserver源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************
*                                                                          
*    CopyrIght (c)  1993 - 2001 Accelerated Technology, Inc.               
*                                                                          
* PROPRIETARY RIGHTS of Accelerated Technology are involved in the subject 
* matter of this material.  All manufacturing, reproduction, use and sales 
* rights pertaining to this subject matter are governed by the license     
* agreement.  The recipient of this software implicity accepts the terms   
* of the license.                                                          
*                                                                          
****************************************************************************/
/***************************************************************************
*                                                                          
* FILENAME                                                 VERSION         
*                                                                          
*       bsc_auth.c - Basic Authentication                    1.5
*
* COMPONENT
*
*       Nucleus WebServ
*                                                                          
* DESCRIPTION                                                              
*                                                                          
*       This File Contains several routines used for Initializing and       
*       implementing the HTTP 1.1/1.0 Basic Authentication Algorithm.  
*       Also contains two user plug-ins that are used to add, delete 
*       and show users on the system. To include this feature ws_cfg.h 
*       must have WS_BASIC_AUTH defined.                                            
*                                                                          
* DATA STRUCTURES                                                          
*                                                                          
*       None
*                                                                          
* FUNCTIONS                                                                
*                                                                          
*       BSC_Auth_Init                                                         
*       BSC_Auth_Add_Entry                                                    
*       BSC_Auth_Delete_Entry                                                 
*       BSC_Parse_Auth                                                        
*       BSC_Base64_Decode                                                       
*       BSC_Add_Delete_Auth                                                   
*       BSC_Show_Users                                                          
*                                                                           
*                                                                          
* DEPENDENCIES                                                             
*                                                                          
*       bsc_auth.h                                                            
*       nu_websrv.h                                                     
*                                                                          
***************************************************************************/

#include "webserv/inc/nu_websr.h"
#include "net/inc/netevent.h"

#ifdef   WS_BASIC_AUTH
#include "webserv/inc/wpw_auth.h"

/*  401 Unauthorized Response Field */
static CHAR BSC_Text_401[]="\
HTTP/1.1 401 Unauthorized\r\n\
WWW-Authenticate: Basic realm=\" ";

static CHAR BSC_Text_401c[] = "\"\r\n\
Content-type: text/html\r\n\
Content-length: 0\r\n\r\n";

/* 403 Forbidden Access */
static CHAR BSC_Text_H403[]="\
HTTP/1.1 403 Forbidden\r\n\
Server: Nucleus WebServ\r\n\
Content-type: text/html\r\n";

static CHAR BSC_Text_D403[]="\
<HEAD><TITLE>403 Forbidden</TITLE></HEAD>\r\n\
<BODY><H1>403 Forbidden Access</H1>\r\n";


/*  Define User PLug-in for adding and deleting a user. */
static INT BSC_Add_Delete_Auth(WS_REQUEST *req);

/*  Define Server Side Include Function that will show all users on
 *  the system.
 */
static INT BSC_Show_Users(WS_REQUEST *req);

extern struct WPW_AUTH_NODE WPW_Table[];

/*  Setup Pointers to the linked List structure Basic Auth Link List */
WPW_INFO_LIST  BSC_Pw_List_info;


/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Auth_Init                                                     
*                                                                       
* DESCRIPTION
*            
*
* INPUTS
*
*       None
*
* OUTPUTS                                                           
*           
*       NU_MEM_ALLOC        Could not allocate memory
*       NU_SUCCESS          Success                                                            
*                                                                       
************************************************************************/

INT16 BSC_Auth_Init(VOID)
{
    WPW_INFO_NODE   *bpwlist_info;
    INT             i;

    /*  Register the Plug-in to show all users */
    HTTP_Register_Plugin(BSC_Show_Users,"userp");

    /*  Register the plug-in that adds or deletes a user. */
    HTTP_Register_Plugin(BSC_Add_Delete_Auth,"addelu");
    
    /* Build the Basic Authentication Password List list. */
    for (i = 0; WPW_Table[i].wpw_user_id[0]; i++)
    {
        if (NU_Allocate_Memory (&System_Memory, (VOID **)&bpwlist_info,
                            sizeof (WPW_INFO_NODE),
                            NU_NO_SUSPEND) != NU_SUCCESS)
        {
            return (NU_MEM_ALLOC);
        }

        /* Setup the User Id name */
        strcpy(bpwlist_info->wpw_user, WPW_Table[i].wpw_user_id);

        /* Setup the Password */
        strcpy(bpwlist_info->wpw_password, WPW_Table[i].wpw_password);

        /* Add this host to the list. */
        DLL_Enqueue((tqe_t *) &BSC_Pw_List_info, (tqe_t *) bpwlist_info);
    }
               
       return(NU_SUCCESS);
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Auth_Add_Entry                                                
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*      This function dynamically adds a user id and password combination
*      into the Nucleus WebServ's database.                             
*                             
* INPUTS
*
*       *user_id
*       *password
*
* OUTPUTS
*
*       WPW_BASIC_AUTH_FAILED   The user id and password already exist
*       NU_MEM_ALLOC        Could not allocate memory
*       NU_SUCCESS          Success
*                                                                       
************************************************************************/
INT16 BSC_Auth_Add_Entry(CHAR *user_id, CHAR *password)
{
    INT16           found = 0;
    WPW_INFO_NODE   *bpwlist_info;

   /*  First Verify that the user does not exist */
    for(bpwlist_info = BSC_Pw_List_info.wpw_list_head ; bpwlist_info;bpwlist_info = bpwlist_info->wpw_list_next)
    {
        if(strcmp(bpwlist_info->wpw_user, user_id) == 0 )
        {
            if (strcmp(bpwlist_info->wpw_password, password) == 0)
            {
                found++;
                break;
            }
        }
    }

    if(found)
       return(WPW_BASIC_AUTH_FAILED);
    
    /*  Allocate Memory for the new database entry   */
    if (NU_Allocate_Memory (&System_Memory, (VOID **)&bpwlist_info,
                            sizeof (WPW_INFO_NODE),
                            NU_NO_SUSPEND) != NU_SUCCESS)
    {
        return (NU_MEM_ALLOC);
    }

    /* Setup the New User id to add */
    strcpy(bpwlist_info->wpw_user, user_id);

    /* Setup the password name */
    strcpy(bpwlist_info->wpw_password, password);

    /* Add this host to the list. */
    DLL_Enqueue((tqe_t *) &BSC_Pw_List_info, (tqe_t *) bpwlist_info);

    return(NU_SUCCESS);
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Auth_Delete_Entry                                             
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*      This function is used to dynamically delete a combination        
*      of user id and password from the Nucleus WebServ's database.     
*                                  
* INPUTS
*
*       *user_id
*       *password
*
* OUTPUTS
*
*       NU_SUCCESS      Success      
*                                                                       
************************************************************************/
INT16 BSC_Auth_Delete_Entry(CHAR *user_id, CHAR *password)
{
    WPW_INFO_NODE   *bpwlist_info;
    INT             found = 0;

    /*  Searches to see if the name being asked to delete is availble  */
    for(bpwlist_info = BSC_Pw_List_info.wpw_list_head ; bpwlist_info ; bpwlist_info = bpwlist_info->wpw_list_next)
    {
        if(strcmp(bpwlist_info->wpw_user, user_id) == 0 )
        {
            if (strcmp(bpwlist_info->wpw_password, password)==0)
            {
                found++;
                break;
            }
        }
    }

    if (found)
    {
        /*  If entry is found remove it from the list and delete it. */
        DLL_Remove((tqe_t *)&BSC_Pw_List_info, (tqe_t *) bpwlist_info);
        NU_Deallocate_Memory(bpwlist_info);
    }
    else
        return(WS_FAILURE);

    return(NU_SUCCESS);
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Parse_Auth                                                    
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       This function is used to process the Basic Authentication        
*       method.  This inlcudes parsing the HTTP packet and getting the   
*       bas64 encoded user id and password.  It then calls a function    
*       that decodes the string into a userid:password format. Then the  
*       database checks if the user exists on the system.  If the user   
*       does not exist a 403 access forbidden message is sent.  If the   
*       Authorization token is not found a 401 message is sent to pop-up 
*       the browser's network password method. If the user exists the    
*       server acts as normal.                                           
*                          
* INPUTS
*
*       *req
*
* OUTPUTS
*
*       FAILURE             Could not allocate memory
*       WPW_BASIC_AUTH_FAILED   Authentication failed
*       NU_SUCCESS          Success                    
*                                                                       
************************************************************************/
STATUS BSC_Parse_Auth(WS_REQUEST *req)
{
    static CHAR     total_char[WPW_BASIC_MAX_SIZE];
    static CHAR     user_id[WPW_BASIC_MAX_SIZE];
    static CHAR     password[WPW_BASIC_MAX_SIZE];
    static CHAR     final_decode[WPW_BASIC_MAX_SIZE];
    CHAR HUGE       *s;
    CHAR HUGE       *l;
    CHAR            *req_buf_end;
    CHAR            buf[1000];
    UINT32          len;
    INT             count = 0;
    INT             index = 0;
    WPW_INFO_NODE   *bpwlist;
    INT16           found = 0;

    UTL_Zero(user_id, WPW_BASIC_MAX_SIZE);
    UTL_Zero(password, WPW_BASIC_MAX_SIZE);
    UTL_Zero(final_decode, WPW_BASIC_MAX_SIZE);
    UTL_Zero(total_char, WPW_BASIC_MAX_SIZE);
    
    /*  Prepare to check first Packet of Incoming HTTP data */
    s = (CHAR HUGE*)req->ws_rdata->ws_lbuf;

    /*  Set the End of the Packet  */
    req_buf_end = &req->ws_rdata->ws_lbuf[req->ws_nbytes];

    /* Get to the first Sequence delimeter CRLF*/
    while(*s) s++;          

    s++;
    l = s;

    /*  Search for  HTTP 1.1 Authorization Header  */

    s = HTTP_Find_Token("Authorization:", (CHAR *)l, (CHAR *)req_buf_end);
    if( s )
    {
        /*  Search for the Basic Authetication Marker  */
        s = (CHAR HUGE*)HTTP_Find_Token("Basic", (CHAR *)s, req_buf_end);
        if(s)
        {
           l = total_char;
           s += 6;
           while((*s != '\n') && (*s !='\r') && (*s) )
                  *l++ = *s++;
                  *l = '\0';
#ifdef NU_WEBSERV_DEBUG
       printf("total_char = %s\r\n", total_char);
#endif
        }
        else
        {
            /* Send the 401 Response Message */
            strcpy(buf, BSC_Text_401);
            strcat(buf, req->ws_fname);
            strcat(buf, BSC_Text_401c);
            len = strlen(buf);
            WS_Write_To_Net(req, buf, len, WS_FILETRNSFR);
            return(WPW_BASIC_AUTH_FAILED);
        }
        
    }
    else
    {
        /*  Send the 401 Response message */
        strcpy(buf, BSC_Text_401);
        strcat(buf, req->ws_fname);
        strcat(buf, BSC_Text_401c);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产一区二区三区| 9191国产精品| 亚洲成av人影院在线观看网| 日韩午夜激情免费电影| 久久精品人人做人人爽人人| 亚洲午夜激情网站| 91同城在线观看| 欧美成人国产一区二区| 亚洲综合色区另类av| 成人精品电影在线观看| 精品奇米国产一区二区三区| 亚洲精品成人悠悠色影视| 丁香五精品蜜臀久久久久99网站| 欧美一级国产精品| 亚洲va国产天堂va久久en| zzijzzij亚洲日本少妇熟睡| 久久人人超碰精品| 麻豆精品蜜桃视频网站| 欧美日韩一区二区三区高清| 亚洲免费伊人电影| av电影在线观看一区| 国产亚洲欧美日韩俺去了| 亚洲aⅴ怡春院| 久久综合色一综合色88| 久久99久久久欧美国产| 日韩二区在线观看| 欧美视频一区在线| 中文字幕永久在线不卡| 国产白丝网站精品污在线入口| 日韩免费在线观看| 麻豆国产精品777777在线| 91麻豆精品国产91久久久久久久久| 亚洲电影在线免费观看| 欧美日韩亚洲国产综合| 石原莉奈在线亚洲三区| 7777女厕盗摄久久久| 无码av免费一区二区三区试看| 欧美日韩国产综合视频在线观看| 亚洲综合免费观看高清在线观看| 91亚洲精品乱码久久久久久蜜桃| 亚洲欧洲av另类| 欧美做爰猛烈大尺度电影无法无天| 一区二区三区日本| 日本道在线观看一区二区| 国产欧美日韩麻豆91| 最新不卡av在线| 日韩影院精彩在线| 欧洲激情一区二区| 色菇凉天天综合网| 亚洲精品久久嫩草网站秘色| 91福利社在线观看| 午夜精品一区二区三区电影天堂 | 麻豆91免费看| 精品国产凹凸成av人网站| 国内精品视频666| 中文字幕不卡在线观看| 91在线视频播放地址| 亚洲成a天堂v人片| 精品伦理精品一区| 成人综合婷婷国产精品久久| 欧美在线观看一区| 国产精品久久久久一区二区三区 | 日韩美女精品在线| 欧美性猛片xxxx免费看久爱| 日本欧美一区二区三区乱码| 久久婷婷一区二区三区| 91日韩在线专区| 日本不卡123| 中文字幕制服丝袜成人av| 欧美日韩免费高清一区色橹橹| 麻豆成人综合网| 亚洲天堂免费看| 欧美一个色资源| aaa亚洲精品一二三区| 免费成人在线观看| 亚洲欧美国产毛片在线| 精品国产亚洲在线| 99精品欧美一区二区三区小说 | 在线观看精品一区| 欧美成人a∨高清免费观看| 欧美日韩免费观看一区二区三区| 国产性天天综合网| 欧美日韩一级视频| 成人性生交大片免费看视频在线| 午夜精品一区在线观看| 国产精品理论片| 2021久久国产精品不只是精品| 色综合久久中文综合久久97| 国产一区免费电影| 日韩成人一级大片| 一区二区三区精品视频| 中文字幕乱码久久午夜不卡| 日韩一区二区精品| 欧美日韩五月天| 一本色道综合亚洲| 国产做a爰片久久毛片| 免费一级片91| 国产精品成人一区二区艾草| 欧美精品一区二区三区蜜臀| 欧美久久久久久蜜桃| 99精品在线免费| 激情六月婷婷综合| 国产在线精品一区二区三区不卡| 夜夜操天天操亚洲| 中文字幕欧美激情一区| 久久久亚洲综合| 精品国产成人在线影院| 欧美一级日韩不卡播放免费| 欧美日韩国产三级| 欧美日韩精品三区| 欧美亚洲综合一区| 欧美亚洲一区二区在线| 欧美日韩精品欧美日韩精品| 欧美在线观看视频一区二区三区| 91蜜桃传媒精品久久久一区二区| 成人激情小说网站| 成人福利视频网站| 91免费版pro下载短视频| www.成人网.com| 97久久人人超碰| 日本高清视频一区二区| 欧美伊人精品成人久久综合97| 欧美午夜精品一区二区三区| 欧美猛男超大videosgay| 欧美肥妇毛茸茸| 欧美一区二区视频在线观看2020| 日韩亚洲欧美高清| 2017欧美狠狠色| 中文字幕乱码亚洲精品一区 | 日韩高清在线一区| 日本中文字幕一区二区视频| 蜜桃精品视频在线| 国产福利精品导航| 99久久婷婷国产| 欧美日韩免费视频| 欧美精品一区二区久久久| 国产女人水真多18毛片18精品视频| 国产精品久线观看视频| 亚洲一区二区三区在线播放| 日本亚洲天堂网| 国产精品91一区二区| 色综合天天综合给合国产| 欧美日韩亚洲综合一区| 久久欧美一区二区| 一区二区在线观看视频 | 高清不卡在线观看| 色婷婷综合五月| 欧美电影免费观看完整版 | 精品99久久久久久| 国产精品色一区二区三区| 亚洲自拍另类综合| 国产一区二区不卡在线| 91久久国产综合久久| 日韩亚洲电影在线| 亚洲免费观看高清完整版在线观看熊 | 国产精品亲子伦对白| 综合激情成人伊人| 另类小说一区二区三区| www.亚洲色图| 91精品国产91综合久久蜜臀| 国产精品久久久久桃色tv| 首页欧美精品中文字幕| 国产大陆a不卡| 欧美久久久久免费| 亚洲乱码国产乱码精品精98午夜| 麻豆视频观看网址久久| 99riav久久精品riav| 精品剧情v国产在线观看在线| 亚洲欧美日韩精品久久久久| 激情成人午夜视频| 欧美精品一二三| 亚洲色图.com| 国产91丝袜在线播放| 欧美xxxx老人做受| 五月天中文字幕一区二区| 99国产精品久久久久久久久久久 | 欧美日韩在线播放| 国产精品国产自产拍在线| 久久激情五月婷婷| 欧美日韩在线播放三区四区| 亚洲丝袜美腿综合| 高清在线成人网| 精品美女在线观看| 男人操女人的视频在线观看欧美 | 欧美精品自拍偷拍动漫精品| 成人欧美一区二区三区白人| 久久99精品国产麻豆不卡| 欧美久久一二三四区| 亚洲午夜在线视频| 欧美又粗又大又爽| 亚洲视频在线观看三级| zzijzzij亚洲日本少妇熟睡| 国产拍欧美日韩视频二区| 久久97超碰色| 精品99久久久久久| 国产在线精品一区二区不卡了 | 欧美巨大另类极品videosbest| 伊人色综合久久天天人手人婷| 97se亚洲国产综合自在线不卡| 国产欧美精品一区二区三区四区|