我一直在查看 pure-ftpd-1.0.42 源代码:
https://github.com/jedisct1/pure-ftpd
尝试查找它何时触发:
https://github.com/jedisct1/pure-ftpd/blob/master/src/pure-uploadscript.c
即文件上传后何时运行上传脚本。
如果你查看src/ftp_parser.c
,dostor
方法就是文件开始上传过程的方式。然后它转到ul_send
,然后ul_handle_data
,但我在这一点上迷路了。我从来没有看到它说,好的,该文件现已上传,是时候调用 uploadscript
了。有人可以告诉我这条线吗?
最佳答案
在 pureftpd_start()
中的 src/ftpd.c
函数中,pure-ftpd
启动并解析其所有命令行选项。如果配置的话,它还会打开一条通往 pure-uploadscript
的管道; here。 fork()
不是在每次上传时调用上传脚本(并且每次上传都会产生 exec()
和 pure-ftpd
开销),而是让上传脚本进程单独运行,并通过管道向其发送上传的文件路径。
了解了这一点,然后,我们使用 upload_pipe_push()
函数查找该管道的写入位置。有趣的是,该函数被 displayrate()
函数调用 here ,该函数由 dostor()
文件中的 doretr()
和 src/ftpd.c
调用。
希望这有帮助!
关于c - pure-ftpd 在哪里调用它的上传脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367131/