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

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

?? bsc_auth.c

?? 基于nucleus實時操作系統的webserver源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        len = strlen(buf);
        WS_Write_To_Net(req, buf, len, WS_FILETRNSFR);
        return(WPW_BASIC_AUTH_FAILED);
    }

    BSC_Base64_Decode((UINT8*)total_char, (UINT8*)final_decode);

#ifdef NU_WEBSERV_DEBUG
    printf(" final decode = %s \r\n", final_decode);
#endif

    while(final_decode[count] != ':')
    {
        user_id[count] = final_decode[count];
        count++;
    }

    /*  Increment the count passed the : marker */
    count++;
    while(final_decode[count] != NU_NULL)
    {
        password[index] = final_decode[count];
        index++;
        count++;
    }
#ifdef NU_WEBSERV_DEBUG
    printf("user_id = %s password = %s \r\n",user_id, password);
#endif
    /*  Traverse through Pw list structure to see if user is verified. */
    for(bpwlist = BSC_Pw_List_info.wpw_list_head ; bpwlist ; bpwlist = bpwlist->wpw_list_next)
    {
        if(strcmp((CHAR *)bpwlist->wpw_user, user_id) == 0 )
        {
            if(strcmp((CHAR *)bpwlist->wpw_password, password)==0)
            {
                found++;
                break;
            }
        }
    }

    /*  If not found then send Forbidden */
    if( !found )
    {
        /*  Store the 403 Header Response */
        strcpy(req->ws_response, BSC_Text_H403);
        
        /*  Send the Plug-in Proto Header */
        HTTP_Initiate_Response(req, WS_PLUGIN_PROTO);
        
        /*  Get the 403 Forbidden Data */
        strcpy(buf, BSC_Text_D403);
        
        len = strlen(buf);
        /* Write the Plug-in Data */
        WS_Write_To_Net(req, buf, len, WS_PLUGIN_DATA);
        /*  Let the WS_Write_To_Net send the stored data */
        WS_Write_To_Net(req, 0, 0, WS_PLUGIN_SEND);


        /*  Return Basic Auth Failed */
        return(WPW_BASIC_AUTH_FAILED);
    }
    else
    {
        /*  If authenticated continue processing */
        return(NU_SUCCESS);
    }
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Base64_Decode                                                   
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       This function is used to decode a base64 encoded string.  It     
*       returns the decoded string to the calling routine.               
*                     
* INPUTS
*
*       *total_char
*       *final_decode
*
* OUTPUTS
*
*       The decoded string.                                                  
*                                                                       
************************************************************************/
UINT8 *BSC_Base64_Decode(UINT8 *total_char, UINT8 final_decode[])
{
    INT16           index = 0;
    INT16           len;
    INT16           end_text = 0;
    INT16           decode_counter;
    INT16           count;
    INT16           ignore_char = 0;
    UINT8           decode_value[76];
    UINT8           tempbits;
    UINT8           ch;

    len = (INT16)strlen((CHAR *)total_char);

    while((index < len))
    {
        ch= total_char[index];
        if ((ch >= 'A') && (ch <= 'Z'))
             ch= ch- 'A';

        else if((ch >='a') && (ch <= 'z'))
                 ch= ch -'a' +26;

        else if ((ch >='0') && (ch <= '9'))
                  ch = ch - '0' +52;

        else if (ch == '+')
                 ch = 62;

        else if (ch == '=')
        {
            end_text++;
            ch='\0';
        }

        else if (ch == '/')
             ch = 63;

        else
            ignore_char++;

        decode_value[index] = ch;
        index++;
    }

    index = index - end_text;
    count = 0;
    decode_counter = 0;

    while(count < index)
    {
        final_decode[decode_counter] = (UINT8)(decode_value[count] << 2);
        tempbits = (UINT8)((decode_value[count + 1] & 0x30) >> 4);
        final_decode[decode_counter] = final_decode[decode_counter] | tempbits;
        decode_counter++;
        final_decode[decode_counter] = (UINT8)((decode_value[count + 1] & 0x0f) << 4);
        tempbits = (UINT8)((decode_value[count + 2] & 0x3c) >> 2);
        final_decode[decode_counter] = final_decode[decode_counter] | tempbits;
        decode_counter++;
        final_decode[decode_counter] = (UINT8)((decode_value[count + 2] & 0x03) << 6);
        final_decode[decode_counter] = final_decode[decode_counter] | (decode_value[count +3]);
        decode_counter++;
        count = count + 4;
    }
    return(final_decode);
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Add_Delete_Auth                                               
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       A plug-in used to add and delete users and passwords to and from 
*       the Nucleus WebServ's database.  This plug-in will redirect the  
*       URL to user.ssi if it is successful. If the plug-in is           
*       unsuccessful it will give an error message with a tag to return  
*       it to the addel.htm web page.                                                  
*
* INPUTS                                                 
*
*       *req
*
* OUTPUTS
*
*       WS_REQ_PROCEED
*                                                                       
************************************************************************/
static INT BSC_Add_Delete_Auth(WS_REQUEST *req)
{
    CHAR        o[600];
    CHAR        *user;
    CHAR        *password;
    INT         add_func = 0;
    INT         del_func = 0;
    CHAR        *pg_string;

    UTL_Zero(o,600);

    /*  Check if arguement name is equal to user_id */
    user = HTTP_Token_Value_by_Name("user_id", req);

    /*  Check if the name is eual to password */
    password = HTTP_Token_Value_by_Name("password", req);

    /*  Verify it is an add or delete function */
    pg_string = HTTP_Token_Value_by_Name("AddDel", req);

    if(pg_string)
    {
        /*  Check if it is an add */
        if(strncmp(pg_string, "Add", 3) == 0)
        {
            /* Then set the add_func to true */
            add_func = 1;
        }
        /*  Check if it is a delete function */
        else if(strncmp(pg_string, "Delete", 6) == 0)
        {
            /*  Then set the delete to a true */
            del_func = 1;
        }
    }

    if(!user || !password || !pg_string)
        return(WS_REQ_ABORTED);
    else if(add_func)
    {  
        /*  If add function  then add the entry */
        if(BSC_Auth_Add_Entry(user, password) != NU_SUCCESS)
        {
            /*  If the add entry fails then send a response. */
            
            /*  This is setting up a page for the response */
            HTTP_Response_Header(req, WS_PROTO_OK);
            HTTP_Header_Name_Insert(WS_CONTENT_TYPE, WS_TYPE_TXT_HTML, req->ws_response);
            HTTP_Initiate_Response(req, WS_PLUGIN_PROTO);
            strcat(o,"<BR><FONT COLOR=\"#980040\"><FONT SIZE=4>\n");
            
            strcat(o,"User id and password already exists.<BR>");
            strcat(o,"<BR></FONT></FONT>");
            strcat(o,"<p align=\"left\"><a href=\"addel.htm\"><fontsize=\"3\">Back to Add and Deleting</font></a></p>");
            
            /*  Write the Plugin Data */
            WS_Write_To_Net(req, o, strlen(o), WS_PLUGIN_DATA);
            
            /*  Set the Plug-in to send the data */
            
            WS_Write_To_Net(req, NU_NULL, 0, WS_PLUGIN_SEND);
        }
        else
        {  
            /*  If successful then redirect the URL */
            /*  Redirect to user.ssi script when completed */
            HTTP_Redirect_Client(req,"/user.ssi");
        }
    }
    else if(del_func)
    {
        /*  If the user selected Delete then try add delete the user and the password */
        if(BSC_Auth_Delete_Entry(user,password) != NU_SUCCESS)
        {
            /* An error occured, send a response to the Web Browser */
            /*  This is settig up a page for the response */
            HTTP_Response_Header(req, WS_PROTO_OK);
            HTTP_Header_Name_Insert(WS_CONTENT_TYPE, WS_TYPE_TXT_HTML, req->ws_response);
            HTTP_Initiate_Response(req, WS_PLUGIN_PROTO);
            strcat(o,"<BR><FONT COLOR=\"#980040\"><FONT SIZE=4>\n");
            strcat(o,"Unable to find user, password combination.<BR></FONT></FONT>");
            strcat(o,"<p align=\"left\"><a href=\"addel.htm\"><fontsize=\"3\">Back to Add and Deleting</font></a></p>");
            WS_Write_To_Net(req, o, strlen(o), WS_PLUGIN_DATA);
            
            /*  Set the Plug-in to send the data */
            
            WS_Write_To_Net(req, NU_NULL, 0, WS_PLUGIN_SEND);
        }
        else
        {
            /*  Delete was successful Redirect the user to user id passworfd
             *  list.
             */
            HTTP_Redirect_Client(req,"/user.ssi");
        }
    }
    
    return(WS_REQ_PROCEED);
}

/************************************************************************
*                                                                       
* FUNCTION                                                              
*                                                                       
*       BSC_Show_Users                                                      
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       This plug-in is a server side include function that shows all the
*       user id's and password that are in the Nucleus WebServ's         
*       database.                                                        
*        
* INPUTS
*
*       *env
*       *req
*
* OUTPUTS
*
*       WS_REQ_PROCEED                                                    
*                                                                       
************************************************************************/
static INT BSC_Show_Users(WS_REQUEST *req)
{
    CHAR            ubuf[700];
    WPW_INFO_NODE   *bpwlist;
    CHAR            password[32];
    INT16           len;

    /*  Set up table for HTMLMarkup  */
    strcpy(ubuf,"<div align=\"center\"><center>");
    WS_Write_To_Net(req, ubuf, strlen(ubuf), WS_PLUGIN_DATA);
    
    strcpy(ubuf,"<table border=\"4\" cellpadding=\"2\" width=\"40%%\">");
    WS_Write_To_Net(req, ubuf, strlen(ubuf), WS_PLUGIN_DATA);
    
    /*  Set up the table columns and headers for the SSI User ID/ Password */
    
    strcpy(ubuf,"<tr><td align=\"center\" width=\"20%%\"> \
               <FONT COLOR=\"black\"> USER ID </font></td> \
               <td align=\"center\" width=\"20%%\">\
               <FONT COLOR=\"black\">PASSWORD</font></td></tr>");
    
    WS_Write_To_Net(req, ubuf, strlen(ubuf), WS_PLUGIN_DATA);              
    
    /*  Traverse through Password/user list structure to see if user is verified. */
    for(bpwlist = BSC_Pw_List_info.wpw_list_head ; bpwlist ; bpwlist = bpwlist->wpw_list_next)
    {
        UTL_Zero(password,32);
        len = (INT16)strlen((CHAR *)bpwlist->wpw_password);
        memset(password, 0x2a, (size_t)len);
        
        /*  Print to ubuf  the user id and password name  */
        strcpy(ubuf,"<tr><td align=\"center\" width=\"20%%\"> \
            <FONT COLOR=\"#980040\">");
        
        strcat(ubuf, bpwlist->wpw_user);
        strcat(ubuf, "</font> </td> \
                  <td align=\"center\" width=\"20%%\"> \
                  <FONT COLOR=\"#980040\">");
        strcat(ubuf, password);
        strcat(ubuf, "</font></td></tr>");
        
        /*  Output the user id and statistics   */
        WS_Write_To_Net(req, ubuf, strlen(ubuf), WS_PLUGIN_DATA);
    }
    
    /*  Make end of table HTML and output */
    strcpy(ubuf,"</table></center></div>");
    WS_Write_To_Net(req, ubuf, strlen(ubuf), WS_PLUGIN_DATA);
    
    /*  return to Request Proceed */
    return(WS_REQ_PROCEED);
}
#endif /* WS_BASIC_AUTH */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人在线精品| 亚洲国产精品二十页| 天天亚洲美女在线视频| 在线看日韩精品电影| 亚洲美女偷拍久久| 欧美日韩在线观看一区二区 | 欧美高清激情brazzers| 性做久久久久久久久| 日韩精品一区在线| 国产成人午夜电影网| 国产精品福利一区二区三区| 色成年激情久久综合| 日韩专区欧美专区| 久久无码av三级| 91色porny蝌蚪| 丝袜美腿亚洲综合| 久久免费电影网| 91年精品国产| 另类成人小视频在线| 日本一区二区三区在线不卡| 色av成人天堂桃色av| 日韩高清欧美激情| 国产精品美女久久久久av爽李琼| 色女孩综合影院| 久久97超碰色| 中文字幕一区二区在线观看 | 亚洲国产aⅴ成人精品无吗| 日韩欧美在线观看一区二区三区| 国产精品一区二区视频| 亚洲最快最全在线视频| 精品国免费一区二区三区| 91网上在线视频| 免费xxxx性欧美18vr| 国产精品久久久久精k8| 欧美一区二区三区四区五区| 成人精品免费看| 免费高清视频精品| 亚洲激情一二三区| 久久精品一区二区三区四区| 欧美综合久久久| 成人小视频免费在线观看| 首页国产欧美久久| 亚洲丝袜制服诱惑| 久久免费视频一区| 欧美肥妇毛茸茸| 色综合激情久久| 国产精品一区二区91| 日本午夜一区二区| 亚洲精选视频免费看| 欧美激情综合网| 日韩久久久久久| 91精品欧美福利在线观看 | 色婷婷久久久久swag精品| 国产一区二区在线电影| 日韩精品一级二级 | 一区二区三区产品免费精品久久75| 精品国免费一区二区三区| 欧美酷刑日本凌虐凌虐| 色婷婷精品大视频在线蜜桃视频| 国产不卡视频一区二区三区| 激情综合色综合久久| 三级精品在线观看| 午夜a成v人精品| 亚洲高清免费一级二级三级| 亚洲精品ww久久久久久p站| 国产精品国产精品国产专区不片 | 国产一区二区0| 青青草视频一区| 日本美女一区二区三区视频| 亚洲国产精品麻豆| 亚洲午夜一二三区视频| 亚洲你懂的在线视频| 亚洲丝袜另类动漫二区| 中文字幕亚洲一区二区av在线| 欧美高清在线精品一区| 欧美国产精品一区二区三区| 日本一区二区免费在线观看视频| 久久久精品国产免大香伊| 国产视频一区在线播放| 国产喂奶挤奶一区二区三区| 国产欧美日韩卡一| 国产精品免费人成网站| 亚洲天堂免费在线观看视频| 亚洲免费av高清| 亚洲成人av中文| 日日夜夜免费精品| 日韩精品国产精品| 国产在线精品免费| 国产成人综合亚洲91猫咪| 波多野结衣亚洲| 91片在线免费观看| 欧美日本一区二区三区四区| 91精品国产综合久久久久久久久久| 欧美精品第1页| 精品少妇一区二区三区日产乱码| 久久综合九色综合97婷婷| 国产女人18毛片水真多成人如厕| 国产精品日日摸夜夜摸av| 亚洲三级在线免费观看| 婷婷开心激情综合| 国产在线麻豆精品观看| 不卡av电影在线播放| 色久优优欧美色久优优| 911国产精品| 久久久一区二区| 一区二区三区免费看视频| 日本亚洲欧美天堂免费| 国产成人综合网站| 91久久精品午夜一区二区| 91精品国产91久久久久久一区二区| 精品女同一区二区| 中文字幕亚洲成人| 日日骚欧美日韩| 成人一区二区三区视频在线观看| 色综合久久天天综合网| 欧美大胆人体bbbb| 日韩美女视频一区二区 | 99久久er热在这里只有精品15| 欧美私人免费视频| 国产色产综合色产在线视频 | 国产夜色精品一区二区av| 亚洲欧美日韩国产另类专区| 蜜臀av国产精品久久久久| 91色综合久久久久婷婷| 日韩免费看的电影| 一区二区在线观看不卡| 国模少妇一区二区三区| 色国产综合视频| 欧美激情综合在线| 蜜桃久久久久久| 在线观看欧美黄色| 国产精品三级视频| 美国精品在线观看| 欧美三级在线播放| 中文字幕一区二区三区四区| 久久99精品国产麻豆不卡| 欧美亚洲另类激情小说| 国产精品久久久久久久久免费樱桃 | 国产不卡视频在线观看| 欧美色综合网站| 亚洲四区在线观看| 国产久卡久卡久卡久卡视频精品| 日本高清免费不卡视频| 欧美激情综合在线| 国产综合成人久久大片91| 欧美精品久久一区二区三区| 亚洲激情男女视频| 成人污污视频在线观看| 精品国产伦一区二区三区观看体验 | 精品在线免费观看| 欧美日韩中文另类| 亚洲激情成人在线| 91视频一区二区三区| 国产精品视频观看| 国产精品一区二区久久不卡| 欧美大片顶级少妇| 免费美女久久99| 欧美一区三区四区| 视频精品一区二区| 制服视频三区第一页精品| 亚洲成人动漫在线免费观看| 欧美这里有精品| 夜夜精品浪潮av一区二区三区| 91免费观看在线| 亚洲欧美日韩国产一区二区三区| www.成人网.com| 国产精品久久久久国产精品日日| 成人午夜碰碰视频| 综合欧美一区二区三区| 99精品久久99久久久久| 综合精品久久久| 色悠悠久久综合| 一区二区三区不卡在线观看 | 欧美日韩一区二区三区四区五区| 亚洲免费成人av| 91极品视觉盛宴| 午夜精品久久久久久不卡8050| 欧美日韩国产中文| 日韩中文字幕区一区有砖一区 | 91精品国产综合久久精品麻豆 | 蜜桃视频免费观看一区| 日韩免费看的电影| 国产成人亚洲精品青草天美| 久久久精品人体av艺术| kk眼镜猥琐国模调教系列一区二区 | 日韩欧美中文字幕公布| 极品美女销魂一区二区三区| 国产视频视频一区| 91在线观看视频| 亚洲国产综合在线| 日韩一区二区电影网| 国产在线精品免费| 专区另类欧美日韩| 91精品免费在线| 成人一区二区三区中文字幕| 亚洲一区影音先锋| 精品国产乱码久久久久久影片| 粉嫩嫩av羞羞动漫久久久| 亚洲特黄一级片| 日韩精品专区在线影院观看|