用 FUSE 挂载 HTTP 文件目录
Apache、nginx 等服务器软件都有生成文件目录的功能。这类目录通常只考虑到人类的可读性,给机读带来很大困难。之前有解析目录列表的一些实现 ,但不能覆盖大多数情况。为了之前挖的坑(实现自动获取软件更新信息) ,我实现了一个能解析大部分文件目录的程序「htmllisting-parser」。
其能解析用 <pre>、<table> 和 <ul> 的常见文件目录,包括 Apache、nginx、lighttpd、darkhttpd 和 Python http.server 等服务器的默认样式,生成文件名、修改时间、大小、描述的列表。解析的基本思想就是模式匹配,对 <pre> 就先找链接,再在每一栏找修改时间和文件大小;<table> 先找表头;<ul> 列举链接就可以了。程序写的有点面条,一堆黑科技,有空再整理和模块化。
以这个解析器为基础,就能写出较为高效的 FUSE 文件系统,用来挂载 HTTP 目录。目前其他实现只能挂载单文件 ,或需要服务端配合 ,或需要大量执行 HEAD 请求获取文件信息 。利用 HTTP 文件目录可以避免 FTP 的不安全和不灵活的设置、SFTP 的单连接、WebDAV 缺少好实现的问题,可以配合 HTTPS 和基本认证等实现简单文件共享。