[augeas-devel] [PATCH] Lens for vsftpd.conf

David Lutterkort dlutter at redhat.com
Thu May 22 17:29:59 UTC 2008


3 files changed, 78 insertions(+)
lenses/tests/test_vsftpd.aug |   20 ++++++++++++++++++++
lenses/vsftpd.aug            |   29 +++++++++++++++++++++++++++++
tests/root/etc/vsftpd.conf   |   29 +++++++++++++++++++++++++++++


# HG changeset patch
# User David Lutterkort <dlutter at redhat.com>
# Date 1211477357 25200
# Node ID 60026e5ce5ce66ddf4aacb0eed156a3fff9efa24
# Parent  87a1b7b06968fd1cf9ef0a6a2d29203a389c98de
Lens for vsftpd.conf

The lens is very tight, in that it only allows actual options, and knows
what kind of value each option accepts.

diff -r 87a1b7b06968 -r 60026e5ce5ce lenses/tests/test_vsftpd.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/tests/test_vsftpd.aug	Thu May 22 10:29:17 2008 -0700
@@ -0,0 +1,20 @@
+module Test_vsftpd =
+
+test Vsftpd.lns get "listen=YES\nmdtm_write=false\n" = 
+  { "listen" = "YES" }
+  { "mdtm_write" = "false" }
+
+test Vsftpd.lns get "listen=on\n" = *
+
+test Vsftpd.lns get "local_umask=0777\n" = { "local_umask" = "0777" }
+
+test Vsftpd.lns get "listen_port=ftp\n" = *
+
+test Vsftpd.lns get "ftp_username=ftp_user\n" = { "ftp_username" = "ftp_user" }
+
+(* There must not be spaces around the '=' *)
+test Vsftpd.lns get "anon_root = /var/lib/vsftpd/anon" = *
+
+
+
+
diff -r 87a1b7b06968 -r 60026e5ce5ce lenses/vsftpd.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/vsftpd.aug	Thu May 22 10:29:17 2008 -0700
@@ -0,0 +1,29 @@
+(* Parse vsftpd.conf *)
+module Vsftpd =
+  autoload xfm
+
+(* The code in parseconf.c does not seem to allow for trailing whitespace *)
+(* in the config file                                                     *)
+let eol = Util.del_str "\n"
+
+let bool_option_re = /anonymous_enable|local_enable|pasv_enable|port_enable|chroot_local_user|write_enable|anon_upload_enable|anon_mkdir_write_enable|anon_other_write_enable|chown_uploads|connect_from_port_20|xferlog_enable|dirmessage_enable|anon_world_readable_only|async_abor_enable|ascii_upload_enable|ascii_download_enable|one_process_model|xferlog_std_format|pasv_promiscuous|deny_email_enable|chroot_list_enable|setproctitle_enable|text_userdb_names|ls_recurse_enable|log_ftp_protocol|guest_enable|userlist_enable|userlist_deny|use_localtime|check_shell|hide_ids|listen|port_promiscuous|passwd_chroot_enable|no_anon_password|tcp_wrappers|use_sendfile|force_dot_files|listen_ipv6|dual_log_enable|syslog_enable|background|virtual_use_local_privs|session_support|download_enable|dirlist_enable|chmod_enable|secure_email_list_enable|run_as_launching_user|no_log_lock|ssl_enable|allow_anon_ssl|force_local_logins_ssl|force_local_data_ssl|ssl_sslv2|ssl_sslv3|ssl_tlsv1|tilde_user_enable|fo
 rce_anon_logins_ssl|force_anon_data_ssl|mdtm_write|lock_upload_files|pasv_addr_resolve|debug_ssl|require_cert|validate_cert/
+
+let uint_option_re = /accept_timeout|connect_timeout|local_umask|anon_umask|ftp_data_port|idle_session_timeout|data_connection_timeout|pasv_min_port|pasv_max_port|anon_max_rate|local_max_rate|listen_port|max_clients|file_open_mode|max_per_ip|trans_chunk_size|delay_failed_login|delay_successful_login|max_login_fails|chown_upload_mode/
+
+let str_option_re = /secure_chroot_dir|ftp_username|chown_username|xferlog_file|vsftpd_log_file|message_file|nopriv_user|ftpd_banner|banned_email_file|chroot_list_file|pam_service_name|guest_username|userlist_file|anon_root|local_root|banner_file|pasv_address|listen_address|user_config_dir|listen_address6|cmds_allowed|hide_file|deny_file|user_sub_token|email_password_file|rsa_cert_file|dsa_cert_file|ssl_ciphers|rsa_private_key_file|dsa_private_key_file|ca_certs_file/
+
+let bool_value_re = /[yY][eE][sS]|[tT][rR][uU][eE]|1|[nN][oO]|[fF][aA][lL][sS][eE]|0/
+
+let option (k:regexp) (v:regexp) = [ key k . Util.del_str "=" . store v . eol ]
+
+let bool_option = option bool_option_re bool_value_re
+
+let str_option = option str_option_re /[^\n]+/
+
+let uint_option = option uint_option_re /[0-9]+/
+
+let comment = [ del /#.*\n/ "#\n" ]
+
+let lns = (bool_option|str_option|uint_option|comment)*
+
+let xfm = transform lns (incl "/etc/vsftpd.conf")
diff -r 87a1b7b06968 -r 60026e5ce5ce tests/root/etc/vsftpd.conf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/root/etc/vsftpd.conf	Thu May 22 10:29:17 2008 -0700
@@ -0,0 +1,29 @@
+# Standalone mode
+listen=YES
+max_clients=200
+max_per_ip=4
+# Access rights
+anonymous_enable=YES
+local_enable=NO
+write_enable=NO
+anon_upload_enable=NO
+anon_mkdir_write_enable=NO
+anon_other_write_enable=NO
+# Security
+anon_world_readable_only=YES
+connect_from_port_20=YES
+hide_ids=YES
+pasv_min_port=50000
+pasv_max_port=60000
+# Features
+xferlog_enable=YES
+ls_recurse_enable=NO
+ascii_download_enable=NO
+async_abor_enable=YES
+# Performance
+one_process_model=YES
+idle_session_timeout=120
+data_connection_timeout=300
+accept_timeout=60
+connect_timeout=60
+anon_max_rate=50000




More information about the augeas-devel mailing list