Apache directory listing as json

5.5k views Asked by At

Is it possible to have the directory listing in apache return json instead of html?

I'm completely unexperienced with Apache, but I've browsed the documentation for IndexOptions and mod_autoindex. It seems like there's no built in way to configure the output.

2

There are 2 answers

1
Andy Jones On BEST ANSWER

I looked at the code in apache source in modules/generators/mod_autoindex.c and the HTML generation is static. You could rewrite this to output JSON, simply search for all the ap_rputs and ap_rvputs function calls and replace the HTML with the appropriate JSON. That's seems like a lot of work though.

I think I would do this instead...

In the Apache configuration for this site, change to...

DirectoryIndex ls_json.php index.php index.html

And then place ls_json.php script into the any directory for which you want a JSON encoded listing:

// grab the files
$files = scandir(dirname(__FILE__));

// remove "." and ".." (and anything else you might not want)
$output = [];
foreach ($files as $file)
  if (!in_array($file, [".", ".."]))
    $output[] = $file;

// out we go
header("Content-type: application/json");
echo json_encode($output);
0
Elliott Frisch On

You could use mod_dir as follows - create a php script and list your directories how you want (set content-type as appropriate).