是否可以使服务器上的进程像文件系统一样与FTP交互?
我想做的是在我的服务器上运行一个类似FTP服务器的进程。所以人们可以通过“FTP”上传东西,但实际上,我正在运行的是一个程序,它允许我将有关该文件的信息放入数据库,而不是真正将文件放在他们说要去的地方 例如,网站模板。我的服务的一个用户希望为他们的客户机提供他们正在使用的模板,但希望通过FTP将其上传到他们的文本编辑器中。但我想将模板数据存储在数据库中,对其进行处理以查找相关信息,然后将其存储在我想存储的位置,但仍将其显示为用户为其放置的位置是否可以使服务器上的进程像文件系统一样与FTP交互?,ftp,filesystems,Ftp,Filesystems,我想做的是在我的服务器上运行一个类似FTP服务器的进程。所以人们可以通过“FTP”上传东西,但实际上,我正在运行的是一个程序,它允许我将有关该文件的信息放入数据库,而不是真正将文件放在他们说要去的地方 例如,网站模板。我的服务的一个用户希望为他们的客户机提供他们正在使用的模板,但希望通过FTP将其上传到他们的文本编辑器中。但我想将模板数据存储在数据库中,对其进行处理以查找相关信息,然后将其存储在我想存储的位置,但仍将其显示为用户为其放置的位置 可能会非常困难,但有人知道这是否可能吗?这是非常可能
可能会非常困难,但有人知道这是否可能吗?这是非常可能的 FTP协议相对简单 您只是在创建一个专门的FTP服务器(或“守护进程”)
从任何开源FTP服务器开始,然后开始定制。示例:我以前没有做过这个特定的活动,但我认为这是使用(linux用户空间文件系统)实现这个功能的完美选择。然后,您应该能够使用标准的ftp服务器,该服务器随后会写入您的用户空间文件系统,您只需提供适当的行为
我知道有可用的,可能还有其他可用的…这并不像看上去那么简单。如果您运行的服务器只支持HTTP,那么建立到它的ftp连接将不容易,除非您对实现进行黑客攻击以支持ftp
如果您将ftp发送到url而不是使用http,则服务器将以ftp协议获取请求,接收请求的端口必须能够处理请求所使用的协议。大多数服务器实现都支持ftp,但这会将文件ftp发送到某个目录。将文件上载到某个目录后,您可以使用守护进程来解析并将它们放入数据库,然后删除它们。最好安装一个现有的ftp服务器,并编写一个脚本或进程来监视文件系统中的新文件和更新文件。一旦监视进程看到更新,它就会适当地处理它
很多ftp服务器都有丰富的功能,可以抵御攻击,如果您编写自己的ftp服务器,您将不得不担心这些攻击。vsftpd和proftpd是两个值得一提的OSS ftp服务器。ftp仅定义传输操作的细节。实际存储的处理方式取决于编写服务器的人。这使得它与文件系统无关,因此可以对Unix、Windows、VMS、TRS-DOS等使用相同的协议 一种选择是找到在您选择的平台上运行的现有服务器的源代码,然后“替换”处理文件I/O的调用 dbfs.h: dbfs.c: 现有服务器代码:
#包括
#包括
#包括“dbfs.h”/*”替换“系统定义的文件I/O例程”*/
这不是我所说的“琐碎”。问题是“可能吗?”。答案很简单,“是的,这是可能的”。而且,因为有完整的源代码,所以进行更改很简单。我不确定你的“琐事”的门槛在哪里,但写了定制的FTP客户端后,我可以说它非常非常简单。从资料来源来看,这是微不足道的。你说的其实很对,我还没有读过RFC959,现在我有了它,它在里面解释了同样的事情。实际上,我已经开始用Ruby制作服务器,并且已经取得了很大的进展。它完全可以工作,但我从早上10点左右一直在做它,直到。。。现在是12:38,我正在添加一些新功能。但是它工作得很好,做了所有正常的事情,有点稳定,但是仍然需要修复超时。过来看
#define open db_open
#define write db_write
#define close db_close
int open(...)
{
/* create a memory buffer */
}
ssize_t write(...)
{
/* write data to memory buffer */
}
int close(...)
{
/* execute SQL insert statement to save memory buffer to db */
}
#include <fcntl.h>
#include <unistd.h>
#include "dbfs.h" /* "replaces" system-defined file I/O routines */