Documentation update for 0.6.0
This commit is contained in:
parent
64478a31a6
commit
6ab5ea47e8
19 changed files with 1275 additions and 651 deletions
|
@ -45,9 +45,9 @@ copyright = u'2010, Michael P. Soulier'
|
|||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.5'
|
||||
version = '0.6'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.5.1'
|
||||
release = '0.6.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -101,6 +101,12 @@ The `TftpShared` Module
|
|||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
The `TftpContexts` Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. automodule:: tftpy.TftpContexts
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
The `TftpStates` Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. automodule:: tftpy.TftpStates
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>TFTPy - A Pure Python TFTP Implementation</title>
|
||||
<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 Implementation</h1>
|
||||
<h1>TFTPy - A Pure Python TFTP Protocol Implementation</h1>
|
||||
</div>
|
||||
<div class="menu">
|
||||
<ul>
|
||||
|
|
|
@ -101,6 +101,12 @@ The `TftpShared` Module
|
|||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
The `TftpContexts` Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. automodule:: tftpy.TftpContexts
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
The `TftpStates` Module
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. automodule:: tftpy.TftpStates
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
/**
|
||||
* Sphinx stylesheet -- basic theme
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
/*
|
||||
* basic.css
|
||||
* ~~~~~~~~~
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
@ -127,6 +133,10 @@ span.linkdescr {
|
|||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
|
@ -152,6 +162,20 @@ img.toggler {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
a.headerlink {
|
||||
|
@ -189,6 +213,37 @@ p.rubric {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar {
|
||||
|
@ -252,7 +307,7 @@ table.docutils {
|
|||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 0;
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
|
@ -272,8 +327,37 @@ th {
|
|||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
@ -292,7 +376,7 @@ dd {
|
|||
margin-left: 30px;
|
||||
}
|
||||
|
||||
dt:target, .highlight {
|
||||
dt:target, .highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
|
@ -329,7 +413,7 @@ dl.glossary dt {
|
|||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
|
@ -344,10 +428,23 @@ dl.glossary dt {
|
|||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
|
@ -384,6 +481,20 @@ h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
|||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
/**
|
||||
* Sphinx stylesheet -- default theme
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
/*
|
||||
* default.css_t
|
||||
* ~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx stylesheet -- default theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
@import url("basic.css");
|
||||
|
@ -107,21 +113,27 @@ div.sphinxsidebar input {
|
|||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* -- body styles ----------------------------------------------------------- */
|
||||
|
||||
|
||||
/* -- hyperlink styles ------------------------------------------------------ */
|
||||
|
||||
a {
|
||||
color: #355f7c;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #355f7c;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li {
|
||||
text-align: justify;
|
||||
line-height: 130%;
|
||||
}
|
||||
|
||||
|
||||
/* -- body styles ----------------------------------------------------------- */
|
||||
|
||||
div.body h1,
|
||||
div.body h2,
|
||||
|
@ -221,10 +233,24 @@ tt {
|
|||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #ede;
|
||||
}
|
||||
|
||||
.warning tt {
|
||||
background: #efc2c2;
|
||||
}
|
||||
|
||||
.note tt {
|
||||
background: #d6d6d6;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
background-color: #f4debf;
|
||||
border-top: 1px solid #ac9;
|
||||
border-bottom: 1px solid #ac9;
|
||||
}
|
|
@ -1,16 +1,31 @@
|
|||
/// XXX: make it cross browser
|
||||
/*
|
||||
* doctools.js
|
||||
* ~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilties for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* select a different prefix for underscore
|
||||
*/
|
||||
$u = _.noConflict();
|
||||
|
||||
/**
|
||||
* make the code below compatible with browsers without
|
||||
* an installed firebug like debugger
|
||||
*/
|
||||
if (!window.console || !console.firebug) {
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
||||
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
||||
"profile", "profileEnd"];
|
||||
window.console = {};
|
||||
for (var i = 0; i < names.length; ++i)
|
||||
window.console[names[i]] = function() {}
|
||||
window.console[names[i]] = function() {};
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
|
@ -44,7 +59,7 @@ jQuery.getQueryParameters = function(s) {
|
|||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* small function to check if an array contains
|
||||
|
@ -56,7 +71,7 @@ jQuery.contains = function(arr, item) {
|
|||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
|
@ -67,7 +82,7 @@ jQuery.fn.highlightText = function(text, className) {
|
|||
if (node.nodeType == 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) {
|
||||
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
|
||||
var span = document.createElement("span");
|
||||
span.className = className;
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
|
@ -79,14 +94,14 @@ jQuery.fn.highlightText = function(text, className) {
|
|||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this)
|
||||
highlight(this);
|
||||
});
|
||||
}
|
||||
}
|
||||
return this.each(function() {
|
||||
highlight(this);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
|
@ -96,7 +111,7 @@ var Documentation = {
|
|||
init : function() {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initModIndex();
|
||||
this.initIndexTable();
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -107,7 +122,7 @@ var Documentation = {
|
|||
LOCALE : 'unknown',
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can savely bound to a different name (_ = Documentation.gettext)
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext : function(string) {
|
||||
var translated = Documentation.TRANSLATIONS[string];
|
||||
if (typeof translated == 'undefined')
|
||||
|
@ -167,7 +182,7 @@ var Documentation = {
|
|||
var body = $('div.body');
|
||||
window.setTimeout(function() {
|
||||
$.each(terms, function() {
|
||||
body.highlightText(this.toLowerCase(), 'highlight');
|
||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||
});
|
||||
}, 10);
|
||||
$('<li class="highlight-link"><a href="javascript:Documentation.' +
|
||||
|
@ -177,19 +192,19 @@ var Documentation = {
|
|||
},
|
||||
|
||||
/**
|
||||
* init the modindex toggle buttons
|
||||
* init the domain index toggle buttons
|
||||
*/
|
||||
initModIndex : function() {
|
||||
initIndexTable : function() {
|
||||
var togglers = $('img.toggler').click(function() {
|
||||
var src = $(this).attr('src');
|
||||
var idnum = $(this).attr('id').substr(7);
|
||||
console.log($('tr.cg-' + idnum).toggle());
|
||||
$('tr.cg-' + idnum).toggle();
|
||||
if (src.substr(-9) == 'minus.png')
|
||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
||||
else
|
||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
||||
}).css('display', '');
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) {
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
||||
togglers.click();
|
||||
}
|
||||
},
|
||||
|
@ -199,7 +214,7 @@ var Documentation = {
|
|||
*/
|
||||
hideSearchWords : function() {
|
||||
$('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
|
||||
$('span.highlight').removeClass('highlight');
|
||||
$('span.highlighted').removeClass('highlighted');
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
180
html/sphinx/_static/jquery.js
vendored
180
html/sphinx/_static/jquery.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,61 +1,62 @@
|
|||
.hll { background-color: #ffffcc }
|
||||
.c { color: #408090; font-style: italic } /* Comment */
|
||||
.err { border: 1px solid #FF0000 } /* Error */
|
||||
.k { color: #007020; font-weight: bold } /* Keyword */
|
||||
.o { color: #666666 } /* Operator */
|
||||
.cm { color: #408090; font-style: italic } /* Comment.Multiline */
|
||||
.cp { color: #007020 } /* Comment.Preproc */
|
||||
.c1 { color: #408090; font-style: italic } /* Comment.Single */
|
||||
.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
|
||||
.gd { color: #A00000 } /* Generic.Deleted */
|
||||
.ge { font-style: italic } /* Generic.Emph */
|
||||
.gr { color: #FF0000 } /* Generic.Error */
|
||||
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.gi { color: #00A000 } /* Generic.Inserted */
|
||||
.go { color: #303030 } /* Generic.Output */
|
||||
.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
||||
.gs { font-weight: bold } /* Generic.Strong */
|
||||
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.gt { color: #0040D0 } /* Generic.Traceback */
|
||||
.kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
||||
.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
||||
.kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
||||
.kp { color: #007020 } /* Keyword.Pseudo */
|
||||
.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
|
||||
.kt { color: #902000 } /* Keyword.Type */
|
||||
.m { color: #208050 } /* Literal.Number */
|
||||
.s { color: #4070a0 } /* Literal.String */
|
||||
.na { color: #4070a0 } /* Name.Attribute */
|
||||
.nb { color: #007020 } /* Name.Builtin */
|
||||
.nc { color: #0e84b5; font-weight: bold } /* Name.Class */
|
||||
.no { color: #60add5 } /* Name.Constant */
|
||||
.nd { color: #555555; font-weight: bold } /* Name.Decorator */
|
||||
.ni { color: #d55537; font-weight: bold } /* Name.Entity */
|
||||
.ne { color: #007020 } /* Name.Exception */
|
||||
.nf { color: #06287e } /* Name.Function */
|
||||
.nl { color: #002070; font-weight: bold } /* Name.Label */
|
||||
.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
|
||||
.nt { color: #062873; font-weight: bold } /* Name.Tag */
|
||||
.nv { color: #bb60d5 } /* Name.Variable */
|
||||
.ow { color: #007020; font-weight: bold } /* Operator.Word */
|
||||
.w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.mf { color: #208050 } /* Literal.Number.Float */
|
||||
.mh { color: #208050 } /* Literal.Number.Hex */
|
||||
.mi { color: #208050 } /* Literal.Number.Integer */
|
||||
.mo { color: #208050 } /* Literal.Number.Oct */
|
||||
.sb { color: #4070a0 } /* Literal.String.Backtick */
|
||||
.sc { color: #4070a0 } /* Literal.String.Char */
|
||||
.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
|
||||
.s2 { color: #4070a0 } /* Literal.String.Double */
|
||||
.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
|
||||
.sh { color: #4070a0 } /* Literal.String.Heredoc */
|
||||
.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
|
||||
.sx { color: #c65d09 } /* Literal.String.Other */
|
||||
.sr { color: #235388 } /* Literal.String.Regex */
|
||||
.s1 { color: #4070a0 } /* Literal.String.Single */
|
||||
.ss { color: #517918 } /* Literal.String.Symbol */
|
||||
.bp { color: #007020 } /* Name.Builtin.Pseudo */
|
||||
.vc { color: #bb60d5 } /* Name.Variable.Class */
|
||||
.vg { color: #bb60d5 } /* Name.Variable.Global */
|
||||
.vi { color: #bb60d5 } /* Name.Variable.Instance */
|
||||
.il { color: #208050 } /* Literal.Number.Integer.Long */
|
||||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #eeffcc; }
|
||||
.highlight .c { color: #408090; font-style: italic } /* Comment */
|
||||
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
||||
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #666666 } /* Operator */
|
||||
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #007020 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
|
||||
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||
.highlight .go { color: #303030 } /* Generic.Output */
|
||||
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #0040D0 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #902000 } /* Keyword.Type */
|
||||
.highlight .m { color: #208050 } /* Literal.Number */
|
||||
.highlight .s { color: #4070a0 } /* Literal.String */
|
||||
.highlight .na { color: #4070a0 } /* Name.Attribute */
|
||||
.highlight .nb { color: #007020 } /* Name.Builtin */
|
||||
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #60add5 } /* Name.Constant */
|
||||
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
|
||||
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #007020 } /* Name.Exception */
|
||||
.highlight .nf { color: #06287e } /* Name.Function */
|
||||
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
|
||||
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
||||
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
|
||||
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #235388 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
|
|
@ -1,3 +1,14 @@
|
|||
/*
|
||||
* searchtools.js
|
||||
* ~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilties for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
|
@ -20,7 +31,7 @@ jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
|||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<div class="context"></div>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlight');
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
|
@ -226,9 +237,11 @@ var Search = {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the index
|
||||
*/
|
||||
loadIndex : function(url) {
|
||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
||||
dataType: "script", cache: true});
|
||||
},
|
||||
|
||||
setIndex : function(index) {
|
||||
var q;
|
||||
this._index = index;
|
||||
|
@ -287,8 +300,13 @@ var Search = {
|
|||
},
|
||||
|
||||
query : function(query) {
|
||||
// stem the searchterms and add them to the
|
||||
// correct list
|
||||
var stopwords = ['and', 'then', 'into', 'it', 'as', 'are', 'in',
|
||||
'if', 'for', 'no', 'there', 'their', 'was', 'is',
|
||||
'be', 'to', 'that', 'but', 'they', 'not', 'such',
|
||||
'with', 'by', 'a', 'on', 'these', 'of', 'will',
|
||||
'this', 'near', 'the', 'or', 'at'];
|
||||
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new PorterStemmer();
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
|
@ -296,6 +314,11 @@ var Search = {
|
|||
var tmp = query.split(/\s+/);
|
||||
var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null;
|
||||
for (var i = 0; i < tmp.length; i++) {
|
||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
||||
tmp[i] == "") {
|
||||
// skip this "word"
|
||||
continue;
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
||||
// select the correct list
|
||||
|
@ -313,39 +336,42 @@ var Search = {
|
|||
};
|
||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||
|
||||
console.debug('SEARCH: searching for:');
|
||||
console.info('required: ', searchterms);
|
||||
console.info('excluded: ', excluded);
|
||||
// console.debug('SEARCH: searching for:');
|
||||
// console.info('required: ', searchterms);
|
||||
// console.info('excluded: ', excluded);
|
||||
|
||||
// prepare search
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
var terms = this._index.terms;
|
||||
var descrefs = this._index.descrefs;
|
||||
var modules = this._index.modules;
|
||||
var desctypes = this._index.desctypes;
|
||||
var objects = this._index.objects;
|
||||
var objtypes = this._index.objtypes;
|
||||
var objnames = this._index.objnames;
|
||||
var fileMap = {};
|
||||
var files = null;
|
||||
// different result priorities
|
||||
var importantResults = [];
|
||||
var objectResults = [];
|
||||
var regularResults = [];
|
||||
var unimportantResults = [];
|
||||
$('#search-progress').empty();
|
||||
|
||||
// lookup as object
|
||||
if (object != null) {
|
||||
for (var module in modules) {
|
||||
if (module.indexOf(object) > -1) {
|
||||
fn = modules[module];
|
||||
descr = _('module, in ') + titles[fn];
|
||||
objectResults.push([filenames[fn], module, '#module-'+module, descr]);
|
||||
}
|
||||
}
|
||||
for (var prefix in descrefs) {
|
||||
for (var name in descrefs[prefix]) {
|
||||
for (var prefix in objects) {
|
||||
for (var name in objects[prefix]) {
|
||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||
match = descrefs[prefix][name];
|
||||
descr = desctypes[match[1]] + _(', in ') + titles[match[0]];
|
||||
objectResults.push([filenames[match[0]], fullname, '#'+fullname, descr]);
|
||||
match = objects[prefix][name];
|
||||
descr = objnames[match[1]] + _(', in ') + titles[match[0]];
|
||||
// XXX the generated anchors are not generally correct
|
||||
// XXX there may be custom prefixes
|
||||
result = [filenames[match[0]], fullname, '#'+fullname, descr];
|
||||
switch (match[2]) {
|
||||
case 1: objectResults.push(result); break;
|
||||
case 0: importantResults.push(result); break;
|
||||
case 2: unimportantResults.push(result); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -356,6 +382,14 @@ var Search = {
|
|||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
|
||||
importantResults.sort(function(a, b) {
|
||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
|
||||
unimportantResults.sort(function(a, b) {
|
||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
||||
});
|
||||
|
||||
|
||||
// perform the search on the required terms
|
||||
for (var i = 0; i < searchterms.length; i++) {
|
||||
|
@ -411,8 +445,9 @@ var Search = {
|
|||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
});
|
||||
|
||||
// combine both
|
||||
var results = regularResults.concat(objectResults);
|
||||
// combine all results
|
||||
var results = unimportantResults.concat(regularResults)
|
||||
.concat(objectResults).concat(importantResults);
|
||||
|
||||
// print the results
|
||||
var resultCount = results.length;
|
||||
|
@ -421,10 +456,23 @@ var Search = {
|
|||
if (results.length) {
|
||||
var item = results.pop();
|
||||
var listItem = $('<li style="display:none"></li>');
|
||||
listItem.append($('<a/>').attr(
|
||||
'href',
|
||||
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
||||
// dirhtml builder
|
||||
var dirname = item[0] + '/';
|
||||
if (dirname.match(/\/index\/$/)) {
|
||||
dirname = dirname.substring(0, dirname.length-6);
|
||||
} else if (dirname == 'index/') {
|
||||
dirname = '';
|
||||
}
|
||||
listItem.append($('<a/>').attr('href',
|
||||
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
} else {
|
||||
// normal html builders
|
||||
listItem.append($('<a/>').attr('href',
|
||||
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
}
|
||||
if (item[3]) {
|
||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
||||
Search.output.append(listItem);
|
||||
|
@ -432,9 +480,12 @@ var Search = {
|
|||
displayNextItem();
|
||||
});
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
$.get('_sources/' + item[0] + '.txt', function(data) {
|
||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
||||
Search.output.append(listItem);
|
||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
||||
item[0] + '.txt', function(data) {
|
||||
if (data != '') {
|
||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
||||
Search.output.append(listItem);
|
||||
}
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
|
|
148
html/sphinx/_static/sidebar.js
Normal file
148
html/sphinx/_static/sidebar.js
Normal file
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* sidebar.js
|
||||
* ~~~~~~~~~~
|
||||
*
|
||||
* This script makes the Sphinx sidebar collapsible.
|
||||
*
|
||||
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
|
||||
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
|
||||
* used to collapse and expand the sidebar.
|
||||
*
|
||||
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
|
||||
* and the width of the sidebar and the margin-left of the document
|
||||
* are decreased. When the sidebar is expanded the opposite happens.
|
||||
* This script saves a per-browser/per-session cookie used to
|
||||
* remember the position of the sidebar among the pages.
|
||||
* Once the browser is closed the cookie is deleted and the position
|
||||
* reset to the default (expanded).
|
||||
*
|
||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
// global elements used by the functions.
|
||||
// the 'sidebarbutton' element is defined as global after its
|
||||
// creation, in the add_sidebar_button function
|
||||
var bodywrapper = $('.bodywrapper');
|
||||
var sidebar = $('.sphinxsidebar');
|
||||
var sidebarwrapper = $('.sphinxsidebarwrapper');
|
||||
|
||||
// original margin-left of the bodywrapper and width of the sidebar
|
||||
// with the sidebar expanded
|
||||
var bw_margin_expanded = bodywrapper.css('margin-left');
|
||||
var ssb_width_expanded = sidebar.width();
|
||||
|
||||
// margin-left of the bodywrapper and width of the sidebar
|
||||
// with the sidebar collapsed
|
||||
var bw_margin_collapsed = '.8em';
|
||||
var ssb_width_collapsed = '.8em';
|
||||
|
||||
// colors used by the current theme
|
||||
var dark_color = $('.related').css('background-color');
|
||||
var light_color = $('.document').css('background-color');
|
||||
|
||||
function sidebar_is_collapsed() {
|
||||
return sidebarwrapper.is(':not(:visible)');
|
||||
}
|
||||
|
||||
function toggle_sidebar() {
|
||||
if (sidebar_is_collapsed())
|
||||
expand_sidebar();
|
||||
else
|
||||
collapse_sidebar();
|
||||
}
|
||||
|
||||
function collapse_sidebar() {
|
||||
sidebarwrapper.hide();
|
||||
sidebar.css('width', ssb_width_collapsed);
|
||||
bodywrapper.css('margin-left', bw_margin_collapsed);
|
||||
sidebarbutton.css({
|
||||
'margin-left': '0',
|
||||
'height': bodywrapper.height()
|
||||
});
|
||||
sidebarbutton.find('span').text('»');
|
||||
sidebarbutton.attr('title', _('Expand sidebar'));
|
||||
document.cookie = 'sidebar=collapsed';
|
||||
}
|
||||
|
||||
function expand_sidebar() {
|
||||
bodywrapper.css('margin-left', bw_margin_expanded);
|
||||
sidebar.css('width', ssb_width_expanded);
|
||||
sidebarwrapper.show();
|
||||
sidebarbutton.css({
|
||||
'margin-left': ssb_width_expanded-12,
|
||||
'height': bodywrapper.height()
|
||||
});
|
||||
sidebarbutton.find('span').text('«');
|
||||
sidebarbutton.attr('title', _('Collapse sidebar'));
|
||||
document.cookie = 'sidebar=expanded';
|
||||
}
|
||||
|
||||
function add_sidebar_button() {
|
||||
sidebarwrapper.css({
|
||||
'float': 'left',
|
||||
'margin-right': '0',
|
||||
'width': ssb_width_expanded - 28
|
||||
});
|
||||
// create the button
|
||||
sidebar.append(
|
||||
'<div id="sidebarbutton"><span>«</span></div>'
|
||||
);
|
||||
var sidebarbutton = $('#sidebarbutton');
|
||||
light_color = sidebarbutton.css('background-color');
|
||||
// find the height of the viewport to center the '<<' in the page
|
||||
var viewport_height;
|
||||
if (window.innerHeight)
|
||||
viewport_height = window.innerHeight;
|
||||
else
|
||||
viewport_height = $(window).height();
|
||||
sidebarbutton.find('span').css({
|
||||
'display': 'block',
|
||||
'margin-top': (viewport_height - sidebar.position().top - 20) / 2
|
||||
});
|
||||
|
||||
sidebarbutton.click(toggle_sidebar);
|
||||
sidebarbutton.attr('title', _('Collapse sidebar'));
|
||||
sidebarbutton.css({
|
||||
'color': '#FFFFFF',
|
||||
'border-left': '1px solid ' + dark_color,
|
||||
'font-size': '1.2em',
|
||||
'cursor': 'pointer',
|
||||
'height': bodywrapper.height(),
|
||||
'padding-top': '1px',
|
||||
'margin-left': ssb_width_expanded - 12
|
||||
});
|
||||
|
||||
sidebarbutton.hover(
|
||||
function () {
|
||||
$(this).css('background-color', dark_color);
|
||||
},
|
||||
function () {
|
||||
$(this).css('background-color', light_color);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function set_position_from_cookie() {
|
||||
if (!document.cookie)
|
||||
return;
|
||||
var items = document.cookie.split(';');
|
||||
for(var k=0; k<items.length; k++) {
|
||||
var key_val = items[k].split('=');
|
||||
var key = key_val[0];
|
||||
if (key == 'sidebar') {
|
||||
var value = key_val[1];
|
||||
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
|
||||
collapse_sidebar();
|
||||
else if ((value == 'expanded') && (sidebar_is_collapsed()))
|
||||
expand_sidebar();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
add_sidebar_button();
|
||||
var sidebarbutton = $('#sidebarbutton');
|
||||
set_position_from_cookie();
|
||||
});
|
16
html/sphinx/_static/underscore.js
Normal file
16
html/sphinx/_static/underscore.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
@ -5,21 +7,22 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Index — TFTPy v0.5.1 documentation</title>
|
||||
<title>Index — TFTPy v0.6.0 documentation</title>
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '#',
|
||||
VERSION: '0.5.1',
|
||||
COLLAPSE_MODINDEX: false,
|
||||
URL_ROOT: '',
|
||||
VERSION: '0.6.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="TFTPy v0.5.1 documentation" href="index.html" />
|
||||
<link rel="top" title="TFTPy v0.6.0 documentation" href="index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
|
@ -29,9 +32,9 @@
|
|||
<a href="#" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
accesskey="M">modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -43,176 +46,194 @@
|
|||
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
<a href="#A"><strong>A</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#H"><strong>H</strong></a> | <a href="#L"><strong>L</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#U"><strong>U</strong></a>
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
</div>
|
||||
<h2 id="A">A</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpMetrics.add_dup">add_dup() (tftpy.TftpStates.TftpMetrics method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpMetrics.add_dup">add_dup() (tftpy.TftpContexts.TftpMetrics method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="C">C</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.checkTimeout">checkTimeout() (tftpy.TftpStates.TftpContext method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.cycle">cycle() (tftpy.TftpStates.TftpContext method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.checkTimeout">checkTimeout() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.cycle">cycle() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="D">D</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket.decode">decode() (tftpy.TftpPacketTypes.TftpPacket method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT.decode">(tftpy.TftpPacketTypes.TftpPacketDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR.decode">(tftpy.TftpPacketTypes.TftpPacketERR method)</a></dt>
|
||||
</dl></dd></dl></td><td width="33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWithOptions.decode_options">decode_options() (tftpy.TftpPacketTypes.TftpPacketWithOptions method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient.download">download() (tftpy.TftpClient.TftpClient method)</a></dt>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket.decode">decode() (tftpy.TftpPacketTypes.TftpPacket method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT.decode">(tftpy.TftpPacketTypes.TftpPacketDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR.decode">(tftpy.TftpPacketTypes.TftpPacketERR method)</a></dt>
|
||||
</dl></dd>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWithOptions.decode_options">decode_options() (tftpy.TftpPacketTypes.TftpPacketWithOptions method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient.download">download() (tftpy.TftpClient.TftpClient method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="E">E</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket.encode">encode() (tftpy.TftpPacketTypes.TftpPacket method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT.encode">(tftpy.TftpPacketTypes.TftpPacketDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR.encode">(tftpy.TftpPacketTypes.TftpPacketERR method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketInitial.encode">(tftpy.TftpPacketTypes.TftpPacketInitial method)</a></dt>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket.encode">encode() (tftpy.TftpPacketTypes.TftpPacket method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT.encode">(tftpy.TftpPacketTypes.TftpPacketDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR.encode">(tftpy.TftpPacketTypes.TftpPacketERR method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketInitial.encode">(tftpy.TftpPacketTypes.TftpPacketInitial method)</a></dt>
|
||||
</dl></dd>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.end">end() (tftpy.TftpStates.TftpContext method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextClientDownload.end">(tftpy.TftpStates.TftpContextClientDownload method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextClientUpload.end">(tftpy.TftpStates.TftpContextClientUpload method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextServer.end">(tftpy.TftpStates.TftpContextServer method)</a></dt>
|
||||
</dl></dd></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.end">end() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextClientDownload.end">(tftpy.TftpContexts.TftpContextClientDownload method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextClientUpload.end">(tftpy.TftpContexts.TftpContextClientUpload method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextServer.end">(tftpy.TftpContexts.TftpContextServer method)</a></dt>
|
||||
</dl></dd>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="G">G</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.gethost">gethost() (tftpy.TftpStates.TftpContext method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.getBlocksize">getBlocksize() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.gethost">gethost() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="H">H</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handle">handle() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectACK.handle">(tftpy.TftpStates.TftpStateExpectACK method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectDAT.handle">(tftpy.TftpStates.TftpStateExpectDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentRRQ.handle">(tftpy.TftpStates.TftpStateSentRRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentWRQ.handle">(tftpy.TftpStates.TftpStateSentWRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvRRQ.handle">(tftpy.TftpStates.TftpStateServerRecvRRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvWRQ.handle">(tftpy.TftpStates.TftpStateServerRecvWRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerStart.handle">(tftpy.TftpStates.TftpStateServerStart method)</a></dt>
|
||||
</dl></dd></dl></td><td width="33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handleDat">handleDat() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handleOACK">handleOACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.host">host (tftpy.TftpStates.TftpContext attribute)</a></dt>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handle">handle() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectACK.handle">(tftpy.TftpStates.TftpStateExpectACK method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectDAT.handle">(tftpy.TftpStates.TftpStateExpectDAT method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentRRQ.handle">(tftpy.TftpStates.TftpStateSentRRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentWRQ.handle">(tftpy.TftpStates.TftpStateSentWRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvRRQ.handle">(tftpy.TftpStates.TftpStateServerRecvRRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvWRQ.handle">(tftpy.TftpStates.TftpStateServerRecvWRQ method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerStart.handle">(tftpy.TftpStates.TftpStateServerStart method)</a></dt>
|
||||
</dl></dd>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handleDat">handleDat() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.handleOACK">handleOACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.host">host (tftpy.TftpContexts.TftpContext attribute)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="L">L</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpServer.TftpServer.listen">listen() (tftpy.TftpServer.TftpServer method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpServer.TftpServer.listen">listen() (tftpy.TftpServer.TftpServer method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="M">M</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketOACK.match_options">match_options() (tftpy.TftpPacketTypes.TftpPacketOACK method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketOACK.match_options">match_options() (tftpy.TftpPacketTypes.TftpPacketOACK method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="P">P</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpPacketFactory.TftpPacketFactory.parse">parse() (tftpy.TftpPacketFactory.TftpPacketFactory method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpPacketFactory.TftpPacketFactory.parse">parse() (tftpy.TftpPacketFactory.TftpPacketFactory method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="R">R</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.returnSupportedOptions">returnSupportedOptions() (tftpy.TftpStates.TftpState method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.resendLast">resendLast() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.returnSupportedOptions">returnSupportedOptions() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="S">S</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendACK">sendACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendDAT">sendDAT() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendError">sendError() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendOACK">sendOACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.serverInitial">serverInitial() (tftpy.TftpStates.TftpState method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext.sethost">sethost() (tftpy.TftpStates.TftpContext method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.setLogLevel">setLogLevel() (in module tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextClientDownload.start">start() (tftpy.TftpStates.TftpContextClientDownload method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextServer.start">(tftpy.TftpStates.TftpContextServer method)</a></dt>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendACK">sendACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendDAT">sendDAT() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendError">sendError() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.sendOACK">sendOACK() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState.serverInitial">serverInitial() (tftpy.TftpStates.TftpState method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext.sethost">sethost() (tftpy.TftpContexts.TftpContext method)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.setLogLevel">setLogLevel() (in module tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextClientDownload.start">start() (tftpy.TftpContexts.TftpContextClientDownload method)</a></dt>
|
||||
<dd><dl>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextServer.start">(tftpy.TftpContexts.TftpContextServer method)</a></dt>
|
||||
</dl></dd>
|
||||
</dl></td></tr></table>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="T">T</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpShared.tftpassert">tftpassert() (in module tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient">TftpClient (class in tftpy.TftpClient)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContext">TftpContext (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextClientDownload">TftpContextClientDownload (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextClientUpload">TftpContextClientUpload (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpContextServer">TftpContextServer (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.TftpErrors">TftpErrors (class in tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.TftpException">TftpException</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpMetrics">TftpMetrics (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket">TftpPacket (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketACK">TftpPacketACK (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT">TftpPacketDAT (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR">TftpPacketERR (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketFactory.TftpPacketFactory">TftpPacketFactory (class in tftpy.TftpPacketFactory)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketInitial">TftpPacketInitial (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketOACK">TftpPacketOACK (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketRRQ">TftpPacketRRQ (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWithOptions">TftpPacketWithOptions (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWRQ">TftpPacketWRQ (class in tftpy.TftpPacketTypes)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpServer.TftpServer">TftpServer (class in tftpy.TftpServer)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpSession">TftpSession (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState">TftpState (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectACK">TftpStateExpectACK (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectDAT">TftpStateExpectDAT (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentRRQ">TftpStateSentRRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentWRQ">TftpStateSentWRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvRRQ">TftpStateServerRecvRRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvWRQ">TftpStateServerRecvWRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerStart">TftpStateServerStart (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy">tftpy (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpClient">tftpy.TftpClient (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpPacketFactory">tftpy.TftpPacketFactory (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpPacketTypes">tftpy.TftpPacketTypes (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpServer">tftpy.TftpServer (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpShared">tftpy.TftpShared (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpStates">tftpy.TftpStates (module)</a></dt>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpShared.tftpassert">tftpassert() (in module tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient">TftpClient (class in tftpy.TftpClient)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContext">TftpContext (class in tftpy.TftpContexts)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextClientDownload">TftpContextClientDownload (class in tftpy.TftpContexts)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextClientUpload">TftpContextClientUpload (class in tftpy.TftpContexts)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpContextServer">TftpContextServer (class in tftpy.TftpContexts)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.TftpErrors">TftpErrors (class in tftpy.TftpShared)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.TftpException">TftpException</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpContexts.TftpMetrics">TftpMetrics (class in tftpy.TftpContexts)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacket">TftpPacket (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketACK">TftpPacketACK (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketDAT">TftpPacketDAT (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketERR">TftpPacketERR (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketFactory.TftpPacketFactory">TftpPacketFactory (class in tftpy.TftpPacketFactory)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketInitial">TftpPacketInitial (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketOACK">TftpPacketOACK (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketRRQ">TftpPacketRRQ (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWithOptions">TftpPacketWithOptions (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpPacketWRQ">TftpPacketWRQ (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
</dl></td>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpServer.TftpServer">TftpServer (class in tftpy.TftpServer)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpPacketTypes.TftpSession">TftpSession (class in tftpy.TftpPacketTypes)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpState">TftpState (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectACK">TftpStateExpectACK (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateExpectDAT">TftpStateExpectDAT (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentRRQ">TftpStateSentRRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateSentWRQ">TftpStateSentWRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvRRQ">TftpStateServerRecvRRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerRecvWRQ">TftpStateServerRecvWRQ (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpStates.TftpStateServerStart">TftpStateServerStart (class in tftpy.TftpStates)</a></dt>
|
||||
<dt><a href="index.html#tftpy.TftpShared.TftpTimeout">TftpTimeout</a></dt>
|
||||
<dt><a href="index.html#module-tftpy">tftpy (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpClient">tftpy.TftpClient (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpContexts">tftpy.TftpContexts (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpPacketFactory">tftpy.TftpPacketFactory (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpPacketTypes">tftpy.TftpPacketTypes (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpServer">tftpy.TftpServer (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpShared">tftpy.TftpShared (module)</a></dt>
|
||||
<dt><a href="index.html#module-tftpy.TftpStates">tftpy.TftpStates (module)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="U">U</h2>
|
||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
||||
<dl>
|
||||
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient.upload">upload() (tftpy.TftpClient.TftpClient method)</a></dt></dl></td><td width="33%" valign="top"><dl>
|
||||
</dl></td></tr></table>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%" valign="top"><dl>
|
||||
<dt><a href="index.html#tftpy.TftpClient.TftpClient.upload">upload() (tftpy.TftpClient.TftpClient method)</a></dt>
|
||||
</dl></td>
|
||||
</tr></table>
|
||||
|
||||
|
||||
|
||||
|
@ -224,19 +245,19 @@
|
|||
|
||||
|
||||
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
|
@ -248,14 +269,14 @@
|
|||
<a href="#" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
@ -5,21 +7,22 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>TFTPy — TFTPy v0.5.1 documentation</title>
|
||||
<title>TFTPy — TFTPy v0.6.0 documentation</title>
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '#',
|
||||
VERSION: '0.5.1',
|
||||
COLLAPSE_MODINDEX: false,
|
||||
URL_ROOT: '',
|
||||
VERSION: '0.6.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="TFTPy v0.5.1 documentation" href="#" />
|
||||
<link rel="top" title="TFTPy v0.6.0 documentation" href="#" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
|
@ -29,9 +32,9 @@
|
|||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
accesskey="M">modules</a> |</li>
|
||||
<li><a href="#">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="#">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -43,12 +46,14 @@
|
|||
<div class="section" id="tftpy">
|
||||
<h1>TFTPy<a class="headerlink" href="#tftpy" title="Permalink to this headline">¶</a></h1>
|
||||
<p>TFTPy is a pure python TFTP implementation.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul class="simple">
|
||||
</ul>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="genindex.html"><em>Index</em></a></li>
|
||||
<li><a class="reference external" href="modindex.html"><em>Module Index</em></a></li>
|
||||
<li><a class="reference external" href="search.html"><em>Search Page</em></a></li>
|
||||
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
||||
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
|
||||
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="requirements">
|
||||
|
@ -95,7 +100,7 @@ and you should be able to import the <cite>tftpy</cite> module.</p>
|
|||
<p>These modules are the ones that you will need to use directly to implement a
|
||||
TFTP client or server.</p>
|
||||
<div class="section" id="module-tftpy">
|
||||
<h3>The <tt class="xref docutils literal"><span class="pre">tftpy</span></tt> Module<a class="headerlink" href="#module-tftpy" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftpy-module"></span><h3>The <a class="reference internal" href="#module-tftpy" title="tftpy"><tt class="xref py py-mod docutils literal"><span class="pre">tftpy</span></tt></a> Module<a class="headerlink" href="#module-tftpy" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This library implements the tftp protocol, based on rfc 1350.
|
||||
<a class="reference external" href="http://www.faqs.org/rfcs/rfc1350.html">http://www.faqs.org/rfcs/rfc1350.html</a>
|
||||
At the moment it implements only a client class, but will include a server,
|
||||
|
@ -104,14 +109,14 @@ with support for variable block sizes.</p>
|
|||
directly. The TftpClient and TftpServer classes can be reached through it.</p>
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpClient">
|
||||
<h3>The <cite>TftpClient</cite> Module<a class="headerlink" href="#module-tftpy.TftpClient" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftpclient-module"></span><h3>The <cite>TftpClient</cite> Module<a class="headerlink" href="#module-tftpy.TftpClient" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements the TFTP Client functionality. Instantiate an
|
||||
instance of the client, and then use its upload or download method. Logging is
|
||||
performed via a standard logging object set in TftpShared.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpClient.TftpClient">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpClient.</tt><tt class="descname">TftpClient</tt><big>(</big><em>host</em>, <em>port</em>, <em>options={}</em><big>)</big><a class="headerlink" href="#tftpy.TftpClient.TftpClient" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpSession" class="reference internal" href="#tftpy.TftpPacketTypes.TftpSession"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpSession</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpSession" title="tftpy.TftpPacketTypes.TftpSession"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpSession</span></tt></a></p>
|
||||
<p>This class is an implementation of a tftp client. Once instantiated, a
|
||||
download can be initiated via the download() method, or an upload via the
|
||||
upload() method.</p>
|
||||
|
@ -139,6 +144,8 @@ each DAT packet sent in the form of a TftpPacketDAT object. The
|
|||
timeout parameter may be used to override the default SOCK_TIMEOUT
|
||||
setting, which is the amount of time that the client will wait for a
|
||||
DAT packet to be ACKd by the server.</p>
|
||||
<p>The input option is the full path to the file to upload, which can
|
||||
optionally be ‘-‘ to read from stdin.</p>
|
||||
<p>Note: If output is a hyphen then stdout is used.</p>
|
||||
</dd></dl>
|
||||
|
||||
|
@ -146,7 +153,7 @@ DAT packet to be ACKd by the server.</p>
|
|||
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpServer">
|
||||
<h3>The <cite>TftpServer</cite> Module<a class="headerlink" href="#module-tftpy.TftpServer" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftpserver-module"></span><h3>The <cite>TftpServer</cite> Module<a class="headerlink" href="#module-tftpy.TftpServer" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements the TFTP Server functionality. Instantiate an
|
||||
instance of the server, and then run the listen() method to listen for client
|
||||
requests. Logging is performed via a standard logging object set in
|
||||
|
@ -154,7 +161,7 @@ TftpShared.</p>
|
|||
<dl class="class">
|
||||
<dt id="tftpy.TftpServer.TftpServer">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpServer.</tt><tt class="descname">TftpServer</tt><big>(</big><em>tftproot='/tftpboot'</em>, <em>dyn_file_func=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpServer.TftpServer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpSession" class="reference internal" href="#tftpy.TftpPacketTypes.TftpSession"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpSession</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpSession" title="tftpy.TftpPacketTypes.TftpSession"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpSession</span></tt></a></p>
|
||||
<p>This class implements a tftp server object. Run the listen() method to
|
||||
listen for client requests. It takes two optional arguments. tftproot is
|
||||
the path to the tftproot directory to serve files from and/or write them
|
||||
|
@ -164,9 +171,10 @@ content.</p>
|
|||
<dl class="method">
|
||||
<dt id="tftpy.TftpServer.TftpServer.listen">
|
||||
<tt class="descname">listen</tt><big>(</big><em>listenip=''</em>, <em>listenport=69</em>, <em>timeout=5</em><big>)</big><a class="headerlink" href="#tftpy.TftpServer.TftpServer.listen" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Start a server listening on the supplied interface and port. This
|
||||
<dd><p>Start a server listening on the supplied interface and port. This
|
||||
defaults to INADDR_ANY (all interfaces) and UDP port 69. You can also
|
||||
supply a different socket timeout value, if desired.</dd></dl>
|
||||
supply a different socket timeout value, if desired.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
|
@ -175,35 +183,36 @@ supply a different socket timeout value, if desired.</dd></dl>
|
|||
<div class="section" id="back-end-modules">
|
||||
<h2>Back-end Modules<a class="headerlink" href="#back-end-modules" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="module-tftpy.TftpPacketFactory">
|
||||
<h3>The <cite>TftpPacketFactory</cite> Module<a class="headerlink" href="#module-tftpy.TftpPacketFactory" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftppacketfactory-module"></span><h3>The <cite>TftpPacketFactory</cite> Module<a class="headerlink" href="#module-tftpy.TftpPacketFactory" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements the TftpPacketFactory class, which can take a binary
|
||||
buffer, and return the appropriate TftpPacket object to represent it, via the
|
||||
parse() method.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketFactory.TftpPacketFactory">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketFactory.</tt><tt class="descname">TftpPacketFactory</tt><a class="headerlink" href="#tftpy.TftpPacketFactory.TftpPacketFactory" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>This class generates TftpPacket objects. It is responsible for parsing
|
||||
raw buffers off of the wire and returning objects representing them, via
|
||||
the parse() method.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketFactory.TftpPacketFactory.parse">
|
||||
<tt class="descname">parse</tt><big>(</big><em>buffer</em><big>)</big><a class="headerlink" href="#tftpy.TftpPacketFactory.TftpPacketFactory.parse" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method is used to parse an existing datagram into its
|
||||
<dd><p>This method is used to parse an existing datagram into its
|
||||
corresponding TftpPacket object. The buffer is the raw bytes off of
|
||||
the network.</dd></dl>
|
||||
the network.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpPacketTypes">
|
||||
<h3>The <cite>TftpPacketTypes</cite> Module<a class="headerlink" href="#module-tftpy.TftpPacketTypes" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftppackettypes-module"></span><h3>The <cite>TftpPacketTypes</cite> Module<a class="headerlink" href="#module-tftpy.TftpPacketTypes" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements the packet types of TFTP itself, and the
|
||||
corresponding encode and decode methods for them.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacket">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacket</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacket" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>This class is the parent class of all tftp packet classes. It is an
|
||||
abstract class, providing an interface, and should not be instantiated
|
||||
directly.</p>
|
||||
|
@ -232,7 +241,7 @@ order suitable for sending over the wire.</p>
|
|||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketACK">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketACK</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacket" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket" title="tftpy.TftpPacketTypes.TftpPacket"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<div class="highlight-python"><pre> 2 bytes 2 bytes
|
||||
-------------------
|
||||
ACK | 04 | Block # |
|
||||
|
@ -243,7 +252,7 @@ ACK | 04 | Block # |
|
|||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketDAT">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketDAT</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketDAT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacket" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket" title="tftpy.TftpPacketTypes.TftpPacket"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<div class="highlight-python"><pre> 2 bytes 2 bytes n bytes
|
||||
---------------------------------
|
||||
DATA | 03 | Block # | Data |
|
||||
|
@ -252,21 +261,23 @@ DATA | 03 | Block # | Data |
|
|||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketDAT.decode">
|
||||
<tt class="descname">decode</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketDAT.decode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Decode self.buffer into instance variables. It returns self for
|
||||
easy method chaining.</dd></dl>
|
||||
<dd><p>Decode self.buffer into instance variables. It returns self for
|
||||
easy method chaining.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketDAT.encode">
|
||||
<tt class="descname">encode</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketDAT.encode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Encode the DAT packet. This method populates self.buffer, and
|
||||
returns self for easy method chaining.</dd></dl>
|
||||
<dd><p>Encode the DAT packet. This method populates self.buffer, and
|
||||
returns self for easy method chaining.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketERR">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketERR</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketERR" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacket" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket" title="tftpy.TftpPacketTypes.TftpPacket"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a></p>
|
||||
<div class="highlight-python"><pre> 2 bytes 2 bytes string 1 byte
|
||||
----------------------------------------
|
||||
ERROR | 05 | ErrorCode | ErrMsg | 0 |
|
||||
|
@ -289,33 +300,36 @@ Value Meaning
|
|||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketERR.decode">
|
||||
<tt class="descname">decode</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketERR.decode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Decode self.buffer, populating instance variables and return self.</dd></dl>
|
||||
<dd><p>Decode self.buffer, populating instance variables and return self.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketERR.encode">
|
||||
<tt class="descname">encode</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketERR.encode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Encode the DAT packet based on instance variables, populating
|
||||
self.buffer, returning self.</dd></dl>
|
||||
<dd><p>Encode the DAT packet based on instance variables, populating
|
||||
self.buffer, returning self.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketInitial">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketInitial</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketInitial" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacket" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a>, <a title="tftpy.TftpPacketTypes.TftpPacketWithOptions" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketWithOptions</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket" title="tftpy.TftpPacketTypes.TftpPacket"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a>, <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions" title="tftpy.TftpPacketTypes.TftpPacketWithOptions"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketWithOptions</span></tt></a></p>
|
||||
<p>This class is a common parent class for the RRQ and WRQ packets, as
|
||||
they share quite a bit of code.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketInitial.encode">
|
||||
<tt class="descname">encode</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketInitial.encode" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Encode the packet’s buffer from the instance variables.</dd></dl>
|
||||
<dd><p>Encode the packet’s buffer from the instance variables.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketOACK">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketOACK</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketOACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacket" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a>, <a title="tftpy.TftpPacketTypes.TftpPacketWithOptions" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketWithOptions</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacket" title="tftpy.TftpPacketTypes.TftpPacket"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacket</span></tt></a>, <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions" title="tftpy.TftpPacketTypes.TftpPacketWithOptions"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketWithOptions</span></tt></a></p>
|
||||
<div class="highlight-python"><pre>+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+
|
||||
| opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 |
|
||||
+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+</pre>
|
||||
|
@ -323,18 +337,19 @@ they share quite a bit of code.</p>
|
|||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketOACK.match_options">
|
||||
<tt class="descname">match_options</tt><big>(</big><em>options</em><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketOACK.match_options" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method takes a set of options, and tries to match them with
|
||||
<dd><p>This method takes a set of options, and tries to match them with
|
||||
its own. It can accept some changes in those options from the server as
|
||||
part of a negotiation. Changed or unchanged, it will return a dict of
|
||||
the options so that the session can update itself to the negotiated
|
||||
options.</dd></dl>
|
||||
options.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketRRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketRRQ</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketRRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacketInitial" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketInitial"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketInitial</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketInitial" title="tftpy.TftpPacketTypes.TftpPacketInitial"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketInitial</span></tt></a></p>
|
||||
<div class="highlight-python"><pre> 2 bytes string 1 byte string 1 byte
|
||||
-----------------------------------------------
|
||||
RRQ/ | 01/02 | Filename | 0 | Mode | 0 |
|
||||
|
@ -345,7 +360,7 @@ WRQ -----------------------------------------------</pre>
|
|||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketWRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketWRQ</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketWRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpPacketTypes.TftpPacketInitial" class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketInitial"><tt class="xref docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketInitial</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpPacketTypes.TftpPacketInitial" title="tftpy.TftpPacketTypes.TftpPacketInitial"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpPacketTypes.TftpPacketInitial</span></tt></a></p>
|
||||
<div class="highlight-python"><pre> 2 bytes string 1 byte string 1 byte
|
||||
-----------------------------------------------
|
||||
RRQ/ | 01/02 | Filename | 0 | Mode | 0 |
|
||||
|
@ -356,35 +371,36 @@ WRQ -----------------------------------------------</pre>
|
|||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketWithOptions">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpPacketWithOptions</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>This class exists to permit some TftpPacket subclasses to share code
|
||||
regarding options handling. It does not inherit from TftpPacket, as the
|
||||
goal is just to share code here, and not cause diamond inheritance.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpPacketWithOptions.decode_options">
|
||||
<tt class="descname">decode_options</tt><big>(</big><em>buffer</em><big>)</big><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpPacketWithOptions.decode_options" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method decodes the section of the buffer that contains an
|
||||
<dd><p>This method decodes the section of the buffer that contains an
|
||||
unknown number of options. It returns a dictionary of option names and
|
||||
values.</dd></dl>
|
||||
values.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpPacketTypes.TftpSession">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpPacketTypes.</tt><tt class="descname">TftpSession</tt><a class="headerlink" href="#tftpy.TftpPacketTypes.TftpSession" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>This class is the base class for the tftp client and server. Any shared
|
||||
code should be in this class.</p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpShared">
|
||||
<h3>The <cite>TftpShared</cite> Module<a class="headerlink" href="#module-tftpy.TftpShared" title="Permalink to this headline">¶</a></h3>
|
||||
<span id="the-tftpshared-module"></span><h3>The <cite>TftpShared</cite> Module<a class="headerlink" href="#module-tftpy.TftpShared" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module holds all objects shared by all other modules in tftpy.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpShared.TftpErrors">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpShared.</tt><tt class="descname">TftpErrors</tt><a class="headerlink" href="#tftpy.TftpShared.TftpErrors" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>This class is a convenience for defining the common tftp error codes,
|
||||
and making them more readable in the code.</p>
|
||||
</dd></dl>
|
||||
|
@ -392,32 +408,41 @@ and making them more readable in the code.</p>
|
|||
<dl class="exception">
|
||||
<dt id="tftpy.TftpShared.TftpException">
|
||||
<em class="property">exception </em><tt class="descclassname">tftpy.TftpShared.</tt><tt class="descname">TftpException</tt><a class="headerlink" href="#tftpy.TftpShared.TftpException" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
|
||||
<p>This class is the parent class of all exceptions regarding the handling
|
||||
of the TFTP protocol.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="exception">
|
||||
<dt id="tftpy.TftpShared.TftpTimeout">
|
||||
<em class="property">exception </em><tt class="descclassname">tftpy.TftpShared.</tt><tt class="descname">TftpTimeout</tt><a class="headerlink" href="#tftpy.TftpShared.TftpTimeout" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpShared.TftpException" title="tftpy.TftpShared.TftpException"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpShared.TftpException</span></tt></a></p>
|
||||
<p>This class represents a timeout error waiting for a response from the
|
||||
other end.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="tftpy.TftpShared.setLogLevel">
|
||||
<tt class="descclassname">tftpy.TftpShared.</tt><tt class="descname">setLogLevel</tt><big>(</big><em>level</em><big>)</big><a class="headerlink" href="#tftpy.TftpShared.setLogLevel" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This function is a utility function for setting the internal log level.
|
||||
<dd><p>This function is a utility function for setting the internal log level.
|
||||
The log level defaults to logging.NOTSET, so unwanted output to stdout is
|
||||
not created.</dd></dl>
|
||||
not created.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="tftpy.TftpShared.tftpassert">
|
||||
<tt class="descclassname">tftpy.TftpShared.</tt><tt class="descname">tftpassert</tt><big>(</big><em>condition</em>, <em>msg</em><big>)</big><a class="headerlink" href="#tftpy.TftpShared.tftpassert" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This function is a simple utility that will check the condition
|
||||
<dd><p>This function is a simple utility that will check the condition
|
||||
passed for a false state. If it finds one, it throws a TftpException
|
||||
with the message passed. This just makes the code throughout cleaner
|
||||
by refactoring.</dd></dl>
|
||||
by refactoring.</p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpStates">
|
||||
<h3>The <cite>TftpStates</cite> Module<a class="headerlink" href="#module-tftpy.TftpStates" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements all state handling during uploads and downloads, the
|
||||
main interface to which being the TftpContext base class and the TftpState
|
||||
base class.</p>
|
||||
<div class="section" id="module-tftpy.TftpContexts">
|
||||
<span id="the-tftpcontexts-module"></span><h3>The <cite>TftpContexts</cite> Module<a class="headerlink" href="#module-tftpy.TftpContexts" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements all contexts for state handling during uploads and
|
||||
downloads, the main interface to which being the TftpContext base class.</p>
|
||||
<p>The concept is simple. Each context object represents a single upload or
|
||||
download, and the state object in the context object represents the current
|
||||
state of that transfer. The state object has a handle() method that expects
|
||||
|
@ -425,180 +450,224 @@ the next packet in the transfer, and returns a state object until the transfer
|
|||
is complete, at which point it returns None. That is, unless there is a fatal
|
||||
error, in which case a TftpException is returned instead.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpContext">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpContext</tt><big>(</big><em>host</em>, <em>port</em>, <em>timeout</em>, <em>dyn_file_func=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dt id="tftpy.TftpContexts.TftpContext">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpContexts.</tt><tt class="descname">TftpContext</tt><big>(</big><em>host</em>, <em>port</em>, <em>timeout</em>, <em>dyn_file_func=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>The base class of the contexts.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContext.checkTimeout">
|
||||
<tt class="descname">checkTimeout</tt><big>(</big><em>now</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext.checkTimeout" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Compare current time with last_update time, and raise an exception
|
||||
if we’re over SOCK_TIMEOUT time.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContext.checkTimeout">
|
||||
<tt class="descname">checkTimeout</tt><big>(</big><em>now</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.checkTimeout" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Compare current time with last_update time, and raise an exception
|
||||
if we’re over the timeout time.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContext.cycle">
|
||||
<tt class="descname">cycle</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext.cycle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Here we wait for a response from the server after sending it
|
||||
something, and dispatch appropriate action to that response.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContext.cycle">
|
||||
<tt class="descname">cycle</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.cycle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Here we wait for a response from the server after sending it
|
||||
something, and dispatch appropriate action to that response.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContext.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Perform session cleanup, since the end method should always be
|
||||
<dt id="tftpy.TftpContexts.TftpContext.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Perform session cleanup, since the end method should always be
|
||||
called explicitely by the calling code, this works better than the
|
||||
destructor.</dd></dl>
|
||||
destructor.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContext.gethost">
|
||||
<tt class="descname">gethost</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext.gethost" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Simple getter method for use in a property.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContext.getBlocksize">
|
||||
<tt class="descname">getBlocksize</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.getBlocksize" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Fetch the current blocksize for this session.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpContexts.TftpContext.gethost">
|
||||
<tt class="descname">gethost</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.gethost" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Simple getter method for use in a property.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="tftpy.TftpStates.TftpContext.host">
|
||||
<tt class="descname">host</tt><a class="headerlink" href="#tftpy.TftpStates.TftpContext.host" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Simple getter method for use in a property.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContext.host">
|
||||
<tt class="descname">host</tt><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.host" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Simple getter method for use in a property.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContext.sethost">
|
||||
<tt class="descname">sethost</tt><big>(</big><em>host</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContext.sethost" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Setter method that also sets the address property as a result
|
||||
of the host that is set.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContext.sethost">
|
||||
<tt class="descname">sethost</tt><big>(</big><em>host</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContext.sethost" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Setter method that also sets the address property as a result
|
||||
of the host that is set.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpContextClientDownload">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpContextClientDownload</tt><big>(</big><em>host</em>, <em>port</em>, <em>filename</em>, <em>output</em>, <em>options</em>, <em>packethook</em>, <em>timeout</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextClientDownload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpContext" class="reference internal" href="#tftpy.TftpStates.TftpContext"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpContext</span></tt></a></p>
|
||||
<dt id="tftpy.TftpContexts.TftpContextClientDownload">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpContexts.</tt><tt class="descname">TftpContextClientDownload</tt><big>(</big><em>host</em>, <em>port</em>, <em>filename</em>, <em>output</em>, <em>options</em>, <em>packethook</em>, <em>timeout</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextClientDownload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpContexts.TftpContext" title="tftpy.TftpContexts.TftpContext"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpContexts.TftpContext</span></tt></a></p>
|
||||
<p>The download context for the client during a download.
|
||||
Note: If output is a hyphen, then the output will be sent to stdout.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContextClientDownload.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextClientDownload.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Finish up the context.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContextClientDownload.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextClientDownload.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Finish up the context.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContextClientDownload.start">
|
||||
<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextClientDownload.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Initiate the download.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContextClientDownload.start">
|
||||
<tt class="descname">start</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextClientDownload.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Initiate the download.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpContextClientUpload">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpContextClientUpload</tt><big>(</big><em>host</em>, <em>port</em>, <em>filename</em>, <em>input</em>, <em>options</em>, <em>packethook</em>, <em>timeout</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextClientUpload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpContext" class="reference internal" href="#tftpy.TftpStates.TftpContext"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpContext</span></tt></a></p>
|
||||
<dt id="tftpy.TftpContexts.TftpContextClientUpload">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpContexts.</tt><tt class="descname">TftpContextClientUpload</tt><big>(</big><em>host</em>, <em>port</em>, <em>filename</em>, <em>input</em>, <em>options</em>, <em>packethook</em>, <em>timeout</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextClientUpload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpContexts.TftpContext" title="tftpy.TftpContexts.TftpContext"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpContexts.TftpContext</span></tt></a></p>
|
||||
<p>The upload context for the client during an upload.
|
||||
Note: If input is a hyphen, then we will use stdin.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContextClientUpload.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextClientUpload.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Finish up the context.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContextClientUpload.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextClientUpload.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Finish up the context.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpContextServer">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpContextServer</tt><big>(</big><em>host</em>, <em>port</em>, <em>timeout</em>, <em>root</em>, <em>dyn_file_func=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextServer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpContext" class="reference internal" href="#tftpy.TftpStates.TftpContext"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpContext</span></tt></a></p>
|
||||
<dt id="tftpy.TftpContexts.TftpContextServer">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpContexts.</tt><tt class="descname">TftpContextServer</tt><big>(</big><em>host</em>, <em>port</em>, <em>timeout</em>, <em>root</em>, <em>dyn_file_func=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextServer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpContexts.TftpContext" title="tftpy.TftpContexts.TftpContext"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpContexts.TftpContext</span></tt></a></p>
|
||||
<p>The context for the server.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContextServer.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextServer.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Finish up the context.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpContextServer.end">
|
||||
<tt class="descname">end</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextServer.end" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Finish up the context.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpContextServer.start">
|
||||
<tt class="descname">start</tt><big>(</big><em>buffer</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpContextServer.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Start the state cycle. Note that the server context receives an
|
||||
<dt id="tftpy.TftpContexts.TftpContextServer.start">
|
||||
<tt class="descname">start</tt><big>(</big><em>buffer</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpContextServer.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Start the state cycle. Note that the server context receives an
|
||||
initial packet in its start method. Also note that the server does not
|
||||
loop on cycle(), as it expects the TftpServer object to manage
|
||||
that.</dd></dl>
|
||||
that.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpMetrics">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpMetrics</tt><a class="headerlink" href="#tftpy.TftpStates.TftpMetrics" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dt id="tftpy.TftpContexts.TftpMetrics">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpContexts.</tt><tt class="descname">TftpMetrics</tt><a class="headerlink" href="#tftpy.TftpContexts.TftpMetrics" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>A class representing metrics of the transfer.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpMetrics.add_dup">
|
||||
<tt class="descname">add_dup</tt><big>(</big><em>blocknumber</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpMetrics.add_dup" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method adds a dup for a block number to the metrics.</dd></dl>
|
||||
<dt id="tftpy.TftpContexts.TftpMetrics.add_dup">
|
||||
<tt class="descname">add_dup</tt><big>(</big><em>pkt</em><big>)</big><a class="headerlink" href="#tftpy.TftpContexts.TftpMetrics.add_dup" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This method adds a dup for a packet to the metrics.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="module-tftpy.TftpStates">
|
||||
<span id="the-tftpstates-module"></span><h3>The <cite>TftpStates</cite> Module<a class="headerlink" href="#module-tftpy.TftpStates" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This module implements all state handling during uploads and downloads, the
|
||||
main interface to which being the TftpState base class.</p>
|
||||
<p>The concept is simple. Each context object represents a single upload or
|
||||
download, and the state object in the context object represents the current
|
||||
state of that transfer. The state object has a handle() method that expects
|
||||
the next packet in the transfer, and returns a state object until the transfer
|
||||
is complete, at which point it returns None. That is, unless there is a fatal
|
||||
error, in which case a TftpException is returned instead.</p>
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpState">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpState</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref docutils literal"><span class="pre">object</span></tt></p>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
|
||||
<p>The base class for the states.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>An abstract method for handling a packet. It is expected to return
|
||||
a TftpState object, either itself or a new state.</dd></dl>
|
||||
<dd><p>An abstract method for handling a packet. It is expected to return
|
||||
a TftpState object, either itself or a new state.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.handleDat">
|
||||
<tt class="descname">handleDat</tt><big>(</big><em>pkt</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.handleDat" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method handles a DAT packet during a client download, or a
|
||||
server upload.</dd></dl>
|
||||
<dd><p>This method handles a DAT packet during a client download, or a
|
||||
server upload.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.handleOACK">
|
||||
<tt class="descname">handleOACK</tt><big>(</big><em>pkt</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.handleOACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method handles an OACK from the server, syncing any accepted
|
||||
options.</dd></dl>
|
||||
<dd><p>This method handles an OACK from the server, syncing any accepted
|
||||
options.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.resendLast">
|
||||
<tt class="descname">resendLast</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.resendLast" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Resend the last sent packet due to a timeout.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.returnSupportedOptions">
|
||||
<tt class="descname">returnSupportedOptions</tt><big>(</big><em>options</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.returnSupportedOptions" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method takes a requested options list from a client, and
|
||||
returns the ones that are supported.</dd></dl>
|
||||
<dd><p>This method takes a requested options list from a client, and
|
||||
returns the ones that are supported.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.sendACK">
|
||||
<tt class="descname">sendACK</tt><big>(</big><em>blocknumber=None</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.sendACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method sends an ack packet to the block number specified. If
|
||||
<dd><p>This method sends an ack packet to the block number specified. If
|
||||
none is specified, it defaults to the next_block property in the
|
||||
parent context.</dd></dl>
|
||||
parent context.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.sendDAT">
|
||||
<tt class="descname">sendDAT</tt><big>(</big><em>resend=False</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.sendDAT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method sends the next DAT packet based on the data in the
|
||||
<tt class="descname">sendDAT</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.sendDAT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This method sends the next DAT packet based on the data in the
|
||||
context. It returns a boolean indicating whether the transfer is
|
||||
finished.</dd></dl>
|
||||
finished.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.sendError">
|
||||
<tt class="descname">sendError</tt><big>(</big><em>errorcode</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.sendError" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method uses the socket passed, and uses the errorcode to
|
||||
compose and send an error packet.</dd></dl>
|
||||
<dd><p>This method uses the socket passed, and uses the errorcode to
|
||||
compose and send an error packet.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.sendOACK">
|
||||
<tt class="descname">sendOACK</tt><big>(</big><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.sendOACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method sends an OACK packet with the options from the current
|
||||
context.</dd></dl>
|
||||
<dd><p>This method sends an OACK packet with the options from the current
|
||||
context.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpState.serverInitial">
|
||||
<tt class="descname">serverInitial</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpState.serverInitial" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>This method performs initial setup for a server context transfer,
|
||||
<dd><p>This method performs initial setup for a server context transfer,
|
||||
put here to refactor code out of the TftpStateServerRecvRRQ and
|
||||
TftpStateServerRecvWRQ classes, since their initial setup is
|
||||
identical. The method returns a boolean, sendoack, to indicate whether
|
||||
it is required to send an OACK to the client.</dd></dl>
|
||||
it is required to send an OACK to the client.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateExpectACK">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateExpectACK</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateExpectACK" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>This class represents the state of the transfer when a DAT was just
|
||||
sent, and we are waiting for an ACK from the server. This class is the
|
||||
same one used by the client during the upload, and the server during the
|
||||
|
@ -606,83 +675,90 @@ download.</p>
|
|||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateExpectACK.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateExpectACK.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle a packet, hopefully an ACK since we just sent a DAT.</dd></dl>
|
||||
<dd><p>Handle a packet, hopefully an ACK since we just sent a DAT.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateExpectDAT">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateExpectDAT</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateExpectDAT" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>Just sent an ACK packet. Waiting for DAT.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateExpectDAT.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateExpectDAT.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle the packet in response to an ACK, which should be a DAT.</dd></dl>
|
||||
<dd><p>Handle the packet in response to an ACK, which should be a DAT.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateSentRRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateSentRRQ</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateSentRRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>Just sent an RRQ packet.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateSentRRQ.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateSentRRQ.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle the packet in response to an RRQ to the server.</dd></dl>
|
||||
<dd><p>Handle the packet in response to an RRQ to the server.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateSentWRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateSentWRQ</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateSentWRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>Just sent an WRQ packet for an upload.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateSentWRQ.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateSentWRQ.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle a packet we just received.</dd></dl>
|
||||
<dd><p>Handle a packet we just received.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerRecvRRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateServerRecvRRQ</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerRecvRRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>This class represents the state of the TFTP server when it has just
|
||||
received an RRQ packet.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerRecvRRQ.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerRecvRRQ.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle an initial RRQ packet as a server.</dd></dl>
|
||||
<dd><p>Handle an initial RRQ packet as a server.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerRecvWRQ">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateServerRecvWRQ</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerRecvWRQ" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>This class represents the state of the TFTP server when it has just
|
||||
received a WRQ packet.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerRecvWRQ.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerRecvWRQ.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle an initial WRQ packet as a server.</dd></dl>
|
||||
<dd><p>Handle an initial WRQ packet as a server.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerStart">
|
||||
<em class="property">class </em><tt class="descclassname">tftpy.TftpStates.</tt><tt class="descname">TftpStateServerStart</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerStart" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a title="tftpy.TftpStates.TftpState" class="reference internal" href="#tftpy.TftpStates.TftpState"><tt class="xref docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<dd><p>Bases: <a class="reference internal" href="#tftpy.TftpStates.TftpState" title="tftpy.TftpStates.TftpState"><tt class="xref py py-class docutils literal"><span class="pre">tftpy.TftpStates.TftpState</span></tt></a></p>
|
||||
<p>The start state for the server. This is a transitory state since at
|
||||
this point we don’t know if we’re handling an upload or a download. We
|
||||
will commit to one of them once we interpret the initial packet.</p>
|
||||
<dl class="method">
|
||||
<dt id="tftpy.TftpStates.TftpStateServerStart.handle">
|
||||
<tt class="descname">handle</tt><big>(</big><em>pkt</em>, <em>raddress</em>, <em>rport</em><big>)</big><a class="headerlink" href="#tftpy.TftpStates.TftpStateServerStart.handle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd>Handle a packet we just received.</dd></dl>
|
||||
<dd><p>Handle a packet we just received.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
|
@ -696,50 +772,51 @@ will commit to one of them once we interpret the initial packet.</p>
|
|||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="#">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference external" href="#">TFTPy</a><ul>
|
||||
<h3><a href="#">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">TFTPy</a><ul>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference external" href="#requirements">Requirements</a></li>
|
||||
<li><a class="reference external" href="#installation">Installation</a></li>
|
||||
<li><a class="reference external" href="#examples">Examples</a></li>
|
||||
<li><a class="reference external" href="#api-documentation">API Documentation</a><ul>
|
||||
<li><a class="reference external" href="#front-end-modules">Front-end Modules</a><ul>
|
||||
<li><a class="reference external" href="#module-tftpy">The <tt class="docutils literal"><span class="pre">tftpy</span></tt> Module</a></li>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpClient">The <cite>TftpClient</cite> Module</a></li>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpServer">The <cite>TftpServer</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#requirements">Requirements</a></li>
|
||||
<li><a class="reference internal" href="#installation">Installation</a></li>
|
||||
<li><a class="reference internal" href="#examples">Examples</a></li>
|
||||
<li><a class="reference internal" href="#api-documentation">API Documentation</a><ul>
|
||||
<li><a class="reference internal" href="#front-end-modules">Front-end Modules</a><ul>
|
||||
<li><a class="reference internal" href="#module-tftpy">The <tt class="docutils literal"><span class="pre">tftpy</span></tt> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpClient">The <cite>TftpClient</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpServer">The <cite>TftpServer</cite> Module</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference external" href="#back-end-modules">Back-end Modules</a><ul>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpPacketFactory">The <cite>TftpPacketFactory</cite> Module</a></li>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpPacketTypes">The <cite>TftpPacketTypes</cite> Module</a></li>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpShared">The <cite>TftpShared</cite> Module</a></li>
|
||||
<li><a class="reference external" href="#module-tftpy.TftpStates">The <cite>TftpStates</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#back-end-modules">Back-end Modules</a><ul>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpPacketFactory">The <cite>TftpPacketFactory</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpPacketTypes">The <cite>TftpPacketTypes</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpShared">The <cite>TftpShared</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpContexts">The <cite>TftpContexts</cite> Module</a></li>
|
||||
<li><a class="reference internal" href="#module-tftpy.TftpStates">The <cite>TftpStates</cite> Module</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/index.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/index.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
|
@ -751,14 +828,14 @@ will commit to one of them once we interpret the initial packet.</p>
|
|||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="#">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<li><a href="#">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,124 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Global Module Index — TFTPy v0.5.1 documentation</title>
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '#',
|
||||
VERSION: '0.5.1',
|
||||
COLLAPSE_MODINDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="TFTPy v0.5.1 documentation" href="index.html" />
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Global Module Index"
|
||||
accesskey="M">modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
|
||||
<h1 id="global-module-index">Global Module Index</h1>
|
||||
<a href="#cap-T"><strong>T</strong></a>
|
||||
<hr/>
|
||||
|
||||
<table width="100%" class="indextable" cellspacing="0" cellpadding="2"><tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap"><td></td><td><a name="cap-T"><strong>T</strong></a></td><td></td></tr><tr>
|
||||
<td><img src="_static/minus.png" id="toggle-1"
|
||||
class="toggler" style="display: none" alt="-" /></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy"><tt class="xref">tftpy</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpClient"><tt class="xref">tftpy.TftpClient</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpPacketFactory"><tt class="xref">tftpy.TftpPacketFactory</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpPacketTypes"><tt class="xref">tftpy.TftpPacketTypes</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpServer"><tt class="xref">tftpy.TftpServer</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpShared"><tt class="xref">tftpy.TftpShared</tt></a></td><td>
|
||||
<em></em></td></tr><tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpStates"><tt class="xref">tftpy.TftpStates</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Global Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
143
html/sphinx/py-modindex.html
Normal file
143
html/sphinx/py-modindex.html
Normal file
|
@ -0,0 +1,143 @@
|
|||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Python Module Index — TFTPy v0.6.0 documentation</title>
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '',
|
||||
VERSION: '0.6.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<link rel="top" title="TFTPy v0.6.0 documentation" href="index.html" />
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
|
||||
<h1>Python Module Index</h1>
|
||||
|
||||
<div class="modindex-jumpbox">
|
||||
<a href="#cap-t"><strong>t</strong></a>
|
||||
</div>
|
||||
|
||||
<table class="indextable modindextable" cellspacing="0" cellpadding="2">
|
||||
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
||||
<tr class="cap" id="cap-t"><td></td><td>
|
||||
<strong>t</strong></td><td></td></tr>
|
||||
<tr>
|
||||
<td><img src="_static/minus.png" class="toggler"
|
||||
id="toggle-1" style="display: none" alt="-" /></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy"><tt class="xref">tftpy</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpClient"><tt class="xref">tftpy.TftpClient</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpContexts"><tt class="xref">tftpy.TftpContexts</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpPacketFactory"><tt class="xref">tftpy.TftpPacketFactory</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpPacketTypes"><tt class="xref">tftpy.TftpPacketTypes</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpServer"><tt class="xref">tftpy.TftpServer</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpShared"><tt class="xref">tftpy.TftpShared</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="index.html#module-tftpy.TftpStates"><tt class="xref">tftpy.TftpStates</tt></a></td><td>
|
||||
<em></em></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" size="18" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
@ -5,22 +7,28 @@
|
|||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Search — TFTPy v0.5.1 documentation</title>
|
||||
<title>Search — TFTPy v0.6.0 documentation</title>
|
||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '#',
|
||||
VERSION: '0.5.1',
|
||||
COLLAPSE_MODINDEX: false,
|
||||
URL_ROOT: '',
|
||||
VERSION: '0.6.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
<link rel="top" title="TFTPy v0.5.1 documentation" href="index.html" />
|
||||
<link rel="top" title="TFTPy v0.6.0 documentation" href="index.html" />
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
|
@ -30,9 +38,9 @@
|
|||
<a href="genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
accesskey="M">modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -81,17 +89,14 @@
|
|||
<a href="genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="modindex.html" title="Global Module Index"
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="index.html">TFTPy v0.5.1 documentation</a> »</li>
|
||||
<li><a href="index.html">TFTPy v0.6.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
|
||||
© Copyright 2010, Michael P. Soulier.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
|
||||
</div>
|
||||
<script type="text/javascript" src="searchindex.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
Reference in a new issue