tunables.c
上传用户:ig0539
上传日期:2022-05-21
资源大小:181k
文件大小:9k
源码类别:

Ftp客户端

开发平台:

C/C++

  1. /*
  2.  * Part of Very Secure FTPd
  3.  * Licence: GPL v2
  4.  * Author: Chris Evans
  5.  * tunables.c
  6.  */
  7. #include "tunables.h"
  8. #include "sysutil.h"
  9. int tunable_anonymous_enable;
  10. int tunable_local_enable;
  11. int tunable_pasv_enable;
  12. int tunable_port_enable;
  13. int tunable_chroot_local_user;
  14. int tunable_write_enable;
  15. int tunable_anon_upload_enable;
  16. int tunable_anon_mkdir_write_enable;
  17. int tunable_anon_other_write_enable;
  18. int tunable_chown_uploads;
  19. int tunable_connect_from_port_20;
  20. int tunable_xferlog_enable;
  21. int tunable_dirmessage_enable;
  22. int tunable_anon_world_readable_only;
  23. int tunable_async_abor_enable;
  24. int tunable_ascii_upload_enable;
  25. int tunable_ascii_download_enable;
  26. int tunable_one_process_model;
  27. int tunable_xferlog_std_format;
  28. int tunable_pasv_promiscuous;
  29. int tunable_deny_email_enable;
  30. int tunable_chroot_list_enable;
  31. int tunable_setproctitle_enable;
  32. int tunable_text_userdb_names;
  33. int tunable_ls_recurse_enable;
  34. int tunable_log_ftp_protocol;
  35. int tunable_guest_enable;
  36. int tunable_userlist_enable;
  37. int tunable_userlist_deny;
  38. int tunable_use_localtime;
  39. int tunable_check_shell;
  40. int tunable_hide_ids;
  41. int tunable_listen;
  42. int tunable_port_promiscuous;
  43. int tunable_passwd_chroot_enable;
  44. int tunable_no_anon_password;
  45. int tunable_tcp_wrappers;
  46. int tunable_use_sendfile;
  47. int tunable_force_dot_files;
  48. int tunable_listen_ipv6;
  49. int tunable_dual_log_enable;
  50. int tunable_syslog_enable;
  51. int tunable_background;
  52. int tunable_virtual_use_local_privs;
  53. int tunable_session_support;
  54. int tunable_download_enable;
  55. int tunable_dirlist_enable;
  56. int tunable_chmod_enable;
  57. int tunable_secure_email_list_enable;
  58. int tunable_run_as_launching_user;
  59. int tunable_no_log_lock;
  60. int tunable_ssl_enable;
  61. int tunable_allow_anon_ssl;
  62. int tunable_force_local_logins_ssl;
  63. int tunable_force_local_data_ssl;
  64. int tunable_sslv2;
  65. int tunable_sslv3;
  66. int tunable_tlsv1;
  67. int tunable_tilde_user_enable;
  68. int tunable_force_anon_logins_ssl;
  69. int tunable_force_anon_data_ssl;
  70. int tunable_mdtm_write;
  71. int tunable_lock_upload_files;
  72. int tunable_pasv_addr_resolve;
  73. int tunable_debug_ssl;
  74. int tunable_require_cert;
  75. int tunable_validate_cert;
  76. int tunable_strict_ssl_read_eof;
  77. int tunable_strict_ssl_write_shutdown;
  78. int tunable_ssl_request_cert;
  79. int tunable_delete_failed_uploads;
  80. int tunable_implicit_ssl;
  81. int tunable_sandbox;
  82. int tunable_require_ssl_reuse;
  83. int tunable_isolate;
  84. int tunable_isolate_network;
  85. unsigned int tunable_accept_timeout;
  86. unsigned int tunable_connect_timeout;
  87. unsigned int tunable_local_umask;
  88. unsigned int tunable_anon_umask;
  89. unsigned int tunable_ftp_data_port;
  90. unsigned int tunable_idle_session_timeout;
  91. unsigned int tunable_data_connection_timeout;
  92. unsigned int tunable_pasv_min_port;
  93. unsigned int tunable_pasv_max_port;
  94. unsigned int tunable_anon_max_rate;
  95. unsigned int tunable_local_max_rate;
  96. unsigned int tunable_listen_port;
  97. unsigned int tunable_max_clients;
  98. unsigned int tunable_file_open_mode;
  99. unsigned int tunable_max_per_ip;
  100. unsigned int tunable_trans_chunk_size;
  101. unsigned int tunable_delay_failed_login;
  102. unsigned int tunable_delay_successful_login;
  103. unsigned int tunable_max_login_fails;
  104. unsigned int tunable_chown_upload_mode;
  105. const char* tunable_secure_chroot_dir;
  106. const char* tunable_ftp_username;
  107. const char* tunable_chown_username;
  108. const char* tunable_xferlog_file;
  109. const char* tunable_vsftpd_log_file;
  110. const char* tunable_message_file;
  111. const char* tunable_nopriv_user;
  112. const char* tunable_ftpd_banner;
  113. const char* tunable_banned_email_file;
  114. const char* tunable_chroot_list_file;
  115. const char* tunable_pam_service_name;
  116. const char* tunable_guest_username;
  117. const char* tunable_userlist_file;
  118. const char* tunable_anon_root;
  119. const char* tunable_local_root;
  120. const char* tunable_banner_file;
  121. const char* tunable_pasv_address;
  122. const char* tunable_listen_address;
  123. const char* tunable_user_config_dir;
  124. const char* tunable_listen_address6;
  125. const char* tunable_cmds_allowed;
  126. const char* tunable_cmds_denied;
  127. const char* tunable_hide_file;
  128. const char* tunable_deny_file;
  129. const char* tunable_user_sub_token;
  130. const char* tunable_email_password_file;
  131. const char* tunable_rsa_cert_file;
  132. const char* tunable_dsa_cert_file;
  133. const char* tunable_ssl_ciphers;
  134. const char* tunable_rsa_private_key_file;
  135. const char* tunable_dsa_private_key_file;
  136. const char* tunable_ca_certs_file;
  137. static void install_str_setting(const char* p_value, const char** p_storage);
  138. void
  139. tunables_load_defaults()
  140. {
  141.   tunable_anonymous_enable = 1;
  142.   tunable_local_enable = 0;
  143.   tunable_pasv_enable = 1;
  144.   tunable_port_enable = 1;
  145.   tunable_chroot_local_user = 0;
  146.   tunable_write_enable = 0;
  147.   tunable_anon_upload_enable = 0;
  148.   tunable_anon_mkdir_write_enable = 0;
  149.   tunable_anon_other_write_enable = 0;
  150.   tunable_chown_uploads = 0;
  151.   tunable_connect_from_port_20 = 0;
  152.   tunable_xferlog_enable = 0;
  153.   tunable_dirmessage_enable = 0;
  154.   tunable_anon_world_readable_only = 1;
  155.   tunable_async_abor_enable = 0;
  156.   tunable_ascii_upload_enable = 0;
  157.   tunable_ascii_download_enable = 0;
  158.   tunable_one_process_model = 0;
  159.   tunable_xferlog_std_format = 0;
  160.   tunable_pasv_promiscuous = 0;
  161.   tunable_deny_email_enable = 0;
  162.   tunable_chroot_list_enable = 0;
  163.   tunable_setproctitle_enable = 0;
  164.   tunable_text_userdb_names = 0;
  165.   tunable_ls_recurse_enable = 0;
  166.   tunable_log_ftp_protocol = 0;
  167.   tunable_guest_enable = 0;
  168.   tunable_userlist_enable = 0;
  169.   tunable_userlist_deny = 1;
  170.   tunable_use_localtime = 0;
  171.   tunable_check_shell = 1;
  172.   tunable_hide_ids = 0;
  173.   tunable_listen = 0;
  174.   tunable_port_promiscuous = 0;
  175.   tunable_passwd_chroot_enable = 0;
  176.   tunable_no_anon_password = 0;
  177.   tunable_tcp_wrappers = 0;
  178.   tunable_use_sendfile = 1;
  179.   tunable_force_dot_files = 0;
  180.   tunable_listen_ipv6 = 0;
  181.   tunable_dual_log_enable = 0;
  182.   tunable_syslog_enable = 0;
  183.   tunable_background = 0;
  184.   tunable_virtual_use_local_privs = 0;
  185.   tunable_session_support = 0;
  186.   tunable_download_enable = 1;
  187.   tunable_dirlist_enable = 1;
  188.   tunable_chmod_enable = 1;
  189.   tunable_secure_email_list_enable = 0;
  190.   tunable_run_as_launching_user = 0;
  191.   tunable_no_log_lock = 0;
  192.   tunable_ssl_enable = 0;
  193.   tunable_allow_anon_ssl = 0;
  194.   tunable_force_local_logins_ssl = 1;
  195.   tunable_force_local_data_ssl = 1;
  196.   tunable_sslv2 = 0;
  197.   tunable_sslv3 = 0;
  198.   tunable_tlsv1 = 1;
  199.   tunable_tilde_user_enable = 0;
  200.   tunable_force_anon_logins_ssl = 0;
  201.   tunable_force_anon_data_ssl = 0;
  202.   tunable_mdtm_write = 1;
  203.   tunable_lock_upload_files = 1;
  204.   tunable_pasv_addr_resolve = 0;
  205.   tunable_debug_ssl = 0;
  206.   tunable_require_cert = 0;
  207.   tunable_validate_cert = 0;
  208.   tunable_strict_ssl_read_eof = 0;
  209.   tunable_strict_ssl_write_shutdown = 0;
  210.   tunable_ssl_request_cert = 1;
  211.   tunable_delete_failed_uploads = 0;
  212.   tunable_implicit_ssl = 0;
  213.   tunable_sandbox = 0;
  214.   tunable_require_ssl_reuse = 1;
  215.   tunable_isolate = 1;
  216.   tunable_isolate_network = 1;
  217.   tunable_accept_timeout = 60;
  218.   tunable_connect_timeout = 60;
  219.   tunable_local_umask = 077;
  220.   tunable_anon_umask = 077;
  221.   tunable_ftp_data_port = 20;
  222.   tunable_idle_session_timeout = 300;
  223.   tunable_data_connection_timeout = 300;
  224.   /* IPPORT_USERRESERVED + 1 */
  225.   tunable_pasv_min_port = 5001;
  226.   tunable_pasv_max_port = 0;
  227.   tunable_anon_max_rate = 0;
  228.   tunable_local_max_rate = 0;
  229.   /* IPPORT_FTP */
  230.   tunable_listen_port = 21;
  231.   tunable_max_clients = 2000;
  232.   /* -rw-rw-rw- */
  233.   tunable_file_open_mode = 0666;
  234.   tunable_max_per_ip = 50;
  235.   tunable_trans_chunk_size = 0;
  236.   tunable_delay_failed_login = 1;
  237.   tunable_delay_successful_login = 0;
  238.   tunable_max_login_fails = 3;
  239.   /* -rw------- */
  240.   tunable_chown_upload_mode = 0600;
  241.   install_str_setting("/usr/share/empty", &tunable_secure_chroot_dir);
  242.   install_str_setting("ftp", &tunable_ftp_username);
  243.   install_str_setting("root", &tunable_chown_username);
  244.   install_str_setting("/var/log/xferlog", &tunable_xferlog_file);
  245.   install_str_setting("/var/log/vsftpd.log", &tunable_vsftpd_log_file);
  246.   install_str_setting(".message", &tunable_message_file);
  247.   install_str_setting("nobody", &tunable_nopriv_user);
  248.   install_str_setting(0, &tunable_ftpd_banner);
  249.   install_str_setting("/etc/vsftpd.banned_emails", &tunable_banned_email_file);
  250.   install_str_setting("/etc/vsftpd.chroot_list", &tunable_chroot_list_file);
  251.   install_str_setting("ftp", &tunable_pam_service_name);
  252.   install_str_setting("ftp", &tunable_guest_username);
  253.   install_str_setting("/etc/vsftpd.user_list", &tunable_userlist_file);
  254.   install_str_setting(0, &tunable_anon_root);
  255.   install_str_setting(0, &tunable_local_root);
  256.   install_str_setting(0, &tunable_banner_file);
  257.   install_str_setting(0, &tunable_pasv_address);
  258.   install_str_setting(0, &tunable_listen_address);
  259.   install_str_setting(0, &tunable_user_config_dir);
  260.   install_str_setting(0, &tunable_listen_address6);
  261.   install_str_setting(0, &tunable_cmds_allowed);
  262.   install_str_setting(0, &tunable_cmds_denied);
  263.   install_str_setting(0, &tunable_hide_file);
  264.   install_str_setting(0, &tunable_deny_file);
  265.   install_str_setting(0, &tunable_user_sub_token);
  266.   install_str_setting("/etc/vsftpd.email_passwords",
  267.                       &tunable_email_password_file);
  268.   install_str_setting("/usr/share/ssl/certs/vsftpd.pem",
  269.                       &tunable_rsa_cert_file);
  270.   install_str_setting(0, &tunable_dsa_cert_file);
  271.   install_str_setting("DES-CBC3-SHA", &tunable_ssl_ciphers);
  272.   install_str_setting(0, &tunable_rsa_private_key_file);
  273.   install_str_setting(0, &tunable_dsa_private_key_file);
  274.   install_str_setting(0, &tunable_ca_certs_file);
  275. }
  276. void
  277. install_str_setting(const char* p_value, const char** p_storage)
  278. {
  279.   char* p_curr_val = (char*) *p_storage;
  280.   if (p_curr_val != 0)
  281.   {
  282.     vsf_sysutil_free(p_curr_val);
  283.   }
  284.   if (p_value != 0)
  285.   {
  286.     p_value = vsf_sysutil_strdup(p_value);
  287.   }
  288.   *p_storage = p_value;
  289. }