<!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"/> <title>Vidalia: TorSocket Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>TorSocket Class Reference</h1><!-- doxytag: class="TorSocket" --> <p><code>#include <<a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>></code></p> <p><a href="class_tor_socket-members.html">List of all members.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Signals</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a294e9d079c0745328e13aafe1d5672ca">connectedToRemoteHost</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a573f63392d7ccae616420b8ccb8c65ef">socketError</a> (QString errmsg)</td></tr> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a2c3fe12ba28708bc074758c869910ea8">TorSocket</a> (const QHostAddress &socksAddr, quint16 socksPort, QObject *parent=0)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#aeefa68b127c44d6b7d8e865c5f34937e">connectToRemoteHost</a> (const QString &remoteHost, quint16 remotePort)</td></tr> <tr><td colspan="2"><h2>Private Slots</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a52a0e8f20ee1f5f30129e9bb2d4eef30">connectedToProxy</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a0abb454dac783244f04ca638f7731324">onHandshakeResponse</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#ac2ebd30cfcfb4dc7985937995f9ff9e4">onError</a> (QAbstractSocket::SocketError error)</td></tr> <tr><td colspan="2"><h2>Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a19f1d9a000e2be1d9cd35cd343268781">sendSocksHandshake</a> (const QString &remoteHost, quint16 remotePort)</td></tr> <tr><td colspan="2"><h2>Private Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">QHostAddress </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a94fe00f32b7bb997039dec85134e83ab">_socksAddr</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">QString </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#af1da7a0e54cb24ec84a259ff9ac63829">_remoteHost</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">quint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#abc4b49aee6b4d6c20c42244d4d3f1c9f">_socksPort</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">quint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_tor_socket.html#a7c4a5eb766c49e8ff4ff3ac75f1c0fcd">_remotePort</a></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Definition at line <a class="el" href="_tor_socket_8h_source.html#l00024">24</a> of file <a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a2c3fe12ba28708bc074758c869910ea8"></a><!-- doxytag: member="TorSocket::TorSocket" ref="a2c3fe12ba28708bc074758c869910ea8" args="(const QHostAddress &socksAddr, quint16 socksPort, QObject *parent=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TorSocket::TorSocket </td> <td>(</td> <td class="paramtype">const QHostAddress & </td> <td class="paramname"> <em>socksAddr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">quint16 </td> <td class="paramname"> <em>socksPort</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">QObject * </td> <td class="paramname"> <em>parent</em> = <code>0</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Constructor. </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00030">30</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="_tor_socket_8cpp_source.html#l00064">connectedToProxy()</a>, <a class="el" href="namespacetc.html#aa7353218fd7baef0876bbb422ce818af">tc::error()</a>, <a class="el" href="_tor_socket_8cpp_source.html#l00055">onError()</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00103">onHandshakeResponse()</a>.</p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a52a0e8f20ee1f5f30129e9bb2d4eef30"></a><!-- doxytag: member="TorSocket::connectedToProxy" ref="a52a0e8f20ee1f5f30129e9bb2d4eef30" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::connectedToProxy </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [private, slot]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Called when the socket is connected to the proxy and sends our half of a Socks4a handshake. </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00064">64</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="_tor_socket_8h_source.html#l00057">_remoteHost</a>, <a class="el" href="_tor_socket_8h_source.html#l00059">_remotePort</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00082">sendSocksHandshake()</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00030">TorSocket()</a>.</p> </div> </div> <a class="anchor" id="a294e9d079c0745328e13aafe1d5672ca"></a><!-- doxytag: member="TorSocket::connectedToRemoteHost" ref="a294e9d079c0745328e13aafe1d5672ca" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::connectedToRemoteHost </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [signal]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Emitted when a connection has been established through Tor to the remote host specified in a prior call to connectToHost(). </p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00103">onHandshakeResponse()</a>.</p> </div> </div> <a class="anchor" id="aeefa68b127c44d6b7d8e865c5f34937e"></a><!-- doxytag: member="TorSocket::connectToRemoteHost" ref="aeefa68b127c44d6b7d8e865c5f34937e" args="(const QString &remoteHost, quint16 remotePort)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::connectToRemoteHost </td> <td>(</td> <td class="paramtype">const QString & </td> <td class="paramname"> <em>remoteHost</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">quint16 </td> <td class="paramname"> <em>remotePort</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Connects to the specified hostname and port via Tor. </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00046">46</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="_tor_socket_8h_source.html#l00057">_remoteHost</a>, <a class="el" href="_tor_socket_8h_source.html#l00059">_remotePort</a>, <a class="el" href="_tor_socket_8h_source.html#l00056">_socksAddr</a>, and <a class="el" href="_tor_socket_8h_source.html#l00058">_socksPort</a>.</p> </div> </div> <a class="anchor" id="ac2ebd30cfcfb4dc7985937995f9ff9e4"></a><!-- doxytag: member="TorSocket::onError" ref="ac2ebd30cfcfb4dc7985937995f9ff9e4" args="(QAbstractSocket::SocketError error)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::onError </td> <td>(</td> <td class="paramtype">QAbstractSocket::SocketError </td> <td class="paramname"> <em>error</em></td> <td> ) </td> <td><code> [private, slot]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Called when a connection error has occurred. </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00055">55</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="class_tor_socket.html#a573f63392d7ccae616420b8ccb8c65ef">socketError()</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00030">TorSocket()</a>.</p> </div> </div> <a class="anchor" id="a0abb454dac783244f04ca638f7731324"></a><!-- doxytag: member="TorSocket::onHandshakeResponse" ref="a0abb454dac783244f04ca638f7731324" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::onHandshakeResponse </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [private, slot]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Handles the server's response part of a Socks4a handshake.</p> <p>Handles the second half of the handshake, received from the SOCKS proxy server. The response should be formatted as follows:</p> <p>0x00 (response version) STATUS (0x5A means success; other values mean failure) PORT (not set) ADDRESS (not set) </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00103">103</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="class_tor_socket.html#a294e9d079c0745328e13aafe1d5672ca">connectedToRemoteHost()</a>, <a class="el" href="_tor_socket_8cpp_source.html#l00026">SOCKS_CONNECT_STATUS_OK</a>, <a class="el" href="_tor_socket_8cpp_source.html#l00024">SOCKS_RESPONSE_LEN</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00025">SOCKS_RESPONSE_VERSION</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00030">TorSocket()</a>.</p> </div> </div> <a class="anchor" id="a19f1d9a000e2be1d9cd35cd343268781"></a><!-- doxytag: member="TorSocket::sendSocksHandshake" ref="a19f1d9a000e2be1d9cd35cd343268781" args="(const QString &remoteHost, quint16 remotePort)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::sendSocksHandshake </td> <td>(</td> <td class="paramtype">const QString & </td> <td class="paramname"> <em>remoteHost</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">quint16 </td> <td class="paramname"> <em>remotePort</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sends the client part of a Socks4a handshake with a proxy server.</p> <p>Sends the first part of a Socks4a handshake, using the remote hostname and port specified in the previous call to connectToHost(). The message should be formatted as follows:</p> <p>0x04 (socks version) 0x01 (connect) PORT (two bytes, most significant byte first) 0x00 0x00 0x00 0x01 (fake IP address: tells proxy to use SOCKS4a) 0x00 (empty username field) HOSTNAME (target hostname) 0x00 (marks the end of the hostname field) </p> <p>Definition at line <a class="el" href="_tor_socket_8cpp_source.html#l00082">82</a> of file <a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a>.</p> <p>References <a class="el" href="_tor_socket_8cpp_source.html#l00022">SOCKS_CONNECT</a>, <a class="el" href="_tor_socket_8cpp_source.html#l00023">SOCKS_FAKE_IP</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00021">SOCKS_VERSION</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00064">connectedToProxy()</a>.</p> </div> </div> <a class="anchor" id="a573f63392d7ccae616420b8ccb8c65ef"></a><!-- doxytag: member="TorSocket::socketError" ref="a573f63392d7ccae616420b8ccb8c65ef" args="(QString errmsg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TorSocket::socketError </td> <td>(</td> <td class="paramtype">QString </td> <td class="paramname"> <em>errmsg</em></td> <td> ) </td> <td><code> [signal]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Emitted when a connection error has occurred. </p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00055">onError()</a>.</p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="af1da7a0e54cb24ec84a259ff9ac63829"></a><!-- doxytag: member="TorSocket::_remoteHost" ref="af1da7a0e54cb24ec84a259ff9ac63829" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">QString <a class="el" href="class_tor_socket.html#af1da7a0e54cb24ec84a259ff9ac63829">TorSocket::_remoteHost</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Remote hostname. </p> <p>Definition at line <a class="el" href="_tor_socket_8h_source.html#l00057">57</a> of file <a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00064">connectedToProxy()</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00046">connectToRemoteHost()</a>.</p> </div> </div> <a class="anchor" id="a7c4a5eb766c49e8ff4ff3ac75f1c0fcd"></a><!-- doxytag: member="TorSocket::_remotePort" ref="a7c4a5eb766c49e8ff4ff3ac75f1c0fcd" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">quint16 <a class="el" href="class_tor_socket.html#a7c4a5eb766c49e8ff4ff3ac75f1c0fcd">TorSocket::_remotePort</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Remote host port. </p> <p>Definition at line <a class="el" href="_tor_socket_8h_source.html#l00059">59</a> of file <a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00064">connectedToProxy()</a>, and <a class="el" href="_tor_socket_8cpp_source.html#l00046">connectToRemoteHost()</a>.</p> </div> </div> <a class="anchor" id="a94fe00f32b7bb997039dec85134e83ab"></a><!-- doxytag: member="TorSocket::_socksAddr" ref="a94fe00f32b7bb997039dec85134e83ab" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">QHostAddress <a class="el" href="class_tor_socket.html#a94fe00f32b7bb997039dec85134e83ab">TorSocket::_socksAddr</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Address of Tor's SOCKS listener. </p> <p>Definition at line <a class="el" href="_tor_socket_8h_source.html#l00056">56</a> of file <a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00046">connectToRemoteHost()</a>.</p> </div> </div> <a class="anchor" id="abc4b49aee6b4d6c20c42244d4d3f1c9f"></a><!-- doxytag: member="TorSocket::_socksPort" ref="abc4b49aee6b4d6c20c42244d4d3f1c9f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">quint16 <a class="el" href="class_tor_socket.html#abc4b49aee6b4d6c20c42244d4d3f1c9f">TorSocket::_socksPort</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Port of Tor's SOCKS listener. </p> <p>Definition at line <a class="el" href="_tor_socket_8h_source.html#l00058">58</a> of file <a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a>.</p> <p>Referenced by <a class="el" href="_tor_socket_8cpp_source.html#l00046">connectToRemoteHost()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="_tor_socket_8h_source.html">TorSocket.h</a></li> <li><a class="el" href="_tor_socket_8cpp_source.html">TorSocket.cpp</a></li> </ul> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Mon Aug 30 22:58:57 2010 for Vidalia by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>