summaryrefslogtreecommitdiff
path: root/html/index.html
blob: da9765e86e86296fe73426b1d68d0970583ac45f (plain)
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>