Failed to retrieve directory listing

filezilla connection log with "failed to retrieve directory listing" error
Filezilla’s opaque error

I occasionally run a local vsftp daemon on my development machine for testing.  I don’t connect to it directly — it’s used to back up unit tests that need an FTP connection.  No person connects to it, least of all me, and the scripts that do connect are looking at small, single-use directories.

I needed to test a new feature: FTPS, aka FTP with SSL (Not to be confused with SFTP, a very different beast.)  Several of our vendors will be requiring it soon; frankly, I’m surprised they haven’t required it sooner.  But I digress.

To start this phase of the project I needed to make sure that my local vsftp daemon supports FTPS so that I can run tests against it.  So I edit /etc/vsftpd/vsftpd.conf to add some lines to my config, and restart:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

But Filezilla bombs with an opaque error message:

Status: Resolving address of localhost
Status: Connecting to 127.0.0.1:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/home/dad" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (127,0,0,1,249,239).
Command: LIST
Response: 150 Here comes the directory listing.
Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing

I clue in pretty quickly that “GnuTLS error -15: An unexpected TLS packet was received” is actually a red herring, so I drop the SSL from the connection and get a different error:

Response: 150 Here comes the directory listing.
Error: Connection closed by server
Error: Failed to retrieve directory listing

Huh, that’s not particularly helpful, shame on you Filezilla.  I drop down further to a command-line FTP client to get the real error:

$ ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:dad): 
530 Please login with USER and PASS.
530 Please login with USER and PASS.
SSL not available
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
421 Service not available, remote server has closed connection
ftp> quit

Ah.  Now we’re getting somewhere.

A quick perusal turned up a stackexchange answer with the assertion that “the directory causing this behaviour had too many files in it (2,666).”  My own directory is much smaller, about a hundred files.  According to this bug report, however, the real maximum may be as few as 32 files.  It’s not clear to me whether this is a kernel bug, a vsftpd bug, or just a bad interaction between recent kernels and vsftpd.

Happily, there is a work-around: add “seccomp_sandbox=NO” to vsftpd.conf.

Since vsftpd’s documentation is spare, and actual examples are hard to come by, here’s my working config:

listen=YES
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
seccomp_sandbox=NO
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Aye, lads…

Aye, lads, it’s chilly

But not as chilly as our boy Willie!

You see, he’s dead.

So goes an old family refrain. It comes out often during the winter, especially when someone remarks that “it’s a bit chilly.”

There’s a particular cadence, too:

Person 1: “Aye lads, it’s chilly.”
Person 2 (not in the least bit somber): “Not as chilly as our boy Willie.”
Everyone (in a cheerful chorus): “You see, he’s dead!

We’ve lost the genesis of it, but Megh thinks there was a second refrain as well. “Something about being colder than a witch’s tit,” she says, but can’t remember more.

Disney Memories

Way, way back, before there was an internet or any technology really, there were kids, and a postal service, and Disney, and life was good.  Not great because the world was still black and white, but it was still pretty good.

Young Meghan wanted the Disney to become one with the kids, so she used the nascent postal service, with their pony expresses, clipper ships, and smoke signals, to ask Disney to come to her school.  To their credit they did reply via the same route, but alas they lacked the technology to be in multiple places at once and declined her gracious invitation.

disney replies, they won't come

I uncovered this letter, framed, while we were cleaning our room.  (Yes, even adults who were once children must clean their room from time to time.)  Meghan refused to keep it, so I have scanned it for posterity and posted it to the internet for eternity.

BMG

meghan @ blue man group
The ushers passed out strips of paper as we entered, suggesting we “turn it headbands or scarfs, or whatever you like.” Meghan liked a hair bow.

I got a text from my sister-in-law on a Thursday: would you like a pair of tickets to see Blue Man Group this Sunday?  Something came up and we can’t use them.

Always quick on my feet, I got back to her over an hour later, asking her where (even though there’s only one place in the area).

Both girls declined repeated offers to go with me.  Apparently I smell bad or something, but opportunity only knocks once.  At least Meghan was willing to go, but only after I promised to keep to the speed limit this time.*

audience

The show was hilarious and high-energy.  It does appear to evolve over time, as it’s not the same show that we saw last time – except for the general tenor it was basically a new show to me.  If you too haven’t seen it in twenty years, go again.

*this is a short story: before Meghan and I were married we went to see Blue Man Group with Kennon and Katie.  While cruising down the Massachusetts Turnpike I was pulled over for “speeding and weaving.”  I disputed the ticket because I honestly don’t think I was speeding when the cop saw me (I now freely admit to having been speeding earlier) and the weaving charge was just plain stupid.  I was half successful.

Watch Things Go Boom

My employer is raising some new buildings on campus.  One of them will have a basement, which means digging, which in this case requires explosive excavation.

Here’s a video from a few weeks ago.  The explosion occurs around the 25 second mark.

Notice the fuse flashing like a bolt of lightning, diagonally above the middle of the mat. That flash always happens, but doesn’t always show up on video due to the way cameras take a series of still images very quickly.  There’s a small pause in between each image, and the flash is lightning fast.

