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

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

?? http.c

?? video linux conference
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/***************************************************************************** * http.c :  http mini-server ;) ***************************************************************************** * Copyright (C) 2001-2005 VideoLAN * $Id: http.c 11000 2005-05-13 17:58:05Z zorglub $ * * Authors: Gildas Bazin <gbazin@netcourrier.com> *          Laurent Aimar <fenrir@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************//* TODO: * - clean up ? * - doc ! (mouarf ;) */#include <stdlib.h>#include <vlc/vlc.h>#include <vlc/intf.h>#include <vlc/aout.h>#include <vlc/vout.h> /* for fullscreen */#include "vlc_httpd.h"#include "vlc_vlm.h"#include "vlc_tls.h"#include "charset.h"#ifdef HAVE_SYS_STAT_H#   include <sys/stat.h>#endif#ifdef HAVE_ERRNO_H#   include <errno.h>#endif#ifdef HAVE_FCNTL_H#   include <fcntl.h>#endif#ifdef HAVE_UNISTD_H#   include <unistd.h>#elif defined( WIN32 ) && !defined( UNDER_CE )#   include <io.h>#endif#ifdef HAVE_DIRENT_H#   include <dirent.h>#endif/* stat() support for large files on win32 */#if defined( WIN32 ) && !defined( UNDER_CE )#   define stat _stati64#endif/***************************************************************************** * Module descriptor *****************************************************************************/static int  Open ( vlc_object_t * );static void Close( vlc_object_t * );#define HOST_TEXT N_( "Host address" )#define HOST_LONGTEXT N_( \    "You can set the address and port the http interface will bind to." )#define SRC_TEXT N_( "Source directory" )#define SRC_LONGTEXT N_( "Source directory" )#define CERT_TEXT N_( "Certificate file" )#define CERT_LONGTEXT N_( "HTTP interface x509 PEM certificate file " \                          "(enables SSL)" )#define KEY_TEXT N_( "Private key file" )#define KEY_LONGTEXT N_( "HTTP interface x509 PEM private key file" )#define CA_TEXT N_( "Root CA file" )#define CA_LONGTEXT N_( "HTTP interface x509 PEM trusted root CA " \                        "certificates file" )#define CRL_TEXT N_( "CRL file" )#define CRL_LONGTEXT N_( "HTTP interace Certificates Revocation List file" )vlc_module_begin();    set_shortname( _("HTTP"));    set_description( _("HTTP remote control interface") );    set_category( CAT_INTERFACE );    set_subcategory( SUBCAT_INTERFACE_GENERAL );        add_string ( "http-host", NULL, NULL, HOST_TEXT, HOST_LONGTEXT, VLC_TRUE );        add_string ( "http-src",  NULL, NULL, SRC_TEXT,  SRC_LONGTEXT,  VLC_TRUE );        set_section( N_("HTTP SSL" ), 0 );        add_string ( "http-intf-cert", NULL, NULL, CERT_TEXT, CERT_LONGTEXT, VLC_TRUE );        add_string ( "http-intf-key",  NULL, NULL, KEY_TEXT,  KEY_LONGTEXT,  VLC_TRUE );        add_string ( "http-intf-ca",   NULL, NULL, CA_TEXT,   CA_LONGTEXT,   VLC_TRUE );        add_string ( "http-intf-crl",  NULL, NULL, CRL_TEXT,  CRL_LONGTEXT,  VLC_TRUE );    set_capability( "interface", 0 );    set_callbacks( Open, Close );vlc_module_end();/***************************************************************************** * Local prototypes *****************************************************************************/static void Run          ( intf_thread_t *p_intf );static int ParseDirectory( intf_thread_t *p_intf, char *psz_root,                           char *psz_dir );static int DirectoryCheck( char *psz_dir ){    DIR           *p_dir;#ifdef HAVE_SYS_STAT_H    struct stat   stat_info;    if( stat( psz_dir, &stat_info ) == -1 || !S_ISDIR( stat_info.st_mode ) )    {        return VLC_EGENERIC;    }#endif    if( ( p_dir = opendir( psz_dir ) ) == NULL )    {        return VLC_EGENERIC;    }    closedir( p_dir );    return VLC_SUCCESS;}static int  HttpCallback( httpd_file_sys_t *p_args,                          httpd_file_t *,                          uint8_t *p_request,                          uint8_t **pp_data, int *pi_data );static char *uri_extract_value( char *psz_uri, const char *psz_name,                                char *psz_value, int i_value_max );static int uri_test_param( char *psz_uri, const char *psz_name );static void uri_decode_url_encoded( char *psz );static char *Find_end_MRL( char *psz );static playlist_item_t *parse_MRL( intf_thread_t * , char *psz );/***************************************************************************** * *****************************************************************************/typedef struct mvar_s{    char *name;    char *value;    int           i_field;    struct mvar_s **field;} mvar_t;#define STACK_MAX 100typedef struct{    char *stack[STACK_MAX];    int  i_stack;} rpn_stack_t;struct httpd_file_sys_t{    intf_thread_t    *p_intf;    httpd_file_t     *p_file;    httpd_redirect_t *p_redir;    httpd_redirect_t *p_redir2;    char          *file;    char          *name;    vlc_bool_t    b_html;    /* inited for each access */    rpn_stack_t   stack;    mvar_t        *vars;};struct intf_sys_t{    httpd_host_t        *p_httpd_host;    int                 i_files;    httpd_file_sys_t    **pp_files;    playlist_t          *p_playlist;    input_thread_t      *p_input;    vlm_t               *p_vlm;    char                *psz_html_type;};/***************************************************************************** * Activate: initialize and create stuff *****************************************************************************/static int Open( vlc_object_t *p_this ){    intf_thread_t *p_intf = (intf_thread_t*)p_this;    intf_sys_t    *p_sys;    char          *psz_host;    char          *psz_address = "";    const char    *psz_cert;    int           i_port       = 0;    char          *psz_src;    tls_server_t  *p_tls;    psz_host = config_GetPsz( p_intf, "http-host" );    if( psz_host )    {        char *psz_parser;        psz_address = psz_host;        psz_parser = strchr( psz_host, ':' );        if( psz_parser )        {            *psz_parser++ = '\0';            i_port = atoi( psz_parser );        }    }    p_intf->p_sys = p_sys = malloc( sizeof( intf_sys_t ) );    if( !p_intf->p_sys )    {        return( VLC_ENOMEM );    }    p_sys->p_playlist = NULL;    p_sys->p_input    = NULL;    p_sys->p_vlm      = NULL;    /* determine Content-Type value for HTML pages */    vlc_current_charset(&psz_src);    if( psz_src == NULL )    {        free( p_sys );        return VLC_ENOMEM;    }    p_sys->psz_html_type = malloc( 20 + strlen( psz_src ) );    if( p_sys->psz_html_type == NULL )    {        free( p_sys );        free( psz_src );        return VLC_ENOMEM ;    }    sprintf( p_sys->psz_html_type, "text/html; charset=%s", psz_src );    free( psz_src );    /* determine SSL configuration */    psz_cert = config_GetPsz( p_intf, "http-intf-cert" );    if ( psz_cert != NULL )    {        const char *psz_pem;        msg_Dbg( p_intf, "enablind TLS for HTTP interface (cert file: %s)",                 psz_cert );        psz_pem = config_GetPsz( p_intf, "http-intf-key" );        p_tls = tls_ServerCreate( p_this, psz_cert, psz_pem );        if ( p_tls == NULL )        {            msg_Err( p_intf, "TLS initialization error" );            free( p_sys->psz_html_type );            free( p_sys );            return VLC_EGENERIC;        }        psz_pem = config_GetPsz( p_intf, "http-intf-ca" );        if ( ( psz_pem != NULL) && tls_ServerAddCA( p_tls, psz_pem ) )        {            msg_Err( p_intf, "TLS CA error" );            tls_ServerDelete( p_tls );            free( p_sys->psz_html_type );            free( p_sys );            return VLC_EGENERIC;        }        psz_pem = config_GetPsz( p_intf, "http-intf-crl" );        if ( ( psz_pem != NULL) && tls_ServerAddCRL( p_tls, psz_pem ) )        {            msg_Err( p_intf, "TLS CRL error" );            tls_ServerDelete( p_tls );            free( p_sys->psz_html_type );            free( p_sys );            return VLC_EGENERIC;        }        if( i_port <= 0 )            i_port = 8443;    }    else    {        p_tls = NULL;        if( i_port <= 0 )            i_port= 8080;    }    msg_Dbg( p_intf, "base %s:%d", psz_address, i_port );    p_sys->p_httpd_host = httpd_TLSHostNew( VLC_OBJECT(p_intf), psz_address,                                            i_port, p_tls );    if( p_sys->p_httpd_host == NULL )    {        msg_Err( p_intf, "cannot listen on %s:%d", psz_address, i_port );        if ( p_tls != NULL )            tls_ServerDelete( p_tls );        free( p_sys->psz_html_type );        free( p_sys );        return VLC_EGENERIC;    }    if( psz_host )    {        free( psz_host );    }    p_sys->i_files  = 0;    p_sys->pp_files = NULL;#if defined(SYS_DARWIN) || defined(SYS_BEOS) || defined(WIN32)    if ( ( psz_src = config_GetPsz( p_intf, "http-src" )) == NULL )    {        char * psz_vlcpath = p_intf->p_libvlc->psz_vlcpath;        psz_src = malloc( strlen(psz_vlcpath) + strlen("/share/http" ) + 1 );        if( !psz_src ) return VLC_ENOMEM;#if defined(WIN32)        sprintf( psz_src, "%s/http", psz_vlcpath);#else        sprintf( psz_src, "%s/share/http", psz_vlcpath);#endif    }#else    psz_src = config_GetPsz( p_intf, "http-src" );    if( !psz_src || *psz_src == '\0' )    {        if( !DirectoryCheck( "share/http" ) )        {            psz_src = strdup( "share/http" );        }        else if( !DirectoryCheck( DATA_PATH "/http" ) )        {            psz_src = strdup( DATA_PATH "/http" );        }    }#endif    if( !psz_src || *psz_src == '\0' )    {        msg_Err( p_intf, "invalid src dir" );        goto failed;    }    /* remove trainling \ or / */    if( psz_src[strlen( psz_src ) - 1] == '\\' ||        psz_src[strlen( psz_src ) - 1] == '/' )    {        psz_src[strlen( psz_src ) - 1] = '\0';    }    ParseDirectory( p_intf, psz_src, psz_src );    if( p_sys->i_files <= 0 )    {        msg_Err( p_intf, "cannot find any files (%s)", psz_src );        goto failed;    }    p_intf->pf_run = Run;    free( psz_src );    return VLC_SUCCESS;failed:    if( psz_src ) free( psz_src );    if( p_sys->pp_files )    {        free( p_sys->pp_files );    }    httpd_HostDelete( p_sys->p_httpd_host );    free( p_sys->psz_html_type );    free( p_sys );    return VLC_EGENERIC;}/***************************************************************************** * CloseIntf: destroy interface *****************************************************************************/void Close ( vlc_object_t *p_this ){    intf_thread_t *p_intf = (intf_thread_t *)p_this;    intf_sys_t    *p_sys = p_intf->p_sys;    int i;    if( p_sys->p_vlm )    {        vlm_Delete( p_sys->p_vlm );    }    for( i = 0; i < p_sys->i_files; i++ )    {       httpd_FileDelete( p_sys->pp_files[i]->p_file );       if( p_sys->pp_files[i]->p_redir )           httpd_RedirectDelete( p_sys->pp_files[i]->p_redir );       if( p_sys->pp_files[i]->p_redir2 )           httpd_RedirectDelete( p_sys->pp_files[i]->p_redir2 );       free( p_sys->pp_files[i]->file );       free( p_sys->pp_files[i]->name );       free( p_sys->pp_files[i] );    }    if( p_sys->pp_files )    {        free( p_sys->pp_files );    }    httpd_HostDelete( p_sys->p_httpd_host );    free( p_sys->psz_html_type );    free( p_sys );}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久线看在观草草青青| 依依成人综合视频| 成人av午夜影院| 亚洲一区在线视频观看| 成人免费在线视频观看| 91蝌蚪porny| 午夜视频一区二区三区| 精品国产免费久久| 国产91精品精华液一区二区三区| 亚洲欧美一区二区三区极速播放| 欧洲中文字幕精品| 国内外成人在线| 亚洲欧美一区二区在线观看| 欧美日韩精品一区二区天天拍小说| 久久精品国产99| 亚洲欧美乱综合| 精品伦理精品一区| 欧美网站一区二区| 成人丝袜视频网| 免费亚洲电影在线| 久久精品一区二区三区四区| 中文字幕乱码一区二区免费| 在线精品视频免费播放| 韩国精品免费视频| 亚洲愉拍自拍另类高清精品| 久久久国产综合精品女国产盗摄| 亚洲国产日韩av| 亚洲国产成人在线| 久久久久久久久伊人| 狠狠狠色丁香婷婷综合激情| 亚洲日本丝袜连裤袜办公室| 久久久久久久综合| 欧美成人激情免费网| 欧美日韩一区二区三区视频| 99久久99久久综合| 成人一区二区视频| 岛国精品在线观看| 国产一区二区三区免费| 久久精品一区四区| 91片黄在线观看| www.爱久久.com| 国产v综合v亚洲欧| 国产伦理精品不卡| 激情综合网最新| 国产精品一线二线三线| 精品一区二区三区在线观看| 国产亚洲精品aa| 国产拍揄自揄精品视频麻豆| 久久久夜色精品亚洲| 久久免费午夜影院| 欧美激情综合在线| 国产精品看片你懂得| 国产欧美综合在线| 中文字幕制服丝袜成人av| 国产精品毛片久久久久久| 国产精品大尺度| 粉嫩嫩av羞羞动漫久久久| 国产成人精品一区二区三区四区| 奇米综合一区二区三区精品视频| 五月激情丁香一区二区三区| 日本亚洲天堂网| 精品无人区卡一卡二卡三乱码免费卡| 国内一区二区视频| 91一区二区在线| 8x8x8国产精品| 久久一夜天堂av一区二区三区| 中文无字幕一区二区三区| 国产精品久久精品日日| 亚洲高清免费观看高清完整版在线观看 | 精品国产一区二区国模嫣然| 99久久久精品| 一本久久a久久精品亚洲| 欧美一区二区三区免费视频| 欧美精品一区二区在线播放| 国产精品麻豆网站| 日韩国产在线观看| 成人午夜又粗又硬又大| 7777精品伊人久久久大香线蕉超级流畅 | 国产亚洲视频系列| 午夜激情综合网| www.成人网.com| 亚洲精品免费在线播放| 丝袜美腿亚洲色图| 波多野结衣亚洲一区| 欧美成人一区二区| 亚洲综合成人在线| 一区二区高清在线| 欧美久久久久久久久| 欧美成人激情免费网| 欧美一区二区三区的| 中文字幕色av一区二区三区| 水蜜桃久久夜色精品一区的特点| 国产精品亚洲а∨天堂免在线| 在线免费av一区| 日韩精品一区二区三区视频播放 | 欧美精品一级二级| 中文av一区特黄| 久久国产尿小便嘘嘘| 欧美三级在线看| 成人黄色av电影| 制服丝袜激情欧洲亚洲| 亚洲免费高清视频在线| 精品写真视频在线观看| 欧美三级韩国三级日本一级| 亚洲成av人片一区二区梦乃| 成人短视频下载| 欧美午夜免费电影| 日韩精品专区在线影院重磅| 国产精品拍天天在线| 一区二区三区日韩欧美精品| 图片区日韩欧美亚洲| 亚洲444eee在线观看| 久久精品欧美日韩精品 | 久久久久久免费| 奇米888四色在线精品| 欧美日本视频在线| 夜夜爽夜夜爽精品视频| 91蜜桃在线免费视频| 欧美—级在线免费片| 国产乱色国产精品免费视频| 欧美在线免费观看亚洲| 亚洲欧美成aⅴ人在线观看| 97精品电影院| 欧美人成免费网站| 一区二区三区.www| 欧美三级中文字| 久久精品国产亚洲5555| www久久久久| 岛国精品在线观看| 亚洲一区二区美女| 日韩一级完整毛片| 国产亚洲一二三区| 91亚洲精品久久久蜜桃| 亚洲特级片在线| 3d成人动漫网站| 免费精品99久久国产综合精品| 欧美成人vps| 国产精品一级黄| 中文字幕一区免费在线观看| 欧美色视频在线观看| 香蕉av福利精品导航| 日韩一区二区电影网| 国产成人夜色高潮福利影视| 亚洲四区在线观看| 欧美不卡视频一区| 色综合天天综合网天天看片| 麻豆精品一区二区| 国产精品人成在线观看免费 | 国产一区二区福利| 一区二区不卡在线播放| 久久综合视频网| 欧美在线视频不卡| 国产精品一区二区黑丝| 午夜精彩视频在线观看不卡| 国产精品女同一区二区三区| 国产激情一区二区三区| 午夜日韩在线观看| 人人精品人人爱| 亚洲一线二线三线视频| 国产欧美一区二区三区沐欲| 欧美理论电影在线| 色视频一区二区| av一区二区三区四区| 国产成人精品网址| 精品国产污网站| 欧美日韩精品一区视频| 日本韩国欧美一区二区三区| 国产盗摄视频一区二区三区| 亚洲女同一区二区| 久久久久久久电影| 日韩一区二区精品葵司在线| 欧美伊人久久大香线蕉综合69 | 亚洲视频图片小说| 国产日韩综合av| 久久久久久一二三区| 欧美大黄免费观看| 欧美成人a在线| 欧美mv日韩mv亚洲| 久久综合色播五月| 久久综合久久鬼色| 国产精品女主播av| 国产精品久久久久影视| 久久亚区不卡日本| 国产校园另类小说区| 久久精品人人爽人人爽| 国产精品丝袜91| 国产欧美一区二区精品仙草咪| 久久久久国产一区二区三区四区| 欧美中文字幕不卡| 91精品国产综合久久精品图片| 欧美乱妇一区二区三区不卡视频| 欧美高清你懂得| 欧美精品一区男女天堂| 亚洲国产精品高清| 一区二区三区免费网站| 亚洲va国产va欧美va观看| 三级欧美韩日大片在线看| 韩日欧美一区二区三区| 亚洲高清在线精品| 欧美精品一区二区蜜臀亚洲|