dash-docs/en/doxygen/html/socks5_8py_source.html

141 lines
54 KiB
HTML

<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Dash Core: qa/rpc-tests/test_framework/socks5.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="bitcoin_logo_doxygen.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Dash Core
&#160;<span id="projectnumber">0.12.2.1</span>
</div>
<div id="projectbrief">P2P Digital Currency</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('socks5_8py_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">socks5.py</div> </div>
</div><!--header-->
<div class="contents">
<a href="socks5_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespacetest__framework_1_1socks5.html"> 1</a></span>&#160;<span class="comment"># Copyright (c) 2015 The Bitcoin Core developers</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"># Distributed under the MIT software license, see the accompanying</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"># file COPYING or http://www.opensource.org/licenses/mit-license.php.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="stringliteral">Dummy Socks5 server for testing.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="stringliteral">&#39;&#39;&#39;</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">from</span> __future__ <span class="keyword">import</span> print_function, division, unicode_literals</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">import</span> socket, threading, Queue</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">import</span> traceback, sys</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Command.html"> 12</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1Command.html">Command</a>:</div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Command.html#ac45eed3c0ada83c5dca339c6ee27b4d0"> 13</a></span>&#160; CONNECT = 0x01</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1AddressType.html"> 15</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1AddressType.html">AddressType</a>:</div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1AddressType.html#acd4583c611a964168dfc569cb02b898b"> 16</a></span>&#160; IPV4 = 0x01</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1AddressType.html#a9aa078765ce148b421a8511c133f7f20"> 17</a></span>&#160; DOMAINNAME = 0x03</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1AddressType.html#a70bfd4cf309c0622d70825fc7b8c5db5"> 18</a></span>&#160; IPV6 = 0x04</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb"> 21</a></span>&#160;<span class="keyword">def </span><a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(s, n):</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="stringliteral">&#39;&#39;&#39;Receive n bytes from a socket, or fail&#39;&#39;&#39;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; rv = bytearray()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">while</span> n &gt; 0:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; d = s.recv(n)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">if</span> <span class="keywordflow">not</span> d:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Unexpected end of stream&#39;</span>)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; rv.extend(d)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; n -= len(d)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> rv</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html">Socks5Configuration</a>(object):</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="stringliteral">&#39;&#39;&#39;Proxy configuration&#39;&#39;&#39;</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#abdf36fad374f2af91e09fcfb59f82f95"> 35</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#abdf36fad374f2af91e09fcfb59f82f95">__init__</a>(self):</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a7f193e97be6a3330ac7115fdc9dc0967"> 36</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a7f193e97be6a3330ac7115fdc9dc0967">addr</a> = <span class="keywordtype">None</span> <span class="comment"># Bind address (must be set)</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#adbc35802e633a8aaf4e1860c3ad62541"> 37</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#adbc35802e633a8aaf4e1860c3ad62541">af</a> = socket.AF_INET <span class="comment"># Bind address family</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a81ca62c44066b97edce3556e642a2352"> 38</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a81ca62c44066b97edce3556e642a2352">unauth</a> = <span class="keyword">False</span> <span class="comment"># Support unauthenticated</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a45310cd757d5fbc5d4d8fcfad84b655f"> 39</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a45310cd757d5fbc5d4d8fcfad84b655f">auth</a> = <span class="keyword">False</span> <span class="comment"># Support authentication</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html">Socks5Command</a>(object):</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="stringliteral">&#39;&#39;&#39;Information about an incoming socks5 command&#39;&#39;&#39;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a2adc6e937bdc1e7868a76b37278146cf"> 43</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a2adc6e937bdc1e7868a76b37278146cf">__init__</a>(self, cmd, atyp, addr, port, username, password):</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a0eec40be7518cbb779ff4ee9047e690c"> 44</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a0eec40be7518cbb779ff4ee9047e690c">cmd</a> = cmd <span class="comment"># Command (one of Command.*)</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#af7329a3fb2df4a716c866a1cd4d765cc"> 45</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#af7329a3fb2df4a716c866a1cd4d765cc">atyp</a> = atyp <span class="comment"># Address type (one of AddressType.*)</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a3ee970a53b0d66218a275d1820ca6835"> 46</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a3ee970a53b0d66218a275d1820ca6835">addr</a> = addr <span class="comment"># Address</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a1313433f05fa6e77a5bb16455e6a5d7f"> 47</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a1313433f05fa6e77a5bb16455e6a5d7f">port</a> = port <span class="comment"># Port to connect to</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#aa555860240b7643c0bba903f0727b474"> 48</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#aa555860240b7643c0bba903f0727b474">username</a> = username</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a19dd99ce63a49292107304d9ece64b04"> 49</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a19dd99ce63a49292107304d9ece64b04">password</a> = password</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a76e2b9997dbbed254568230a61151d42"> 50</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a76e2b9997dbbed254568230a61151d42">__repr__</a>(self):</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&#39;Socks5Command(%s,%s,%s,%s,%s,%s)&#39;</span> % (self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a0eec40be7518cbb779ff4ee9047e690c">cmd</a>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#af7329a3fb2df4a716c866a1cd4d765cc">atyp</a>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a3ee970a53b0d66218a275d1820ca6835">addr</a>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a1313433f05fa6e77a5bb16455e6a5d7f">port</a>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#aa555860240b7643c0bba903f0727b474">username</a>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html#a19dd99ce63a49292107304d9ece64b04">password</a>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html"> 53</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html">Socks5Connection</a>(object):</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#af5a62e88aab1971a8a2f6bb0894d586f"> 54</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#af5a62e88aab1971a8a2f6bb0894d586f">__init__</a>(self, serv, conn, peer):</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4"> 55</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">serv</a> = serv</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03"> 56</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a> = conn</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a0f1de4d95c446a3858cb69073402411f"> 57</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a0f1de4d95c446a3858cb69073402411f">peer</a> = peer</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab0fddfc3d16d5658b0bdb385f756503c"> 59</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab0fddfc3d16d5658b0bdb385f756503c">handle</a>(self):</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&#39;&#39;&#39;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="stringliteral"> Handle socks5 request according to RFC1928</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="stringliteral"> &#39;&#39;&#39;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">try</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment"># Verify socks version</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; ver = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> ver != 0x05:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Invalid socks version %i&#39;</span> % ver)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment"># Choose authentication method</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; nmethods = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; methods = bytearray(<a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, nmethods))</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; method = <span class="keywordtype">None</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span> 0x02 <span class="keywordflow">in</span> methods <span class="keywordflow">and</span> self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">serv</a>.conf.auth:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; method = 0x02 <span class="comment"># username/password</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">elif</span> 0x00 <span class="keywordflow">in</span> methods <span class="keywordflow">and</span> self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">serv</a>.conf.unauth:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; method = 0x00 <span class="comment"># unauthenticated</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> method <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;No supported authentication method was offered&#39;</span>)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment"># Send response</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>.sendall(bytearray([0x05, method]))</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment"># Read authentication (optional)</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; username = <span class="keywordtype">None</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; password = <span class="keywordtype">None</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> method == 0x02:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ver = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> ver != 0x01:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Invalid auth packet version %i&#39;</span> % ver)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ulen = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; username = str(<a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, ulen))</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; plen = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; password = str(<a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, plen))</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment"># Send authentication response</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>.sendall(bytearray([0x01, 0x00]))</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment"># Read connect request</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; (ver,cmd,rsv,atyp) = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 4)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> ver != 0x05:</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Invalid socks version %i in connect request&#39;</span> % ver)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> cmd != Command.CONNECT:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Unhandled command %i in connect request&#39;</span> % cmd)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> atyp == AddressType.IPV4:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; addr = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 4)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">elif</span> atyp == AddressType.DOMAINNAME:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; n = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 1)[0]</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; addr = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, n)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">elif</span> atyp == AddressType.IPV6:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; addr = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 16)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">raise</span> IOError(<span class="stringliteral">&#39;Unknown address type %i&#39;</span> % atyp)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; port_hi,port_lo = <a class="code" href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">recvall</a>(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>, 2)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; port = (port_hi &lt;&lt; 8) | port_lo</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment"># Send dummy response</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>.sendall(bytearray([0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; cmdin = <a class="code" href="classtest__framework_1_1socks5_1_1Socks5Command.html">Socks5Command</a>(cmd, atyp, addr, port, username, password)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">serv</a>.queue.put(cmdin)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; print(<span class="stringliteral">&#39;Proxy: &#39;</span>, cmdin)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment"># Fall through to disconnect</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">except</span> Exception <span class="keyword">as</span> e:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; traceback.print_exc(file=sys.stderr)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">serv</a>.queue.put(e)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">finally</span>:</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">conn</a>.close()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html"> 126</a></span>&#160;<span class="keyword">class </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html">Socks5Server</a>(object):</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#af7ef67686930d3031d0540a5a35bb473"> 127</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#af7ef67686930d3031d0540a5a35bb473">__init__</a>(self, conf):</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a97eed7db1fd01cc9a18324052db2ed92"> 128</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a97eed7db1fd01cc9a18324052db2ed92">conf</a> = conf</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db"> 129</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">s</a> = socket.socket(conf.af)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">s</a>.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">s</a>.bind(conf.addr)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">s</a>.listen(5)</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21"> 133</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a> = <span class="keyword">False</span></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f"> 134</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">thread</a> = <span class="keywordtype">None</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#ad6a476a8ecdf5dd8e9f243bd05164960"> 135</a></span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#ad6a476a8ecdf5dd8e9f243bd05164960">queue</a> = Queue.Queue() <span class="comment"># report connections and exceptions to client</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a4de334946d8595af684c11681fec02ac"> 137</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a4de334946d8595af684c11681fec02ac">run</a>(self):</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">while</span> self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; (sockconn, peer) = self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">s</a>.accept()</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a>:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; conn = <a class="code" href="classtest__framework_1_1socks5_1_1Socks5Connection.html">Socks5Connection</a>(self, sockconn, peer)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; thread = threading.Thread(<span class="keywordtype">None</span>, conn.handle)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; thread.daemon = <span class="keyword">True</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; thread.start()</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a07fa6ead528129f2d8272aec843082c3"> 146</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a07fa6ead528129f2d8272aec843082c3">start</a>(self):</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; assert(<span class="keywordflow">not</span> self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a>)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a> = <span class="keyword">True</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">thread</a> = threading.Thread(<span class="keywordtype">None</span>, self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a4de334946d8595af684c11681fec02ac">run</a>)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">thread</a>.daemon = <span class="keyword">True</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">thread</a>.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a07fa6ead528129f2d8272aec843082c3">start</a>()</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a13ff07ee92cf3f294e7c67033cab8d2b"> 153</a></span>&#160; <span class="keyword">def </span><a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a13ff07ee92cf3f294e7c67033cab8d2b">stop</a>(self):</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">running</a> = <span class="keyword">False</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment"># connect to self to end run loop</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; s = socket.socket(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a97eed7db1fd01cc9a18324052db2ed92">conf</a>.af)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; s.connect(self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a97eed7db1fd01cc9a18324052db2ed92">conf</a>.addr)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; s.close()</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; self.<a class="code" href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">thread</a>.join()</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a13ff07ee92cf3f294e7c67033cab8d2b"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a13ff07ee92cf3f294e7c67033cab8d2b">test_framework.socks5.Socks5Server.stop</a></div><div class="ttdeci">def stop(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00153">socks5.py:153</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html">test_framework.socks5.Socks5Connection</a></div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00053">socks5.py:53</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html_a0f1de4d95c446a3858cb69073402411f"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a0f1de4d95c446a3858cb69073402411f">test_framework.socks5.Socks5Connection.peer</a></div><div class="ttdeci">peer</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00057">socks5.py:57</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html_a45310cd757d5fbc5d4d8fcfad84b655f"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a45310cd757d5fbc5d4d8fcfad84b655f">test_framework.socks5.Socks5Configuration.auth</a></div><div class="ttdeci">auth</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00039">socks5.py:39</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a97eed7db1fd01cc9a18324052db2ed92"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a97eed7db1fd01cc9a18324052db2ed92">test_framework.socks5.Socks5Server.conf</a></div><div class="ttdeci">conf</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00128">socks5.py:128</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html_abdf36fad374f2af91e09fcfb59f82f95"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#abdf36fad374f2af91e09fcfb59f82f95">test_framework.socks5.Socks5Configuration.__init__</a></div><div class="ttdeci">def __init__(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00035">socks5.py:35</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a76e2b9997dbbed254568230a61151d42"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a76e2b9997dbbed254568230a61151d42">test_framework.socks5.Socks5Command.__repr__</a></div><div class="ttdeci">def __repr__(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00050">socks5.py:50</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a3ee970a53b0d66218a275d1820ca6835"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a3ee970a53b0d66218a275d1820ca6835">test_framework.socks5.Socks5Command.addr</a></div><div class="ttdeci">addr</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00046">socks5.py:46</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a0eec40be7518cbb779ff4ee9047e690c"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a0eec40be7518cbb779ff4ee9047e690c">test_framework.socks5.Socks5Command.cmd</a></div><div class="ttdeci">cmd</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00044">socks5.py:44</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html">test_framework.socks5.Socks5Server</a></div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00126">socks5.py:126</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html_a81ca62c44066b97edce3556e642a2352"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a81ca62c44066b97edce3556e642a2352">test_framework.socks5.Socks5Configuration.unauth</a></div><div class="ttdeci">unauth</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00038">socks5.py:38</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1AddressType_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1AddressType.html">test_framework.socks5.AddressType</a></div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00015">socks5.py:15</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html_ab8acfee871df6ac8f5f5ed581f3736a4"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab8acfee871df6ac8f5f5ed581f3736a4">test_framework.socks5.Socks5Connection.serv</a></div><div class="ttdeci">serv</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00055">socks5.py:55</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html">test_framework.socks5.Socks5Command</a></div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00041">socks5.py:41</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a1313433f05fa6e77a5bb16455e6a5d7f"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a1313433f05fa6e77a5bb16455e6a5d7f">test_framework.socks5.Socks5Command.port</a></div><div class="ttdeci">port</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00047">socks5.py:47</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_af7329a3fb2df4a716c866a1cd4d765cc"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#af7329a3fb2df4a716c866a1cd4d765cc">test_framework.socks5.Socks5Command.atyp</a></div><div class="ttdeci">atyp</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00045">socks5.py:45</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a2adc6e937bdc1e7868a76b37278146cf"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a2adc6e937bdc1e7868a76b37278146cf">test_framework.socks5.Socks5Command.__init__</a></div><div class="ttdeci">def __init__(self, cmd, atyp, addr, port, username, password)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00043">socks5.py:43</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_a19dd99ce63a49292107304d9ece64b04"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#a19dd99ce63a49292107304d9ece64b04">test_framework.socks5.Socks5Command.password</a></div><div class="ttdeci">password</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00049">socks5.py:49</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a062bf9b3f03d0cbf892e71a4cd7dcf9f"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a062bf9b3f03d0cbf892e71a4cd7dcf9f">test_framework.socks5.Socks5Server.thread</a></div><div class="ttdeci">thread</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00134">socks5.py:134</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Command_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Command.html">test_framework.socks5.Command</a></div><div class="ttdoc">Protocol constants. </div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00012">socks5.py:12</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_ad6a476a8ecdf5dd8e9f243bd05164960"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#ad6a476a8ecdf5dd8e9f243bd05164960">test_framework.socks5.Socks5Server.queue</a></div><div class="ttdeci">queue</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00135">socks5.py:135</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html_a7f193e97be6a3330ac7115fdc9dc0967"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#a7f193e97be6a3330ac7115fdc9dc0967">test_framework.socks5.Socks5Configuration.addr</a></div><div class="ttdeci">addr</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00036">socks5.py:36</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html_a8b9fe437b47effde65eec798b9b13a03"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html#a8b9fe437b47effde65eec798b9b13a03">test_framework.socks5.Socks5Connection.conn</a></div><div class="ttdeci">conn</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00056">socks5.py:56</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html_ab0fddfc3d16d5658b0bdb385f756503c"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html#ab0fddfc3d16d5658b0bdb385f756503c">test_framework.socks5.Socks5Connection.handle</a></div><div class="ttdeci">def handle(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00059">socks5.py:59</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a4de334946d8595af684c11681fec02ac"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a4de334946d8595af684c11681fec02ac">test_framework.socks5.Socks5Server.run</a></div><div class="ttdeci">def run(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00137">socks5.py:137</a></div></div>
<div class="ttc" id="namespacetest__framework_1_1socks5_html_a38a3f8b3ef37d5407596796305e65bcb"><div class="ttname"><a href="namespacetest__framework_1_1socks5.html#a38a3f8b3ef37d5407596796305e65bcb">test_framework.socks5.recvall</a></div><div class="ttdeci">def recvall(s, n)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00021">socks5.py:21</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_af7ef67686930d3031d0540a5a35bb473"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#af7ef67686930d3031d0540a5a35bb473">test_framework.socks5.Socks5Server.__init__</a></div><div class="ttdeci">def __init__(self, conf)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00127">socks5.py:127</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_abc9b3a698007830ceb1699a854e90d21"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#abc9b3a698007830ceb1699a854e90d21">test_framework.socks5.Socks5Server.running</a></div><div class="ttdeci">running</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00133">socks5.py:133</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a5a18b7626d863cb617e27bb05a3038db"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a5a18b7626d863cb617e27bb05a3038db">test_framework.socks5.Socks5Server.s</a></div><div class="ttdeci">s</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00129">socks5.py:129</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html">test_framework.socks5.Socks5Configuration</a></div><div class="ttdoc">Implementation classes. </div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00033">socks5.py:33</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Connection_html_af5a62e88aab1971a8a2f6bb0894d586f"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Connection.html#af5a62e88aab1971a8a2f6bb0894d586f">test_framework.socks5.Socks5Connection.__init__</a></div><div class="ttdeci">def __init__(self, serv, conn, peer)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00054">socks5.py:54</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Server_html_a07fa6ead528129f2d8272aec843082c3"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Server.html#a07fa6ead528129f2d8272aec843082c3">test_framework.socks5.Socks5Server.start</a></div><div class="ttdeci">def start(self)</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00146">socks5.py:146</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Command_html_aa555860240b7643c0bba903f0727b474"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Command.html#aa555860240b7643c0bba903f0727b474">test_framework.socks5.Socks5Command.username</a></div><div class="ttdeci">username</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00048">socks5.py:48</a></div></div>
<div class="ttc" id="classtest__framework_1_1socks5_1_1Socks5Configuration_html_adbc35802e633a8aaf4e1860c3ad62541"><div class="ttname"><a href="classtest__framework_1_1socks5_1_1Socks5Configuration.html#adbc35802e633a8aaf4e1860c3ad62541">test_framework.socks5.Socks5Configuration.af</a></div><div class="ttdeci">af</div><div class="ttdef"><b>Definition:</b> <a href="socks5_8py_source.html#l00037">socks5.py:37</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_62ba24d7ce8eecc59962fe5b590c1065.html">qa</a></li><li class="navelem"><a class="el" href="dir_dbddb259b29a77ea11562b7a380aa303.html">rpc-tests</a></li><li class="navelem"><a class="el" href="dir_0f1fd91d0d18a547184c924770390b91.html">test_framework</a></li><li class="navelem"><a class="el" href="socks5_8py.html">socks5.py</a></li>
<li class="footer">Generated on Thu Dec 14 2017 13:15:02 for Dash Core by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
</ul>
</div>
</body>
</html>