You can subscribe to this list here.
| 2001 |
Jan
(24) |
Feb
(632) |
Mar
(97) |
Apr
(98) |
May
(47) |
Jun
(27) |
Jul
(44) |
Aug
(49) |
Sep
(34) |
Oct
(49) |
Nov
(10) |
Dec
(60) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(40) |
Feb
(68) |
Mar
(12) |
Apr
(20) |
May
(91) |
Jun
(110) |
Jul
(62) |
Aug
(43) |
Sep
(46) |
Oct
(79) |
Nov
(39) |
Dec
(64) |
| 2003 |
Jan
(50) |
Feb
(26) |
Mar
(62) |
Apr
(32) |
May
(54) |
Jun
(34) |
Jul
(29) |
Aug
(39) |
Sep
(58) |
Oct
(104) |
Nov
(19) |
Dec
(18) |
| 2004 |
Jan
(36) |
Feb
(24) |
Mar
(17) |
Apr
(47) |
May
(50) |
Jun
(45) |
Jul
(38) |
Aug
(54) |
Sep
(40) |
Oct
(18) |
Nov
(24) |
Dec
(24) |
| 2005 |
Jan
(33) |
Feb
(31) |
Mar
(38) |
Apr
(27) |
May
(17) |
Jun
(16) |
Jul
(23) |
Aug
(19) |
Sep
(14) |
Oct
(43) |
Nov
(2) |
Dec
(6) |
| 2006 |
Jan
(4) |
Feb
(14) |
Mar
(17) |
Apr
(5) |
May
(10) |
Jun
(9) |
Jul
|
Aug
(7) |
Sep
(10) |
Oct
(2) |
Nov
(18) |
Dec
(7) |
| 2007 |
Jan
(29) |
Feb
(8) |
Mar
(8) |
Apr
(6) |
May
(8) |
Jun
(4) |
Jul
(13) |
Aug
(10) |
Sep
(11) |
Oct
(19) |
Nov
(6) |
Dec
(1) |
| 2008 |
Jan
(4) |
Feb
(9) |
Mar
(9) |
Apr
(13) |
May
|
Jun
(2) |
Jul
(12) |
Aug
(5) |
Sep
(6) |
Oct
(15) |
Nov
(1) |
Dec
(1) |
| 2009 |
Jan
(3) |
Feb
(27) |
Mar
(5) |
Apr
(1) |
May
(55) |
Jun
(23) |
Jul
(4) |
Aug
(2) |
Sep
|
Oct
(2) |
Nov
(9) |
Dec
(2) |
| 2010 |
Jan
(3) |
Feb
(13) |
Mar
(2) |
Apr
(2) |
May
(25) |
Jun
(4) |
Jul
(5) |
Aug
|
Sep
(5) |
Oct
(2) |
Nov
|
Dec
(20) |
| 2011 |
Jan
|
Feb
(1) |
Mar
(2) |
Apr
(5) |
May
(7) |
Jun
(4) |
Jul
(3) |
Aug
(2) |
Sep
(1) |
Oct
(3) |
Nov
(10) |
Dec
(12) |
| 2012 |
Jan
(4) |
Feb
|
Mar
(9) |
Apr
|
May
(2) |
Jun
|
Jul
(1) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
(1) |
Feb
|
Mar
(10) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(8) |
Aug
|
Sep
(4) |
Oct
(1) |
Nov
(2) |
Dec
(3) |
| 2014 |
Jan
(3) |
Feb
|
Mar
|
Apr
(1) |
May
(7) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(2) |
| 2015 |
Jan
|
Feb
(2) |
Mar
|
Apr
(3) |
May
(7) |
Jun
(1) |
Jul
|
Aug
(2) |
Sep
|
Oct
(7) |
Nov
(2) |
Dec
|
| 2016 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
|
Nov
(8) |
Dec
|
| 2017 |
Jan
(4) |
Feb
(9) |
Mar
(11) |
Apr
(9) |
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
(3) |
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
(6) |
Jun
(1) |
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(6) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
(9) |
Apr
(2) |
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(2) |
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(6) |
Jul
|
Aug
|
Sep
(4) |
Oct
(2) |
Nov
|
Dec
(2) |
| 2025 |
Jan
|
Feb
(3) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
| 2026 |
Jan
(2) |
Feb
|
Mar
|
Apr
(21) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Info <in...@fj...> - 2026-04-28 10:29:55
|
# This script is created to work with Debian/DietPi trixie(13) Raspberry Pi 4B 8GB # if [ -z "$1" ]; then echo "Usage: $1 <new-version>" exit 1 fi if [ ! -d "/data" ]; then mddir /data fi cd /data if [ -d "/data/proftpd" ]; then rm -rf ./proftpd fi wget ftp://ftp.proftpd.org/distrib/source/$1.tar.gz tar -xzvf $1.tar.gz mv $1 proftpd rm -rf $1.tar.gz -----Oorspronkelijk bericht----- Van: TJ Saunders <tj...@ca...> Verzonden: dinsdag 28 april 2026 01:37 Aan: pro...@li... CC: ProFTPD Developers <pro...@li...>; ProFTPD Users <pro...@li...> Onderwerp: [Proftpd-devel] ProFTPD 1.3.9a released! -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, ProFTPD community. The ProFTPD Project team is pleased to announce that the first maintenance release for ProFTPD 1.3.9 is now available for public consumption. You can download 1.3.9a, including PGP signatures and SHA256 sums, from GitHub: https://github.com/proftpd/proftpd/archive/v1.3.9a.tar.gz Alternatively, you can download proftpd from the main site: ftp://ftp.proftpd.org/distrib/source The 1.3.9a release is a maintenance release, containing various fixes backported from the 1.3.10 development cycle. Please read the included NEWS and RELEASE_NOTES files for the full details. The SHA256 sum for the source tarball is: bc3c7c47033ecff29f010efc18315d5906eb942d2e673ebce0138a96f11af0b4 proftpd-1.3.9a.tar.gz The PGP signature for the source tarball is: proftpd-1.3.9a.tar.gz: -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/wrgAKCRC3jok/pRGX anVRAKC7DksemDuVm42kjbTW3LasjeGrBgCgjBdq78O4fBUem1bZgsQ6doxurzs= =d4O2 -----END PGP SIGNATURE----- My PGP key has been used to sign the source tarballs as well as this announcement; it is available via MIT's public keyserver. -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/w/gAKCRC3jok/pRGX avpZAJ9Ic84fGSWoUOgjGWgPwg1G90+HIQCg52nhQwdw0/73TEEkrPbnfZkqP8M= =f8iS -----END PGP SIGNATURE----- _______________________________________________ ProFTPD Developers List <pro...@li...> https://lists.sourceforge.net/lists/listinfo/proftp-devel |
|
From: TJ S. <tj...@ca...> - 2026-04-27 23:37:49
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, ProFTPD community. The ProFTPD Project team is pleased to announce that the first maintenance release for ProFTPD 1.3.9 is now available for public consumption. You can download 1.3.9a, including PGP signatures and SHA256 sums, from GitHub: https://github.com/proftpd/proftpd/archive/v1.3.9a.tar.gz Alternatively, you can download proftpd from the main site: ftp://ftp.proftpd.org/distrib/source The 1.3.9a release is a maintenance release, containing various fixes backported from the 1.3.10 development cycle. Please read the included NEWS and RELEASE_NOTES files for the full details. The SHA256 sum for the source tarball is: bc3c7c47033ecff29f010efc18315d5906eb942d2e673ebce0138a96f11af0b4 proftpd-1.3.9a.tar.gz The PGP signature for the source tarball is: proftpd-1.3.9a.tar.gz: -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/wrgAKCRC3jok/pRGX anVRAKC7DksemDuVm42kjbTW3LasjeGrBgCgjBdq78O4fBUem1bZgsQ6doxurzs= =d4O2 -----END PGP SIGNATURE----- My PGP key has been used to sign the source tarballs as well as this announcement; it is available via MIT's public keyserver. -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/w/gAKCRC3jok/pRGX avpZAJ9Ic84fGSWoUOgjGWgPwg1G90+HIQCg52nhQwdw0/73TEEkrPbnfZkqP8M= =f8iS -----END PGP SIGNATURE----- |
|
From: TJ S. <tj...@ca...> - 2026-04-27 23:35:02
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, ProFTPD community. The ProFTPD Project team is pleased to announce that the first release candidate for ProFTPD 1.3.10 is now available for public consumption. You can download 1.3.10rc1, including PGP signature, from GitHub: https://github.com/proftpd/proftpd/archive/v1.3.10rc1.tar.gz Alternatively, you can download proftpd from the main site: ftp://ftp.proftpd.org/distrib/source The 1.3.10rc1 release includes major new features and numerous bugfixes, including: + Fix for SQL injection (CVE-2026-42167) + Disable Nagle algorithm for FTP data transfers + New mod_systemd module for richer systemd interaction Please read the included NEWS and RELEASE_NOTES files for the full details. The SHA256 sum for the source tarball is: 90e32076f175467771b3fd76e8de83b7692d76118f1db3328635866b74bb3785 proftpd-1.3.10rc1.tar.gz The PGP signature for the source tarball is: proftpd-1.3.10rc1.tar.gz: -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/prwAKCRC3jok/pRGX ak1nAKDCRaI8ma9hsMzXzJgXanHwzTjpWQCgwWgB98MprWssK/W1egRdi2yjDBQ= =RNUQ -----END PGP SIGNATURE----- My PGP key has been used to sign the source tarballs as well as this announcement; it is available via MIT's public keyserver. -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQRpfmhNFmjWloQoQFy3jok/pRGXagUCae/qEwAKCRC3jok/pRGX alRcAKD+27IHT/eKsvu2vuA2+/lisDwcNwCfVDFi0JZShRhWY0ojGk4u0FsvPzE= =B1V7 -----END PGP SIGNATURE----- |
|
From: Info <in...@fj...> - 2026-04-26 20:10:46
|
If someone has nothing to do, he can adjust the red in GitHub like the black. it lacks "proftpd-" or any other heading attached to it. I'm going to edit mod_quotatab.c. I am annoyed that things achieved are not possible and according to AI it is quite easy to adjust it. but I've been in the business for over 35 years, so I'm a little suspicious I also added my sql.conf and it now runs on 1.3.9 and I came from 1.3.8c on a raspberry pi 4 8B with dietpi "debian". use it to your advantage I deliberately turned off some things and wants to get some things with a ".c"!!! ********************************************************************************************************************************* echo -e "cd /data/contrib git clone https://github.com/Castaglia/$1 if [ ! -d "$2" ]; then mv $1 $2 fi" > /data/procontrib.sh bash procontrib.sh allegro allegro bash procontrib.sh ansible-influxdb ansible-influxdb bash procontrib.sh archaius archaius bash procontrib.sh astyanax astyanax bash procontrib.sh cert-tool cert-tool bash procontrib.sh cpp-driver cpp-driver bash procontrib.sh gradle-s3-plugin gradle-s3-plugin bash procontrib.sh HuskyMentoringHW HuskyMentoringHW bash procontrib.sh ingress-nginx ingress-nginx bash procontrib.sh libssh2 libssh2 bash procontrib.sh MacOSX-authbind MacOSX-authbind bash procontrib.sh mod_clamav mod_clamav bash procontrib.sh mod_ldap mod_ldap bash procontrib.sh mod_sql_tds mod_sql_tds bash procontrib.sh openssh-portable openssh-portable bash procontrib.sh openssl openssl bash procontrib.sh oss-fuzz oss-fuzz bash procontrib.sh proftpd-mod_amqp mod_amqp bash procontrib.sh proftpd-mod_audit mod_audit bash procontrib.sh proftpd-mod_auth_htpasswd mod_auth_htpasswd bash procontrib.sh proftpd-mod_auth_otp Public mod_auth_otp Public bash procontrib.sh proftpd-mod_auth_policy mod_auth_policy bash procontrib.sh proftpd-mod_autohost mod_autohost bash procontrib.sh proftpd-mod_aws mod_aws bash procontrib.sh proftpd-mod_case mod_case bash procontrib.sh proftpd-mod_cgi mod_cgi bash procontrib.sh proftpd-mod_charset mod_charset bash procontrib.sh proftpd-mod_clamav mod_clamav bash procontrib.sh proftpd-mod_cms mod_cms bash procontrib.sh proftpd-mod_conf_sql mod_conf_sql bash procontrib.sh proftpd-mod_conf_url mod_conf_url bash procontrib.sh proftpd-mod_counter mod_counter bash procontrib.sh proftpd-mod_cppdemo mod_cppdemo bash procontrib.sh proftpd-mod_dbacl mod_dbacl bash procontrib.sh proftpd-mod_digest Public mod_digest Public bash procontrib.sh proftpd-mod_diskuse mod_diskuse bash procontrib.sh proftpd-mod_dnsbl Public mod_dnsbl Public bash procontrib.sh proftpd-mod_enospc mod_enospc bash procontrib.sh proftpd-mod_erase mod_erase bash procontrib.sh proftpd-mod_explain mod_explain bash procontrib.sh proftpd-mod_fault mod_fault bash procontrib.sh proftpd-mod_fsquota mod_fsquota bash procontrib.sh proftpd-mod_fsync mod_fsync bash procontrib.sh proftpd-mod_geoip mod_geoip bash procontrib.sh proftpd-mod_geoip2 mod_geoip2 bash procontrib.sh proftpd-mod_info mod_info bash procontrib.sh proftpd-mod_kafka mod_kafka bash procontrib.sh proftpd-mod_lint mod_lint bash procontrib.sh proftpd-mod_log_failure mod_log_failure bash procontrib.sh proftpd-mod_log_forensic mod_log_forensic bash procontrib.sh proftpd-mod_log_pipe mod_log_pipe bash procontrib.sh proftpd-mod_log_zmq mod_log_zmq bash procontrib.sh proftpd-mod_loiter mod_loiter bash procontrib.sh proftpd-mod_md5 mod_md5 bash procontrib.sh proftpd-mod_mime mod_mime bash procontrib.sh proftpd-mod_msg mod_msg bash procontrib.sh proftpd-mod_p0f mod_p0f bash procontrib.sh proftpd-mod_passwd_update mod_passwd_update bash procontrib.sh proftpd-mod_pool mod_pool bash procontrib.sh proftpd-mod_profiling mod_profiling bash procontrib.sh proftpd-mod_prometheus mod_prometheus bash procontrib.sh proftpd-mod_proxy mod_proxy bash procontrib.sh proftpd-mod_proxy_protocol mod_proxy_protocol bash procontrib.sh proftpd-mod_python mod_python bash procontrib.sh proftpd-mod_rename mod_rename bash procontrib.sh proftpd-mod_rsync mod_rsync bash procontrib.sh proftpd-mod_sftp_ldap mod_sftp_ldap bash procontrib.sh proftpd-mod_sftp_openssh mod_sftp_openssh bash procontrib.sh proftpd-mod_snmp Public mod_snmp Public bash procontrib.sh proftpd-mod_sql_cassandra mod_sql_cassandra bash procontrib.sh proftpd-mod_statcache Public mod_statcache Public bash procontrib.sh proftpd-mod_statsd mod_statsd bash procontrib.sh proftpd-mod_tar mod_tar bash procontrib.sh proftpd-mod_time mod_time bash procontrib.sh proftpd-mod_vroot mod_vroot bash procontrib.sh proftpd-mod_warden mod_warden bash procontrib.sh proftpd-mod_websockets mod_websockets bash procontrib.sh proftpd-mod_xfer_mmap mod_xfer_mmap bash procontrib.sh ScalaBuff ScalaBuff bash procontrib.sh scamandrios scamandrios bash procontrib.sh sensu-plugins-opsgenie sensu-plugins-opsgenie bash procontrib.sh telegraf telegraf ********************************************** # # Proftpd sample configuration for SQL-based authentication. # # (This is not to be used if you prefer a PAM-based SQL authentication) # # http://www.proftpd.org/docs/contrib/mod_quotatab_sql.html # <IfModule mod_sql.c> #SQLOption IgnoreSQLErrors include /etc/proftpd/tls.conf AuthPAMConfig proftpd #Logging of MySql SqlLogFile /var/log/proftpd/sql.log SQLBackend mysql #Type of Passwords in MySQL are OpenSSL Crypt Plaintext Empty Backend SQLAuthTypes Plaintext #SQLAuthenticate = users groups userset groupset SQLAuthenticate users* groups* SQLEngine on #used to connect to the database #Here we tell ProFTPd the names of the database columns in the "usertable". We want it to interact with. Match the names with those in the db #"Active = 1 and disabled = 0 and username<>'-' and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() #and faillock = 1) or faillock = 0) and (loginexpired is null or loginexpired < now())" #and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() and faillock = 1) or faillock = 0) and (loginexpired is null or loginexpired < now()) SQLNamedQuery Userinfo FREEFORM "SELECT u.ftpuserid,u.passwd,0,g.ftpgroupid,u.homedir,u.shell FROM ftpuser u \ INNER JOIN ftpgroupsinusers giu ON u.ftpuserid = giu.ftpuserid \ INNER JOIN ftpgroup g ON giu.ftpuserid = g.ftpgroupid \ WHERE u.username = '%U'" proftpd SQLUserInfo custom:/Userinfo SQLNamedQuery get-groups FREEFORM "SELECT g.groupname, g.ftpgroupid, u.username \ FROM ftpgroup g \ INNER JOIN ftpgroupsinusers giu ON g.ftpgroupid = giu.ftpgroupid \ INNER JOIN ftpuser u ON giu.ftpuserid = u.ftpuserid WHERE u.username='%U'" proftpd SQLGroupInfo custom:/get-groups/get-groups/get-groups # set min UID and GID - otherwise these are 999 each SQLMinUserUID 500 SQLMinUserGID 500 #regester user in database SQLLog PASS login_oke SQLNamedQuery login_oke FREEFORM "INSERT INTO ftplogin(ftpuserid,client_ip,server_ip,protocol) \ SELECT u.ftpuserid, '%a', '%V', '%{protocol}' FROM ftpuser u \ WHERE u.username='%U' and not u.disabled and u.active" proftpd # SQLOptions PERSESSION # SQLNamedQuery get_max SELECT "max_upload_size FROM ftpuser WHERE userid='%U'" # SQLLog PASS get_max # SQLShowInfo PASS "230" "User %U has a max upload limit of %{sql:get_max}." #Get the groupid of the user SQLLog PASS updateftploginid1 SQLNamedQuery updateftploginid1 FREEFORM "UPDATE ftpuser u INNER JOIN ftpgroupsinusers giu ON u.ftpuserid = giu.ftpuserid SET u.gid = giu.ftpgroupid \ WHERE u.username ='%U'" proftpd #Get the last loginid and other stuf for this user SQLLog PASS updateftploginid SQLNamedQuery updateftploginid FREEFORM "UPDATE ftpuser u \ INNER JOIN (SELECT Max(ftpuser.ftpuserid) AS ftpuserid, Max(ftplogin.ftploginid) AS ftploginid \ FROM ftplogin INNER JOIN ftpuser ON ftplogin.ftpuserid = ftpuser.ftpuserid \ WHERE ftpuser.username = '%U' GROUP BY ftpuser.ftpuserid) ftplogindata ON u.ftpuserid = ftplogindata.ftpuserid \ SET u.ftploginid = ftplogindata.ftploginid, \ u.failcount = 0, \ u.count = u.count + 1, \ u.lastperiode = \ CASE WHEN u.lastperiodetype = 1 \ THEN 1 \ WHEN u.lastperiodetype = 2 AND u.lastperiode < (YEAR(NOW()) * 10000) + (MONTH(NOW()) * 100) + (DAY(NOW()) * 100) \ THEN (YEAR(NOW()) * 10000) + (MONTH(NOW()) * 100) + DAY(NOW()) \ WHEN u.lastperiodetype = 3 AND u.lastperiode < (YEAR(NOW()) * 100) + WEEK(NOW()) \ THEN (YEAR(NOW()) * 100) + WEEK(NOW()) \ WHEN u.lastperiodetype = 4 AND u.lastperiode < (YEAR(NOW()) * 100) + MONTH(NOW()) \ THEN (YEAR(NOW()) * 100) + MONTH(NOW()) \ WHEN u.lastperiodetype = 5 AND u.lastperiode < (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/2)+1 \ THEN (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/2)+1 \ WHEN u.lastperiodetype = 6 AND u.lastperiode < (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/3)+1 \ THEN (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/3)+1 \ WHEN u.lastperiodetype = 7 AND u.lastperiode < (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/4)+1 \ THEN (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/4)+1 \ WHEN u.lastperiodetype = 8 AND u.lastperiode < (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/6)+1 \ THEN (YEAR(NOW()) * 10) + FLOOR((MONTH(NOW())-1)/6)+1 \ WHEN u.lastperiodetype = 9 AND u.lastperiode < YEAR(NOW()) \ THEN YEAR(NOW()) \ ELSE u.lastperiode \ END" proftpd #logout log SQLLog EXIT time_logout SQLNamedQuery time_logout FREEFORM "UPDATE ftplogin INNER JOIN ftpuser ON ftplogin.ftploginid = ftpuser.ftploginid SET ftplogin.logoutdate = Now() WHERE ftpuser.username='%U'" proftpd #Get gid id for this user SQLLog PASS updateftploginid SQLNamedQuery updateftploginid FREEFORM "UPDATE (ftpgroupsinusers uig INNER JOIN ftpgroups g ON uig.ftpgroupid = g.ftpgroupid) \ INNER JOIN ftpuser u ON uig.ftpuserid = u.ftpuserid \ SET u.gid = g.gid \ WHERE u.username='%U'" proftpd #login attemt ftp sql user, error password SQLLog ERR_PASS login_error IGNORE_ERRORS SQLNamedQuery login_error FREEFORM "INSERT INTO ftplogin(ftpuserid,client_ip,server_ip,protocol) \ SELECT u.ftpuserid, '%a', '%V', '%{protocol}' FROM ftpuser u \ WHERE u.username='%U' and '%U' <> '%U'" proftpd ##login attemt error non ftp sql user SQLLog ERR_PASS present_error IGNORE_ERRORS SQLNamedQuery present_error FREEFORM "INSERT INTO ftplogin(username,client_ip,server_ip,protocol) \ SELECT '%U','%a', '%V', '%{protocol}' FROM (SELECT count(username) as count,'-' as username FROM ftpuser u \ WHERE u.username='%U') u1 WHERE u1.count = 0" proftpd #login attempts fail count < failmax SQLLog ERR_PASS log_fails0 IGNORE_ERRORS SQLNamedQuery log_fails0 FREEFORM "UPDATE ftpuser u set u.failcount = u.failcount + 1 WHERE u.username = '%U' and not u.disabled and u.active and u.failmax > 0" proftpd #login attempts fail count > failmax disable user SQLLog ERR_PASS log_fails1 IGNORE_ERRORS SQLNamedQuery log_fails1 FREEFORM "UPDATE ftpuser u set u.disabled = True WHERE u.username = '%U' and u.failcount > u.failmax - 1 and u.active and u.failmax > 0" proftpd #Login attempt disabbled user and faillock is true for a periode of time SQLLog ERR_PASS log_fails2 IGNORE_ERRORS SQLNamedQuery log_fails2 FREEFORM "UPDATE ftpuser u set u.loginafter = DATE_ADD(NOW(), INTERVAL loginafterhour HOUR) \ WHERE u.username='%U' and u.disabled and u.active and u.faillock = 1" proftpd #login reset for user who is not active SQLLog ERR_PASS log_fails3 IGNORE_ERRORS SQLNamedQuery log_fails3 FREEFORM "UPDATE ftpuser u set u.disabled = False,u.failcount = 0 WHERE u.username = '%U' and u.active" proftpd #Record downloads %b is Bytes of the file and not regiserd above ? SQLLog RETR recorddownload SQLNamedQuery recorddownload FREEFORM "INSERT INTO ftpfiles(ftploginid,filetype,file,Bytes) \ SELECT u.ftploginid,'download','%f','%b' FROM ftpuser u \ WHERE u.username = '%U' and not u.disabled and u.active" proftpd #Record upload %b is Bytes of the file and not regiserd above ? SQLLog STOR recordupload SQLNamedQuery recordupload FREEFORM "INSERT INTO ftpfiles(ftploginid,filetype,file,Bytes) \ SELECT u.ftploginid,'upload','%f','%b' FROM ftpuser u \ WHERE u.username = '%U' and not u.disabled and u.active" proftpd #Record delete %b is Bytes of the file and not regiserd above ? SQLLog DELE recorddelete SQLNamedQuery recorddelete FREEFORM "INSERT INTO ftpfiles(ftploginid,filetype,file,Bytes) \ SELECT u.ftploginid,'delete','%f','%b' FROM ftpuser u \ WHERE u.username = '%U' and not u.disabled and u.active" proftpd #logging in sql database SQLLog PASS,ERR_PASS,DELE,MKD,RETR,RMD,RNFR,RNTO,STOR,APPE extendedlog SQLNamedQuery extendedlog FREEFORM "INSERT INTO ftplog (ftploginid,operation) \ SELECT u.ftploginid,'%r' FROM ftpuser u \ WHERE u.username = '%U' and not u.disabled and u.active" proftpd <IfModule mod_quotatab.c> QuotaLog /var/log/proftpd/quota.log QuotaEngine on Trace quotatab:20 sql:20 #Execute the reset-quota-tally every time a user provides a correct password and there is a new lastperiode with the correct lastperiodetype SQLLog PASS update-quota-lastperiode SQLNamedQuery update-quota-lastperiode FREEFORM "UPDATE ftpuser u INNER JOIN ftpquotatallies qt ON u.ftpuserid = qt.ftpdbid \ SET qt.files_in_used = 0 \ ,qt.files_out_used = 0 \ ,qt.files_xfer_used = 0 \ ,qt.bytes_in_used = 0 \ ,qt.bytes_out_used = 0 \ ,qt.bytes_xfer_used = 0 \ WHERE If(u.lastperiode = qt.lastperiode,If(u.lastperiodetype = qt.lastperiodetype,False,True),True)=True \ AND u.ftpuserid = qt.ftpdbid AND NOT u.lastperiodetype = 0 AND u.username='%U'" proftpd #delete the tallies if there is lastperiodetype is 0 SQLLog PASS delete-quota-lastperiode SQLNamedQuery delete-quota-lastperiode FREEFORM "DELETE qt FROM ftpquotatallies qt INNER JOIN ftpuser u ON qt.ftpdbid = u.ftpuserid \ WHERE u.username = '%U' AND u.lastperiodetype = 0" proftpd #Query for getting user limits data SQLNamedQuery get-user-limit FREEFORM "SELECT ql.ftpdbid,ql.quota_type,ql.per_session,ql.limit_type,ql.bytes_in_avail,ql.bytes_out_avail,ql.bytes_xfer_avail,ql.files_in_avail,ql.files_out_avail \ ,ql.files_xfer_avail \ FROM ftpquotalimits ql \ WHERE ql.quota_type = 'user' \ AND ql.ftpdbid = (SELECT giu.ftpuserid FROM ftpuser u INNER JOIN ftpgroupsinusers giu ON u.ftpuserid = giu.ftpuserid WHERE u.username='%U' \ AND ql.lastperiodeType = u.lastperiodetype)" proftpd #Query for getting user used data SQLNamedQuery get-user-tally FREEFORM "SELECT qt.ftpdbid,qt.quota_type,qt.bytes_in_used,qt.bytes_out_used,qt.bytes_xfer_used,qt.files_in_used,qt.files_out_used,qt.files_xfer_used \ FROM ftpquotatallies qt \ WHERE qt.quota_type = 'user' \ AND qt.ftpdbid = (SELECT giu.ftpuserid FROM ftpuser u INNER JOIN ftpgroupsinusers giu ON u.ftpuserid = giu.ftpuserid WHERE u.username='%U' \ AND qt.lastperiodetype = u.lastperiodeType)" proftpd #Query for updating user used data if present SQLNamedQuery update-user-tally FREEFORM "UPDATE ftpquotatallies qt \ SET qt.bytes_in_used = qt.bytes_in_used + %{0} \ ,qt.bytes_out_used = qt.bytes_out_used + %{1} \ ,qt.bytes_xfer_used = qt.bytes_xfer_used + %{2} \ ,qt.files_in_used = qt.files_in_used + %{3} \ ,qt.files_out_used = qt.files_out_used + %{4} \ ,qt.files_xfer_used = qt.files_xfer_used + %{5} \ WHERE qt.quota_type = 'user' \ AND qt.ftpdbid = (SELECT giu.ftpuserid FROM ftpuser u INNER JOIN ftpgroupsinusers giu ON u.ftpuserid = giu.ftpuserid WHERE u.username='%U' \ AND qt.lastperiodetype = u.lastperiodetype)" proftpd #Query for inserting user used data if not present SQLNamedQuery insert-user-tally FREEFORM "INSERT INTO ftpquotatallies(ftpdbid,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_used, \ lastperiode,lastperiodetype) \ SELECT u.ftpuserid,'user', %{2}, %{3}, %{4}, %{5}, %{6}, %{7},u.lastperiode,u.lastperiodetype FROM ftpuser u \ WHERE u.username = '%U' AND NOT u.lastperiodetype = 0" proftpd #Quota Engine on QuotaLimitTable sql:/get-user-limit QuotaTallyTable sql:/get-user-tally/update-user-tally/insert-user-tally </IfModule> #Query inserting limit history SQLLog PASS,STOR,RETR insert-limit-history SQLNamedQuery insert-limit-history FREEFORM "INSERT INTO ftpquotalimitshistory(ftpdbid,quota_type,per_session,limit_type,lastperiode,lastperiodetype) \ SELECT ql.ftpdbid,ql.quota_type,ql.per_session,ql.limit_type,ql.lastperiode,ql.lastperiodetype \ FROM ftpquotalimits ql \ LEFT JOIN ftpquotalimitshistory qlh ON ql.lastperiode = qlh.lastperiode \ AND ql.lastperiodetype = qlh.lastperiodetype \ AND ql.quota_type = qlh.quota_type \ AND ql.per_session = qlh.per_session \ AND ql.limit_type = qlh.limit_type \ AND ql.ftpdbid = qlh.ftpdbid \ INNER JOIN ftpuser u ON ql.ftpdbid = u.ftpuserid \ WHERE (If(ql.ftpdbid = qlh.ftpdbid,True,False) = False OR \ If(ql.quota_type = qlh.quota_type,True,False) = False OR \ If(ql.per_session = qlh.per_session,True,False) = False OR \ If(ql.limit_type = qlh.limit_type,True,false) = False OR \ If(ql.lastperiode = qlh.lastperiode,True,False) = False OR \ If(ql.lastperiodetype = qlh.lastperiodetype,True,False) = False) \ AND u.username='%U' AND ql.quota_type='user'" proftpd #Query for updating current limit history SQLLog PASS,STOR,RETR update-limit-history SQLNamedQuery update-limit-history FREEFORM "UPDATE ftpquotalimits ql \ INNER JOIN ftpquotalimitshistory qlh ON ql.lastperiode = qlh.lastperiode \ AND ql.lastperiodetype = qlh.lastperiodetype \ AND ql.quota_type = qlh.quota_type \ AND ql.per_session = qlh.per_session \ AND ql.limit_type = qlh.limit_type \ AND ql.ftpdbid = qlh.ftpdbid \ INNER JOIN ftpuser u ON ql.ftpdbid = u.ftpuserid \ SET qlh.files_in_avail = ql.files_in_avail \ ,qlh.files_out_avail = ql.files_out_avail \ ,qlh.files_xfer_avail = ql.files_xfer_avail \ ,qlh.bytes_in_avail = ql.bytes_in_avail \ ,qlh.bytes_out_avail = ql.bytes_out_avail \ ,qlh.bytes_xfer_avail = ql.bytes_xfer_avail \ ,qlh.modifiedate = now() \ WHERE u.username = '%U' AND qlh.quota_type = 'user'" proftpd #Query inserting tallies history SQLLog PASS,STOR,RETR insert-tallies-history SQLNamedQuery insert-tallies-history FREEFORM "INSERT INTO ftpquotatallieshistory(ftpdbid,quota_type,lastperiode,lastperiodetype) \ SELECT qt.ftpdbid,qt.quota_type,qt.lastperiode,qt.lastperiodetype \ FROM ftpquotatallies qt \ LEFT JOIN ftpquotatallieshistory qth ON (qt.lastperiode = qth.lastperiode) \ AND qt.lastperiodetype = qth.lastperiodetype \ AND qt.quota_type = qth.quota_type \ AND qt.ftpdbid = qth.ftpdbid \ INNER JOIN ftpuser u ON qt.ftpdbid = u.ftpuserid \ WHERE (If(qt.ftpdbid = qth.ftpdbid,True,False) = False OR \ If(qt.quota_type = qth.quota_type,True,False) = False OR \ If(qt.lastperiode = qth.lastperiode,True,False) = False OR \ If(qt.lastperiodetype = qth.lastperiodetype,True,False) = False) \ AND u.username='%U'" proftpd #Query for updating current tallies history SQLLog PASS,STOR,RETR update-tallies-history SQLNamedQuery update-tallies-history FREEFORM "UPDATE ftpquotatallies qt \ INNER JOIN ftpquotatallieshistory qth ON qt.lastperiode = qth.lastperiode \ AND qt.lastperiodetype = qth.lastperiodetype \ AND qt.quota_type = qth.quota_type \ AND qt.ftpdbid = qth.ftpdbid \ INNER JOIN ftpuser u ON qt.ftpdbid = u.ftpuserid \ SET qth.files_in_used = qt.files_in_used \ ,qth.files_out_used = qt.files_out_used \ ,qth.files_xfer_used = qt.files_xfer_used \ ,qth.bytes_in_used = qt.bytes_in_used \ ,qth.bytes_out_used = qt.bytes_out_used \ ,qth.bytes_xfer_used = qt.bytes_xfer_used \ ,qth.modifiedate = now() \ WHERE u.username = '%U'" proftpd </IfModule> |
|
From: Info <in...@fj...> - 2026-04-23 07:52:44
|
All, When is proftpd-mod_conf_sql in github for the last time updated? I mis SQLconfig and i had to rename uri.c/h and param.c/h to ftpconf_uri.c/h, ftpconf_param.c/h, “ln” used for existing uri.c and param.c to go throught the compiler and still it is not working For this all i made a “source.sh” Let me be the tester off all the code? I want to use proftpd, but in this way the fun is passing away and maybe i will develop some things. because I see potential Frank GMT +2 “Amsterdam” summer time Van: Marian Marinov <mm...@yu...> Verzonden: zondag 12 april 2026 17:49 Aan: Info <in...@fj...>; Jaroslaw Rafa <ra...@ra...> CC: pro...@li... Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure 1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. Are you saying you want a max file size limit? I believe mod_xfer already implements that via MaxRetrieveFileSize and MaxStoreFileSize 5. which vsftp is good at and proftpd is less good at Can you elaborate on this? What would you want to see here? Marian April 12, 2026 11:54 AM, "Info via Proftp-devel" <pro...@li... <mailto:pro...@li...?to=%22Info%20via%20Proftp-devel%22%20%3cp...@li...%3e> > wrote: That was my conclusion also. ftp is the transport of files instead of usb-hdd and consorts I have a fully working prodtpd on an rp4 dietpi. With mod_unix.c,mod_sql.c together. as an example failcount, active, disabled. Login log, “download,delete,upload login”, Limits and its histories, tallies and its histories. I also modeled the database with tables. it was a mess considering I've been doing this work for many years "35" what I would do for the website is transfer 1:1 and only then implement the changes. The site also deserves attention. hip hip hurray for AI. That way I found it faster. I also have a wish list for the proftpd software. 1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. 2. A ftp client so that all data can be collected on this FTP server and the files can be further distributed. So that not everyone has to retrieve their own downloads/uploads from all over the world. 3. A client https to ftpserver 4. A client Sharepoint to ftpserver 5. which vsftp is good at and proftpd is less good at the rest are all workarounds and I would have preferred to a loadmodule, but I don't know how and what program language is used. Also the use of github. I started developing applications in 1983 and have seen a lot of code since then and this is what I want to understand. would be useful for a PDF Frank Van: Marian Marinov <mm...@yu... <mailto:mm...@yu...> > Verzonden: zondag 12 april 2026 16:17 Aan: Jaroslaw Rafa <ra...@ra... <mailto:ra...@ra...> > CC: pro...@li... <mailto:pro...@li...> Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure I'm working in the webhosting industry. Still the perdomenant method for uploading websites is ftp, yes ftp over tls or sftp, but still ftp. Marian Apr 12, 2026 02:45:18 Jaroslaw Rafa < <mailto:ra...@ra...> ra...@ra...>: Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze: I generally like the current website and I would love to keep it as is, but for new people, the website states one thing: OLD SOFTWARE Old or new, if somebody *needs* a FTP daemon, what are the choices? I can think only of vsftpd as an alternative, and its website looks equally "old" ;) (and the last release, according to that website, has been in 2021). All others are far less popular, AFAIK. And ProFTPd has some features, like mod_exec or mod_ifsession, that other servers - to my knowledge - don't have, so it's an obvious choice if someone needs such features. And if someone doesn't need a FTP daemon, it doesn't matter if the software is new or old ;). And it is worth to note that after withdrawal of support for FTP protocol and "ftp://" URLs from major web browsers, FTP usage in the public Internet probably dropped to near-zero values. All sites with eg. downloadable software that previously used anonymous FTP to provide downloads have been forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by browsers and some browsers even refuse to download files over plain HTTP with default config). The places where FTP is still used and relevant are now mostly various internal networks. -- Regards, Jaroslaw Rafa <mailto:ra...@ra...> ra...@ra... -- "In a million years, when kids go to school, they're gonna know: once there was a Hushpuppy, and she lived with her daddy in the Bathtub." _______________________________________________ ProFTPD Developers List < <mailto:pro...@li...> pro...@li...> <https://lists.sourceforge.net/lists/listinfo/proftp-devel> https://lists.sourceforge.net/lists/listinfo/proftp-devel |
|
From: <ha...@yu...> - 2026-04-21 12:39:12
|
The question is, does the core team want these changes? Marian |
|
From: Christian <ch...@co...> - 2026-04-21 12:16:18
|
We can share our efforts ... Am 11.04.26 um 17:06 schrieb ha...@yu...: > it looks to me, that we can get together a second contributors team that > can focus on infra :) > > So we only need to create a plan and TJ to give us the green light! :) > > Marian > > > _______________________________________________ > ProFTPD Developers List > <pro...@li...> > https://lists.sourceforge.net/lists/listinfo/proftp-devel -- Christian ------------------------------------------------------------ https://join.worldcommunitygrid.org?recruiterId=177038 ------------------------------------------------------------ http://www.sc24.de - Sportbekleidung ------------------------------------------------------------ |
|
From: Christian <ch...@co...> - 2026-04-21 12:14:31
|
Am 12.04.26 um 06:34 schrieb Marian Marinov: > I took some time today and worked a bit on a proposal for the website. > > It is by no means good, but it does bring it to this century :) > > https://ark.1h.cx/proftpd/ <https://ark.1h.cx/proftpd/> Nice work :-) > > I can propose a few other changes, if anyone is interested. > Like emphasis on: > > 1. What makes it different and better than other solutions agree > > 2. Why is it still relevant agree > > 3. Highlighting some of the more specific modules agree > > I generally like the current website and I would love to keep it as is, > but for new people, the website states one thing: OLD SOFTWARE > > So I looked at how I can modernize it a bit to make it look "NEW" :) > > Regards, > > Marian > > > > April 11, 2026 11:06 AM, ha...@yu... <mailto:ha...@yu...> wrote: > > it looks to me, that we can get together a second contributors team > that can focus on infra :) > > So we only need to create a plan and TJ to give us the green light! :) > > Marian > > > > > > > > _______________________________________________ > ProFTPD Developers List > <pro...@li...> > https://lists.sourceforge.net/lists/listinfo/proftp-devel -- Christian ------------------------------------------------------------ https://join.worldcommunitygrid.org?recruiterId=177038 ------------------------------------------------------------ http://www.sc24.de - Sportbekleidung ------------------------------------------------------------ |
|
From: Info <in...@fj...> - 2026-04-12 21:46:23
|
MaxRetrieveFileSize and MaxStoreFileSize must be set in proftpd.conf and that is my problem. If i’m using mod_sql.c. the group c’not be set by <ifgroup> or <ifuser> that is mod_unix.c. you can use MaxRetrieveFileSize and MaxStoreFileSize for the hole environment, but i want it per user or group in a mod_sql.c environment with in this case mariadb or postgresql and tallies is for the total volume off files. I have 3 user’s in mod_unix.c “sysadmin for local access in /, ftpadmin for local access in the ftpserver, ftpprinter for local access middleware between my printer and a NAS for data storage” All other users in mod_sql.c I have 4 groups : ftplocal, ftpglobal, ftplocalnotls and ftpglobalnotls. For ftpadmin and sysadmin i use ftplocal and for ftpprinter i use ftplocalnotls because the printer can't handle tls Ftplocal “notls” is for the internal ip’s “local network” Ftpglobal “notls” is for the external ip’s with a virtualserver “the big big world”. Be careful with dynamic DNS and your provider. Better is a fixed ip and rerouting a-record to your home external ip. The ftpserver is almost complete and this “MaxRetrieveFileSize and MaxStoreFileSize” is the bump in the road >From lastperiode, lastperiodetype and disabled when the user tries to login and fails after 3 times and much more. If you make a smart statement in AI you get the pro’s and con ’s and off course, use common sense and don't accept everything blindly. This how I use AI. I am now making great strides, which was not possible before Frank The Nederlands GMT +1 “Amsterdam” Van: Marian Marinov <mm...@yu...> Verzonden: zondag 12 april 2026 17:49 Aan: Info <in...@fj...>; Jaroslaw Rafa <ra...@ra...> CC: pro...@li... Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure 1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. Are you saying you want a max file size limit? I believe mod_xfer already implements that via MaxRetrieveFileSize and MaxStoreFileSize 5. which vsftp is good at and proftpd is less good at Can you elaborate on this? What would you want to see here? Marian April 12, 2026 11:54 AM, "Info via Proftp-devel" <pro...@li... <mailto:pro...@li...?to=%22Info%20via%20Proftp-devel%22%20%3cp...@li...%3e> > wrote: That was my conclusion also. ftp is the transport of files instead of usb-hdd and consorts I have a fully working prodtpd on an rp4 dietpi. With mod_unix.c,mod_sql.c together. as an example failcount, active, disabled. Login log, “download,delete,upload login”, Limits and its histories, tallies and its histories. I also modeled the database with tables. it was a mess considering I've been doing this work for many years "35" what I would do for the website is transfer 1:1 and only then implement the changes. The site also deserves attention. hip hip hurray for AI. That way I found it faster. I also have a wish list for the proftpd software. 1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. 2. A ftp client so that all data can be collected on this FTP server and the files can be further distributed. So that not everyone has to retrieve their own downloads/uploads from all over the world. 3. A client https to ftpserver 4. A client Sharepoint to ftpserver 5. which vsftp is good at and proftpd is less good at the rest are all workarounds and I would have preferred to a loadmodule, but I don't know how and what program language is used. Also the use of github. I started developing applications in 1983 and have seen a lot of code since then and this is what I want to understand. would be useful for a PDF Frank Van: Marian Marinov <mm...@yu... <mailto:mm...@yu...> > Verzonden: zondag 12 april 2026 16:17 Aan: Jaroslaw Rafa <ra...@ra... <mailto:ra...@ra...> > CC: pro...@li... <mailto:pro...@li...> Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure I'm working in the webhosting industry. Still the perdomenant method for uploading websites is ftp, yes ftp over tls or sftp, but still ftp. Marian Apr 12, 2026 02:45:18 Jaroslaw Rafa < <mailto:ra...@ra...> ra...@ra...>: Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze: I generally like the current website and I would love to keep it as is, but for new people, the website states one thing: OLD SOFTWARE Old or new, if somebody *needs* a FTP daemon, what are the choices? I can think only of vsftpd as an alternative, and its website looks equally "old" ;) (and the last release, according to that website, has been in 2021). All others are far less popular, AFAIK. And ProFTPd has some features, like mod_exec or mod_ifsession, that other servers - to my knowledge - don't have, so it's an obvious choice if someone needs such features. And if someone doesn't need a FTP daemon, it doesn't matter if the software is new or old ;). And it is worth to note that after withdrawal of support for FTP protocol and "ftp://" URLs from major web browsers, FTP usage in the public Internet probably dropped to near-zero values. All sites with eg. downloadable software that previously used anonymous FTP to provide downloads have been forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by browsers and some browsers even refuse to download files over plain HTTP with default config). The places where FTP is still used and relevant are now mostly various internal networks. -- Regards, Jaroslaw Rafa <mailto:ra...@ra...> ra...@ra... -- "In a million years, when kids go to school, they're gonna know: once there was a Hushpuppy, and she lived with her daddy in the Bathtub." _______________________________________________ ProFTPD Developers List < <mailto:pro...@li...> pro...@li...> <https://lists.sourceforge.net/lists/listinfo/proftp-devel> https://lists.sourceforge.net/lists/listinfo/proftp-devel |
|
From: Marian M. <mm...@yu...> - 2026-04-12 16:22:56
|
1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. Are you saying you want a max file size limit? I believe mod_xfer already implements that via MaxRetrieveFileSize and MaxStoreFileSize 5. which vsftp is good at and proftpd is less good at Can you elaborate on this? What would you want to see here? Marian April 12, 2026 11:54 AM, "Info via Proftp-devel" <pro...@li... (mailto:pro...@li...?to=%22Info%20via%20Proftp-devel%22%20<pro...@li...>)> wrote: That was my conclusion also. ftp is the transport of files instead of usb-hdd and consorts I have a fully working prodtpd on an rp4 dietpi. With mod_unix.c,mod_sql.c together. as an example failcount, active, disabled. Login log, “download,delete,upload login”, Limits and its histories, tallies and its histories. I also modeled the database with tables. it was a mess considering I've been doing this work for many years "35" what I would do for the website is transfer 1:1 and only then implement the changes. The site also deserves attention. hip hip hurray for AI. That way I found it faster. I also have a wish list for the proftpd software. * How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies. * A ftp client so that all data can be collected on this FTP server and the files can be further distributed. So that not everyone has to retrieve their own downloads/uploads from all over the world. * A client https to ftpserver * A client Sharepoint to ftpserver * which vsftp is good at and proftpd is less good at the rest are all workarounds and I would have preferred to a loadmodule, but I don't know how and what program language is used. Also the use of github. I started developing applications in 1983 and have seen a lot of code since then and this is what I want to understand. would be useful for a PDF Frank Van: Marian Marinov <mm...@yu... (mailto:mm...@yu...)> Verzonden: zondag 12 april 2026 16:17 Aan: Jaroslaw Rafa <ra...@ra... (mailto:ra...@ra...)> CC: pro...@li... (mailto:pro...@li...) Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure I'm working in the webhosting industry. Still the perdomenant method for uploading websites is ftp, yes ftp over tls or sftp, but still ftp. Marian Apr 12, 2026 02:45:18 Jaroslaw Rafa <ra...@ra... (mailto:ra...@ra...)>: Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze: I generally like the current website and I would love to keep it as is, but for new people, the website states one thing: OLD SOFTWARE Old or new, if somebody *needs* a FTP daemon, what are the choices? I can think only of vsftpd as an alternative, and its website looks equally "old" ;) (and the last release, according to that website, has been in 2021). All others are far less popular, AFAIK. And ProFTPd has some features, like mod_exec or mod_ifsession, that other servers - to my knowledge - don't have, so it's an obvious choice if someone needs such features. And if someone doesn't need a FTP daemon, it doesn't matter if the software is new or old ;). And it is worth to note that after withdrawal of support for FTP protocol and "ftp://" URLs from major web browsers, FTP usage in the public Internet probably dropped to near-zero values. All sites with eg. downloadable software that previously used anonymous FTP to provide downloads have been forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by browsers and some browsers even refuse to download files over plain HTTP with default config). The places where FTP is still used and relevant are now mostly various internal networks. -- Regards, Jaroslaw Rafa ra...@ra... (mailto:ra...@ra...) -- "In a million years, when kids go to school, they're gonna know: once there was a Hushpuppy, and she lived with her daddy in the Bathtub." _______________________________________________ ProFTPD Developers List <pro...@li... (mailto:pro...@li...)> https://lists.sourceforge.net/lists/listinfo/proftp-devel (https://lists.sourceforge.net/lists/listinfo/proftp-devel) |
|
From: Info <in...@fj...> - 2026-04-12 16:07:03
|
That was my conclusion also. ftp is the transport of files instead of usb-hdd and consorts
I have a fully working prodtpd on an rp4 dietpi.
With mod_unix.c,mod_sql.c together.
as an example failcount, active, disabled. Login log, “download,delete,upload login”, Limits and its histories, tallies and its histories.
I also modeled the database with tables. it was a mess considering I've been doing this work for many years "35"
what I would do for the website is transfer 1:1 and only then implement the changes. The site also deserves attention. hip hip hurray for AI. That way I found it faster.
I also have a wish list for the proftpd software.
1. How large a file may be for uploading and downloading files and not the use of tallies or processing in tallies.
2. A ftp client so that all data can be collected on this FTP server and the files can be further distributed. So that not everyone has to retrieve their own downloads/uploads from all over the world.
3. A client https to ftpserver
4. A client Sharepoint to ftpserver
5. which vsftp is good at and proftpd is less good at
the rest are all workarounds and I would have preferred to a loadmodule, but I don't know how and what program language is used. Also the use of github.
I started developing applications in 1983 and have seen a lot of code since then and this is what I want to understand. would be useful for a PDF
Frank
Van: Marian Marinov <mm...@yu...>
Verzonden: zondag 12 april 2026 16:17
Aan: Jaroslaw Rafa <ra...@ra...>
CC: pro...@li...
Onderwerp: Re: [Proftpd-devel] Aging state of ProFTPD Project infrastructure
I'm working in the webhosting industry.
Still the perdomenant method for uploading websites is ftp, yes ftp over tls or sftp, but still ftp.
Marian
Apr 12, 2026 02:45:18 Jaroslaw Rafa <ra...@ra... <mailto:ra...@ra...> >:
Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze:
I generally like the current website and I would love to keep it as
is, but for new people, the website states one thing: OLD SOFTWARE
Old or new, if somebody *needs* a FTP daemon, what are the choices? I can
think only of vsftpd as an alternative, and its website looks equally "old"
;) (and the last release, according to that website, has been in 2021). All
others are far less popular, AFAIK. And ProFTPd has some features, like
mod_exec or mod_ifsession, that other servers - to my knowledge - don't
have, so it's an obvious choice if someone needs such features.
And if someone doesn't need a FTP daemon, it doesn't matter if the software
is new or old ;).
And it is worth to note that after withdrawal of support for FTP protocol
and "ftp://" URLs from major web browsers, FTP usage in the public Internet
probably dropped to near-zero values. All sites with eg. downloadable
software that previously used anonymous FTP to provide downloads have been
forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by
browsers and some browsers even refuse to download files over plain HTTP
with default config). The places where FTP is still used and relevant are
now mostly various internal networks.
--
Regards,
Jaroslaw Rafa
ra...@ra... <mailto:ra...@ra...>
--
"In a million years, when kids go to school, they're gonna know: once there
was a Hushpuppy, and she lived with her daddy in the Bathtub."
_______________________________________________
ProFTPD Developers List
<pro...@li... <mailto:pro...@li...> >
https://lists.sourceforge.net/lists/listinfo/proftp-devel
|
|
From: Jaroslaw R. <ra...@ra...> - 2026-04-12 15:11:57
|
Dnia 12.04.2026 o godz. 10:16:53 Marian Marinov pisze: > I'm working in the webhosting industry. > Still the perdomenant method for uploading websites is ftp, yes ftp over > tls or sftp, but still ftp. SFTP is not FTP, it is a subsystem of SSH and is handled by SSH server, not by FTP server :). It usually goes in pair with SCP, if you can do SFTP you can do SCP and vice versa. FTP over TLS is a different thing. I have actually never seen it used in the field. Typical FTP clients don't support it, so I consider it a niche. But that's a bit off-topic, I think... -- Regards, Jaroslaw Rafa ra...@ra... -- "In a million years, when kids go to school, they're gonna know: once there was a Hushpuppy, and she lived with her daddy in the Bathtub." |
|
From: Marian M. <mm...@yu...> - 2026-04-12 14:17:09
|
I'm working in the webhosting industry. Still the perdomenant method for uploading websites is ftp, yes ftp over tls or sftp, but still ftp. Marian Apr 12, 2026 02:45:18 Jaroslaw Rafa <ra...@ra...>: > Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze: >> I generally like the current website and I would love to keep it as >> is, but for new people, the website states one thing: OLD SOFTWARE > > Old or new, if somebody *needs* a FTP daemon, what are the choices? I can > think only of vsftpd as an alternative, and its website looks equally "old" > ;) (and the last release, according to that website, has been in 2021). All > others are far less popular, AFAIK. And ProFTPd has some features, like > mod_exec or mod_ifsession, that other servers - to my knowledge - don't > have, so it's an obvious choice if someone needs such features. > > And if someone doesn't need a FTP daemon, it doesn't matter if the software > is new or old ;). > > And it is worth to note that after withdrawal of support for FTP protocol > and "ftp://" URLs from major web browsers, FTP usage in the public Internet > probably dropped to near-zero values. All sites with eg. downloadable > software that previously used anonymous FTP to provide downloads have been > forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by > browsers and some browsers even refuse to download files over plain HTTP > with default config). The places where FTP is still used and relevant are > now mostly various internal networks. > -- > Regards, > Jaroslaw Rafa > ra...@ra... > -- > "In a million years, when kids go to school, they're gonna know: once there > was a Hushpuppy, and she lived with her daddy in the Bathtub." > > > _______________________________________________ > ProFTPD Developers List > <pro...@li...> > https://lists.sourceforge.net/lists/listinfo/proftp-devel |
|
From: Jaroslaw R. <ra...@ra...> - 2026-04-12 07:41:38
|
Dnia 12.04.2026 o godz. 04:34:11 Marian Marinov pisze: > I generally like the current website and I would love to keep it as > is, but for new people, the website states one thing: OLD SOFTWARE Old or new, if somebody *needs* a FTP daemon, what are the choices? I can think only of vsftpd as an alternative, and its website looks equally "old" ;) (and the last release, according to that website, has been in 2021). All others are far less popular, AFAIK. And ProFTPd has some features, like mod_exec or mod_ifsession, that other servers - to my knowledge - don't have, so it's an obvious choice if someone needs such features. And if someone doesn't need a FTP daemon, it doesn't matter if the software is new or old ;). And it is worth to note that after withdrawal of support for FTP protocol and "ftp://" URLs from major web browsers, FTP usage in the public Internet probably dropped to near-zero values. All sites with eg. downloadable software that previously used anonymous FTP to provide downloads have been forced to switch to HTTPS (as plain HTTP is prominently marked "insecure" by browsers and some browsers even refuse to download files over plain HTTP with default config). The places where FTP is still used and relevant are now mostly various internal networks. -- Regards, Jaroslaw Rafa ra...@ra... -- "In a million years, when kids go to school, they're gonna know: once there was a Hushpuppy, and she lived with her daddy in the Bathtub." |
|
From: Marian M. <mm...@yu...> - 2026-04-12 05:07:46
|
I took some time today and worked a bit on a proposal for the website. It is by no means good, but it does bring it to this century :) https://ark.1h.cx/proftpd/ (https://ark.1h.cx/proftpd/) I can propose a few other changes, if anyone is interested. Like emphasis on: 1. What makes it different and better than other solutions 2. Why is it still relevant 3. Highlighting some of the more specific modules I generally like the current website and I would love to keep it as is, but for new people, the website states one thing: OLD SOFTWARE So I looked at how I can modernize it a bit to make it look "NEW" :) Regards, Marian April 11, 2026 11:06 AM, ha...@yu... (mailto:ha...@yu...) wrote: it looks to me, that we can get together a second contributors team that can focus on infra :) So we only need to create a plan and TJ to give us the green light! :) Marian |
|
From: <ha...@yu...> - 2026-04-11 15:06:56
|
it looks to me, that we can get together a second contributors team that can focus on infra :) So we only need to create a plan and TJ to give us the green light! :) Marian |
|
From: Christian <ch...@co...> - 2026-04-11 12:15:53
|
Hi TJ, I can provide hosting space for website and would take care about to keep updated. Anything else it is needed do not hesitate to contact me. Kind Regards Christian Am 07.04.26 um 19:25 schrieb TJ Saunders: > As many of you are aware, the state of the ProFTPD Project's infrastructure is in desperate need of maintenance/upgrading. The VMs which host the project's website, Bugzilla instance, forums, FTP downloads, etc are all quite old -- this is why, for example, the website, Bugzilla, forums currently do not have great HTTPS support. (The underlying VM image has an OpenSSL package which predates TLSv1.2, among other things.) > > These VMs are currently running in a provider's network, which has been quite generous in allowing these to run. However, that provider has gone through different company acquisitions; the fact that the VMs are still running is, honestly, more by luck than by intention. Now, the current company has indicated that these VMs _will_ be shut down by September of this year, if not sooner. > > I know that maintaining infrastructure, in my spare time, is not very appealing -- I have to do it too much already for my day job. No excuses, just commenting on why nothing really has been done on this front. But now we have a forcing function. > > The project core team has discussed this situation. Right now, we are leaning toward shutting down the website, Bugzilla, and forums, and relying on the existing GitHub repo for most needs. Most bug reports/issues are already filed there, and there have been no significant forums postings for more than a year now. Most modern browsers are unhappy about the plain HTTP website, and update the lack of TLSv1.2 certificates for the forums. > > This all demonstrates that GitHub meets most of the project needs with regard to infrastructure. It also means fewer moving parts for future maintainers of the project to maintain, going forward. > > With this in mind, I'd like to solicit your thoughts/feedback on what sort of things you'd want to see in the GitHub repo (if anything), knowing that these changes are coming. Feel free to respond to me personally if you prefer. > > I don't have any particular dates/times when we'll shut those VMs down (other than before September), but it'll be happening this year, one way or another. > > Cheers, > TJ > > > _______________________________________________ > ProFTPD Developers List > <pro...@pr...> > https://lists.sourceforge.net/lists/listinfo/proftp-devel -- Christian ------------------------------------------------------------ https://join.worldcommunitygrid.org?recruiterId=177038 ------------------------------------------------------------ http://www.sc24.de - Sportbekleidung ------------------------------------------------------------ |
|
From: <m...@ma...> - 2026-04-07 19:04:14
|
Hi TJ and core team, I have reached out 2 times on the GitHub Issue tracker and once a couple months ago via mail, to offer my help to the project and update that very project infrastructure to modern standards. If moving things to GitHub makes it better/easier, then I guess why not. Though sometimes there is actually useful information on the forums of old software projects such as ProFTPd, especially for legacy setups that get updated only now or later in time. I would recommend to keep the forums and an archive-version of the website running, on an updated software stack. I understand this requires infrastructure, which I believe some companies are happy to provide to open source projects pro bono. If this is not wanted, at least I would somehow archive the data (maybe involving archiveteam.org?) for historical reference. It appears to me that FTP/FTPS/SFTP is far from dead and we will have to deal with it on an enterprise scale for at least 20 more years (who knows...). Glad to see some movement here. Let me know what I can do, I would like to support the project. From the other mails I see there are people wanting to step in. Would be great to organize a little! Best regards -----Ursprüngliche Nachricht----- Von: William David Edwards via Proftp-user <pro...@li...> Gesendet: Dienstag, 7. April 2026 19:40 An: pro...@li...; tj...@ca... Cc: William David Edwards <wed...@cy...>; ProFTPD Developers <pro...@li...> Betreff: Re: [Proftpd-user] Aging state of ProFTPD Project infrastructure Hi TJ, TJ Saunders schreef op 2026-04-07 19:25: > As many of you are aware, the state of the ProFTPD Project's > infrastructure is in desperate need of maintenance/upgrading. The VMs > which host the project's website, Bugzilla instance, forums, FTP > downloads, etc are all quite old -- this is why, for example, the > website, Bugzilla, forums currently do not have great HTTPS support. > (The underlying VM image has an OpenSSL package which predates > TLSv1.2, among other things.) > > These VMs are currently running in a provider's network, which has > been quite generous in allowing these to run. However, that provider > has gone through different company acquisitions; the fact that the VMs > are still running is, honestly, more by luck than by intention. Now, > the current company has indicated that these VMs _will_ be shut down > by September of this year, if not sooner. > > I know that maintaining infrastructure, in my spare time, is not very > appealing -- I have to do it too much already for my day job. No > excuses, just commenting on why nothing really has been done on this > front. But now we have a forcing function. > > The project core team has discussed this situation. Right now, we are > leaning toward shutting down the website, Bugzilla, and forums, and > relying on the existing GitHub repo for most needs. Most bug > reports/issues are already filed there, and there have been no > significant forums postings for more than a year now. Most modern > browsers are unhappy about the plain HTTP website, and update the lack > of TLSv1.2 certificates for the forums. > > This all demonstrates that GitHub meets most of the project needs with > regard to infrastructure. It also means fewer moving parts for future > maintainers of the project to maintain, going forward. > > With this in mind, I'd like to solicit your thoughts/feedback on what > sort of things you'd want to see in the GitHub repo (if anything), > knowing that these changes are coming. Feel free to respond to me > personally if you prefer. > > I don't have any particular dates/times when we'll shut those VMs down > (other than before September), but it'll be happening this year, one > way or another. > I think it makes perfect sense to move downloads & bug tracker to GitHub. I do however believe that having a website is still very useful for a mature project. The same case could be made for forums, having multiple potential communication channels for interaction with other users. People may not want to sign up to GitHub. If you need a VM to that purpose, feel free to give us - a hosting company from Europe - a shout off-list. > Cheers, > TJ > > > _______________________________________________ > ProFTPD Users List <pro...@pr...> > Unsubscribe problems? > http://www.proftpd.org/list-unsub.html Met vriendelijke groeten, William David Edwards _______________________________________________ ProFTPD Users List <pro...@pr...> Unsubscribe problems? http://www.proftpd.org/list-unsub.html |
|
From: <ha...@yu...> - 2026-04-07 18:11:23
|
Hey! I would like to offer free hosting to the proftpd project and also sysadmin maintenance time. Tell me what you need and I will provide it. I would also be willing to help with the migration. I have co-located server in Equinix Sofia, but I do live in Montreal Canada, where I also have enough storage and compute to host many projects. ASN200450 Marian Marinov Best regards, Marian P.S. I have been using proftpd for more than 25y now! I'll be really happy if I can help more to the project! Apr 7, 2026 12:30:38 TJ Saunders <tj...@ca...>: > As many of you are aware, the state of the ProFTPD Project's infrastructure is in desperate need of maintenance/upgrading. The VMs which host the project's website, Bugzilla instance, forums, FTP downloads, etc are all quite old -- this is why, for example, the website, Bugzilla, forums currently do not have great HTTPS support. (The underlying VM image has an OpenSSL package which predates TLSv1.2, among other things.) > > These VMs are currently running in a provider's network, which has been quite generous in allowing these to run. However, that provider has gone through different company acquisitions; the fact that the VMs are still running is, honestly, more by luck than by intention. Now, the current company has indicated that these VMs _will_ be shut down by September of this year, if not sooner. > > I know that maintaining infrastructure, in my spare time, is not very appealing -- I have to do it too much already for my day job. No excuses, just commenting on why nothing really has been done on this front. But now we have a forcing function. > > The project core team has discussed this situation. Right now, we are leaning toward shutting down the website, Bugzilla, and forums, and relying on the existing GitHub repo for most needs. Most bug reports/issues are already filed there, and there have been no significant forums postings for more than a year now. Most modern browsers are unhappy about the plain HTTP website, and update the lack of TLSv1.2 certificates for the forums. > > This all demonstrates that GitHub meets most of the project needs with regard to infrastructure. It also means fewer moving parts for future maintainers of the project to maintain, going forward. > > With this in mind, I'd like to solicit your thoughts/feedback on what sort of things you'd want to see in the GitHub repo (if anything), knowing that these changes are coming. Feel free to respond to me personally if you prefer. > > I don't have any particular dates/times when we'll shut those VMs down (other than before September), but it'll be happening this year, one way or another. > > Cheers, > TJ > > > _______________________________________________ > ProFTPD Developers List > <pro...@pr...> > https://lists.sourceforge.net/lists/listinfo/proftp-devel |
|
From: William D. E. <wed...@cy...> - 2026-04-07 18:05:15
|
Hi TJ, TJ Saunders schreef op 2026-04-07 19:25: > As many of you are aware, the state of the ProFTPD Project's > infrastructure is in desperate need of maintenance/upgrading. The VMs > which host the project's website, Bugzilla instance, forums, FTP > downloads, etc are all quite old -- this is why, for example, the > website, Bugzilla, forums currently do not have great HTTPS support. > (The underlying VM image has an OpenSSL package which predates TLSv1.2, > among other things.) > > These VMs are currently running in a provider's network, which has been > quite generous in allowing these to run. However, that provider has > gone through different company acquisitions; the fact that the VMs are > still running is, honestly, more by luck than by intention. Now, the > current company has indicated that these VMs _will_ be shut down by > September of this year, if not sooner. > > I know that maintaining infrastructure, in my spare time, is not very > appealing -- I have to do it too much already for my day job. No > excuses, just commenting on why nothing really has been done on this > front. But now we have a forcing function. > > The project core team has discussed this situation. Right now, we are > leaning toward shutting down the website, Bugzilla, and forums, and > relying on the existing GitHub repo for most needs. Most bug > reports/issues are already filed there, and there have been no > significant forums postings for more than a year now. Most modern > browsers are unhappy about the plain HTTP website, and update the lack > of TLSv1.2 certificates for the forums. > > This all demonstrates that GitHub meets most of the project needs with > regard to infrastructure. It also means fewer moving parts for future > maintainers of the project to maintain, going forward. > > With this in mind, I'd like to solicit your thoughts/feedback on what > sort of things you'd want to see in the GitHub repo (if anything), > knowing that these changes are coming. Feel free to respond to me > personally if you prefer. > > I don't have any particular dates/times when we'll shut those VMs down > (other than before September), but it'll be happening this year, one > way or another. > I think it makes perfect sense to move downloads & bug tracker to GitHub. I do however believe that having a website is still very useful for a mature project. The same case could be made for forums, having multiple potential communication channels for interaction with other users. People may not want to sign up to GitHub. If you need a VM to that purpose, feel free to give us - a hosting company from Europe - a shout off-list. > Cheers, > TJ > > > _______________________________________________ > ProFTPD Users List <pro...@pr...> > Unsubscribe problems? > http://www.proftpd.org/list-unsub.html Met vriendelijke groeten, William David Edwards |
|
From: TJ S. <tj...@ca...> - 2026-04-07 17:26:27
|
As many of you are aware, the state of the ProFTPD Project's infrastructure is in desperate need of maintenance/upgrading. The VMs which host the project's website, Bugzilla instance, forums, FTP downloads, etc are all quite old -- this is why, for example, the website, Bugzilla, forums currently do not have great HTTPS support. (The underlying VM image has an OpenSSL package which predates TLSv1.2, among other things.) These VMs are currently running in a provider's network, which has been quite generous in allowing these to run. However, that provider has gone through different company acquisitions; the fact that the VMs are still running is, honestly, more by luck than by intention. Now, the current company has indicated that these VMs _will_ be shut down by September of this year, if not sooner. I know that maintaining infrastructure, in my spare time, is not very appealing -- I have to do it too much already for my day job. No excuses, just commenting on why nothing really has been done on this front. But now we have a forcing function. The project core team has discussed this situation. Right now, we are leaning toward shutting down the website, Bugzilla, and forums, and relying on the existing GitHub repo for most needs. Most bug reports/issues are already filed there, and there have been no significant forums postings for more than a year now. Most modern browsers are unhappy about the plain HTTP website, and update the lack of TLSv1.2 certificates for the forums. This all demonstrates that GitHub meets most of the project needs with regard to infrastructure. It also means fewer moving parts for future maintainers of the project to maintain, going forward. With this in mind, I'd like to solicit your thoughts/feedback on what sort of things you'd want to see in the GitHub repo (if anything), knowing that these changes are coming. Feel free to respond to me personally if you prefer. I don't have any particular dates/times when we'll shut those VMs down (other than before September), but it'll be happening this year, one way or another. Cheers, TJ |
|
From: TJ S. <tj...@ca...> - 2026-01-18 01:46:51
|
> I am a long-time user of proftpd. I recently had an infrastructure > change that required me to authenticate my sftp users against a mongo > db. I couldn’t find one so I decided to write one. Or rather I got AI > to right one. I am not a c programmer, so I did the next best thing. > I tried to think of everything that a generic mongo auth module would > need not just what I needed. > > You can find the repo here: > > https://github.com/foundryserver/mod_auth_mongodb > > I thought if it was good enough you could add it to the contributed > list of modules. I think it is documented enough for someone to us it. > As I do more testing I will keep fixing and releasing. If you decide > to take a look and find some glowing errors or concerns, please open an > issue. > > I hope this was ok to post here. Hello, fellow ProFTPD developer! Thanks for providing a module like this; I expect that there may be other sites that wish to authenticate users via a MongoDB deployment as well. I'll take a look at that repo when I get a chance, and provide feedback/suggestions that come up. Yes, it's quite alright to post the announcement of your module here; that's one of the reasons for this list! Cheers, TJ |
|
From: <ad...@fo...> - 2026-01-12 22:43:55
|
Hello everyone. I am a long-time user of proftpd. I recently had an infrastructure change that required me to authenticate my sftp users against a mongo db. I couldn't find one so I decided to write one. Or rather I got AI to right one. I am not a c programmer, so I did the next best thing. I tried to think of everything that a generic mongo auth module would need not just what I needed. You can find the repo here: https://github.com/foundryserver/mod_auth_mongodb I thought if it was good enough you could add it to the contributed list of modules. I think it is documented enough for someone to us it. As I do more testing I will keep fixing and releasing. If you decide to take a look and find some glowing errors or concerns, please open an issue. I hope this was ok to post here. Thanks Brad Foundryserver.com |
|
From: <in...@fj...> - 2025-09-25 10:24:02
|
and what i mis upload en download from file. Noth only "%f" Van: in...@fj... <in...@fj...> Verzonden: donderdag 25 september 2025 10:45 Aan: 'pro...@li...' <pro...@li...> Onderwerp: bugs There are some errors in the mod_sql This is correct when running SQLUserInfo ftpuser username passwd uid gid homedir shell SQLUserWhereClause "Active = 1 and disabled = 0 and username<>'-' and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() and faillock = 1) or faillock = 0) and (login> This is not correct when running When i use "ftpuser" in the statements the reference in the sql.log is users also for groups! When i change it to users and groups it works. The rest of te tables begin with ftp! SQLNamedQuery userinfo FREEFORM "SELECT username,passwd,uid,gid,homedir,shell FROM ftpusers WHERE username = '%U'" proftpd SQLUserInfo custom:/userinfo I have a solution for 1. monthy up-/download see "delete_oke1, delete_oke2" Date_format can not be used because some "%" overwrite with the defaults of proftpd sql var's 2. fail amounts 3. block a period of time for login 4. block always after a date 5. SQLUserInfo custom:/userinfo is for a timeclock to login only am or pm etc.etc. Do you have a solution for MaxStoreFileSize is proftpd sql. I mis uid and gid in quota.conf, because i want the user name to replace the uid. This metadata technic is better. Proftpd sql var for gid Hope to hear from you soon Best Regast Frank Bellen Dutch ############################################################################ #################################### # # Proftpd sample configuration for SQL-based authentication. # # (This is not to be used if you prefer a PAM-based SQL authentication) # #http://www.proftpd.org/docs/contrib/mod_quotatab_sql.html <IfModule mod_sql.c> QuotaEngine on Include /etc/proftpd/sql_quota.conf AuthPAMConfig proftpd #AllowStoreRestart on #AllowRetrieveRestart on #Update count every time a user logs in # server_ip='%V' #SQLUserWhereClause "not disabled = 1" #SQLGroupWhereClause "not disabled = 1" #Logging of MySql SqlLogFile /var/log/proftpd/sql.log #create a user's home directory on demand if it doesn't exist #CreateHome on SQLBackend mysql #Type of Passwords in MySQL are OpenSSL Crypt Plaintext Empty Backend SQLAuthTypes Plaintext #SQLAuthenticate users groups SQLEngine on SQLAuthenticate on #SQLAuthenticate user* group* #used to connect to the database #databasename@host database_user user_password SQLConnectInfo proftpd@localhost proftpd (*Bn185961.*) SQLNamedConnectInfo proftpd mysql proftpd@localhost:3306 proftpd (*Bn185961.*) #Here we tell ProFTPd the names of the database columns in the "usertable" #we want it to interact with. Match the names with those in the db SQLUserInfo ftpuser username passwd uid gid homedir shell SQLUserWhereClause "Active = 1 and disabled = 0 and username<>'-' and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() and faillock = 1) or faillock = 0) and (loginexpired is null or loginexpired < now())" # Here we tell ProFTPd the names of the database columns in the "grouptable" # we want it to interact with. Again the names match with those in the db SQLGroupInfo ftpgroup groupname gid members SQLGroupWhereClause "disabled = 0" # set min UID and GID - otherwise these are 999 each SQLMinID 500 #display last login time when PASS command is given SQLNamedQuery login_time SELECT "modified from ftpuser where username='%U' and disabled = 0 and Active = 1" SQLShowInfo PASS "230" "Last login was: %{login_time}" # Update count every time user logs in SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "failcount = 0,count=count+1, accessed=now() WHERE username='%U'" ftpuser #logout log SQLLog EXIT time_logout SQLNamedQuery time_logout UPDATE "modified=now() WHERE username='%U' and disabled = 0 and active = 1" ftpuser # Update modified everytime user uploads or deletes a file SQLLog STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE username='%U'" ftpuser #login attempts SQLLog ERR_PASS log_fails0 IGNORE_ERRORS SQLNamedQuery log_fails0 FREEFORM "UPDATE ftpuser set failcount = failcount + 1 WHERE username = '%U' and disabled = 0 and active = 1 and failmax > 0" proftpd SQLLog ERR_PASS log_fails1 IGNORE_ERRORS SQLNamedQuery log_fails1 FREEFORM "UPDATE ftpuser set disabled = 1 WHERE username = '%U' and failcount > failmax - 1 and active = 1 and failmax > 0" proftpd SQLLog ERR_PASS log_fails2 IGNORE_ERRORS SQLNamedQuery log_fails2 UPDATE "loginafter = DATE_ADD(NOW(), INTERVAL loginafterhour HOUR) WHERE username='%U' and disabled = 1 and active = 1 and faillock = 1" ftpuser SQLLog ERR_PASS log_fails3 IGNORE_ERRORS SQLNamedQuery log_fails3 FREEFORM "UPDATE ftpuser set disabled = 0,failcount = 0 WHERE username = '%U' and active = 0" proftpd #regester user in database SQLLog PASS login_oke SQLNamedQuery login_oke FREEFORM "INSERT INTO ftplogin(gid,uid, client_ip, server_ip, protocol, insertdate,failed,Active) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(),0,t1.Active FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username='%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog ERR_PASS login_error IGNORE_ERRORS SQLNamedQuery login_error FREEFORM "INSERT INTO ftplogin(gid,uid, client_ip, server_ip, protocol, insertdate,failcount,failmax,failed,Active) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(),t1.failcount,failmax,1,t1.active FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username='%U' and '%U' <> '%u' and t1.gid <> 0" proftpd SQLLog ERR_PASS present_error IGNORE_ERRORS SQLNamedQuery present_error FREEFORM "INSERT INTO ftplogin(gid,uid,username, client_ip, server_ip, protocol, insertdate,failcount,failmax,failed,active) SELECT 0,0,'%U','%a', '%V', '%{protocol}', NOW(),0,0,1,0 FROM (SELECT count(username) as count,'-' as username FROM ftpuser WHERE username='%U') t1 WHERE count = 0" proftpd SQLLog PASS delete_oke1 SQLNamedQuery delete_oke1 FREEFORM "DELETE t1 FROM ftpquotatallies t1 INNER JOIN ftpuser t2 ON t1.name = t2.username WHERE t2.username='%U' and t2.clearmonth < CAST(replace(left(TO_CHAR(now()),7),'-','') as integer)" proftpd SQLLog PASS delete_oke2 SQLNamedQuery delete_oke2 UPDATE "clearmonth = CAST(replace(left(TO_CHAR(now()),7),'-','') as integer) WHERE username='%U' and clearmonth < CAST(replace(left(TO_CHAR(now()),7),'-','') as integer)" ftpuser #Record downloads SQLLog RETR recorddownload SQLNamedQuery recorddownload FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'download','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog RETR download1 SQLNamedQuery download1 UPDATE "downloadcount = downloadcount + 1,downloadbytes=downloadbytes+%b WHERE username='%U' and disabled = 0 and active = 1" ftpuser #Record upload SQLLog STOR recordupload SQLNamedQuery recordupload FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'upload','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog STOR upload1 SQLNamedQuery upload1 UPDATE "uploadcount = uploadcount + 1,uploadbytes=uploadbytes+%b WHERE username='%U' and disabled = 0 and active = 1" ftpuser #logging in sql database SQLLog DELE,MKD,RETR,RMD,RNFR,RNTO,STOR,APPE extendedlog SQLNamedQuery extendedlog FREEFORM "INSERT INTO ftplog (client_ip,server_ip,protocol,username,operation,insertdate) VALUES ('%a','%V','%{protocol}','%u','%r',now())" proftpd SQLLog DELE recorddelete SQLNamedQuery recorddelete FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'delete','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U'" proftpd </IfModule> |
|
From: <in...@fj...> - 2025-09-25 09:03:20
|
There are some errors in the mod_sql This is correct when running SQLUserInfo ftpuser username passwd uid gid homedir shell SQLUserWhereClause "Active = 1 and disabled = 0 and username<>'-' and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() and faillock = 1) or faillock = 0) and (login> This is not correct when running When i use "ftpuser" in the statements the reference in the sql.log is users also for groups! When i change it to users and groups it works. The rest of te tables begin with ftp! SQLNamedQuery userinfo FREEFORM "SELECT username,passwd,uid,gid,homedir,shell FROM ftpusers WHERE username = '%U'" proftpd SQLUserInfo custom:/userinfo I have a solution for 1. monthy up-/download see "delete_oke1, delete_oke2" Date_format can not be used because some "%" overwrite with the defaults of proftpd sql var's 2. fail amounts 3. block a period of time for login 4. block always after a date 5. SQLUserInfo custom:/userinfo is for a timeclock to login only am or pm etc.etc. Do you have a solution for MaxStoreFileSize is proftpd sql. I mis uid and gid in quota.conf, because i want the user name to replace the uid. This metadata technic is better. Proftpd sql var for gid Hope to hear from you soon Best Regast Frank Bellen Dutch ############################################################################ #################################### # # Proftpd sample configuration for SQL-based authentication. # # (This is not to be used if you prefer a PAM-based SQL authentication) # #http://www.proftpd.org/docs/contrib/mod_quotatab_sql.html <IfModule mod_sql.c> QuotaEngine on Include /etc/proftpd/sql_quota.conf AuthPAMConfig proftpd #AllowStoreRestart on #AllowRetrieveRestart on #Update count every time a user logs in # server_ip='%V' #SQLUserWhereClause "not disabled = 1" #SQLGroupWhereClause "not disabled = 1" #Logging of MySql SqlLogFile /var/log/proftpd/sql.log #create a user's home directory on demand if it doesn't exist #CreateHome on SQLBackend mysql #Type of Passwords in MySQL are OpenSSL Crypt Plaintext Empty Backend SQLAuthTypes Plaintext #SQLAuthenticate users groups SQLEngine on SQLAuthenticate on #SQLAuthenticate user* group* #used to connect to the database #databasename@host database_user user_password SQLConnectInfo proftpd@localhost proftpd (*Bn185961.*) SQLNamedConnectInfo proftpd mysql proftpd@localhost:3306 proftpd (*Bn185961.*) #Here we tell ProFTPd the names of the database columns in the "usertable" #we want it to interact with. Match the names with those in the db SQLUserInfo ftpuser username passwd uid gid homedir shell SQLUserWhereClause "Active = 1 and disabled = 0 and username<>'-' and (failmax = 0 or failcount < failmax) and (loginafter is null or (loginafter < now() and faillock = 1) or faillock = 0) and (loginexpired is null or loginexpired < now())" # Here we tell ProFTPd the names of the database columns in the "grouptable" # we want it to interact with. Again the names match with those in the db SQLGroupInfo ftpgroup groupname gid members SQLGroupWhereClause "disabled = 0" # set min UID and GID - otherwise these are 999 each SQLMinID 500 #display last login time when PASS command is given SQLNamedQuery login_time SELECT "modified from ftpuser where username='%U' and disabled = 0 and Active = 1" SQLShowInfo PASS "230" "Last login was: %{login_time}" # Update count every time user logs in SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "failcount = 0,count=count+1, accessed=now() WHERE username='%U'" ftpuser #logout log SQLLog EXIT time_logout SQLNamedQuery time_logout UPDATE "modified=now() WHERE username='%U' and disabled = 0 and active = 1" ftpuser # Update modified everytime user uploads or deletes a file SQLLog STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE username='%U'" ftpuser #login attempts SQLLog ERR_PASS log_fails0 IGNORE_ERRORS SQLNamedQuery log_fails0 FREEFORM "UPDATE ftpuser set failcount = failcount + 1 WHERE username = '%U' and disabled = 0 and active = 1 and failmax > 0" proftpd SQLLog ERR_PASS log_fails1 IGNORE_ERRORS SQLNamedQuery log_fails1 FREEFORM "UPDATE ftpuser set disabled = 1 WHERE username = '%U' and failcount > failmax - 1 and active = 1 and failmax > 0" proftpd SQLLog ERR_PASS log_fails2 IGNORE_ERRORS SQLNamedQuery log_fails2 UPDATE "loginafter = DATE_ADD(NOW(), INTERVAL loginafterhour HOUR) WHERE username='%U' and disabled = 1 and active = 1 and faillock = 1" ftpuser SQLLog ERR_PASS log_fails3 IGNORE_ERRORS SQLNamedQuery log_fails3 FREEFORM "UPDATE ftpuser set disabled = 0,failcount = 0 WHERE username = '%U' and active = 0" proftpd #regester user in database SQLLog PASS login_oke SQLNamedQuery login_oke FREEFORM "INSERT INTO ftplogin(gid,uid, client_ip, server_ip, protocol, insertdate,failed,Active) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(),0,t1.Active FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username='%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog ERR_PASS login_error IGNORE_ERRORS SQLNamedQuery login_error FREEFORM "INSERT INTO ftplogin(gid,uid, client_ip, server_ip, protocol, insertdate,failcount,failmax,failed,Active) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(),t1.failcount,failmax,1,t1.active FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username='%U' and '%U' <> '%u' and t1.gid <> 0" proftpd SQLLog ERR_PASS present_error IGNORE_ERRORS SQLNamedQuery present_error FREEFORM "INSERT INTO ftplogin(gid,uid,username, client_ip, server_ip, protocol, insertdate,failcount,failmax,failed,active) SELECT 0,0,'%U','%a', '%V', '%{protocol}', NOW(),0,0,1,0 FROM (SELECT count(username) as count,'-' as username FROM ftpuser WHERE username='%U') t1 WHERE count = 0" proftpd SQLLog PASS delete_oke1 SQLNamedQuery delete_oke1 FREEFORM "DELETE t1 FROM ftpquotatallies t1 INNER JOIN ftpuser t2 ON t1.name = t2.username WHERE t2.username='%U' and t2.clearmonth < CAST(replace(left(TO_CHAR(now()),7),'-','') as integer)" proftpd SQLLog PASS delete_oke2 SQLNamedQuery delete_oke2 UPDATE "clearmonth = CAST(replace(left(TO_CHAR(now()),7),'-','') as integer) WHERE username='%U' and clearmonth < CAST(replace(left(TO_CHAR(now()),7),'-','') as integer)" ftpuser #Record downloads SQLLog RETR recorddownload SQLNamedQuery recorddownload FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'download','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog RETR download1 SQLNamedQuery download1 UPDATE "downloadcount = downloadcount + 1,downloadbytes=downloadbytes+%b WHERE username='%U' and disabled = 0 and active = 1" ftpuser #Record upload SQLLog STOR recordupload SQLNamedQuery recordupload FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'upload','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U' and t1.disabled = 0 and t1.active = 1" proftpd SQLLog STOR upload1 SQLNamedQuery upload1 UPDATE "uploadcount = uploadcount + 1,uploadbytes=uploadbytes+%b WHERE username='%U' and disabled = 0 and active = 1" ftpuser #logging in sql database SQLLog DELE,MKD,RETR,RMD,RNFR,RNTO,STOR,APPE extendedlog SQLNamedQuery extendedlog FREEFORM "INSERT INTO ftplog (client_ip,server_ip,protocol,username,operation,insertdate) VALUES ('%a','%V','%{protocol}','%u','%r',now())" proftpd SQLLog DELE recorddelete SQLNamedQuery recorddelete FREEFORM "INSERT INTO ftpfiles(gid,uid, client_ip, server_ip, protocol, insertdate,FileType,File,Bytes) SELECT t2.gid,t1.uid, '%a', '%V', '%{protocol}', NOW(), 'delete','%f', '%b' FROM ftpuser t1 INNER JOIN ftpgroup t2 ON t1.gid = t2.gid WHERE t1.username = '%U'" proftpd </IfModule> |