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

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

?? postlogin.c

?? linux下的輕量級的ftp服務器
?? C
?? 第 1 頁 / 共 4 頁
字號:
  vsf_sysutil_sockaddr_clone(&p_sess->p_port_sockaddr, p_sess->p_local_addr);  vsf_sysutil_sockaddr_set_ipv4addr(p_sess->p_port_sockaddr, vals);  vsf_sysutil_sockaddr_set_port(p_sess->p_port_sockaddr, the_port);  /* SECURITY:   * 1) Reject requests not connecting to the control socket IP   * 2) Reject connects to privileged ports   */  if (!tunable_port_promiscuous)  {    if (!vsf_sysutil_sockaddr_addr_equal(p_sess->p_remote_addr,                                         p_sess->p_port_sockaddr) ||        vsf_sysutil_is_port_reserved(the_port))    {      vsf_cmdio_write(p_sess, FTP_BADCMD, "Illegal PORT command.");      port_cleanup(p_sess);      return;    }  }  vsf_cmdio_write(p_sess, FTP_PORTOK,                  "PORT command successful. Consider using PASV.");}static voidhandle_stor(struct vsf_session* p_sess){  handle_upload_common(p_sess, 0, 0);}static voidhandle_upload_common(struct vsf_session* p_sess, int is_append, int is_unique){  static struct vsf_sysutil_statbuf* s_p_statbuf;  static struct mystr s_filename;  struct mystr* p_filename;  struct vsf_transfer_ret trans_ret;  int new_file_fd;  int remote_fd;  int success = 0;  int created = 0;  filesize_t offset = p_sess->restart_pos;  p_sess->restart_pos = 0;  if (!data_transfer_checks_ok(p_sess))  {    return;  }  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  p_filename = &p_sess->ftp_arg_str;  if (is_unique)  {    get_unique_filename(&s_filename, p_filename);    p_filename = &s_filename;  }  vsf_log_start_entry(p_sess, kVSFLogEntryUpload);  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_filename))  {    vsf_cmdio_write(p_sess, FTP_NOPERM, "Permission denied.");    return;  }  /* NOTE - actual file permissions will be governed by the tunable umask */  /* XXX - do we care about race between create and chown() of anonymous   * upload?   */  if (is_unique || (p_sess->is_anonymous && !tunable_anon_other_write_enable))  {    new_file_fd = str_create(p_filename);  }  else  {    /* For non-anonymous, allow open() to overwrite or append existing files */    if (!is_append && offset == 0)    {      new_file_fd = str_create_overwrite(p_filename);    }    else    {      new_file_fd = str_create_append(p_filename);    }  }  if (vsf_sysutil_retval_is_error(new_file_fd))  {    vsf_cmdio_write(p_sess, FTP_UPLOADFAIL, "Could not create file.");    return;  }  created = 1;  vsf_sysutil_fstat(new_file_fd, &s_p_statbuf);  if (vsf_sysutil_statbuf_is_regfile(s_p_statbuf))  {    /* Now deactive O_NONBLOCK, otherwise we have a problem on DMAPI filesystems     * such as XFS DMAPI.     */    vsf_sysutil_deactivate_noblock(new_file_fd);  }  /* Are we required to chown() this file for security? */  if (p_sess->is_anonymous && tunable_chown_uploads)  {    vsf_sysutil_fchmod(new_file_fd, tunable_chown_upload_mode);    if (tunable_one_process_model)    {      vsf_one_process_chown_upload(p_sess, new_file_fd);    }    else    {      vsf_two_process_chown_upload(p_sess, new_file_fd);    }  }  /* Are we required to lock this file? */  if (tunable_lock_upload_files)  {    vsf_sysutil_lock_file_write(new_file_fd);  }  if (!is_append && offset != 0)  {    /* XXX - warning, allows seek past end of file! Check for seek > size? */    vsf_sysutil_lseek_to(new_file_fd, offset);  }  if (is_unique)  {    struct mystr resp_str = INIT_MYSTR;    str_alloc_text(&resp_str, "FILE: ");    str_append_str(&resp_str, p_filename);    remote_fd = get_remote_transfer_fd(p_sess, str_getbuf(&resp_str));    str_free(&resp_str);  }  else  {    remote_fd = get_remote_transfer_fd(p_sess, "Ok to send data.");  }  if (vsf_sysutil_retval_is_error(remote_fd))  {    goto port_pasv_cleanup_out;  }  if (tunable_ascii_upload_enable && p_sess->is_ascii)  {    trans_ret = vsf_ftpdataio_transfer_file(p_sess, remote_fd,                                            new_file_fd, 1, 1);  }  else  {    trans_ret = vsf_ftpdataio_transfer_file(p_sess, remote_fd,                                            new_file_fd, 1, 0);  }  if (vsf_ftpdataio_dispose_transfer_fd(p_sess) != 1 && trans_ret.retval == 0)  {    trans_ret.retval = -2;  }  p_sess->transfer_size = trans_ret.transferred;  if (trans_ret.retval == 0)  {    success = 1;    vsf_log_do_log(p_sess, 1);  }  if (trans_ret.retval == -1)  {    vsf_cmdio_write(p_sess, FTP_BADSENDFILE, "Failure writing to local file.");  }  else if (trans_ret.retval == -2)  {    vsf_cmdio_write(p_sess, FTP_BADSENDNET, "Failure reading network stream.");  }  else  {    vsf_cmdio_write(p_sess, FTP_TRANSFEROK, "File receive OK.");  }  check_abor(p_sess);port_pasv_cleanup_out:  port_cleanup(p_sess);  pasv_cleanup(p_sess);  if (tunable_delete_failed_uploads && created && !success)  {    str_unlink(p_filename);  }  vsf_sysutil_close(new_file_fd);}static voidhandle_mkd(struct vsf_session* p_sess){  int retval;  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  vsf_log_start_entry(p_sess, kVSFLogEntryMkdir);  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;  }  /* NOTE! Actual permissions will be governed by the tunable umask */  retval = str_mkdir(&p_sess->ftp_arg_str, 0777);  if (retval != 0)  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL,                    "Create directory operation failed.");    return;  }  vsf_log_do_log(p_sess, 1);  {    static struct mystr s_mkd_res;    static struct mystr s_tmp_str;    str_copy(&s_tmp_str, &p_sess->ftp_arg_str);    prepend_path_to_filename(&s_tmp_str);    /* Double up double quotes */    str_replace_text(&s_tmp_str, "\"", "\"\"");    /* Build result string */    str_alloc_text(&s_mkd_res, "\"");    str_append_str(&s_mkd_res, &s_tmp_str);    str_append_text(&s_mkd_res, "\" created");    vsf_cmdio_write_str(p_sess, FTP_MKDIROK, &s_mkd_res);  }}static voidhandle_rmd(struct vsf_session* p_sess){  int retval;  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  vsf_log_start_entry(p_sess, kVSFLogEntryRmdir);  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;  }  retval = str_rmdir(&p_sess->ftp_arg_str);  if (retval != 0)  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL,                    "Remove directory operation failed.");  }  else  {    vsf_log_do_log(p_sess, 1);    vsf_cmdio_write(p_sess, FTP_RMDIROK,                    "Remove directory operation successful.");  }}static voidhandle_dele(struct vsf_session* p_sess){  int retval;  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  vsf_log_start_entry(p_sess, kVSFLogEntryDelete);  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;  }  retval = str_unlink(&p_sess->ftp_arg_str);  if (retval != 0)  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Delete operation failed.");  }  else  {    vsf_log_do_log(p_sess, 1);    vsf_cmdio_write(p_sess, FTP_DELEOK, "Delete operation successful.");  }}static voidhandle_rest(struct vsf_session* p_sess){  static struct mystr s_rest_str;  filesize_t val = str_a_to_filesize_t(&p_sess->ftp_arg_str);  if (val < 0)  {    val = 0;  }  p_sess->restart_pos = val;  str_alloc_text(&s_rest_str, "Restart position accepted (");  str_append_filesize_t(&s_rest_str, val);  str_append_text(&s_rest_str, ").");  vsf_cmdio_write_str(p_sess, FTP_RESTOK, &s_rest_str);}static voidhandle_rnfr(struct vsf_session* p_sess){  static struct vsf_sysutil_statbuf* p_statbuf;  int retval;  /* Clear old value */  str_free(&p_sess->rnfr_filename_str);  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  if (!vsf_access_check_file(&p_sess->ftp_arg_str))  {    vsf_log_start_entry(p_sess, kVSFLogEntryRename);    str_copy(&p_sess->log_str, &p_sess->ftp_arg_str);    prepend_path_to_filename(&p_sess->log_str);    vsf_cmdio_write(p_sess, FTP_NOPERM, "Permission denied.");    return;  }  /* Does it exist? */  retval = str_stat(&p_sess->ftp_arg_str, &p_statbuf);  if (retval == 0)  {    /* Yes */    str_copy(&p_sess->rnfr_filename_str, &p_sess->ftp_arg_str);    vsf_cmdio_write(p_sess, FTP_RNFROK, "Ready for RNTO.");  }  else  {    vsf_log_start_entry(p_sess, kVSFLogEntryRename);    str_copy(&p_sess->log_str, &p_sess->ftp_arg_str);    prepend_path_to_filename(&p_sess->log_str);    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "RNFR command failed.");  }}static voidhandle_rnto(struct vsf_session* p_sess){  static struct mystr s_tmp_str;  int retval;  /* If we didn't get a RNFR, throw a wobbly */  if (str_isempty(&p_sess->rnfr_filename_str))  {    vsf_cmdio_write(p_sess, FTP_NEEDRNFR,                    "RNFR required first.");    return;  }  resolve_tilde(&p_sess->ftp_arg_str, p_sess);  vsf_log_start_entry(p_sess, kVSFLogEntryRename);  str_copy(&p_sess->log_str, &p_sess->rnfr_filename_str);  prepend_path_to_filename(&p_sess->log_str);  str_append_char(&p_sess->log_str, ' ');  str_copy(&s_tmp_str, &p_sess->ftp_arg_str);  prepend_path_to_filename(&s_tmp_str);  str_append_str(&p_sess->log_str, &s_tmp_str);  if (!vsf_access_check_file(&p_sess->ftp_arg_str))  {    vsf_cmdio_write(p_sess, FTP_NOPERM, "Permission denied.");    return;  }  /* NOTE - might overwrite destination file. Not a concern because the same   * could be accomplished with DELE.   */  retval = str_rename(&p_sess->rnfr_filename_str, &p_sess->ftp_arg_str);  /* Clear the RNFR filename; start the two stage process again! */  str_free(&p_sess->rnfr_filename_str);  if (retval == 0)  {    vsf_log_do_log(p_sess, 1);    vsf_cmdio_write(p_sess, FTP_RENAMEOK, "Rename successful.");  }  else  {    vsf_cmdio_write(p_sess, FTP_FILEFAIL, "Rename failed.");  }}static voidhandle_nlst(struct vsf_session* p_sess){  handle_dir_common(p_sess, 0, 0);}static voidprepend_path_to_filename(struct mystr* p_str){  static struct mystr s_tmp_str;  /* Only prepend current working directory if the incoming filename is   * relative   */  str_empty(&s_tmp_str);  if (str_isempty(p_str) || str_get_char_at(p_str, 0) != '/')  {    str_getcwd(&s_tmp_str);    /* Careful to not emit // if we are in directory / (common with chroot) */    if (str_isempty(&s_tmp_str) ||        str_get_char_at(&s_tmp_str, str_getlen(&s_tmp_str) - 1) != '/')    {      str_append_char(&s_tmp_str, '/');    }  }  str_append_str(&s_tmp_str, p_str);  str_copy(p_str, &s_tmp_str);}static voidhandle_sigurg(void* p_private){  struct mystr async_cmd_str = INIT_MYSTR;  struct mystr async_arg_str = INIT_MYSTR;  struct mystr real_cmd_str = INIT_MYSTR;  unsigned int len;  struct vsf_session* p_sess = (struct vsf_session*) p_private;  /* Did stupid client sent something OOB without a data connection? */  if (p_sess->data_fd == -1)  {    return;  }  /* Get the async command - blocks (use data timeout alarm) */  vsf_cmdio_get_cmd_and_arg(p_sess, &async_cmd_str, &async_arg_str, 0);  /* Chop off first four characters; they are telnet characters. The client   * should have sent the first two normally and the second two as urgent   * data.   */  len = str_getlen(&async_cmd_str);  if (len >= 4)  {    str_right(&async_cmd_str, &real_cmd_str, len - 4);  }  if (str_equal_text(&real_cmd_str, "ABOR"))  {    p_sess->abor_received = 1;    /* This is failok because of a small race condition; the SIGURG might     * be raised after the data socket is closed, but before data_fd is     * set to -1.     */    vsf_sysutil_shutdown_failok(p_sess->data_fd);  }  else  {    /* Sorry! */    vsf_cmdio_write(p_sess, FTP_BADCMD, "Unknown command.");  }  str_free(&async_cmd_str);  str_free(&async_arg_str);  str_free(&real_cmd_str);}static intget_remote_transfer_fd(struct vsf_session* p_sess, const char* p_status_msg){  int remote_fd;  if (!pasv_active(p_sess) && !port_active(p_sess))  {    bug("neither PORT nor PASV active in get_remote_transfer_fd");  }  p_sess->abor_received = 0;  if (pasv_active(p_sess))  {    remote_fd = vsf_ftpdataio_get_pasv_fd(p_sess);  }  else  {    remote_fd = vsf_ftpdataio_get_port_fd(p_sess);  }  if (vsf_sysutil_retval_is_error(remote_fd))  {    return remote_fd;  }  vsf_cmdio_write(p_sess, FTP_DATACONN, p_status_msg);  if (vsf_ftpdataio_post_mark_connect(p_sess) != 1)  {    vsf_ftpdataio_dispose_transfer_fd(p_sess);    return -1;  }  return remote_fd;}static voidcheck_abor(struct vsf_session* p_sess){  /* If the client sent ABOR, respond to it here */  if (p_sess->abor_received)  {    p_sess->abor_received = 0;    vsf_cmdio_write(p_sess, FTP_ABOROK, "ABOR successful.");  }}static voidhandle_size(struct vsf_session* p_sess){  /* Note - in ASCII mode, are supposed to return the size after taking into

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女被吸乳得到大胸91| 国产日韩欧美亚洲| 色婷婷精品久久二区二区蜜臀av| 狠狠色综合播放一区二区| 人妖欧美一区二区| 男男gaygay亚洲| 国产在线观看一区二区| 国产精品一区一区三区| 国产成人在线网站| 成人av免费网站| 91官网在线免费观看| 欧美日韩精品福利| 欧美成人三级电影在线| 欧美电影免费观看高清完整版在线 | 懂色av中文一区二区三区| 国产乱码精品一品二品| 成人涩涩免费视频| 在线观看免费一区| 日韩欧美国产系列| 国产欧美日韩亚州综合| 亚洲精品免费看| 午夜伦欧美伦电影理论片| 看片的网站亚洲| 粉嫩13p一区二区三区| 在线欧美日韩精品| 日韩一区二区精品在线观看| 欧美经典一区二区三区| 一区二区三区不卡在线观看| 麻豆精品视频在线| 欧美日韩精品一区二区三区蜜桃 | 欧美一区二区三区白人| 精品福利视频一区二区三区| 国产精品久久毛片av大全日韩| 亚洲一区二区成人在线观看| 久久99久久99精品免视看婷婷| 成人精品亚洲人成在线| 欧美猛男超大videosgay| 久久亚洲一区二区三区四区| 一区二区三区中文在线观看| 麻豆91在线播放| 在线观看一区不卡| 2022国产精品视频| 亚洲国产精品视频| 成人爽a毛片一区二区免费| 欧美日产国产精品| 中文字幕永久在线不卡| 精品一区二区免费在线观看| 一本大道综合伊人精品热热 | 国产精品国产三级国产aⅴ中文 | 日韩美女一区二区三区四区| 亚洲久本草在线中文字幕| 国产一区二区不卡在线 | 欧美mv和日韩mv国产网站| 一区二区三区四区五区视频在线观看| 久久91精品国产91久久小草| 欧美主播一区二区三区美女| 国产精品欧美一区喷水| 国内精品写真在线观看| 制服丝袜激情欧洲亚洲| 亚洲高清一区二区三区| 色婷婷av久久久久久久| 国产精品久久久一区麻豆最新章节| 麻豆成人免费电影| 欧美一区二区三区日韩视频| 亚洲成人久久影院| 91成人在线观看喷潮| 国产精品理论片| 成人综合婷婷国产精品久久 | 日韩精品成人一区二区在线| 色综合久久久久久久久| 国产精品福利av| caoporm超碰国产精品| 亚洲国产精品av| 成人免费视频视频在线观看免费| 久久网这里都是精品| 国产一区视频导航| 欧美精品一区二区不卡 | 91农村精品一区二区在线| 国产精品你懂的| 97成人超碰视| 亚洲精品国产a| 在线视频欧美精品| 五月婷婷激情综合| 日韩免费在线观看| 精品一区二区三区免费毛片爱 | 国产激情一区二区三区四区| 久久免费午夜影院| 91精品国产综合久久国产大片| 亚洲狠狠爱一区二区三区| 欧美乱熟臀69xxxxxx| 免费看欧美美女黄的网站| 久久色在线观看| 99精品欧美一区| 亚洲第一福利一区| 欧美成人三级在线| av电影在线观看完整版一区二区| 中文字幕一区av| 欧美精品日日鲁夜夜添| 精品在线一区二区三区| 国产精品免费网站在线观看| 色哦色哦哦色天天综合| 免费日韩伦理电影| 国产精品女主播在线观看| 欧美偷拍一区二区| 久久91精品久久久久久秒播| 亚洲天堂久久久久久久| 欧美精品乱人伦久久久久久| 国产精品66部| 午夜精品久久久久影视| 欧美极品美女视频| 欧美日韩国产成人在线91| 国产精一区二区三区| 亚洲精品视频在线观看网站| 精品国产亚洲一区二区三区在线观看 | 欧美一区二区私人影院日本| 国产suv一区二区三区88区| 一二三区精品视频| 久久久久成人黄色影片| 欧美日韩激情一区| 99视频在线精品| 久久99精品国产.久久久久| 亚洲另类色综合网站| 久久久久久久久久美女| 欧美老年两性高潮| 91一区一区三区| 国产麻豆精品在线| 香蕉乱码成人久久天堂爱免费| 国产婷婷一区二区| 欧美一区二区视频网站| 色久综合一二码| 国产91精品一区二区麻豆网站| 秋霞成人午夜伦在线观看| 亚洲少妇屁股交4| 久久精品夜色噜噜亚洲a∨| 3d动漫精品啪啪| 欧美在线999| 91丝袜国产在线播放| 成人免费看片app下载| 日本vs亚洲vs韩国一区三区二区| 一区二区欧美视频| 亚洲三级电影网站| 国产精品女人毛片| 国产亚洲一区字幕| 久久久久久毛片| 精品三级av在线| 日韩欧美国产精品| 欧美成人精精品一区二区频| 欧美精品亚洲二区| 欧美猛男男办公室激情| 欧美日韩国产一级片| 欧美日韩免费视频| 欧美日韩精品三区| 欧美精品乱码久久久久久| 欧美午夜宅男影院| 欧美影视一区在线| 欧美日韩aaa| 日韩欧美成人一区二区| 欧美成人国产一区二区| 精品久久久久久亚洲综合网 | 欧洲一区在线观看| 色婷婷综合久久久中文一区二区| 91麻豆视频网站| 在线视频国内一区二区| 欧美人牲a欧美精品| 6080午夜不卡| 精品噜噜噜噜久久久久久久久试看 | 91一区二区在线| 色菇凉天天综合网| 51精品秘密在线观看| 日韩一区二区精品在线观看| 精品国产成人系列| 亚洲国产精品成人综合| 亚洲精品视频在线| 日韩二区三区四区| 国产精品资源在线看| 99v久久综合狠狠综合久久| 欧美性xxxxxx少妇| 精品国产凹凸成av人网站| 中文字幕在线观看不卡| 亚洲一区二区三区不卡国产欧美| 毛片一区二区三区| 成a人片亚洲日本久久| 欧美老年两性高潮| 国产亚洲1区2区3区| 亚洲图片欧美一区| 国产精品综合一区二区三区| 91免费版在线看| 欧美一区二区久久久| 国产精品三级久久久久三级| 亚洲午夜影视影院在线观看| 国产在线国偷精品产拍免费yy | 5月丁香婷婷综合| 日本一区二区三区久久久久久久久不 | 日韩你懂的在线播放| 成人免费小视频| 久久99精品国产麻豆婷婷 | 欧美mv日韩mv国产| 亚洲一区自拍偷拍| 高清国产午夜精品久久久久久| 欧美日韩国产bt|