{"id":13105,"date":"2011-05-01T07:51:07","date_gmt":"2011-05-01T07:51:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/wp-proftpd\/"},"modified":"2020-10-05T23:42:14","modified_gmt":"2020-10-05T23:42:14","slug":"wp-proftpd","status":"publish","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/wp-proftpd\/","author":11679668,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"trunk","tested":"5.1.22","requires":"4.4","requires_php":"","requires_plugins":"","header_name":"WP ProFTPd","header_author":"Derrick Smith","header_description":"","assets_banners_color":"","last_updated":"2020-10-05 23:42:14","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/derrick-smith.com","header_plugin_uri":"https:\/\/derrick-smith.com","header_author_uri":"https:\/\/derrick-smith.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1524,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation"],"tags":{"1.0":{"tag":"1.0","author":"derricksmith01","date":"2020-10-05 17:33:57"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[710,7342],"plugin_category":[44,54],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-13105","plugin","type-plugin","status-publish","hentry","plugin_tags-authentication","plugin_tags-ftp","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_committers-derricksmith01","plugin_committers-int21h"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/wp-proftpd.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WP ProFTPd helps Authenticate ProFTPd users to FTP, SFTP, FTPS sites using the WordPress database.  This plugin creates stored procedures in the WordPress database that can be used to query users, groups and user account information.  A dashboard shows all ProFTP logging information inside the WordPress Administration Portal.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Uses the Wordpress database for ProFTPd authentication<\/li>\n<li>Creates Wordpress user meta to store information about access rights  <\/li>\n<li>Uses stored procedures to securely access the WordPress database<\/li>\n<li>Creates a dashboard to show valuable authentication and FTP operations information<\/li>\n<li>Supports FTP, SFTP, FTPS<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>PHP &gt;= 5.5.0<\/li>\n<li>WordPress &gt;= 4.4<\/li>\n<li>ProFTPd<\/li>\n<li>WP Password Bcrypt<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h3>WP Password Bcrypt Wordpress Plugin Prerequisite<\/h3>\n\n<ol>\n<li>Download latest Bcyrpt plugin at https:\/\/github.com\/roots\/wp-password-bcrypt\/wp-password-bcrypt.php.<\/li>\n<li>Save wp-password-bcrypt.php to \/wp-content\/mu-plugins - Create mu-plugins folder if it does not exist.<\/li>\n<\/ol>\n\n<h3>WP ProFTPd Wordpress Plugin<\/h3>\n\n<ol>\n<li>Download the plugin and upload to you WordPress site.<\/li>\n<li>Install the plugin.<\/li>\n<li>Configure a user for FTP access on the user profile page.\n\n<ul>\n<li>Enabled = True<\/li>\n<li>UID = 2001<\/li>\n<li>GID = 2001<\/li>\n<li>Home Directory = \/srv\/ftp\/{username}<\/li>\n<li>Shell = \/sbin\/nologin<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<h3>ProFTPd<\/h3>\n\n<p>(Ubuntu Installation)\n1. cd \/opt\n2. sudo apt-get -y install build-essential gettext make g++ libwrap0-dev libsasl2-dev python-dev libmysql++-dev libpam0g-dev libssl-dev unixodbc-dev libncurses5-dev libacl1-dev libcap-dev\n3. sudo wget ftp:\/\/ftp.proftpd.org\/distrib\/source\/proftpd-1.3.7a.tar.gz\n4. sudo tar -xvf proftpd-1.3.7a.tar.gz\n5. cd proftpd-1.3.7a\n6. sudo .\/configure --prefix=\/usr --with-includes=\/usr\/include\/mysql --mandir=\/usr\/share\/man --sysconfdir=\/etc\/proftpd --localstatedir=\/var\/run --libexecdir=\/usr\/lib\/proftpd --enable-sendfile --enable-facl --enable-dso --enable-autoshadow --enable-ctrls --with-modules=mod_readme:mod_sql:mod_sql_passwd:mod_exec --enable-ipv6 --enable-nls --build x86_64-linux-gnu --with-shared=mod_unique_id:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_dynmasq:mod_quotatab_sql:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_shaper:mod_sql_passwd:mod_ifsession build_alias=x86_64-linux-gnu CFLAGS=-O2\n7. sudo make install\n8. sudo groupadd -g 46 proftpd\n9. sudo useradd -c proftpd -d \/srv\/ftp -g proftpd -s \/usr\/bin\/proftpdshell -u 46 proftpd\n10. sudo install -v -d -m775 -o proftpd -g proftpd \/srv\/ftp\n11. sudo ln -v -s \/bin\/false \/usr\/bin\/proftpdshell\n12. sudo mkdir -p \/etc\/proftpd\/ssl\n13. sudo mkdir -p \/var\/log\/proftpd\n14. Create file 'proftpd' using your favorite editor, copy script below<\/p>\n\n<pre><code>#!\/bin\/sh\n\n# ProFTPD files\nFTPD_BIN=\/usr\/sbin\/proftpd\nFTPD_CONF=\/etc\/proftpd\/proftpd.conf\nPIDFILE=\/var\/run\/proftpd.pid\n\n# If PIDFILE exists, does it point to a proftpd process?\n\nif [ -f $PIDFILE ]; then\n    pid=`cat $PIDFILE`\nfi\n\nif [ ! -x $FTPD_BIN ]; then\n    echo \"$0: $FTPD_BIN: cannot execute\"\n    exit 1\nfi\n\ncase $1 in\n\n    start)\n        if [ -n \"$pid\" ]; then\n            echo \"$0: proftpd [PID $pid] already running\"\n            exit\n        fi\n\n        if [ -r $FTPD_CONF ]; then\n            echo \"Starting proftpd...\"\n\n            $FTPD_BIN -c $FTPD_CONF\n\n        else\n            echo \"$0: cannot start proftpd -- $FTPD_CONF missing\"\n        fi\n    ;;\n\n    stop)\n        if [ -n \"$pid\" ]; then\n            echo \"Stopping proftpd...\"\n            kill -TERM $pid\n\n        else\n            echo \"$0: proftpd not running\"\n            exit 1\n        fi\n    ;;\n\n    restart)\n        if [ -n \"$pid\" ]; then\n        echo \"Rehashing proftpd configuration\"\n        kill -TERM $pid\n\n        else\n            echo \"$0: proftpd not running\"\n            xit 1\n        fi\n    ;;\n\n    *)\n        echo \"usage: $0 {start|stop|restart}\"\n        exit 1\n    ;;\n\nesac\n\nexit 0\n<\/code><\/pre>\n\n<ol>\n<li><p>Edit file '\/etc\/proftpd\/proftpd.conf' using your favorite editor (FTP Type can be \"ftp\",\"ftps\",\"sftp\" depending on the virtualhost configuration)<\/p>\n\n<pre><code>    &lt;Global&gt;\n        &lt;IfModule mod_sql.c&gt;\n            SQLBackend                      mysql\n            SQLAuthTypes                    bcrypt\n            SQLPasswordEngine               on\n            SQLPasswordEncoding             base64\n            SQLPasswordRounds               8\n            SQLEngine                       on\n            AuthOrder                       mod_sql.c\n            SQLConnectInfo                  {wordpress database name}@localhost {wordpress database user} \"{wordpress database password}\"\n\n            SQLAuthenticate                 users\n            SQLGroupInfo                    wp_proftpd_groups groupname gid members\n\n            SQLUserInfo custom:\/get-user-by-name\n\n            # set min UID and GID - otherwise these are 999 each\n            SQLMinID        500\n\n            # Update count every time user logs in\n            SQLLog PASS updatecount\n            SQLNamedQuery updatecount FREEFORM \"CALL wp_proftpd_update_count('%U')\"\n\n            SqlLogFile \/var\/log\/proftpd\/sql.log\n            SQLLog PASS,DELE,MKD,RETR,RMD,RNFR,RNTO,STOR,APPE extendedlog\n            SQLNamedQuery extendedlog FREEFORM \"CALL wp_proftpd_insert_log('%a', '%U', '%r')\"\n        &lt;\/IfModule&gt;\n    &lt;\/Global&gt;\n\n    &lt;VirtualHost {x.x.x.x}&gt;\n        SQLNamedQuery get-user-by-name FREEFORM \"CALL wp_proftpd_get_ftp_user_by_username('%U','{ftp_type}')\"\n    &lt;\/VirtualHost&gt;\n<\/code><\/pre><\/li>\n<li><p>sudo mv proftpd \/etc\/init.d\/proftpd<\/p><\/li>\n<li>sudo chmod 755 \/etc\/init.d\/proftpd<\/li>\n<li>sudo ln -s \/etc\/init.d\/proftpd \/etc\/init.d\/proftpd_start<\/li>\n<li>sudo mv \/etc\/init.d\/proftpd_start \/etc\/rc5.d<\/li>\n<li>sudo \/etc\/init.d\/proftpd start OR sudo service proftpd start<\/li>\n<\/ol>\n\n<h4>Log File Locations<\/h4>\n\n<ol>\n<li>Proftpd Service = \/var\/log\/proftpd\/proftpd.log<\/li>\n<li>Proftpd SQL = \/var\/log\/proftpd\/sql.log<\/li>\n<li>Proftpd Transfer = \/var\/log\/proftpd\/xfer.log<\/li>\n<\/ol>","raw_excerpt":"WP ProFTPd helps Authenticate ProFTPd users to FTP, SFTP, FTPS sites using the WordPress database.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/13105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=13105"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/derricksmith01"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=13105"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=13105"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=13105"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=13105"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=13105"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=13105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}