python 3异步tftp服务器。
py3tftp的Python项目详细描述
#py3tftp
py3tftp是用python 3.5编写的异步[tftp][1]服务器。它是为与python 3一起工作的纯粹乐趣而编写的,并为rrq实现了[rfc 1350][2](邮件模式除外)、[rfc 2347][3](选项)、[rfc 2348][4](blksize选项)、[rfc 2349][5](超时,tsize)和[rfc 7440][10](windowsize)。此外,它还支持块号翻滚,因此任何大小的文件都可以进行传输。
它确实遵守了足够的标准,在现实生活中非常有用。
(3.5+)
-[附加到异常的回溯][9]-呜!
-字符串现在是字节,因为所有文本都是unicode
在一个有敏感文件的地方!
tftp没有安全功能,除了它的简单性之外:
-它不会覆盖文件。
-不会创建不存在的目录。
-不能在它运行的目录之外进行写入。
````
用法:py3tftp[-h][--主机主机][-p端口][--ack timeout ack_timeout]
[--超时超时][-l文件日志][-v][--version]
可选参数:
-h,--帮助显示此帮助消息并退出
--服务器将侦听的接口的主机IP。
默认值:0.0.0
-p端口,--服务器将侦听的端口端口端口。默认值:9069。tftp
标准兼容端口:69-需要超级用户
权限。
--确认超时确认超时
锁定步骤的每个确认超时。默认值:0.5.
--在服务器放弃传输并关闭连接之前超时超时。默认值:3.
-l file_log,--file log file_log
将输出附加到日志文件。
-v,--verbose启用调试级别日志。
--version
````
代码很混乱,因为它应该被丢弃。
```
` basetftpserverprotocol"调度在IO循环上,该循环侦听传入的TFTP请求,并决定在IO循环上调度哪种‘basetftpprotocol’来处理传入的请求。
请求。当请求进入时,它选择"wrqprotocol"或"rrqprotocol"在io循环中创建任务,并在实例化时将请求传递给所选协议。从那时起,实例化的协议处理与客户端的所有通信,tftpserverprotocol返回到侦听请求。
[Py3Tftp RRQ流程图](tftp_graph.png)
扩展Py3Tftp就像:
-子类化"basetftpServer协议",主要是实现"select_protocol"方法来选择自定义协议。
-子类化"rrqprotocol"或"wrqprotocol"来实现标准wrq和rrq请求的自己的逻辑(新选项、文件处理等),或者…
-子类化"basetftpprotocol"来实现自己的逻辑自定义请求类型的逻辑。
-~~修复一个blksize错误,即:如果传输1000字节长的文件并将blksize设置为1000字节,服务器将不会确认它。~~~
-~~从协议类中拉出文件读写器~~。
-~~从RFC 2349中添加tsize ~~(由schrd添加)。
-添加~~ blksize ~~,~~超时~,和tsize测试。
-可能为了好玩而实现rfcs 906和951!
-重构代码,消除一些重复,优化一些低挂果。
向任何获得本软件和相关文档文件(以下简称"软件")副本的人,无限制地处理本软件中的
,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或出售
本软件副本的权利,并允许向其提供该软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包括在该软件的所有
副本或实质性部分中。
任何形式的明示或暗示保证,包括但不限于适销性保证、特定用途适用性保证和非侵权性保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,
作者或版权所有人都不对任何索赔、损害赔偿或其他
责任负责,
不属于或与软件有关,或使用或与
软件有关。
[1]:https://en.wikipedia.org/wiki/trivial_file_transfer_protocol
[2]:https://tools.ietf.org/html/rfc1350
[3]:https://tools.ietf.org/html/rfc2347
[4]:https://tools.ietf.org/html/rfc2348
[5]:https://tools.ietf.org/html/rfc2349
[6]:https://docs.python.org/3/library/asyncio protocol.html
[7]:https://docs.python.org/3/library/asyncio task.html
[8]:https://www.python.org/dev/peps/pep-0448/
[9]:http://legacy.python.org/dev/peps/pep-3109/
[10]:https://tools.ietf.org/html/rfc7440
py3tftp是用python 3.5编写的异步[tftp][1]服务器。它是为与python 3一起工作的纯粹乐趣而编写的,并为rrq实现了[rfc 1350][2](邮件模式除外)、[rfc 2347][3](选项)、[rfc 2348][4](blksize选项)、[rfc 2349][5](超时,tsize)和[rfc 7440][10](windowsize)。此外,它还支持块号翻滚,因此任何大小的文件都可以进行传输。
它确实遵守了足够的标准,在现实生活中非常有用。
(3.5+)
-[附加到异常的回溯][9]-呜!
-字符串现在是字节,因为所有文本都是unicode
在一个有敏感文件的地方!
tftp没有安全功能,除了它的简单性之外:
-它不会覆盖文件。
-不会创建不存在的目录。
-不能在它运行的目录之外进行写入。
````
用法:py3tftp[-h][--主机主机][-p端口][--ack timeout ack_timeout]
[--超时超时][-l文件日志][-v][--version]
可选参数:
-h,--帮助显示此帮助消息并退出
--服务器将侦听的接口的主机IP。
默认值:0.0.0
-p端口,--服务器将侦听的端口端口端口。默认值:9069。tftp
标准兼容端口:69-需要超级用户
权限。
--确认超时确认超时
锁定步骤的每个确认超时。默认值:0.5.
--在服务器放弃传输并关闭连接之前超时超时。默认值:3.
-l file_log,--file log file_log
将输出附加到日志文件。
-v,--verbose启用调试级别日志。
--version
````
代码很混乱,因为它应该被丢弃。
```
` basetftpserverprotocol"调度在IO循环上,该循环侦听传入的TFTP请求,并决定在IO循环上调度哪种‘basetftpprotocol’来处理传入的请求。
请求。当请求进入时,它选择"wrqprotocol"或"rrqprotocol"在io循环中创建任务,并在实例化时将请求传递给所选协议。从那时起,实例化的协议处理与客户端的所有通信,tftpserverprotocol返回到侦听请求。
[Py3Tftp RRQ流程图](tftp_graph.png)
扩展Py3Tftp就像:
-子类化"basetftpServer协议",主要是实现"select_protocol"方法来选择自定义协议。
-子类化"rrqprotocol"或"wrqprotocol"来实现标准wrq和rrq请求的自己的逻辑(新选项、文件处理等),或者…
-子类化"basetftpprotocol"来实现自己的逻辑自定义请求类型的逻辑。
-~~修复一个blksize错误,即:如果传输1000字节长的文件并将blksize设置为1000字节,服务器将不会确认它。~~~
-~~从协议类中拉出文件读写器~~。
-~~从RFC 2349中添加tsize ~~(由schrd添加)。
-添加~~ blksize ~~,~~超时~,和tsize测试。
-可能为了好玩而实现rfcs 906和951!
-重构代码,消除一些重复,优化一些低挂果。
向任何获得本软件和相关文档文件(以下简称"软件")副本的人,无限制地处理本软件中的
,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或出售
本软件副本的权利,并允许向其提供该软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包括在该软件的所有
副本或实质性部分中。
任何形式的明示或暗示保证,包括但不限于适销性保证、特定用途适用性保证和非侵权性保证。在任何情况下,无论是在合同诉讼、侵权诉讼或其他诉讼中,
作者或版权所有人都不对任何索赔、损害赔偿或其他
责任负责,
不属于或与软件有关,或使用或与
软件有关。
[1]:https://en.wikipedia.org/wiki/trivial_file_transfer_protocol
[2]:https://tools.ietf.org/html/rfc1350
[3]:https://tools.ietf.org/html/rfc2347
[4]:https://tools.ietf.org/html/rfc2348
[5]:https://tools.ietf.org/html/rfc2349
[6]:https://docs.python.org/3/library/asyncio protocol.html
[7]:https://docs.python.org/3/library/asyncio task.html
[8]:https://www.python.org/dev/peps/pep-0448/
[9]:http://legacy.python.org/dev/peps/pep-3109/
[10]:https://tools.ietf.org/html/rfc7440