# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L4925 + messages_en.h#L173
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([?_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] New connection from [._[:alnum:]-]+$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L1934 + messages_en.h#L173
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([?_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] [_.[:alnum:]-]+ is now logged in$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L2023-2033 + messages_en.h#L69
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] Can't change directory to .+: (No such file or|Not a) directory$

# src/ftp_parser.c#L257 + messages_en.h#L13
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] Timeout - try typing a little faster next time$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L2395 + messages_en.h#L13
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] Timeout \(no new data for [0-9]+ seconds\)$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L2399 + messages_en.h#L187
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([?_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] Logout\.$

# src/https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L4389 (displayrate at #L2753 uses MSG_UPLOADED and MSG_DOWNLOADED from messages_en.h
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[NOTICE\] .+ (up|down)loaded  \([0-9]+ bytes, [0-9.]+KB/sec\)$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L4588 + messages_en.h#L154
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[NOTICE\] File successfully renamed or moved: \[.+\]->\[.+\]$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L2707 + messages_en.h#L91
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[NOTICE\] Deleted .+$

# https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L378 + messages_en.h#L2
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[INFO\] Timeout$

# no longer produced?
#^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: PAM-listfile: Refused user [_.[:alnum:]-]+ for service pure-ftpd$

# messages_en.h#L97 + https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L4666/4655
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[ERROR\] Can't open .+: No such file or directory$

# messages_en.h#L133 + https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L3470
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \([_.[:alnum:]-]+@[._[:alnum:]-]+\) \[ERROR\] Can't remove directory: No such file or directory$

# messages_en.h#L1299 + https://salsa.debian.org/racke/pure-ftpd/-/blob/master/src/ftpd.c#L3470
^(\w{3} [ :0-9]{11}|[0-9T:.+-]{32}) [._[:alnum:]-]+ pure-ftpd(\[[0-9]+\])?: \(\?@[._[:alnum:]-]+\) \[DEBUG\] This is a private system - No anonymous login$
