summaryrefslogtreecommitdiff
path: root/html/index.html
blob: da3762b626eb2a8c5c22238ef99266f5a5e3ab11 (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
<!-- 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 Implementation</title>
        <link href="main.css" name="main" type="text/css" rel="stylesheet" />
    </head>
    <body>
    <div class="banner">
        <h1>TFTPy - A Pure Python TFTP 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 (downloads only, 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. I'm also
            "msoulier" in <a href="http://identi.ca">identi.ca</a>.
        </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>For now, all I have is the
        <a href="tftpy-doc/index.html">API docs</a>. I'll have to work up a
        tutorial and a manual at some point.</p>

        <hr />

        <p>Last updated: May 10, 2010.</p>
    </div>
    </body>
</html>