Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在apacheftp上实现ALLO命令?_Apache_Ftp - Fatal编程技术网

如何在apacheftp上实现ALLO命令?

如何在apacheftp上实现ALLO命令?,apache,ftp,Apache,Ftp,我们有一个嵌入式Apache FTP服务器在网关中运行了几年。它总是毫无问题地工作 但是现在,一个客户正试图连接一个我们以前从未拥有过的品牌的设备,与目前为止所有其他客户不同的是,该设备会提前发送ALLO命令,以确保服务器有足够的空间 但是apacheftp似乎不知道这个命令。跟踪日志说明: 收到:ALLO 77482 已发送:未执行502命令ALLO 之后,客户端将切断连接 Apache文档中也没有该命令: 所以问题是,我能以某种方式将自己的实现插入服务器吗? 我只是想说清楚,我不是在问如何

我们有一个嵌入式Apache FTP服务器在网关中运行了几年。它总是毫无问题地工作

但是现在,一个客户正试图连接一个我们以前从未拥有过的品牌的设备,与目前为止所有其他客户不同的是,该设备会提前发送ALLO命令,以确保服务器有足够的空间

但是apacheftp似乎不知道这个命令。跟踪日志说明:

收到:ALLO 77482
已发送:未执行502命令ALLO

之后,客户端将切断连接

Apache文档中也没有该命令:

所以问题是,我能以某种方式将自己的实现插入服务器吗? 我只是想说清楚,我不是在问如何实现这些功能。我如何将自己的实现传递给ApacheFTP以供使用。如果可以的话,不必接触源代码


由于所讨论的应用程序已经运行了很长一段时间,非常稳定,我真的不想把Apache FTP服务器从那里拆下来并嵌入另一个…

好吧,一旦我找到了正确的代码,这就非常简单了

命令的实现非常简单,在本例中,我刚开始使用存根进行测试:

class ALLO : AbstractCommand() {

    override fun execute(session: FtpIoSession, context: FtpServerContext, request: FtpRequest) {

        session.write(LocalizedFtpReply.translate(session, request, context,
                FtpReply.REPLY_200_COMMAND_OKAY, "ALLO", "bring it!"))
    }
}
继承AbstractCommand,重写execute并向会话写入响应

当然,问题是如何让服务器知道实现,这也非常简单,尽管似乎没有任何文档。但您只需实例化CommandFactoryFactory,映射实现,构建CommandFactory并在FtpServerFactory中进行设置:

        val commandFactoryFactory = CommandFactoryFactory()
        commandFactoryFactory.addCommand("ALLO", ALLO())
        serverFactory.commandFactory = commandFactoryFactory.createCommandFactory()

那么你是在问如何配置一个基于ApacheMina的专有FTP服务器来处理一个新的FTP命令吗?据我所知,ApacheMina并不是基于Mina的,我认为它比较旧。不过,我想配置应该是合适的术语。不管怎么说,我都弄明白了,这让我大吃一惊。