Hi
First, this could all be down to my very scant understanding of the ins and outs of FTP. I know enough to use it, but don’t really know what’s going on or why
So we have a Lucee (5.4.4.38) container, and a stub FTP server container (GitHub - delfer/docker-alpine-ftp-server: Small and flexible docker image with vsftpd server). This pairing has been operational and working in our dev and build environment for years.
We have three separate environments running this pair of containers: dev, build and QA. They are created via roughly analogous docker-compose files: they are functionally the same, just some different bind mounts and env vars. Nothing operationally different.
On dev and build, a <cfftp action="listDir">
call works fine.
On QA, we get a 500 Illegal PORT command
error.
If I set passive="true"
on the listDir
call, then the operation works.
We do not specify the passive
attribute anywhere; and indeed I’d expect if we were to set it, then it would be set on the open
action, not on the listDir
action, which reuses the previously opened connection.
I think we are safe to force passive="true"
across the board, and I have tested this code on the production connection (which is connecting to third-party FTP servers), and the connections work.
But. I kinda wanna know what the story is. I do not understand why the FTP behaviour between Lucee and an FTP server is different when the containers running Lucee and the FTP server are “identical” for all intents and purposes.
Note:
Dev is running via Docker on Windows.
Build and QA are on an Ubuntu VPS. As everything is dockerised, this should not matter.
We’re using the docker network between the containers, not the host machine’s network.
Am happy to give more info, but like I said I’m a n00b when it comes to understanding FTP so dunno what is relevant and what is not.
Cheers!