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

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

?? ftp.c

?? VLC Player Source Code
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************** * ftp.c: FTP input module ***************************************************************************** * Copyright (C) 2001-2006 the VideoLAN team * Copyright ? 2006 Rémi Denis-Courmont * $Id$ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> - original code *          Rémi Denis-Courmont <rem # videolan.org> - EPSV support * * 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <vlc_common.h>#include <vlc_plugin.h>#include <assert.h>#include <vlc_access.h>#include <vlc_interface.h>#include <vlc_network.h>#include "vlc_url.h"#include <vlc_sout.h>#ifndef IPPORT_FTP# define IPPORT_FTP 21u#endif/***************************************************************************** * Module descriptor *****************************************************************************/static int   InOpen ( vlc_object_t * );static void  InClose( vlc_object_t * );static int  OutOpen ( vlc_object_t * );static void OutClose( vlc_object_t * );#define CACHING_TEXT N_("Caching value in ms")#define CACHING_LONGTEXT N_( \    "Caching value for FTP streams. This " \    "value should be set in milliseconds." )#define USER_TEXT N_("FTP user name")#define USER_LONGTEXT N_("User name that will " \    "be used for the connection.")#define PASS_TEXT N_("FTP password")#define PASS_LONGTEXT N_("Password that will be " \    "used for the connection.")#define ACCOUNT_TEXT N_("FTP account")#define ACCOUNT_LONGTEXT N_("Account that will be " \    "used for the connection.")vlc_module_begin();    set_shortname( "FTP" );    set_description( N_("FTP input") );    set_capability( "access", 0 );    set_category( CAT_INPUT );    set_subcategory( SUBCAT_INPUT_ACCESS );    add_integer( "ftp-caching", 2 * DEFAULT_PTS_DELAY / 1000, NULL,                 CACHING_TEXT, CACHING_LONGTEXT, true );    add_string( "ftp-user", "anonymous", NULL, USER_TEXT, USER_LONGTEXT,                false );    add_string( "ftp-pwd", "anonymous@example.com", NULL, PASS_TEXT,                PASS_LONGTEXT, false );    add_string( "ftp-account", "anonymous", NULL, ACCOUNT_TEXT,                ACCOUNT_LONGTEXT, false );    add_shortcut( "ftp" );    set_callbacks( InOpen, InClose );    add_submodule();    set_shortname( "FTP" );    set_description( N_("FTP upload output") );    set_capability( "sout access", 0 );    set_category( CAT_SOUT );    set_subcategory( SUBCAT_SOUT_ACO );    set_callbacks( OutOpen, OutClose );vlc_module_end();/***************************************************************************** * Local prototypes *****************************************************************************/static ssize_t Read( access_t *, uint8_t *, size_t );static ssize_t Write( sout_access_out_t *, block_t * );static int Seek( access_t *, int64_t );static int OutSeek( sout_access_out_t *, off_t );static int Control( access_t *, int, va_list );struct access_sys_t{    vlc_url_t  url;    int        fd_cmd;    int        fd_data;    char       sz_epsv_ip[NI_MAXNUMERICHOST];    bool       out;};#define GET_OUT_SYS( p_this ) \    ((access_sys_t *)(((sout_access_out_t *)(p_this))->p_sys))static int ftp_SendCommand( vlc_object_t *, access_sys_t *, const char *, ... );static int ftp_ReadCommand( vlc_object_t *, access_sys_t *, int *, char ** );static int ftp_StartStream( vlc_object_t *, access_sys_t *, int64_t );static int ftp_StopStream ( vlc_object_t *, access_sys_t * );static int Login( vlc_object_t *p_access, access_sys_t *p_sys ){    int i_answer;    char *psz;    /* *** Open a TCP connection with server *** */    int fd = p_sys->fd_cmd = net_ConnectTCP( p_access, p_sys->url.psz_host,                                             p_sys->url.i_port );    if( fd == -1 )    {        msg_Err( p_access, "connection failed" );        intf_UserFatal( p_access, false, _("Network interaction failed"),                        _("VLC could not connect with the given server.") );        return -1;    }    while( ftp_ReadCommand( p_access, p_sys, &i_answer, NULL ) == 1 );    if( i_answer / 100 != 2 )    {        msg_Err( p_access, "connection rejected" );        intf_UserFatal( p_access, false, _("Network interaction failed"),                        _("VLC's connection to the given server was rejected.") );        return -1;    }    msg_Dbg( p_access, "connection accepted (%d)", i_answer );    if( p_sys->url.psz_username && *p_sys->url.psz_username )        psz = strdup( p_sys->url.psz_username );    else        psz = var_CreateGetString( p_access, "ftp-user" );    if( !psz )        return -1;    if( ftp_SendCommand( p_access, p_sys, "USER %s", psz ) < 0 ||        ftp_ReadCommand( p_access, p_sys, &i_answer, NULL ) < 0 )    {        free( psz );        return -1;    }    free( psz );    switch( i_answer / 100 )    {        case 2:            msg_Dbg( p_access, "user accepted" );            break;        case 3:            msg_Dbg( p_access, "password needed" );            if( p_sys->url.psz_password && *p_sys->url.psz_password )                psz = strdup( p_sys->url.psz_password );            else                psz = var_CreateGetString( p_access, "ftp-pwd" );            if( !psz )                return -1;            if( ftp_SendCommand( p_access, p_sys, "PASS %s", psz ) < 0 ||                ftp_ReadCommand( p_access, p_sys, &i_answer, NULL ) < 0 )            {                free( psz );                return -1;            }            free( psz );            switch( i_answer / 100 )            {                case 2:                    msg_Dbg( p_access, "password accepted" );                    break;                case 3:                    msg_Dbg( p_access, "account needed" );                    psz = var_CreateGetString( p_access, "ftp-account" );                    if( ftp_SendCommand( p_access, p_sys, "ACCT %s",                                         psz ) < 0 ||                        ftp_ReadCommand( p_access, p_sys, &i_answer, NULL ) < 0 )                    {                        free( psz );                        return -1;                    }                    free( psz );                    if( i_answer / 100 != 2 )                    {                        msg_Err( p_access, "account rejected" );                        intf_UserFatal( p_access, false,                                        _("Network interaction failed"),                                        _("Your account was rejected.") );                        return -1;                    }                    msg_Dbg( p_access, "account accepted" );                    break;                default:                    msg_Err( p_access, "password rejected" );                    intf_UserFatal( p_access, false,                                    _("Network interaction failed"),                                    _("Your password was rejected.") );                    return -1;            }            break;        default:            msg_Err( p_access, "user rejected" );            intf_UserFatal( p_access, false,                        _("Network interaction failed"),                        _("Your connection attempt to the server was rejected.") );            return -1;    }    return 0;}static int Connect( vlc_object_t *p_access, access_sys_t *p_sys ){    if( Login( p_access, p_sys ) < 0 )        return -1;    /* Extended passive mode */    if( ftp_SendCommand( p_access, p_sys, "EPSV ALL" ) < 0 )    {        msg_Err( p_access, "cannot request extended passive mode" );        net_Close( p_sys->fd_cmd );        return -1;    }    if( ftp_ReadCommand( p_access, p_sys, NULL, NULL ) == 2 )    {        if( net_GetPeerAddress( p_sys->fd_cmd, p_sys->sz_epsv_ip, NULL ) )        {            net_Close( p_sys->fd_cmd );            return -1;        }    }    else    {        /* If ESPV ALL fails, we fallback to PASV.         * We have to restart the connection in case there is a NAT that         * understands EPSV ALL in the way, and hence won't allow PASV on         * the initial connection.         */        msg_Info( p_access, "FTP Extended passive mode disabled" );        net_Close( p_sys->fd_cmd );        if( Login( p_access, p_sys ) )        {            net_Close( p_sys->fd_cmd );            return -1;        }    }    /* check binary mode support */    if( ftp_SendCommand( p_access, p_sys, "TYPE I" ) < 0 ||        ftp_ReadCommand( p_access, p_sys, NULL, NULL ) != 2 )    {        msg_Err( p_access, "cannot set binary transfer mode" );        net_Close( p_sys->fd_cmd );        return -1;    }    return 0;}static int parseURL( vlc_url_t *url, const char *path ){    if( path == NULL )        return VLC_EGENERIC;    /* *** Parse URL and get server addr/port and path *** */    while( *path == '/' )        path++;    vlc_UrlParse( url, path, 0 );    if( url->psz_host == NULL || *url->psz_host == '\0' )        return VLC_EGENERIC;    if( url->i_port <= 0 )        url->i_port = IPPORT_FTP; /* default port */    /* FTP URLs are relative to user's default directory (RFC1738)    For absolute path use ftp://foo.bar//usr/local/etc/filename */    if( url->psz_path && *url->psz_path == '/' )        url->psz_path++;    return VLC_SUCCESS;}/**************************************************************************** * Open: connect to ftp server and ask for file ****************************************************************************/static int InOpen( vlc_object_t *p_this ){    access_t     *p_access = (access_t*)p_this;    access_sys_t *p_sys;    char         *psz_arg;    /* Init p_access */    STANDARD_READ_ACCESS_INIT    p_sys->fd_data = -1;    p_sys->out = false;    if( parseURL( &p_sys->url, p_access->psz_path ) )        goto exit_error;    if( Connect( p_this, p_sys ) )        goto exit_error;    /* get size */    if( ftp_SendCommand( p_this, p_sys, "SIZE %s", p_sys->url.psz_path ? : "" ) < 0 ||        ftp_ReadCommand( p_this, p_sys, NULL, &psz_arg ) != 2 )    {        msg_Err( p_access, "cannot get file size" );        net_Close( p_sys->fd_cmd );        goto exit_error;    }    p_access->info.i_size = atoll( &psz_arg[4] );    free( psz_arg );    msg_Dbg( p_access, "file size: %"PRId64, p_access->info.i_size );    /* Start the 'stream' */    if( ftp_StartStream( p_this, p_sys, 0 ) < 0 )    {        msg_Err( p_access, "cannot retrieve file" );        net_Close( p_sys->fd_cmd );        goto exit_error;    }    /* Update default_pts to a suitable value for ftp access */    var_Create( p_access, "ftp-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );    return VLC_SUCCESS;exit_error:    vlc_UrlClean( &p_sys->url );    free( p_sys );    return VLC_EGENERIC;}static int OutOpen( vlc_object_t *p_this ){    sout_access_out_t *p_access = (sout_access_out_t *)p_this;    access_sys_t      *p_sys;    p_sys = malloc( sizeof( *p_sys ) );    if( p_sys == NULL )        return VLC_ENOMEM;    memset( p_sys, 0, sizeof( *p_sys ) );    /* Init p_access */    p_sys->fd_data = -1;    p_sys->out = true;    if( parseURL( &p_sys->url, p_access->psz_path ) )        goto exit_error;    if( Connect( p_this, p_sys ) )        goto exit_error;    /* Start the 'stream' */    if( ftp_StartStream( p_this, p_sys, 0 ) < 0 )    {        msg_Err( p_access, "cannot store file" );        net_Close( p_sys->fd_cmd );        goto exit_error;    }    p_access->pf_seek = OutSeek;    p_access->pf_write = Write;    p_access->p_sys = (void *)p_sys;    return VLC_SUCCESS;exit_error:    vlc_UrlClean( &p_sys->url );    free( p_sys );    return VLC_EGENERIC;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人精品在线观看| 97成人超碰视| 精品久久久久久无| 国产精品一区二区三区99| 欧美高清在线一区| 91看片淫黄大片一级在线观看| 国产精品日日摸夜夜摸av| 91福利在线看| 国产精品一区二区不卡| 中文字幕综合网| 欧美一区二区在线观看| 国产毛片精品视频| 亚洲一区在线视频| 久久久久久一二三区| 在线观看视频91| 成人国产精品视频| 午夜精品福利视频网站 | 欧美日本一区二区| 成人av资源在线| 理论电影国产精品| 亚洲免费视频中文字幕| 日韩女优电影在线观看| 在线看不卡av| 国产ts人妖一区二区| 免费成人你懂的| 亚洲成人7777| 亚洲成人精品一区| 一区二区三区精品视频| 国产精品无遮挡| 久久久久久久免费视频了| 宅男噜噜噜66一区二区66| 99精品久久久久久| 99久久精品免费| av不卡在线播放| 99精品视频在线播放观看| 大美女一区二区三区| 成人app在线| 99久久婷婷国产综合精品| proumb性欧美在线观看| 风间由美一区二区av101| 不卡av电影在线播放| 99精品视频在线播放观看| 欧美在线观看一区二区| 欧美美女一区二区| 精品国产一二三| 中文字幕av资源一区| 国产午夜精品一区二区三区四区 | 在线播放国产精品二区一二区四区 | 欧美日韩亚州综合| 欧美www视频| 亚洲欧洲精品成人久久奇米网| 樱桃视频在线观看一区| 日本不卡不码高清免费观看| 国产精品性做久久久久久| 欧美视频中文一区二区三区在线观看| 欧美日韩在线免费视频| 久久嫩草精品久久久精品| 亚洲精品视频在线看| 蜜臂av日日欢夜夜爽一区| 成年人国产精品| 日韩欧美国产1| 亚洲一区二区三区视频在线 | 亚洲天堂精品在线观看| 久久成人免费网站| 欧美电影在哪看比较好| 一区二区三区高清在线| 国产精品自在在线| 精品sm在线观看| 视频一区二区三区入口| 欧美三级资源在线| 亚洲一区在线观看视频| 色噜噜夜夜夜综合网| 亚洲天堂福利av| 色哟哟亚洲精品| 中文字幕视频一区| 91丨九色丨黑人外教| 国产日韩一级二级三级| www.欧美日韩| 亚洲综合视频在线| 欧美日韩国产天堂| 韩国成人在线视频| 国产偷国产偷精品高清尤物| 国产a级毛片一区| 国产精品久久三区| 99久久精品费精品国产一区二区| 亚洲色图在线看| 91精品国产综合久久香蕉的特点| 免费精品视频最新在线| 国产婷婷一区二区| 视频一区在线播放| 亚洲美女偷拍久久| 日韩午夜电影av| 日韩精品电影一区亚洲| 97久久精品人人澡人人爽| 久久久亚洲高清| 国产真实乱子伦精品视频| 欧美视频中文一区二区三区在线观看| 日韩精品专区在线影院观看| 中文在线一区二区| 日本不卡视频在线| 高清在线不卡av| 日韩一区二区在线观看视频| 亚洲伦理在线精品| 成人动漫一区二区| 自拍偷拍亚洲激情| 国产在线不卡视频| 奇米影视一区二区三区| 日韩理论在线观看| 国产在线视频一区二区| 欧美日韩小视频| 91亚洲精华国产精华精华液| 久久在线免费观看| 色综合网色综合| 亚洲最大成人网4388xx| 东方欧美亚洲色图在线| 亚洲国产中文字幕在线视频综合| 欧美一区二区三区婷婷月色| 99久久精品免费看国产免费软件| 亚洲一区免费在线观看| 亚洲乱码一区二区三区在线观看| 国产欧美一区二区三区在线老狼| 日本久久电影网| 国产资源精品在线观看| 秋霞午夜av一区二区三区| 午夜激情一区二区三区| 亚洲激情五月婷婷| 亚洲午夜久久久| 日韩精品色哟哟| 国产主播一区二区| av电影在线观看一区| 欧美一区二区三区在线看| 欧美日高清视频| 欧美精品一区二区久久久| 国产综合色产在线精品| 国产麻豆日韩欧美久久| 色综合色狠狠天天综合色| 欧美日韩黄视频| 欧美精品一区二区三区久久久| 精品捆绑美女sm三区| 自拍偷拍欧美激情| 久久超级碰视频| 亚洲第一搞黄网站| 国产99久久久国产精品免费看| 日韩欧美中文字幕制服| 九色porny丨国产精品| 日韩你懂的在线观看| 久久99精品国产麻豆婷婷洗澡| 欧美xingq一区二区| 国产一区二区在线影院| 欧美激情一二三区| 盗摄精品av一区二区三区| 国产亚洲视频系列| 国产精品一区一区三区| 亚洲精品成人悠悠色影视| 亚洲国产欧美在线人成| 色综合天天性综合| 中文字幕电影一区| 国产麻豆欧美日韩一区| 日韩欧美成人一区| 日韩不卡在线观看日韩不卡视频| 在线视频一区二区免费| 伊人开心综合网| 一本一道综合狠狠老| 亚洲免费伊人电影| 色婷婷综合在线| 亚洲一二三四在线| 欧美一区二区三区在线观看| 天堂一区二区在线| 日韩欧美在线不卡| 国产精选一区二区三区 | 亚洲成a人片综合在线| 3atv在线一区二区三区| 秋霞午夜鲁丝一区二区老狼| 欧美成人精品1314www| 国产成人综合亚洲91猫咪| 国产欧美一区二区精品忘忧草| 国产白丝精品91爽爽久久| 国产精品电影一区二区三区| 97久久精品人人做人人爽| 一区二区三区久久| 日韩欧美一区二区视频| 国产传媒久久文化传媒| 亚洲精品视频在线看| 欧美变态tickling挠脚心| 不卡的av电影在线观看| 日韩中文字幕一区二区三区| 久久久久久久久久久99999| 欧洲一区二区三区在线| 国产suv精品一区二区6| 午夜欧美电影在线观看| 久久久91精品国产一区二区精品 | 美国欧美日韩国产在线播放| 国产精品免费观看视频| 精品国产乱码久久久久久老虎 | 日韩电影在线免费看| 国产精品久久久久9999吃药| 精品久久久久久无| 欧美一区二区福利在线| 欧美日韩视频第一区| 欧美日韩免费观看一区三区|