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

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

?? postlogin.c

?? linux下的輕量級的ftp服務器
?? C
?? 第 1 頁 / 共 4 頁
字號:
static intpasv_active(struct vsf_session* p_sess){  int ret = 0;  if (p_sess->pasv_listen_fd != -1)  {    ret = 1;    if (port_active(p_sess))    {      bug("pasv and port both active");    }  }  return ret;}static voidport_cleanup(struct vsf_session* p_sess){  vsf_sysutil_sockaddr_clear(&p_sess->p_port_sockaddr);}static voidpasv_cleanup(struct vsf_session* p_sess){  if (p_sess->pasv_listen_fd != -1)  {    vsf_sysutil_close(p_sess->pasv_listen_fd);    p_sess->pasv_listen_fd = -1;  }}static voidhandle_pasv(struct vsf_session* p_sess, int is_epsv){  static struct mystr s_pasv_res_str;  static struct vsf_sysutil_sockaddr* s_p_sockaddr;  int bind_retries = 10;  unsigned short the_port = 0;  /* IPPORT_RESERVED */  unsigned short min_port = 1024;  unsigned short max_port = 65535;  int is_ipv6 = vsf_sysutil_sockaddr_is_ipv6(p_sess->p_local_addr);  if (is_epsv && !str_isempty(&p_sess->ftp_arg_str))  {    int argval;    str_upper(&p_sess->ftp_arg_str);    if (str_equal_text(&p_sess->ftp_arg_str, "ALL"))    {      p_sess->epsv_all = 1;      vsf_cmdio_write(p_sess, FTP_EPSVALLOK, "EPSV ALL ok.");      return;    }    argval = vsf_sysutil_atoi(str_getbuf(&p_sess->ftp_arg_str));    if (argval < 1 || argval > 2 || (!is_ipv6 && argval == 2))    {      vsf_cmdio_write(p_sess, FTP_EPSVBAD, "Bad network protocol.");      return;    }  }  pasv_cleanup(p_sess);  port_cleanup(p_sess);  if (is_ipv6)  {    p_sess->pasv_listen_fd = vsf_sysutil_get_ipv6_sock();  }  else  {    p_sess->pasv_listen_fd = vsf_sysutil_get_ipv4_sock();  }  vsf_sysutil_activate_reuseaddr(p_sess->pasv_listen_fd);  if (tunable_pasv_min_port > min_port && tunable_pasv_min_port <= max_port)  {    min_port = tunable_pasv_min_port;  }  if (tunable_pasv_max_port >= min_port && tunable_pasv_max_port < max_port)  {    max_port = tunable_pasv_max_port;  }  while (--bind_retries)  {    int retval;    double scaled_port;    the_port = vsf_sysutil_get_random_byte();    the_port <<= 8;    the_port |= vsf_sysutil_get_random_byte();    scaled_port = (double) min_port;    scaled_port += ((double) the_port / (double) 65536) *                   ((double) max_port - min_port + 1);    the_port = (unsigned short) scaled_port;    vsf_sysutil_sockaddr_clone(&s_p_sockaddr, p_sess->p_local_addr);    vsf_sysutil_sockaddr_set_port(s_p_sockaddr, the_port);    retval = vsf_sysutil_bind(p_sess->pasv_listen_fd, s_p_sockaddr);    if (!vsf_sysutil_retval_is_error(retval))    {      retval = vsf_sysutil_listen(p_sess->pasv_listen_fd, 1);      if (!vsf_sysutil_retval_is_error(retval))      {        break;      }    }    if (vsf_sysutil_get_error() == kVSFSysUtilErrADDRINUSE)    {      continue;    }    die("vsf_sysutil_bind / listen");  }  if (!bind_retries)  {    die("vsf_sysutil_bind");  }  if (is_epsv)  {    str_alloc_text(&s_pasv_res_str, "Entering Extended Passive Mode (|||");    str_append_ulong(&s_pasv_res_str, (unsigned long) the_port);    str_append_text(&s_pasv_res_str, "|)");    vsf_cmdio_write_str(p_sess, FTP_EPSVOK, &s_pasv_res_str);    return;  }  if (tunable_pasv_address != 0)  {    /* Report passive address as specified in configuration */    if (vsf_sysutil_inet_aton(tunable_pasv_address, s_p_sockaddr) == 0)    {      die("invalid pasv_address");    }  }  str_alloc_text(&s_pasv_res_str, "Entering Passive Mode (");  if (!is_ipv6)  {    str_append_text(&s_pasv_res_str, vsf_sysutil_inet_ntop(s_p_sockaddr));  }  else  {    const void* p_v4addr = vsf_sysutil_sockaddr_ipv6_v4(s_p_sockaddr);    if (p_v4addr)    {      str_append_text(&s_pasv_res_str, vsf_sysutil_inet_ntoa(p_v4addr));    }    else    {      str_append_text(&s_pasv_res_str, "0,0,0,0");    }  }  str_replace_char(&s_pasv_res_str, '.', ',');  str_append_text(&s_pasv_res_str, ",");  str_append_ulong(&s_pasv_res_str, the_port >> 8);  str_append_text(&s_pasv_res_str, ",");  str_append_ulong(&s_pasv_res_str, the_port & 255);  str_append_text(&s_pasv_res_str, ")");  vsf_cmdio_write_str(p_sess, FTP_PASVOK, &s_pasv_res_str);}static voidhandle_retr(struct vsf_session* p_sess){  static struct mystr s_mark_str;  static struct vsf_sysutil_statbuf* s_p_statbuf;  struct vsf_transfer_ret trans_ret;  int remote_fd;  int opened_file;  int is_ascii = 0;  filesize_t offset = p_sess->restart_pos;  p_sess->restart_pos = 0;  if (!data_transfer_checks_ok(p_sess))  {    return;  }  if (p_sess->is_ascii && offset != 0)  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL,                    "No support for resume of ASCII transfer.");    return;  }  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  vsf_log_start_entry(p_sess, kVSFLogEntryDownload);  str_copy(&p_sess->log_str, &p_sess->ftp_arg_str);  prepend_path_to_filename(&p_sess->log_str);  if (!vsf_access_check_file(&p_sess->ftp_arg_str))  {    vsf_cmdio_write(p_sess, FTP_NOPERM, "Permission denied.");    return;  }  opened_file = str_open(&p_sess->ftp_arg_str, kVSFSysStrOpenReadOnly);  if (vsf_sysutil_retval_is_error(opened_file))  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Failed to open file.");    return;  }  /* Lock file if required */  if (tunable_lock_upload_files)  {    vsf_sysutil_lock_file_read(opened_file);  }  vsf_sysutil_fstat(opened_file, &s_p_statbuf);  /* No games please */  if (!vsf_sysutil_statbuf_is_regfile(s_p_statbuf))  {    /* Note - pretend open failed */    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Failed to open file.");    /* Irritating FireFox does RETR on directories, so avoid logging this     * very common and noisy case.     */    if (vsf_sysutil_statbuf_is_dir(s_p_statbuf))    {      vsf_log_clear_entry(p_sess);    }    goto file_close_out;  }  /* Now deactive O_NONBLOCK, otherwise we have a problem on DMAPI filesystems   * such as XFS DMAPI.   */  vsf_sysutil_deactivate_noblock(opened_file);  /* Optionally, we'll be paranoid and only serve publicly readable stuff */  if (p_sess->is_anonymous && tunable_anon_world_readable_only &&      !vsf_sysutil_statbuf_is_readable_other(s_p_statbuf))  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Failed to open file.");    goto file_close_out;  }  /* Set the download offset (from REST) if any */  if (offset != 0)  {    vsf_sysutil_lseek_to(opened_file, offset);  }  str_alloc_text(&s_mark_str, "Opening ");  if (tunable_ascii_download_enable && p_sess->is_ascii)  {    str_append_text(&s_mark_str, "ASCII");    is_ascii = 1;  }  else  {    str_append_text(&s_mark_str, "BINARY");  }  str_append_text(&s_mark_str, " mode data connection for ");  str_append_str(&s_mark_str, &p_sess->ftp_arg_str);  str_append_text(&s_mark_str, " (");  str_append_filesize_t(&s_mark_str,                        vsf_sysutil_statbuf_get_size(s_p_statbuf));  str_append_text(&s_mark_str, " bytes).");  remote_fd = get_remote_transfer_fd(p_sess, str_getbuf(&s_mark_str));  if (vsf_sysutil_retval_is_error(remote_fd))  {    goto port_pasv_cleanup_out;  }  trans_ret = vsf_ftpdataio_transfer_file(p_sess, remote_fd,                                          opened_file, 0, is_ascii);  if (vsf_ftpdataio_dispose_transfer_fd(p_sess) != 1 && trans_ret.retval == 0)  {    trans_ret.retval = -2;  }  p_sess->transfer_size = trans_ret.transferred;  /* Log _after_ the blocking dispose call, so we get transfer times right */  if (trans_ret.retval == 0)  {    vsf_log_do_log(p_sess, 1);  }  /* Emit status message _after_ blocking dispose call to avoid buggy FTP   * clients truncating the transfer.   */  if (trans_ret.retval == -1)  {    vsf_cmdio_write(p_sess, FTP_BADSENDFILE, "Failure reading local file.");  }  else if (trans_ret.retval == -2)  {    vsf_cmdio_write(p_sess, FTP_BADSENDNET, "Failure writing network stream.");  }  else  {    vsf_cmdio_write(p_sess, FTP_TRANSFEROK, "File send OK.");  }  check_abor(p_sess);port_pasv_cleanup_out:  port_cleanup(p_sess);  pasv_cleanup(p_sess);file_close_out:  vsf_sysutil_close(opened_file);}static voidhandle_list(struct vsf_session* p_sess){  handle_dir_common(p_sess, 1, 0);}static voidhandle_dir_common(struct vsf_session* p_sess, int full_details, int stat_cmd){  static struct mystr s_option_str;  static struct mystr s_filter_str;  static struct mystr s_dir_name_str;  static struct vsf_sysutil_statbuf* s_p_dirstat;  int dir_allow_read = 1;  struct vsf_sysutil_dir* p_dir = 0;  int retval = 0;  int use_control = 0;  str_empty(&s_option_str);  str_empty(&s_filter_str);  /* By default open the current directory */  str_alloc_text(&s_dir_name_str, ".");  if (!stat_cmd && !data_transfer_checks_ok(p_sess))  {    return;  }  /* Do we have an option? Going to be strict here - the option must come   * first. e.g. "ls -a .." fine, "ls .. -a" not fine   */  if (!str_isempty(&p_sess->ftp_arg_str) &&      str_get_char_at(&p_sess->ftp_arg_str, 0) == '-')  {    /* Chop off the '-' */    str_mid_to_end(&p_sess->ftp_arg_str, &s_option_str, 1);    /* A space will separate options from filter (if any) */    str_split_char(&s_option_str, &s_filter_str, ' ');  }  else  {    /* The argument, if any, is just a filter */    str_copy(&s_filter_str, &p_sess->ftp_arg_str);  }  if (!str_isempty(&s_filter_str))  {    resolve_tilde(&s_filter_str, p_sess);    if (!vsf_access_check_file(&s_filter_str))    {      vsf_cmdio_write(p_sess, FTP_NOPERM, "Permission denied.");      return;    }    /* First check - is it an outright directory, as in "ls /pub" */    p_dir = str_opendir(&s_filter_str);    if (p_dir != 0)    {      /* Listing a directory! */      str_copy(&s_dir_name_str, &s_filter_str);      str_free(&s_filter_str);    }    else    {      struct str_locate_result locate_result =        str_locate_char(&s_filter_str, '/');      if (locate_result.found)      {        /* Includes a path! Reverse scan for / in the arg, to get the         * base directory and filter (if any)         */        str_copy(&s_dir_name_str, &s_filter_str);        str_split_char_reverse(&s_dir_name_str, &s_filter_str, '/');        /* If we have e.g. "ls /.message", we just ripped off the leading         * slash because it is the only one!         */        if (str_isempty(&s_dir_name_str))        {          str_alloc_text(&s_dir_name_str, "/");        }      }    }  }  if (p_dir == 0)  {    /* NOTE - failure check done below, it's not forgotten */    p_dir = str_opendir(&s_dir_name_str);  }  /* Fine, do it */  if (stat_cmd)  {    use_control = 1;    str_append_char(&s_option_str, 'a');    vsf_cmdio_write_hyphen(p_sess, FTP_STATFILE_OK, "Status follows:");  }  else  {    int remote_fd = get_remote_transfer_fd(      p_sess, "Here comes the directory listing.");    if (vsf_sysutil_retval_is_error(remote_fd))    {      goto dir_close_out;    }  }  if (p_sess->is_anonymous && p_dir && tunable_anon_world_readable_only)  {    vsf_sysutil_dir_stat(p_dir, &s_p_dirstat);    if (!vsf_sysutil_statbuf_is_readable_other(s_p_dirstat))    {      dir_allow_read = 0;    }  }  if (p_dir != 0 && dir_allow_read)  {    retval = vsf_ftpdataio_transfer_dir(p_sess, use_control, p_dir,                                        &s_dir_name_str, &s_option_str,                                        &s_filter_str, full_details);  }  if (!stat_cmd)  {    if (vsf_ftpdataio_dispose_transfer_fd(p_sess) != 1 && retval == 0)    {      retval = -1;    }  }  if (stat_cmd)  {    vsf_cmdio_write(p_sess, FTP_STATFILE_OK, "End of status");  }  else if (p_dir == 0 || !dir_allow_read)  {    vsf_cmdio_write(p_sess, FTP_TRANSFEROK,                    "Transfer done (but failed to open directory).");  }  else if (retval == 0)  {    vsf_cmdio_write(p_sess, FTP_TRANSFEROK, "Directory send OK.");  }  else  {    vsf_cmdio_write(p_sess, FTP_BADSENDNET, "Failure writing network stream.");  }  check_abor(p_sess);dir_close_out:  if (p_dir)  {    vsf_sysutil_closedir(p_dir);  }  if (!stat_cmd)  {    port_cleanup(p_sess);    pasv_cleanup(p_sess);  }}static voidhandle_type(struct vsf_session* p_sess){  str_upper(&p_sess->ftp_arg_str);  if (str_equal_text(&p_sess->ftp_arg_str, "I") ||      str_equal_text(&p_sess->ftp_arg_str, "L8") ||      str_equal_text(&p_sess->ftp_arg_str, "L 8"))  {    p_sess->is_ascii = 0;    vsf_cmdio_write(p_sess, FTP_TYPEOK, "Switching to Binary mode.");  }  else if (str_equal_text(&p_sess->ftp_arg_str, "A") ||           str_equal_text(&p_sess->ftp_arg_str, "A N"))  {    p_sess->is_ascii = 1;    vsf_cmdio_write(p_sess, FTP_TYPEOK, "Switching to ASCII mode.");  }  else  {    vsf_cmdio_write(p_sess, FTP_BADCMD, "Unrecognised TYPE command.");  }}static voidhandle_port(struct vsf_session* p_sess){  unsigned short the_port;  unsigned char vals[6];  const unsigned char* p_raw;  pasv_cleanup(p_sess);  port_cleanup(p_sess);  p_raw = vsf_sysutil_parse_uchar_string_sep(&p_sess->ftp_arg_str, ',', vals,                                             sizeof(vals));  if (p_raw == 0)  {    vsf_cmdio_write(p_sess, FTP_BADCMD, "Illegal PORT command.");    return;  }  the_port = vals[4] << 8;  the_port |= vals[5];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清不卡视频| 欧美精品一区二| 制服丝袜日韩国产| 国产女人aaa级久久久级| 亚洲美女区一区| 国产精品影视网| 欧美高清视频一二三区| 国产精品久久久久久久久免费相片 | 亚洲人成7777| 国产制服丝袜一区| 欧美老肥妇做.爰bbww| 国产精品理论片在线观看| 日韩**一区毛片| 91美女福利视频| 国产日本亚洲高清| 久久国产精品99精品国产| 色欧美乱欧美15图片| 国产精品日韩成人| 国产一区二区久久| 久久久久久久性| 亚洲午夜日本在线观看| 成人黄色软件下载| 久久奇米777| 日韩国产欧美视频| 欧美日韩一区中文字幕| 亚洲天堂免费在线观看视频| 国产一区不卡精品| 精品国产麻豆免费人成网站| 日韩在线a电影| 精品视频在线免费看| 一区二区三区精品| 欧美在线观看你懂的| 亚洲成人在线免费| 在线观看国产一区二区| 亚洲精品日产精品乱码不卡| 波多野结衣91| 亚洲男人天堂av网| 色婷婷激情一区二区三区| 自拍偷拍欧美精品| 91麻豆国产福利精品| 一区二区三区在线不卡| 在线观看日韩一区| 午夜视频在线观看一区二区三区| 一本久久精品一区二区| 亚洲精品国产精华液| 在线亚洲人成电影网站色www| 亚洲婷婷在线视频| 欧美亚洲日本一区| 日韩有码一区二区三区| 欧美不卡一二三| 国产精品亚洲а∨天堂免在线| 国产午夜亚洲精品理论片色戒 | 亚洲女厕所小便bbb| 色综合天天天天做夜夜夜夜做| 成人欧美一区二区三区视频网页| 91麻豆免费在线观看| 一区二区三区在线观看动漫| 欧美色大人视频| 日韩综合在线视频| 久久综合九色综合欧美亚洲| 国产91精品免费| 依依成人精品视频| 日韩欧美视频一区| 欧美精品日韩综合在线| 国产一区二区福利| 亚洲欧美激情视频在线观看一区二区三区| 色哟哟一区二区在线观看| 婷婷久久综合九色综合伊人色| 欧美一区二区三区在线观看| 国产不卡高清在线观看视频| 亚洲精品写真福利| 欧美mv日韩mv国产网站| 成人h精品动漫一区二区三区| 亚洲人精品午夜| 日韩欧美国产一二三区| 波多野结衣在线一区| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品网站在线| 日韩视频一区二区在线观看| 成人免费视频视频| 日韩黄色一级片| ...av二区三区久久精品| 日韩一区二区三区精品视频| 99精品视频中文字幕| 免费亚洲电影在线| 一区二区三区四区激情| 26uuu欧美| 欧美日韩国产成人在线免费| 成人性视频免费网站| 日本免费新一区视频| **网站欧美大片在线观看| 欧美不卡视频一区| 欧美精品色综合| 91欧美一区二区| 国产高清在线精品| 免费观看成人av| 亚洲一区二区偷拍精品| 亚洲国产精品黑人久久久| 欧美va亚洲va香蕉在线| 欧美日韩精品三区| 在线一区二区观看| 99久久精品免费看| 粉嫩av一区二区三区粉嫩 | 亚洲成人精品一区| 国产精品国产三级国产普通话三级| 日韩三级高清在线| 欧美日韩视频专区在线播放| 99久久婷婷国产| 成人性生交大片免费看中文 | 亚洲综合图片区| 国产精品无人区| 久久综合色天天久久综合图片| 欧美日韩国产另类不卡| 色屁屁一区二区| 91麻豆自制传媒国产之光| a在线欧美一区| 不卡av在线网| 99视频精品在线| av中文字幕一区| 成人激情免费网站| 成人福利电影精品一区二区在线观看| 国产精品资源站在线| 韩国女主播成人在线| 国产精品综合一区二区| 国产精品一区专区| 国产激情一区二区三区桃花岛亚洲| 国模无码大尺度一区二区三区| 久久99久久99| 国产精品99久久久久久久女警| 国产成人自拍网| aa级大片欧美| 欧美亚洲精品一区| 欧美一区二区视频在线观看| 91精品国产高清一区二区三区| 欧美一区二区三区视频免费 | 欧美成人艳星乳罩| 久久影院午夜论| 国产精品人成在线观看免费| 亚洲日本乱码在线观看| 亚洲午夜免费福利视频| 麻豆精品在线观看| 成人不卡免费av| 色婷婷精品久久二区二区蜜臀av| 欧美日韩你懂得| 久久综合久久久久88| 亚洲三级视频在线观看| 亚洲va国产天堂va久久en| 久久激情综合网| 99天天综合性| 91精品国产黑色紧身裤美女| 国产日韩欧美电影| 亚洲综合免费观看高清完整版 | 精品蜜桃在线看| 国产精品看片你懂得| 一区二区三区**美女毛片| 青青草成人在线观看| 成人国产一区二区三区精品| 欧美在线不卡视频| 欧美精品一区二区三| 亚洲欧洲精品一区二区三区| 日韩制服丝袜av| 成人福利视频网站| 日韩三级精品电影久久久| 国产精品欧美久久久久无广告| 亚洲国产日韩一区二区| 国产99久久久久| 欧美三级欧美一级| 国产精品女上位| 久久99精品久久久| 在线观看欧美日本| 中文欧美字幕免费| 毛片av一区二区| 色婷婷av一区二区三区gif| 久久婷婷久久一区二区三区| 亚洲一级二级在线| 99国产精品久久久久久久久久| 日韩欧美国产一区二区三区| 亚洲一级片在线观看| 成人av午夜影院| 久久综合精品国产一区二区三区| 亚洲无人区一区| 成人激情校园春色| 久久先锋影音av鲁色资源网| 日韩精品亚洲专区| 欧美日韩亚洲丝袜制服| 亚洲欧美日韩国产一区二区三区| 久久www免费人成看片高清| 欧美精品丝袜久久久中文字幕| 中文字幕在线不卡视频| 高清久久久久久| 久久男人中文字幕资源站| 奇米影视一区二区三区小说| 精品视频一区二区三区免费| 亚洲激情图片小说视频| 99久久久国产精品免费蜜臀| 国产欧美精品日韩区二区麻豆天美| 久久成人久久鬼色| 日韩欧美国产麻豆| 美女视频黄久久| 欧美一区二区免费|