1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
<!-- vim: ts=4 sw=4 et
-->
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>TFTPy - A Pure Python TFTP Protocol Implementation</title>
<link href="main.css" name="main" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="banner">
<h1>TFTPy - A Pure Python TFTP Protocol Implementation</h1>
</div>
<div class="menu">
<ul>
<li><a href="#about">About TFTPy</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#plans">Future Plans</a></li>
<li><a href="#code">The Code</a></li>
<li><a href="#support">Support</a></li>
<li><a href="#doc">Documentation</a></li>
</ul>
</div>
<div class="content">
<a name="about" />
<h2>About TFTPy</h2>
<p>
TFTPy is a pure Python implementation of the
<a href="http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">Trivial FTP protocol</a>.
</p>
<p>
I wrote it because the VoIP company that I work for uses TFTP to
pull firmware loads for our sets, and at times when this doesn't
work we use a Windows-based diagnostic tool to troubleshoot the
connection.
</p>
<p>
As all of the computers in my home run some flavour of <a
href="http://en.wikipedia.org/wiki/Linux">Linux</a> or <a
href="http://en.wikipedia.org/wiki/Freebsd">FreeBSD</a>, this tool
wasn't much use to me, so I started one of my own. I decided to
use <a href="http://www.python.org">Python</a> since it's
comfortable and available for the platforms that I care about, and
was surprised to not find a pre-existing TFTP library for it. So,
I wrote one, and here it is. It's not 1.0 yet, but downloading is
production-ready IMHO, as some of the people using it tell me.
</p>
<a name="features" />
<h2>Features</h2>
<p>At this time, it supports the following RFCs:
<ul>
<li>
<a href="http://www.faqs.org/rfcs/rfc1350.html">1350</a>
The TFTP Protocol, revision 2 (octet mode only)
</li>
<li>
<a href="http://www.faqs.org/rfcs/rfc2347.html">2347</a>
TFTP Option Extension
</li>
<li>
<a href="http://www.faqs.org/rfcs/rfc2348.html">2348</a>
TFTP Blocksize Option
</li>
<li>
<a href="http://www.faqs.org/rfcs/rfc2349.html">2349</a>
TFTP Timeout Interval and Transfer Size Options (just the
tsize option right now)
</li>
</ul>
</p>
<a name="plans" />
<h2>Future Plans</h2>
<p>
I do have plans for this code before a 1.0 release, including the
following:
<ul>
<li>Full RFC 1350 compliance, including netascii mode (I could
care less about "mail" mode).</li>
<li>Symmetric UDP support. I don't know of an RFC for this but
it's a no-brainer for NAT traversal. In this mode the server
should always respond on the port that the RRQ was sent to, so
stateful firewalls will permit the response.</li>
<li>Documentation!</li>
</ul>
</p>
<a name="code" />
<h2>The Code</h2>
<p>
You can find the latest release at the SourceForge <a
href="http://www.sf.net/projects/tftpy/">Project Page</a>, as a
source tarball. It should also be in <a
href="http://pypi.python.org/pypi">PyPi</a>, so you can use
easy_install if you prefer.
</p>
<p>
The latest code though is always on the master branch in <a
href="http://github.com">Github</a>. I did use SVN in SourceForge
for a while, but after discovering Git I couldn't go back. To
clone the repository, run the following command using git
<pre>
git clone git://github.com/msoulier/tftpy.git
</pre>
Patches welcome, even if I can't guarantee response time. You can
of course send me the url of a public git repository to pull from
as well.
</p>
<p>The Github project page is <a
href="http://github.com/msoulier/tftpy/tree/master">right
here</a>.</p>
</p>
<a name="support" />
<h2>Support</h2>
<p>
SourceForge doesn't make the mailing list easy to find, so
<a
href="https://lists.sourceforge.net/lists/listinfo/tftpy-general">here
is a direct link</a> if you'd like to join.</p>
<p>
Feel free to <a href="mailto:msoulier@digitaltorque.ca">email me</a>
with any questions, or contact me through github.
</p>
<p>
To submit a bug report, please use the
<a href="http://github.com/msoulier/tftpy/issues">issue tracker</a>
in the Github project page. I've shut down the trackers at
sourceforge for now.
</p>
<a name="doc" />
<h2>Documentation</h2>
<p>
I am working on some documentation via the
<a href="http://sphinx.pocoo.org/">Sphinx project</a>. The current
ones are <a href="sphinx/index.html">here</a>.
</p>
<hr />
<p>Last updated: May 10, 2010.</p>
</div>
</body>
</html>
|