Mission: Party (Halloween Edition)

Alpha and Beta put together a Halloween party with over a dozen on their friends.  We’re not typically party people, but we do enjoy the chance to have people over.  I especially like it because it means I get a clean house.  🙂

We had a great time planning for, shopping for, and decorating for the party.  (Really.  The house looks great.)  Beta enjoys decorating, planning, and being surrounded by large groups; I don’t know how she came to exist in a family full of introverts.

Meghan and I tend to take a particular approach to events: plan very little and let things come together naturally.  The kids were happy to follow our lead.

One little personal detail: this party happened to coincide with our anniversary.  It couldn’t happen any other day, unfortunately: Halloween is mid-week; we had a birthday party to attend on Sunday; and Halloween parties after Halloween are just no fun.

Fast-forward to the appointed day, and a nor’easter bore down on us from the early morning onwards.  This wasn’t such a bad thing: I had wanted to keep the fireplace lit for the duration of the party and cold, bad weather is very amenable to that. Meghan made a (gluten-free) cake that made the house smell fantastic.  Beta and I rearranged the seats into one long couch, plus another smaller love seat back-to-back with the big one.

Guest started arriving promptly at one, and very quickly we had a dozen teenagers, not related to us and all dressed in costumes, in the living room of our house.  For some reason they all packed into the living room and refused to spread into the kitchen, dining room, or even the front room.  The decibels rose and Meghan and I retreated, occasionally checking on the kids, the fire, and the food.

The first movie of the day was Young Frankenstein, chosen through first-past-the-post voting. (I believe it had two votes, which was one more vote than any other option.)

Around 4 pm, as the first movie was wrapping up, I headed out to pick up pizza and more soda.  I came back to a relatively quiet room watching the Blair Witch Project.  You kind of have to pay attention to the movie to get the full effect, but I there was also an air of the forbidden – that movie has a reputation.

As people finished up pizza, the movie was just finishing the setup and was about to get scary, the power went out.  Whoops!  We checked with neighbors to make sure it wasn’t just us, checked the power company to see if they knew yet, and lit candles and lamps.  The kids took all this in stride and got busy socializing.  I was honestly impressed how they acted — sociable and comfortable, even though many had never been to our house before.

Power was restored in about an hour, and the movie resumed.  The end of the movie led to discussion of what the hell happened, because not everyone had paid attention in the beginning.

Unbeknownst to us during the week, Beta had been telling people that the party was planned to go until 10 pm.  The first kids dropped out shortly after pizza, and most kids had left by 8:30 or so, but a couple stayed for the duration and were picked up right at 10 o’clock.

All in all, it seemed like everyone had a lot of fun.  Even at the end, with three kids left, everybody was in a good mood.

Lessons learned: Megh and I now know to double-check what the plan’s details are before it’s announced, and Beta knows that a) 10 pm is just too late and b) nine hours is just too long. (She was exhausted, we all were, and I think she was glad to wrap up.)

Biggest lessons of all, though: Megh and I still know how to throw a good party, and Alpha and Beta saw how to make it come together by being a part of it and seeing how it’s done from the inside.

Flim Flam and Minutia

Sitting around the dinner table, Meghan shared a work story about hearing her name as she passed, only nobody said her name. The math teacher across the hall said, “bar graph.”

I also mis-heard it, at first, as “bargra.”  I’m trying to get it to stick as her new name.

A minute later, Beta is sticking something between her toes while we’re talking and Meghan blurts out “Stop that!  Now it’s all covered in toe groods!” (Nobody knows what that means or what she was trying to express, not even Meghan.)

And then we realized that Meghan accidentally revealed her orc-name: Bargra Togroods.

Last-Minute Chicken

This recipe is shamelessly copied from https://iwashyoudry.com/last-minute-chicken-recipe, which itself copied the recipe from “The Weekday Lunches & Breakfasts Cookbook.”

Ingredients

 

  • 2 teaspoons garlic powder
  • 1 ½ teaspoons onion powder
  • 2 teaspoons paprika OR smoked paprika
  • 2 teaspoons dried oregano
  • 1 ½ teaspoons black pepper
  • 1 teaspoon kosher salt
  • 3 pounds boneless skinless chicken thighs
  • Enough olive oil to coat chicken
  • 2 tablespoons fresh cilantro, chopped (optional)

Directions

  1. Combine the garlic, onion, paprika, oregano, pepper, salt, and olive oil into a freezer bag
  2. Toss in the chicken
    • Most pre-packaged chicken thighs get folded into themselves, so be sure to spread them out as you put them into the bag so they get evenly coated
  3. Seal up the bag and mix everything thoroughly
  4. Heat up a grill pan over medium-high heat, or a grill, while the chicken steeps in it’s spices
    • If using a grill pan, add some olive oil to coat the bottom of the pan – but be sure to use a splatter guard
  5. Cook the chicken until not pink throughout, about 5 minutes on the first side and three or four minutes on the other side