diff options
Diffstat (limited to 'tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols')
9 files changed, 3122 insertions, 0 deletions
diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html new file mode 100644 index 0000000..3e91613 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAIServer.html @@ -0,0 +1,565 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + <title>RAIServer | JsDoc Reference</title> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <meta name="mobileoptimized" content="0" /> + + <link rel="stylesheet" href="../css/all.css" media="all" /> + <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" /> + <link rel="stylesheet" href="../css/handheld.css" media="handheld" /> + <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" /> + + <script src="../javascript/all.js"></script> + <!--[if lt IE 9]> + <script src="../javascript/html5.js"></script> + <![endif]--> + </head> + + <body> + +<div class="index"> + <div class="menu"> + <div class="indexLinks"> + <a href="../index.html">Classes</a> + <a href="../files.html">Files</a> + </div> + + <h2 class="heading1">Classes</h2> + + <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input> + + <nav> + <ul class="classList" id="ClassList"> + + <li><a href="../symbols/_global_.html">_global_</a></li> + + <li><a href="../symbols/mockup.html">mockup</a></li> + + <li><a href="../symbols/RAIServer.html">RAIServer</a></li> + + <li><a href="../symbols/RAISocket.html">RAISocket</a></li> + + <li><a href="../symbols/starttls.html">starttls</a></li> + + </ul> + </nav> + </div> + <div class="fineprint" style="clear:both"> + <footer> + + Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br /> + Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br /> + Generated on: + <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time> + </footer> + </div> +</div> + +<div class="index indexStatic"></div> + +<div class="content"> + <div class="innerContent"> + <article> + <header> + <h1 class="classTitle"> + + Class <span>RAIServer</span> + </h1> + + <div class="intro"> + <p class="description summary"> + + </p> + + + <ul class="summary"> + + + + <li>Defined in: <a href="../symbols/src/RAI_lib_rai.js.html">rai.js</a></li> + + + </ul> + + </div> + </header> + + + <section> + <div class="props"> + <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RAIServer."> + <caption class="sectionTitle">Class Summary</caption> + <thead> + <tr> + <th scope="col">Constructor Attributes</th> + <th scope="col">Constructor Name and Description</th> + </tr> + </thead> + <tbody> + <tr> + <td class="attributes"> </td> + <td class="nameDescription" > + <div class="fixedFont"> + <b><a href="../symbols/RAIServer.html#constructor">RAIServer</a></b>(options) + </div> + <div class="description"><p>Creates instance of RAIServer</p> + +<p>Options object has the following properties:</p> + +<ul> + <li><b>debug</b> - if set to true print traffic to console</li> + <li><b>disconnectOnTimeout</b> - if set to true close the connection on disconnect</li> + <li><b>timeout</b> - timeout in milliseconds for disconnecting the client, + defaults to 0 (no timeout)</li> +</ul> + +<p><b>Events</b></p> + +<ul> + <li><b>'connect'</b> - emitted if a client connects to the server, param + is a client (<a href="../symbols/RAISocket.html">RAISocket</a>) object</li> + <li><b>'error'</b> - emitted on error, has an error object as a param</li> +</ul></div> + </td> + </tr> + </tbody> + </table> + </div> + </section> + + + + <!-- + #### METHODS SUMMARY + --> + + <section> + + + <div class="props"> + <h2 class="sectionTitle">Method Summary</h2> + + + <nav> + <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class RAIServer."> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + + <tbody> + + + <tr + class='item0' + > + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAIServer.html#_createServer">_createServer</a></b>() + </div> + <div class="description"><p>Creates a server with listener callback</p></div> + </td> + </tr> + + <tr + class='item1' + > + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAIServer.html#_serverListener">_serverListener</a></b>(socket) + </div> + <div class="description"><p>Server listener that is run on client connection</p> + +<p><a href="../symbols/RAISocket.html">RAISocket</a> object instance is created based on the client socket + and a <code>'connection'</code> event is emitted</p></div> + </td> + </tr> + + <tr + class='item2' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAIServer.html#end">end</a></b>(callback) + </div> + <div class="description"><p>Stops the server</p></div> + </td> + </tr> + + <tr + class='item3' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAIServer.html#listen">listen</a></b>(port, host, callback) + </div> + <div class="description"><p>Starts listening on selected port</p></div> + </td> + </tr> + + </tbody> + </table> + </nav> + + + + </div> + </section> + + + <!-- + #### EVENTS SUMMARY + --> + + + <section> + + <nav> + <div class="props"> + <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class RAIServer."> + <caption class="sectionTitle">Event Summary</caption> + + <thead> + <tr> + <th scope="col">Event Attributes</th> + <th scope="col">Event Name and Description</th> + </tr> + </thead> + + <tbody> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAIServer.html#event:_onError">_onError</a></b>(err) + </div> + <div class="description"><p>Listens for errors</p></div> + </td> + </tr> + + </tbody> + </table> + </div> + </nav> + + + + </section> + + <!-- + #### CONSTRUCTOR DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle" id="constructor"> + Class Detail + </h2> + + <div class="fixedFont"> + <b>RAIServer</b>(options) + </div> + + <div class="description"> + <p>Creates instance of RAIServer</p> + +<p>Options object has the following properties:</p> + +<ul> + <li><b>debug</b> - if set to true print traffic to console</li> + <li><b>disconnectOnTimeout</b> - if set to true close the connection on disconnect</li> + <li><b>timeout</b> - timeout in milliseconds for disconnecting the client, + defaults to 0 (no timeout)</li> +</ul> + +<p><b>Events</b></p> + +<ul> + <li><b>'connect'</b> - emitted if a client connects to the server, param + is a client (<a href="../symbols/RAISocket.html">RAISocket</a>) object</li> + <li><b>'error'</b> - emitted on error, has an error object as a param</li> +</ul> + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>options</b> + <i>Optional</i> + </dt> + <dd>Optional options object</dd> + + </dl> + + + + </div> + </div> + </section> + + <!-- + #### FIELD DETAILS + --> + + <!-- + #### METHOD DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Method Detail + </h2> + + <ul class="methodDetail" id="MethodDetail"> + + + <li + class='item0' + > + <div class="fixedFont heading" id="_createServer"> + <span class='lighter'> + <private> + </span> + + + + <b>_createServer</b>() + </div> + + <div class="description"> + <p>Creates a server with listener callback</p> + + + + + </div> + + + + + + + <div class="hr"></div> + </li> + + <li + class='item1' + > + <div class="fixedFont heading" id="_serverListener"> + <span class='lighter'> + <private> + </span> + + + + <b>_serverListener</b>(socket) + </div> + + <div class="description"> + <p>Server listener that is run on client connection</p> + +<p><a href="../symbols/RAISocket.html">RAISocket</a> object instance is created based on the client socket + and a <code>'connection'</code> event is emitted</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>socket</b> + + </dt> + <dd>The socket to the client</dd> + + </dl> + + + + <div class="hr"></div> + </li> + + <li + class='item2' + > + <div class="fixedFont heading" id="end"> + <span class='lighter'> + + </span> + + + + <b>end</b>(callback) + </div> + + <div class="description"> + <p>Stops the server</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Function}</span> <b>callback</b> + + </dt> + <dd>Is run when the server is closed</dd> + + </dl> + + + + <div class="hr"></div> + </li> + + <li + class='item3' + > + <div class="fixedFont heading" id="listen"> + <span class='lighter'> + + </span> + + + + <b>listen</b>(port, host, callback) + </div> + + <div class="description"> + <p>Starts listening on selected port</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Number}</span> <b>port</b> + + </dt> + <dd>The port to listen</dd> + + <dt> + <span class="light fixedFont">{String}</span> <b>host</b> + <i>Optional</i> + </dt> + <dd>The IP address to listen</dd> + + <dt> + <span class="light fixedFont">{Function}</span> <b>callback</b> + + </dt> + <dd>The callback function to be run after the server +is listening, the only param is an error message if the operation failed</dd> + + </dl> + + + + + </li> + + </ul> + </div> + </div> + </section> + + + <!-- + #### EVENT DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Event Detail + </h2> + + + <div class="fixedFont heading" id="event:_onError"> + <span class='lighter'> + <private> + </span> + + + + <b>_onError</b>(err) + </div> + + <div class="description"> + <p>Listens for errors</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>err</b> + + </dt> + <dd>Error object</dd> + + </dl> + + + + + + + </div> + </div> + </section> + + </article> + </div> +</div> + + <script type="text/javascript"> + wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660) + codeview.classFilter.Init() + </script> + </body> +</html> + diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html new file mode 100644 index 0000000..15cad38 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/RAISocket.html @@ -0,0 +1,826 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + <title>RAISocket | JsDoc Reference</title> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <meta name="mobileoptimized" content="0" /> + + <link rel="stylesheet" href="../css/all.css" media="all" /> + <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" /> + <link rel="stylesheet" href="../css/handheld.css" media="handheld" /> + <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" /> + + <script src="../javascript/all.js"></script> + <!--[if lt IE 9]> + <script src="../javascript/html5.js"></script> + <![endif]--> + </head> + + <body> + +<div class="index"> + <div class="menu"> + <div class="indexLinks"> + <a href="../index.html">Classes</a> + <a href="../files.html">Files</a> + </div> + + <h2 class="heading1">Classes</h2> + + <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input> + + <nav> + <ul class="classList" id="ClassList"> + + <li><a href="../symbols/_global_.html">_global_</a></li> + + <li><a href="../symbols/mockup.html">mockup</a></li> + + <li><a href="../symbols/RAIServer.html">RAIServer</a></li> + + <li><a href="../symbols/RAISocket.html">RAISocket</a></li> + + <li><a href="../symbols/starttls.html">starttls</a></li> + + </ul> + </nav> + </div> + <div class="fineprint" style="clear:both"> + <footer> + + Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br /> + Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br /> + Generated on: + <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time> + </footer> + </div> +</div> + +<div class="index indexStatic"></div> + +<div class="content"> + <div class="innerContent"> + <article> + <header> + <h1 class="classTitle"> + + Class <span>RAISocket</span> + </h1> + + <div class="intro"> + <p class="description summary"> + + </p> + + + <ul class="summary"> + + + + <li>Defined in: <a href="../symbols/src/RAI_lib_rai.js.html">rai.js</a></li> + + + </ul> + + </div> + </header> + + + <section> + <div class="props"> + <table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RAISocket."> + <caption class="sectionTitle">Class Summary</caption> + <thead> + <tr> + <th scope="col">Constructor Attributes</th> + <th scope="col">Constructor Name and Description</th> + </tr> + </thead> + <tbody> + <tr> + <td class="attributes"> </td> + <td class="nameDescription" > + <div class="fixedFont"> + <b><a href="../symbols/RAISocket.html#constructor">RAISocket</a></b>(socket, options) + </div> + <div class="description"><p>Creates a instance for interacting with a client (socket)</p> + +<p>Optional options object is the same that is passed to the parent +<a href="../symbols/RAIServer.html">RAIServer</a> object</p> + +<p><b>Events</b></p> + +<ul> + <li><b>'command'</b> - emitted if a client sends a command.</div> + </td> + </tr> + </tbody> + </table> + </div> + </section> + + + + <!-- + #### METHODS SUMMARY + --> + + <section> + + + <div class="props"> + <h2 class="sectionTitle">Method Summary</h2> + + + <nav> + <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class RAISocket."> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + + <tbody> + + + <tr + class='item0' + > + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#_destroy">_destroy</a></b>() + </div> + <div class="description"><p>Called when the connection is or is going to be ended</p></div> + </td> + </tr> + + <tr + class='item1' + > + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#_processData">_processData</a></b>(str) + </div> + <div class="description"><p>Processed incoming command lines and emits found data as +<code>'command'</code> with the command name as the first param and the rest +of the data as second (Buffer)</p></div> + </td> + </tr> + + <tr + class='item2' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#end">end</a></b>() + </div> + <div class="description"><p>Closes the connection to the client</p></div> + </td> + </tr> + + <tr + class='item3' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#send">send</a></b>(data) + </div> + <div class="description"><p>Sends some data to the client.</div> + </td> + </tr> + + <tr + class='item4' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#startDataMode">startDataMode</a></b>(sequence) + </div> + <div class="description"><p>Instructs the server to be listening for mixed data instead of line based + commands</p></div> + </td> + </tr> + + <tr + class='item5' + > + <td class="attributes"> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#startTLS">startTLS</a></b>(credentials, callback) + </div> + <div class="description"><p>Instructs the server to upgrade the connection to secure TLS connection</p> + +<p>Fires <code>callback</code> on successful connection upgrade if set, +otherwise emits <code>'tls'</code></p></div> + </td> + </tr> + + </tbody> + </table> + </nav> + + + + </div> + </section> + + + <!-- + #### EVENTS SUMMARY + --> + + + <section> + + <nav> + <div class="props"> + <table class="summaryTable" cellspacing="0" summary="A summary of the events documented in the class RAISocket."> + <caption class="sectionTitle">Event Summary</caption> + + <thead> + <tr> + <th scope="col">Event Attributes</th> + <th scope="col">Event Name and Description</th> + </tr> + </thead> + + <tbody> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onClose">_onClose</a></b>(hadError) + </div> + <div class="description"><p>Called when the connection is closed</p></div> + </td> + </tr> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onEnd">_onEnd</a></b>() + </div> + <div class="description"><p>Called when the connection is ended.</div> + </td> + </tr> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onError">_onError</a></b>(err) + </div> + <div class="description"><p>Called when an error has appeared.</div> + </td> + </tr> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onReceiveData">_onReceiveData</a></b>(chunk) + </div> + <div class="description"><p>Called when a chunk of data arrives from the client.</div> + </td> + </tr> + + <tr> + <td class="attributes"><private> </td> + <td class="nameDescription"> + <div class="fixedFont"><b><a href="../symbols/RAISocket.html#event:_onTimeout">_onTimeout</a></b>() + </div> + <div class="description"><p>Called when a timeout has occured.</div> + </td> + </tr> + + </tbody> + </table> + </div> + </nav> + + + + </section> + + <!-- + #### CONSTRUCTOR DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle" id="constructor"> + Class Detail + </h2> + + <div class="fixedFont"> + <b>RAISocket</b>(socket, options) + </div> + + <div class="description"> + <p>Creates a instance for interacting with a client (socket)</p> + +<p>Optional options object is the same that is passed to the parent +<a href="../symbols/RAIServer.html">RAIServer</a> object</p> + +<p><b>Events</b></p> + +<ul> + <li><b>'command'</b> - emitted if a client sends a command. Gets two + params - command (String) and payload (Buffer)</li> + <li><b>'data'</b> - emitted when a chunk is received in data mode, the + param being the payload (Buffer)</li> + <li><b>'ready'</b> - emitted when data stream ends and normal command + flow is recovered</li> + <li><b>'tls'</b> - emitted when the connection is secured by TLS</li> + <li><b>'error'</b> - emitted when an error occurs. Connection to the + client is disconnected automatically. Param is an error object.</l> + <li><b>'timeout'</b> - emitted when a timeout occurs. Connection to the + client is disconnected automatically if disconnectOnTimeout option + is set to true.</l> + <li><b>'end'</b> - emitted when the client disconnects</l> +</ul> + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>socket</b> + + </dt> + <dd>Socket for the client</dd> + + <dt> + <span class="light fixedFont">{Object}</span> <b>options</b> + <i>Optional</i> + </dt> + <dd>Optional options object</dd> + + </dl> + + + + </div> + </div> + </section> + + <!-- + #### FIELD DETAILS + --> + + <!-- + #### METHOD DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Method Detail + </h2> + + <ul class="methodDetail" id="MethodDetail"> + + + <li + class='item0' + > + <div class="fixedFont heading" id="_destroy"> + <span class='lighter'> + <private> + </span> + + + + <b>_destroy</b>() + </div> + + <div class="description"> + <p>Called when the connection is or is going to be ended</p> + + + + + </div> + + + + + + + <div class="hr"></div> + </li> + + <li + class='item1' + > + <div class="fixedFont heading" id="_processData"> + <span class='lighter'> + <private> + </span> + + + + <b>_processData</b>(str) + </div> + + <div class="description"> + <p>Processed incoming command lines and emits found data as +<code>'command'</code> with the command name as the first param and the rest +of the data as second (Buffer)</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{String}</span> <b>str</b> + + </dt> + <dd>Binary string to be processed</dd> + + </dl> + + + + <div class="hr"></div> + </li> + + <li + class='item2' + > + <div class="fixedFont heading" id="end"> + <span class='lighter'> + + </span> + + + + <b>end</b>() + </div> + + <div class="description"> + <p>Closes the connection to the client</p> + + + + + </div> + + + + + + + <div class="hr"></div> + </li> + + <li + class='item3' + > + <div class="fixedFont heading" id="send"> + <span class='lighter'> + + </span> + + + + <b>send</b>(data) + </div> + + <div class="description"> + <p>Sends some data to the client. <code><CR><LF></code> is automatically appended to + the data</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{String|Buffer}</span> <b>data</b> + + </dt> + <dd>Data to be sent to the client</dd> + + </dl> + + + + <div class="hr"></div> + </li> + + <li + class='item4' + > + <div class="fixedFont heading" id="startDataMode"> + <span class='lighter'> + + </span> + + + + <b>startDataMode</b>(sequence) + </div> + + <div class="description"> + <p>Instructs the server to be listening for mixed data instead of line based + commands</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{String}</span> <b>sequence</b> + <i>Optional, Default: "."</i> + </dt> + <dd>- optional sequence on separate line for + matching the data end</dd> + + </dl> + + + + <div class="hr"></div> + </li> + + <li + class='item5' + > + <div class="fixedFont heading" id="startTLS"> + <span class='lighter'> + + </span> + + + + <b>startTLS</b>(credentials, callback) + </div> + + <div class="description"> + <p>Instructs the server to upgrade the connection to secure TLS connection</p> + +<p>Fires <code>callback</code> on successful connection upgrade if set, +otherwise emits <code>'tls'</code></p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>credentials</b> + <i>Optional</i> + </dt> + <dd>An object with PEM encoded key and + certificate <code>{key:"---BEGIN...", cert:"---BEGIN..."}</code>, + if not set autogenerated values will be used.</dd> + + <dt> + <span class="light fixedFont">{Function}</span> <b>callback</b> + <i>Optional</i> + </dt> + <dd>If calback is set fire it after successful connection + upgrade, otherwise <code>'tls'</code> is emitted</dd> + + </dl> + + + + + </li> + + </ul> + </div> + </div> + </section> + + + <!-- + #### EVENT DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Event Detail + </h2> + + + <div class="fixedFont heading" id="event:_onClose"> + <span class='lighter'> + <private> + </span> + + + + <b>_onClose</b>(hadError) + </div> + + <div class="description"> + <p>Called when the connection is closed</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Boolean}</span> <b>hadError</b> + + </dt> + <dd>did the connection end because of an error?</dd> + + </dl> + + + + + <div class="hr"></div> + + <div class="fixedFont heading" id="event:_onEnd"> + <span class='lighter'> + <private> + </span> + + + + <b>_onEnd</b>() + </div> + + <div class="description"> + <p>Called when the connection is ended. Emits <code>'end'</code></p> + + + + + </div> + + + + + + + + <div class="hr"></div> + + <div class="fixedFont heading" id="event:_onError"> + <span class='lighter'> + <private> + </span> + + + + <b>_onError</b>(err) + </div> + + <div class="description"> + <p>Called when an error has appeared. Emits <code>'error'</code> with +the error object as a parameter.</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>err</b> + + </dt> + <dd>Error object</dd> + + </dl> + + + + + <div class="hr"></div> + + <div class="fixedFont heading" id="event:_onReceiveData"> + <span class='lighter'> + <private> + </span> + + + + <b>_onReceiveData</b>(chunk) + </div> + + <div class="description"> + <p>Called when a chunk of data arrives from the client. If currently in data +mode, transmit the data otherwise send it to <code>_processData</code></p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Buffer|String}</span> <b>chunk</b> + + </dt> + <dd>Data sent by the client</dd> + + </dl> + + + + + <div class="hr"></div> + + <div class="fixedFont heading" id="event:_onTimeout"> + <span class='lighter'> + <private> + </span> + + + + <b>_onTimeout</b>() + </div> + + <div class="description"> + <p>Called when a timeout has occured. Connection will be closed and +<code>'timeout'</code> is emitted.</p> + + + + + </div> + + + + + + + + + + </div> + </div> + </section> + + </article> + </div> +</div> + + <script type="text/javascript"> + wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660) + codeview.classFilter.Init() + </script> + </body> +</html> + diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html new file mode 100644 index 0000000..b215cf7 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/_global_.html @@ -0,0 +1,122 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + <title>_global_ | JsDoc Reference</title> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <meta name="mobileoptimized" content="0" /> + + <link rel="stylesheet" href="../css/all.css" media="all" /> + <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" /> + <link rel="stylesheet" href="../css/handheld.css" media="handheld" /> + <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" /> + + <script src="../javascript/all.js"></script> + <!--[if lt IE 9]> + <script src="../javascript/html5.js"></script> + <![endif]--> + </head> + + <body> + +<div class="index"> + <div class="menu"> + <div class="indexLinks"> + <a href="../index.html">Classes</a> + <a href="../files.html">Files</a> + </div> + + <h2 class="heading1">Classes</h2> + + <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input> + + <nav> + <ul class="classList" id="ClassList"> + + <li><a href="../symbols/_global_.html">_global_</a></li> + + <li><a href="../symbols/mockup.html">mockup</a></li> + + <li><a href="../symbols/RAIServer.html">RAIServer</a></li> + + <li><a href="../symbols/RAISocket.html">RAISocket</a></li> + + <li><a href="../symbols/starttls.html">starttls</a></li> + + </ul> + </nav> + </div> + <div class="fineprint" style="clear:both"> + <footer> + + Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br /> + Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br /> + Generated on: + <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time> + </footer> + </div> +</div> + +<div class="index indexStatic"></div> + +<div class="content"> + <div class="innerContent"> + <article> + <header> + <h1 class="classTitle"> + + Built-In Namespace <span>_global_</span> + </h1> + + <div class="intro"> + <p class="description summary"> + + </p> + + + </div> + </header> + + + + + <!-- + #### METHODS SUMMARY + --> + + + <!-- + #### EVENTS SUMMARY + --> + + <!-- + #### CONSTRUCTOR DETAILS + --> + + <!-- + #### FIELD DETAILS + --> + + <!-- + #### METHOD DETAILS + --> + + + <!-- + #### EVENT DETAILS + --> + + </article> + </div> +</div> + + <script type="text/javascript"> + wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660) + codeview.classFilter.Init() + </script> + </body> +</html> + diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html new file mode 100644 index 0000000..987f5be --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/mockup.html @@ -0,0 +1,264 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + <title>mockup | JsDoc Reference</title> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <meta name="mobileoptimized" content="0" /> + + <link rel="stylesheet" href="../css/all.css" media="all" /> + <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" /> + <link rel="stylesheet" href="../css/handheld.css" media="handheld" /> + <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" /> + + <script src="../javascript/all.js"></script> + <!--[if lt IE 9]> + <script src="../javascript/html5.js"></script> + <![endif]--> + </head> + + <body> + +<div class="index"> + <div class="menu"> + <div class="indexLinks"> + <a href="../index.html">Classes</a> + <a href="../files.html">Files</a> + </div> + + <h2 class="heading1">Classes</h2> + + <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input> + + <nav> + <ul class="classList" id="ClassList"> + + <li><a href="../symbols/_global_.html">_global_</a></li> + + <li><a href="../symbols/mockup.html">mockup</a></li> + + <li><a href="../symbols/RAIServer.html">RAIServer</a></li> + + <li><a href="../symbols/RAISocket.html">RAISocket</a></li> + + <li><a href="../symbols/starttls.html">starttls</a></li> + + </ul> + </nav> + </div> + <div class="fineprint" style="clear:both"> + <footer> + + Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br /> + Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br /> + Generated on: + <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time> + </footer> + </div> +</div> + +<div class="index indexStatic"></div> + +<div class="content"> + <div class="innerContent"> + <article> + <header> + <h1 class="classTitle"> + + Namespace <span>mockup</span> + </h1> + + <div class="intro"> + <p class="description summary"> + Mockup module + </p> + + + <ul class="summary"> + + + + <li>Defined in: <a href="../symbols/src/RAI_lib_mockup.js.html">mockup.js</a></li> + + + </ul> + + </div> + </header> + + + + + <!-- + #### METHODS SUMMARY + --> + + <section> + + + <div class="props"> + <h2 class="sectionTitle">Method Summary</h2> + + + <nav> + <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class mockup."> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + + <tbody> + + + <tr + class='item0' + > + <td class="attributes"><static> </td> + <td class="nameDescription"> + <div class="fixedFont">mockup.<b><a href="../symbols/mockup.html#.runClientMockup">runClientMockup</a></b>(port, host, commands, callback, debug) + </div> + <div class="description"><p>Runs a batch of commands against a server</p> + +<pre> +var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"]; +runClientMockup(25, "mail.hot.ee", cmds, function(resp){ + console.log("Final:", resp.toString("utf-8").trim()); +}); +</pre></div> + </td> + </tr> + + </tbody> + </table> + </nav> + + + + </div> + </section> + + + <!-- + #### EVENTS SUMMARY + --> + + <!-- + #### CONSTRUCTOR DETAILS + --> + + <!-- + #### FIELD DETAILS + --> + + <!-- + #### METHOD DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Method Detail + </h2> + + <ul class="methodDetail" id="MethodDetail"> + + + <li + class='item0' + > + <div class="fixedFont heading" id=".runClientMockup"> + <span class='lighter'> + <static> + </span> + + + + <span class="light">mockup.</span><b>runClientMockup</b>(port, host, commands, callback, debug) + </div> + + <div class="description"> + <p>Runs a batch of commands against a server</p> + +<pre> +var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"]; +runClientMockup(25, "mail.hot.ee", cmds, function(resp){ + console.log("Final:", resp.toString("utf-8").trim()); +}); +</pre> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Number}</span> <b>port</b> + + </dt> + <dd>Port number</dd> + + <dt> + <span class="light fixedFont">{String}</span> <b>host</b> + + </dt> + <dd>Hostname to connect to</dd> + + <dt> + <span class="light fixedFont">{Array}</span> <b>commands</b> + + </dt> + <dd>Command list to be sent to server</dd> + + <dt> + <span class="light fixedFont">{Function}</span> <b>callback</b> + + </dt> + <dd>Callback function to run on completion, + has the last response from the server as a param</dd> + + <dt> + <span class="light fixedFont">{Boolean}</span> <b>debug</b> + <i>Optional</i> + </dt> + <dd>if set to true log all input/output</dd> + + </dl> + + + + + </li> + + </ul> + </div> + </div> + </section> + + + <!-- + #### EVENT DETAILS + --> + + </article> + </div> +</div> + + <script type="text/javascript"> + wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660) + codeview.classFilter.Init() + </script> + </body> +</html> + diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html new file mode 100644 index 0000000..3cee0e3 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_index.js.html @@ -0,0 +1,394 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/** +<span class='line'> 2</span> * @fileOverview This is the main file for the RAI library to create text based servers +<span class='line'> 3</span> * @author <a href="mailto:andris@node.ee">Andris Reinman</a> +<span class='line'> 4</span> * @version 0.1.0 +<span class='line'> 5</span> */</span><span class="WHIT"> +<span class='line'> 6</span> +<span class='line'> 7</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">netlib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 8</span> </span><span class="WHIT"> </span><span class="NAME">utillib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"util"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 9</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'events'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EventEmitter</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 10</span> </span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./starttls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 12</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 13</span> </span><span class="WHIT"> </span><span class="NAME">fs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"fs"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 14</span> +<span class='line'> 15</span> </span><span class="COMM">// Default credentials for starting TLS server</span><span class="WHIT"> +<span class='line'> 16</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 17</span> </span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/cert/key.pem"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 18</span> </span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/cert/cert.pem"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 19</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 20</span> +<span class='line'> 21</span> </span><span class="COMM">// Expose to the world</span><span class="WHIT"> +<span class='line'> 22</span> </span><span class="NAME">module.exports.RAIServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 23</span> +<span class='line'> 24</span> </span><span class="COMM">/** +<span class='line'> 25</span> * <p>Creates instance of RAIServer</p> +<span class='line'> 26</span> * +<span class='line'> 27</span> * <p>Options object has the following properties:</p> +<span class='line'> 28</span> * +<span class='line'> 29</span> * <ul> +<span class='line'> 30</span> * <li><b>debug</b> - if set to true print traffic to console</li> +<span class='line'> 31</span> * <li><b>timeout</b> - timeout in milliseconds for disconnecting the client, +<span class='line'> 32</span> * defaults to 0 (no timeout)</li> +<span class='line'> 33</span> * </ul> +<span class='line'> 34</span> * +<span class='line'> 35</span> * <p><b>Events</b></p> +<span class='line'> 36</span> * +<span class='line'> 37</span> * <ul> +<span class='line'> 38</span> * <li><b>'connect'</b> - emitted if a client connects to the server, param +<span class='line'> 39</span> * is a client ({@link RAISocket}) object</li> +<span class='line'> 40</span> * </ul> +<span class='line'> 41</span> * +<span class='line'> 42</span> * @constructor +<span class='line'> 43</span> * @param {Object} [options] Optional options object +<span class='line'> 44</span> */</span><span class="WHIT"> +<span class='line'> 45</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 47</span> </span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="TOKN">Â </span><span class="PUNC">||</span><span class="TOKN">Â </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> +<span class='line'> 50</span> </span><span class="NAME">this._createServer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 52</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAIServer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 53</span> +<span class='line'> 54</span> </span><span class="COMM">/** +<span class='line'> 55</span> * <p>Starts listening on selected port</p> +<span class='line'> 56</span> * +<span class='line'> 57</span> * @param {Number} port The port to listen +<span class='line'> 58</span> * @param {String} [host] The IP address to listen +<span class='line'> 59</span> * @param {Function} callback The callback function to be run after the server +<span class='line'> 60</span> * is listening, the only param is an error message if the operation failed +<span class='line'> 61</span> */</span><span class="WHIT"> +<span class='line'> 62</span> </span><span class="NAME">RAIServer.prototype.listen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 63</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">==</span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">this._port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="NAME">this._server.listen</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">err</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 73</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">err</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 78</span> +<span class='line'> 79</span> </span><span class="COMM">/** +<span class='line'> 80</span> * <p>Creates a server with listener callback</p> +<span class='line'> 81</span> */</span><span class="WHIT"> +<span class='line'> 82</span> </span><span class="NAME">RAIServer.prototype._createServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="NAME">this._server</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">netlib.createServer</span><span class="PUNC">(</span><span class="NAME">this._serverListener.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 85</span> +<span class='line'> 86</span> </span><span class="COMM">/** +<span class='line'> 87</span> * <p>Server listener that is run on client connection</p> +<span class='line'> 88</span> * +<span class='line'> 89</span> * <p>{@link RAISocket} object instance is created based on the client socket +<span class='line'> 90</span> * and a <code>'connection'</code> event is emitted</p> +<span class='line'> 91</span> * +<span class='line'> 92</span> * @param {Object} socket The socket to the client +<span class='line'> 93</span> */</span><span class="WHIT"> +<span class='line'> 94</span> </span><span class="NAME">RAIServer.prototype._serverListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CONNECTION FROM "</span><span class="PUNC">+</span><span class="NAME">socket.remoteAddress</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>100</span> </span><span class="WHIT"> +<span class='line'>101</span> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onReceiveData.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>102</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onEnd.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>103</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onError.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onTimeout.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onClose.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>106</span> +<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"connection"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>108</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>109</span> +<span class='line'>110</span> </span><span class="COMM">/** +<span class='line'>111</span> * <p>Creates a instance for interacting with a client (socket)</p> +<span class='line'>112</span> * +<span class='line'>113</span> * <p>Optional options object is the same that is passed to the parent +<span class='line'>114</span> * {@link RAIServer} object</p> +<span class='line'>115</span> * +<span class='line'>116</span> * <p><b>Events</b></p> +<span class='line'>117</span> * +<span class='line'>118</span> * <ul> +<span class='line'>119</span> * <li><b>'command'</b> - emitted if a client sends a command. Gets two +<span class='line'>120</span> * params - command (String) and payload (Buffer)</li> +<span class='line'>121</span> * <li><b>'data'</b> - emitted when a chunk is received in data mode, the +<span class='line'>122</span> * param being the payload (Buffer)</li> +<span class='line'>123</span> * <li><b>'ready'</b> - emitted when data stream ends and normal command +<span class='line'>124</span> * flow is recovered</li> +<span class='line'>125</span> * <li><b>'tls'</b> - emitted when the connection is secured by TLS</li> +<span class='line'>126</span> * <li><b>'error'</b> - emitted when an error occurs. Connection to the +<span class='line'>127</span> * client is disconnected automatically. Param is an error object.</l> +<span class='line'>128</span> * <li><b>'timeout'</b> - emitted when a timeout occurs. Connection to the +<span class='line'>129</span> * client is disconnected automatically.</l> +<span class='line'>130</span> * <li><b>'end'</b> - emitted when the client disconnects</l> +<span class='line'>131</span> * </ul> +<span class='line'>132</span> * +<span class='line'>133</span> * @constructor +<span class='line'>134</span> * @param {Object} socket Socket for the client +<span class='line'>135</span> * @param {Object} [options] Optional options object +<span class='line'>136</span> */</span><span class="WHIT"> +<span class='line'>137</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>138</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>139</span> </span><span class="WHIT"> +<span class='line'>140</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN">Â </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>142</span> </span><span class="WHIT"> +<span class='line'>143</span> </span><span class="NAME">this.remoteAddress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.remoteAddress</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>144</span> </span><span class="WHIT"> +<span class='line'>145</span> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>146</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\r\n\.\r\n|^\.\r\n/</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>147</span> </span><span class="WHIT"> +<span class='line'>148</span> </span><span class="NAME">this._secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>149</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>150</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>151</span> </span><span class="WHIT"> +<span class='line'>152</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>153</span> </span><span class="WHIT"> +<span class='line'>154</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>155</span> </span><span class="WHIT"> </span><span class="NAME">socket.setTimeout</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>156</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>157</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>158</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAISocket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>159</span> +<span class='line'>160</span> </span><span class="COMM">/** +<span class='line'>161</span> * <p>Sends some data to the client. <CR><LF> is automatically appended to +<span class='line'>162</span> * the data</p> +<span class='line'>163</span> * +<span class='line'>164</span> * @param {String|Buffer} data Data to be sent to the client +<span class='line'>165</span> */</span><span class="WHIT"> +<span class='line'>166</span> </span><span class="NAME">RAISocket.prototype.send</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>167</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>168</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN">Â </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>169</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="PUNC">+</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>170</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>171</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>172</span> </span><span class="WHIT"> </span><span class="NAME">data.copy</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>173</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>174</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN">Â </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>175</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>176</span> </span><span class="WHIT"> +<span class='line'>177</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"OUT: \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">buffer.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>179</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>180</span> </span><span class="WHIT"> +<span class='line'>181</span> </span><span class="NAME">this.socket.write</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>183</span> +<span class='line'>184</span> </span><span class="COMM">/** +<span class='line'>185</span> * <p>Instructs the server to be listening for mixed data instead of line based +<span class='line'>186</span> * commands</p> +<span class='line'>187</span> * +<span class='line'>188</span> * @param {String|RegExp} [sequence="\r\n.\r\n"] - optional sequence for +<span class='line'>189</span> * matching the data end +<span class='line'>190</span> */</span><span class="WHIT"> +<span class='line'>191</span> </span><span class="NAME">RAISocket.prototype.startDataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>192</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>196</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>197</span> +<span class='line'>198</span> </span><span class="COMM">/** +<span class='line'>199</span> * <p>Instructs the server to upgrade the connection to secure TLS connection</p> +<span class='line'>200</span> * +<span class='line'>201</span> * <p>Emits <code>'tls'</code> on successful upgrade</p> +<span class='line'>202</span> * +<span class='line'>203</span> * @param {Object} [credentials] - An object with PEM encoded key and +<span class='line'>204</span> * certificate <code>{key:"---BEGIN...", cert:"---BEGIN..."}</code>, +<span class='line'>205</span> * if not set autogenerated values will be used. +<span class='line'>206</span> */</span><span class="WHIT"> +<span class='line'>207</span> </span><span class="NAME">RAISocket.prototype.startTLS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">credentials</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>208</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._secureConnection</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>209</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Secure connection already established"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>210</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>211</span> </span><span class="WHIT"> +<span class='line'>212</span> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>213</span> </span><span class="WHIT"> +<span class='line'>214</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>215</span> </span><span class="WHIT"> +<span class='line'>216</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">secure_connector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssl_socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>217</span> +<span class='line'>218</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ssl_socket.authorized</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>219</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"WARNING: TLS ERROR ("</span><span class="PUNC">+</span><span class="NAME">ssl_socket.authorizationError</span><span class="PUNC">+</span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>220</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>221</span> </span><span class="WHIT"> +<span class='line'>222</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>224</span> </span><span class="WHIT"> +<span class='line'>225</span> </span><span class="NAME">this._secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>226</span> </span><span class="WHIT"> +<span class='line'>227</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssl_socket</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>228</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onReceiveData.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>229</span> </span><span class="WHIT"> +<span class='line'>230</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>231</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS CONNECTION STARTED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>232</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>233</span> </span><span class="WHIT"> +<span class='line'>234</span> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>235</span> </span><span class="WHIT"> +<span class='line'>236</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>237</span> </span><span class="WHIT"> +<span class='line'>238</span> </span><span class="NAME">secure_connector.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>239</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>240</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>241</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>242</span> +<span class='line'>243</span> </span><span class="COMM">/** +<span class='line'>244</span> * <p>Closes the connection to the client</p> +<span class='line'>245</span> */</span><span class="WHIT"> +<span class='line'>246</span> </span><span class="NAME">RAISocket.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>247</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>248</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>249</span> +<span class='line'>250</span> </span><span class="COMM">/** +<span class='line'>251</span> * <p>Called when a chunk of data arrives from the client. If currently in data +<span class='line'>252</span> * mode, transmit the data otherwise send it to <code>_processData</code></p> +<span class='line'>253</span> * +<span class='line'>254</span> * @param {Buffer|String} chunk Data sent by the client +<span class='line'>255</span> */</span><span class="WHIT"> +<span class='line'>256</span> </span><span class="NAME">RAISocket.prototype._onReceiveData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>257</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// if currently setting up TLS connection</span><span class="WHIT"> +<span class='line'>258</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>259</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>260</span> </span><span class="WHIT"> +<span class='line'>261</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">chunk</span><span class="PUNC">==</span><span class="STRN">"string"</span><span class="PUNC">?</span><span class="NAME">chunk</span><span class="PUNC">:</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">dataEndMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>263</span> </span><span class="WHIT"> +<span class='line'>264</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>265</span> </span><span class="WHIT"> +<span class='line'>266</span> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>267</span> </span><span class="WHIT"> +<span class='line'>268</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataEndMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="REGX">/\r\n.*?$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>269</span> </span><span class="WHIT"> </span><span class="COMM">// if theres a line that is not ended, keep it for later</span><span class="WHIT"> +<span class='line'>270</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>272</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>273</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>274</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>275</span> </span><span class="WHIT"> +<span class='line'>276</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequence</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>277</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>279</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>281</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>283</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>285</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"ready"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>286</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>287</span> </span><span class="WHIT"> +<span class='line'>288</span> </span><span class="COMM">// send the remaining data for processing</span><span class="WHIT"> +<span class='line'>289</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>290</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>291</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>292</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>293</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>294</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>298</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>299</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>300</span> </span><span class="WHIT"> +<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>302</span> +<span class='line'>303</span> </span><span class="COMM">/** +<span class='line'>304</span> * <p>Processed incoming command lines and emits found data as +<span class='line'>305</span> * <code>'command'</code> with the command name as the first param and the rest +<span class='line'>306</span> * of the data as second (Buffer)</p> +<span class='line'>307</span> * +<span class='line'>308</span> * @param {String} str Binary string to be processed +<span class='line'>309</span> */</span><span class="WHIT"> +<span class='line'>310</span> </span><span class="NAME">RAISocket.prototype._processData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>312</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>313</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>314</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">+</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>316</span> </span><span class="WHIT"> +<span class='line'>317</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>318</span> </span><span class="WHIT"> +<span class='line'>319</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC"><</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>320</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>321</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/\s*[\S]+\s?/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>322</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>323</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>324</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"COMMAND:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>325</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>326</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"command"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NAME">match.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>328</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>329</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>330</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>331</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>332</span> </span><span class="WHIT"> </span><span class="NAME">this._onReceiveData</span><span class="PUNC">(</span><span class="NAME">lines.slice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>333</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>334</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>335</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>336</span> </span><span class="WHIT"> +<span class='line'>337</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>338</span> +<span class='line'>339</span> </span><span class="COMM">/** +<span class='line'>340</span> * <p>Called when the connection is or is going to be ended</p> +<span class='line'>341</span> */</span><span class="WHIT"> +<span class='line'>342</span> </span><span class="NAME">RAISocket.prototype._destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>343</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._destroyed</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>344</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>345</span> </span><span class="WHIT"> +<span class='line'>346</span> </span><span class="NAME">this.removeAllListeners</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>347</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>348</span> +<span class='line'>349</span> </span><span class="COMM">/** +<span class='line'>350</span> * <p>Called when the connection is ended. Emits <code>'end'</code></p> +<span class='line'>351</span> */</span><span class="WHIT"> +<span class='line'>352</span> </span><span class="NAME">RAISocket.prototype._onEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>353</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>355</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>356</span> +<span class='line'>357</span> </span><span class="COMM">/** +<span class='line'>358</span> * <p>Called when an error has appeared. Emits <code>'error'</code> with +<span class='line'>359</span> * the error object as a parameter.</p> +<span class='line'>360</span> * +<span class='line'>361</span> * @param {Object} err Error object +<span class='line'>362</span> */</span><span class="WHIT"> +<span class='line'>363</span> </span><span class="NAME">RAISocket.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>364</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>365</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>366</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>367</span> +<span class='line'>368</span> </span><span class="COMM">/** +<span class='line'>369</span> * <p>Called when a timeout has occured. Connection will be closed and +<span class='line'>370</span> * <code>'timeout'</code> is emitted.</p> +<span class='line'>371</span> */</span><span class="WHIT"> +<span class='line'>372</span> </span><span class="NAME">RAISocket.prototype._onTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>373</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.socket.destroyed</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>374</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>375</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>377</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>378</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>379</span> +<span class='line'>380</span> </span><span class="COMM">/** +<span class='line'>381</span> * <p>Called when the connection is closed</p> +<span class='line'>382</span> * +<span class='line'>383</span> * @param {Boolean} hadError did the connection end because of an error? +<span class='line'>384</span> */</span><span class="WHIT"> +<span class='line'>385</span> </span><span class="NAME">RAISocket.prototype._onClose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hadError</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>386</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>387</span> </span><span class="PUNC">}</span></pre></body></html>
\ No newline at end of file diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html new file mode 100644 index 0000000..2690ce4 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_mockup.js.html @@ -0,0 +1,110 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">net</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 2</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 3</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 4</span> +<span class='line'> 5</span> </span><span class="COMM">/** +<span class='line'> 6</span> * @namespace Mockup module +<span class='line'> 7</span> * @name mockup +<span class='line'> 8</span> */</span><span class="WHIT"> +<span class='line'> 9</span> </span><span class="NAME">module.exports</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">runClientMockup</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 10</span> +<span class='line'> 11</span> </span><span class="COMM">/** +<span class='line'> 12</span> * <p>Runs a batch of commands against a server</p> +<span class='line'> 13</span> * +<span class='line'> 14</span> * <pre> +<span class='line'> 15</span> * var cmds = ["EHLO FOOBAR", "STARTTLS", "QUIT"]; +<span class='line'> 16</span> * runClientMockup(25, "mail.hot.ee", cmds, function(resp){ +<span class='line'> 17</span> * console.log("Final:", resp.toString("utf-8").trim()); +<span class='line'> 18</span> * }); +<span class='line'> 19</span> * </pre> +<span class='line'> 20</span> * +<span class='line'> 21</span> * @memberOf mockup +<span class='line'> 22</span> * @param {Number} port Port number +<span class='line'> 23</span> * @param {String} host Hostname to connect to +<span class='line'> 24</span> * @param {Array} commands Command list to be sent to server +<span class='line'> 25</span> * @param {Function} callback Callback function to run on completion, +<span class='line'> 26</span> * has the last response from the server as a param +<span class='line'> 27</span> * @param {Boolean} [debug] if set to true log all input/output +<span class='line'> 28</span> */</span><span class="WHIT"> +<span class='line'> 29</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">runClientMockup</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commands</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 30</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="STRN">"localhost"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 31</span> </span><span class="WHIT"> </span><span class="NAME">port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="TOKN"> </span><span class="NUMB">25</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 32</span> </span><span class="WHIT"> </span><span class="NAME">commands</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Array.isArray</span><span class="PUNC">(</span><span class="NAME">commands</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">commands</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 33</span> +<span class='line'> 34</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 35</span> +<span class='line'> 36</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">net.connect</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">ignore_data</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 39</span> </span><span class="WHIT"> +<span class='line'> 40</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"S: "</span><span class="PUNC">+</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 43</span> </span><span class="WHIT"> +<span class='line'> 44</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commands.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 50</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 51</span> </span><span class="WHIT"> +<span class='line'> 52</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"STARTTLS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"STLS"</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">>=</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 53</span> </span><span class="WHIT"> </span><span class="NAME">ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"Initiated TLS connection"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 56</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 57</span> </span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.createCredentials</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 58</span> </span><span class="WHIT"> </span><span class="NAME">pair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlslib.createSecurePair</span><span class="PUNC">(</span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 59</span> </span><span class="WHIT"> +<span class='line'> 60</span> </span><span class="NAME">pair.encrypted.pipe</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 61</span> </span><span class="WHIT"> </span><span class="NAME">socket.pipe</span><span class="PUNC">(</span><span class="NAME">pair.encrypted</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">pair.fd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.fd</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 63</span> </span><span class="WHIT"> +<span class='line'> 64</span> </span><span class="NAME">pair.on</span><span class="PUNC">(</span><span class="STRN">"secure"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS connection secured"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 72</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 73</span> +<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 76</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"S: "</span><span class="PUNC">+</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 77</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 78</span> </span><span class="WHIT"> +<span class='line'> 79</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commands.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 81</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 82</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="NAME">pair.cleartext.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 88</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 89</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 90</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 91</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 94</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">commands.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="NAME">socket.write</span><span class="PUNC">(</span><span class="NAME">command</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"C: "</span><span class="PUNC">+</span><span class="NAME">command</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>100</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>101</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>102</span> </span><span class="WHIT"> +<span class='line'>103</span> </span><span class="PUNC">}</span></pre></body></html>
\ No newline at end of file diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html new file mode 100644 index 0000000..4e12b24 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_rai.js.html @@ -0,0 +1,484 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/** +<span class='line'> 2</span> * @fileOverview This is the main file for the RAI library to create text based servers +<span class='line'> 3</span> * @author <a href="mailto:andris@node.ee">Andris Reinman</a> +<span class='line'> 4</span> * @version 0.1.3 +<span class='line'> 5</span> */</span><span class="WHIT"> +<span class='line'> 6</span> +<span class='line'> 7</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">netlib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"net"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 8</span> </span><span class="WHIT"> </span><span class="NAME">utillib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"util"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 9</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'events'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EventEmitter</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 10</span> </span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./starttls"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">starttls</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 11</span> </span><span class="WHIT"> </span><span class="NAME">tlslib</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 12</span> </span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"crypto"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 13</span> </span><span class="WHIT"> </span><span class="NAME">fs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"fs"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 14</span> +<span class='line'> 15</span> </span><span class="COMM">// Default credentials for starting TLS server</span><span class="WHIT"> +<span class='line'> 16</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 17</span> </span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/../cert/key.pem"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'> 18</span> </span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs.readFileSync</span><span class="PUNC">(</span><span class="NAME">__dirname</span><span class="PUNC">+</span><span class="STRN">"/../cert/cert.pem"</span><span class="PUNC">)</span><span class="WHIT"> +<span class='line'> 19</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 20</span> +<span class='line'> 21</span> </span><span class="COMM">// Expose to the world</span><span class="WHIT"> +<span class='line'> 22</span> </span><span class="NAME">module.exports.RAIServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 23</span> </span><span class="NAME">module.exports.runClientMockup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"./mockup"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 24</span> +<span class='line'> 25</span> </span><span class="COMM">/** +<span class='line'> 26</span> * <p>Creates instance of RAIServer</p> +<span class='line'> 27</span> * +<span class='line'> 28</span> * <p>Options object has the following properties:</p> +<span class='line'> 29</span> * +<span class='line'> 30</span> * <ul> +<span class='line'> 31</span> * <li><b>debug</b> - if set to true print traffic to console</li> +<span class='line'> 32</span> * <li><b>disconnectOnTimeout</b> - if set to true close the connection on disconnect</li> +<span class='line'> 33</span> * <li><b>timeout</b> - timeout in milliseconds for disconnecting the client, +<span class='line'> 34</span> * defaults to 0 (no timeout)</li> +<span class='line'> 35</span> * </ul> +<span class='line'> 36</span> * +<span class='line'> 37</span> * <p><b>Events</b></p> +<span class='line'> 38</span> * +<span class='line'> 39</span> * <ul> +<span class='line'> 40</span> * <li><b>'connect'</b> - emitted if a client connects to the server, param +<span class='line'> 41</span> * is a client ({@link RAISocket}) object</li> +<span class='line'> 42</span> * <li><b>'error'</b> - emitted on error, has an error object as a param</li> +<span class='line'> 43</span> * </ul> +<span class='line'> 44</span> * +<span class='line'> 45</span> * @constructor +<span class='line'> 46</span> * @param {Object} [options] Optional options object +<span class='line'> 47</span> */</span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAIServer</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 50</span> </span><span class="WHIT"> +<span class='line'> 51</span> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 52</span> </span><span class="WHIT"> +<span class='line'> 53</span> </span><span class="NAME">this._createServer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 55</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAIServer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 56</span> +<span class='line'> 57</span> </span><span class="COMM">/** +<span class='line'> 58</span> * <p>Starts listening on selected port</p> +<span class='line'> 59</span> * +<span class='line'> 60</span> * @param {Number} port The port to listen +<span class='line'> 61</span> * @param {String} [host] The IP address to listen +<span class='line'> 62</span> * @param {Function} callback The callback function to be run after the server +<span class='line'> 63</span> * is listening, the only param is an error message if the operation failed +<span class='line'> 64</span> */</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="NAME">RAIServer.prototype.listen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">==</span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="NAME">host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="WHIT"> </span><span class="NAME">this._port</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">port</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">host</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 72</span> </span><span class="WHIT"> +<span class='line'> 73</span> </span><span class="NAME">this._connected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 74</span> </span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 76</span> </span><span class="WHIT"> +<span class='line'> 77</span> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"listening"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="NAME">this._connected</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 81</span> </span><span class="WHIT"> +<span class='line'> 82</span> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 83</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._connected</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 86</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 87</span> </span><span class="WHIT"> +<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 89</span> </span><span class="WHIT"> +<span class='line'> 90</span> </span><span class="NAME">this._server.listen</span><span class="PUNC">(</span><span class="NAME">this._port</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._host</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 91</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 92</span> +<span class='line'> 93</span> </span><span class="COMM">/** +<span class='line'> 94</span> * <p>Stops the server</p> +<span class='line'> 95</span> * +<span class='line'> 96</span> * @param {Function} callback Is run when the server is closed +<span class='line'> 97</span> */</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="NAME">RAIServer.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>100</span> </span><span class="WHIT"> </span><span class="NAME">this._server.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>101</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>102</span> +<span class='line'>103</span> </span><span class="COMM">/** +<span class='line'>104</span> * <p>Creates a server with listener callback</p> +<span class='line'>105</span> */</span><span class="WHIT"> +<span class='line'>106</span> </span><span class="NAME">RAIServer.prototype._createServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>107</span> </span><span class="WHIT"> </span><span class="NAME">this._server</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">netlib.createServer</span><span class="PUNC">(</span><span class="NAME">this._serverListener.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>108</span> </span><span class="WHIT"> </span><span class="NAME">this._server.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onError.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>109</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>110</span> +<span class='line'>111</span> </span><span class="COMM">/** +<span class='line'>112</span> * <p>Listens for errors</p> +<span class='line'>113</span> * +<span class='line'>114</span> * @event +<span class='line'>115</span> * @param {Object} err Error object +<span class='line'>116</span> */</span><span class="WHIT"> +<span class='line'>117</span> </span><span class="NAME">RAIServer.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>118</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._connected</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>119</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>120</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>121</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>122</span> +<span class='line'>123</span> </span><span class="COMM">/** +<span class='line'>124</span> * <p>Server listener that is run on client connection</p> +<span class='line'>125</span> * +<span class='line'>126</span> * <p>{@link RAISocket} object instance is created based on the client socket +<span class='line'>127</span> * and a <code>'connection'</code> event is emitted</p> +<span class='line'>128</span> * +<span class='line'>129</span> * @param {Object} socket The socket to the client +<span class='line'>130</span> */</span><span class="WHIT"> +<span class='line'>131</span> </span><span class="NAME">RAIServer.prototype._serverListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>132</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>133</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CONNECTION FROM "</span><span class="PUNC">+</span><span class="NAME">socket.remoteAddress</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>134</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>135</span> </span><span class="WHIT"> +<span class='line'>136</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>137</span> </span><span class="WHIT"> +<span class='line'>138</span> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onReceiveData.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>139</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onEnd.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>140</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onError.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>141</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onTimeout.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>142</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler._onClose.bind</span><span class="PUNC">(</span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>143</span> +<span class='line'>144</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"connection"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>145</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>146</span> +<span class='line'>147</span> </span><span class="COMM">/** +<span class='line'>148</span> * <p>Creates a instance for interacting with a client (socket)</p> +<span class='line'>149</span> * +<span class='line'>150</span> * <p>Optional options object is the same that is passed to the parent +<span class='line'>151</span> * {@link RAIServer} object</p> +<span class='line'>152</span> * +<span class='line'>153</span> * <p><b>Events</b></p> +<span class='line'>154</span> * +<span class='line'>155</span> * <ul> +<span class='line'>156</span> * <li><b>'command'</b> - emitted if a client sends a command. Gets two +<span class='line'>157</span> * params - command (String) and payload (Buffer)</li> +<span class='line'>158</span> * <li><b>'data'</b> - emitted when a chunk is received in data mode, the +<span class='line'>159</span> * param being the payload (Buffer)</li> +<span class='line'>160</span> * <li><b>'ready'</b> - emitted when data stream ends and normal command +<span class='line'>161</span> * flow is recovered</li> +<span class='line'>162</span> * <li><b>'tls'</b> - emitted when the connection is secured by TLS</li> +<span class='line'>163</span> * <li><b>'error'</b> - emitted when an error occurs. Connection to the +<span class='line'>164</span> * client is disconnected automatically. Param is an error object.</l> +<span class='line'>165</span> * <li><b>'timeout'</b> - emitted when a timeout occurs. Connection to the +<span class='line'>166</span> * client is disconnected automatically if disconnectOnTimeout option +<span class='line'>167</span> * is set to true.</l> +<span class='line'>168</span> * <li><b>'end'</b> - emitted when the client disconnects</l> +<span class='line'>169</span> * </ul> +<span class='line'>170</span> * +<span class='line'>171</span> * @constructor +<span class='line'>172</span> * @param {Object} socket Socket for the client +<span class='line'>173</span> * @param {Object} [options] Optional options object +<span class='line'>174</span> */</span><span class="WHIT"> +<span class='line'>175</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAISocket</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>176</span> </span><span class="WHIT"> </span><span class="NAME">EventEmitter.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>177</span> </span><span class="WHIT"> +<span class='line'>178</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>180</span> </span><span class="WHIT"> +<span class='line'>181</span> </span><span class="NAME">this.remoteAddress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.remoteAddress</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>182</span> </span><span class="WHIT"> +<span class='line'>183</span> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>184</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n.\r\n"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>185</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\r\n\.\r\n|^\.\r\n/</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>186</span> </span><span class="WHIT"> +<span class='line'>187</span> </span><span class="NAME">this.secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>188</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>189</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>190</span> </span><span class="WHIT"> +<span class='line'>191</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>192</span> </span><span class="WHIT"> +<span class='line'>193</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">socket.setTimeout</span><span class="PUNC">(</span><span class="NAME">this.options.timeout</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>195</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>196</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>197</span> </span><span class="NAME">utillib.inherits</span><span class="PUNC">(</span><span class="NAME">RAISocket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EventEmitter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>198</span> +<span class='line'>199</span> </span><span class="COMM">/** +<span class='line'>200</span> * <p>Sends some data to the client. <code><CR><LF></code> is automatically appended to +<span class='line'>201</span> * the data</p> +<span class='line'>202</span> * +<span class='line'>203</span> * @param {String|Buffer} data Data to be sent to the client +<span class='line'>204</span> */</span><span class="WHIT"> +<span class='line'>205</span> </span><span class="NAME">RAISocket.prototype.send</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>206</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>207</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SlowBuffer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>208</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="PUNC">+</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>209</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>210</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">[</span><span class="NAME">buffer.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>211</span> </span><span class="WHIT"> </span><span class="NAME">data.copy</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>212</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>213</span> </span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>214</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>215</span> </span><span class="WHIT"> +<span class='line'>216</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>217</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"OUT: \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="NAME">buffer.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>218</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>219</span> </span><span class="WHIT"> +<span class='line'>220</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.socket.writable</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>221</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.write</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>222</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>224</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>225</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>226</span> +<span class='line'>227</span> </span><span class="COMM">/** +<span class='line'>228</span> * <p>Instructs the server to be listening for mixed data instead of line based +<span class='line'>229</span> * commands</p> +<span class='line'>230</span> * +<span class='line'>231</span> * @param {String} [sequence="."] - optional sequence on separate line for +<span class='line'>232</span> * matching the data end +<span class='line'>233</span> */</span><span class="WHIT"> +<span class='line'>234</span> </span><span class="NAME">RAISocket.prototype.startDataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>235</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>236</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>237</span> </span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sequence.replace</span><span class="PUNC">(</span><span class="REGX">/\.\=\(\)\-\?\*\\\[\]\^\+\:\|\,/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"\\$1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>238</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>239</span> </span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">"/\r\n"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n|^"</span><span class="PUNC">+</span><span class="NAME">sequence</span><span class="PUNC">+</span><span class="STRN">"\r\n/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>240</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>241</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>242</span> +<span class='line'>243</span> </span><span class="COMM">/** +<span class='line'>244</span> * <p>Instructs the server to upgrade the connection to secure TLS connection</p> +<span class='line'>245</span> * +<span class='line'>246</span> * <p>Fires <code>callback</code> on successful connection upgrade if set, +<span class='line'>247</span> * otherwise emits <code>'tls'</code></p> +<span class='line'>248</span> * +<span class='line'>249</span> * @param {Object} [credentials] An object with PEM encoded key and +<span class='line'>250</span> * certificate <code>{key:"---BEGIN...", cert:"---BEGIN..."}</code>, +<span class='line'>251</span> * if not set autogenerated values will be used. +<span class='line'>252</span> * @param {Function} [callback] If calback is set fire it after successful connection +<span class='line'>253</span> * upgrade, otherwise <code>'tls'</code> is emitted +<span class='line'>254</span> */</span><span class="WHIT"> +<span class='line'>255</span> </span><span class="NAME">RAISocket.prototype.startTLS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>256</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.secureConnection</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Secure connection already established"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>258</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>259</span> </span><span class="WHIT"> +<span class='line'>260</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>262</span> </span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>263</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>264</span> </span><span class="WHIT"> +<span class='line'>265</span> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">defaultCredentials</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>266</span> </span><span class="WHIT"> +<span class='line'>267</span> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>268</span> </span><span class="WHIT"> +<span class='line'>269</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">secure_connector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">credentials</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssl_socket</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>270</span> +<span class='line'>271</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ssl_socket.authorized</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>272</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"WARNING: TLS ERROR ("</span><span class="PUNC">+</span><span class="NAME">ssl_socket.authorizationError</span><span class="PUNC">+</span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>273</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>274</span> </span><span class="WHIT"> +<span class='line'>275</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">this._ignore_data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>277</span> </span><span class="WHIT"> +<span class='line'>278</span> </span><span class="NAME">this.secureConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>279</span> </span><span class="WHIT"> +<span class='line'>280</span> </span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssl_socket</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>281</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.on</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this._onReceiveData.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>282</span> </span><span class="WHIT"> +<span class='line'>283</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"TLS CONNECTION STARTED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>285</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>286</span> </span><span class="WHIT"> +<span class='line'>287</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">callback</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>288</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>289</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>290</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"tls"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>291</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>292</span> </span><span class="WHIT"> +<span class='line'>293</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>294</span> </span><span class="WHIT"> +<span class='line'>295</span> </span><span class="NAME">secure_connector.on</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>296</span> </span><span class="WHIT"> </span><span class="NAME">this._onError</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>297</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>298</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>299</span> +<span class='line'>300</span> </span><span class="COMM">/** +<span class='line'>301</span> * <p>Closes the connection to the client</p> +<span class='line'>302</span> */</span><span class="WHIT"> +<span class='line'>303</span> </span><span class="NAME">RAISocket.prototype.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>304</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>305</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>306</span> +<span class='line'>307</span> </span><span class="COMM">/** +<span class='line'>308</span> * <p>Called when a chunk of data arrives from the client. If currently in data +<span class='line'>309</span> * mode, transmit the data otherwise send it to <code>_processData</code></p> +<span class='line'>310</span> * +<span class='line'>311</span> * @event +<span class='line'>312</span> * @param {Buffer|String} chunk Data sent by the client +<span class='line'>313</span> */</span><span class="WHIT"> +<span class='line'>314</span> </span><span class="NAME">RAISocket.prototype._onReceiveData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chunk</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>315</span> +<span class='line'>316</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// if currently setting up TLS connection</span><span class="WHIT"> +<span class='line'>317</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>318</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>319</span> </span><span class="WHIT"> +<span class='line'>320</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">chunk</span><span class="PUNC">==</span><span class="STRN">"string"</span><span class="PUNC">?</span><span class="NAME">chunk</span><span class="PUNC">:</span><span class="NAME">chunk.toString</span><span class="PUNC">(</span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">dataEndMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>322</span> </span><span class="WHIT"> +<span class='line'>323</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>324</span> </span><span class="WHIT"> +<span class='line'>325</span> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>326</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataEndMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.match</span><span class="PUNC">(</span><span class="REGX">/\r\n.*?$/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>327</span> </span><span class="WHIT"> </span><span class="COMM">// if theres a line that is not ended, keep it for later</span><span class="WHIT"> +<span class='line'>328</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>329</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataEndMatch.index</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>330</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>331</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>332</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>333</span> +<span class='line'>334</span> </span><span class="WHIT"> </span><span class="COMM">// check if a data end sequence is found from the data</span><span class="WHIT"> +<span class='line'>335</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">+</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequenceRegEx</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>337</span> </span><span class="WHIT"> </span><span class="COMM">// if the sequence is not on byte 0 emit remaining data</span><span class="WHIT"> +<span class='line'>338</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>339</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch.index</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>340</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>341</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>342</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>343</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>344</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>345</span> </span><span class="WHIT"> </span><span class="COMM">// emit data ready</span><span class="WHIT"> +<span class='line'>346</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>347</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"ready"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>348</span> </span><span class="WHIT"> </span><span class="NAME">this._dataMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>349</span> </span><span class="WHIT"> </span><span class="COMM">// send the remaining data for processing</span><span class="WHIT"> +<span class='line'>350</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">dataRemainderMatch.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dataRemainderMatch</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>351</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>352</span> </span><span class="WHIT"> </span><span class="COMM">// check if there's not something in the end of the data that resembles</span><span class="WHIT"> +<span class='line'>353</span> </span><span class="WHIT"> </span><span class="COMM">// end sequence - if so, cut it off and save it to the remainder</span><span class="WHIT"> +<span class='line'>354</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>355</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>356</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.min</span><span class="PUNC">(</span><span class="NAME">this._endDataModeSequence.length</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">></span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>357</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._endDataModeSequence.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>358</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>359</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>360</span> </span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">match.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>361</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>362</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>363</span> +<span class='line'>364</span> </span><span class="WHIT"> </span><span class="COMM">// if there's some data leht, emit it</span><span class="WHIT"> +<span class='line'>365</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>366</span> </span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>367</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>368</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"DATA:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="STRN">"utf-8"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>369</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>370</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>371</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>372</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>373</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>374</span> </span><span class="WHIT"> </span><span class="COMM">// Not in data mode, process as command</span><span class="WHIT"> +<span class='line'>375</span> </span><span class="WHIT"> </span><span class="NAME">this._processData</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>376</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>377</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>378</span> +<span class='line'>379</span> </span><span class="COMM">/** +<span class='line'>380</span> * <p>Processed incoming command lines and emits found data as +<span class='line'>381</span> * <code>'command'</code> with the command name as the first param and the rest +<span class='line'>382</span> * of the data as second (Buffer)</p> +<span class='line'>383</span> * +<span class='line'>384</span> * @param {String} str Binary string to be processed +<span class='line'>385</span> */</span><span class="WHIT"> +<span class='line'>386</span> </span><span class="NAME">RAISocket.prototype._processData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>387</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>388</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>389</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>390</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">+</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> +<span class='line'>391</span> </span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>392</span> </span><span class="WHIT"> +<span class='line'>393</span> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.pop</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>394</span> </span><span class="WHIT"> +<span class='line'>395</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC"><</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>396</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._ignore_data</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>397</span> </span><span class="WHIT"> </span><span class="COMM">// If TLS upgrade is initiated do not process current buffer</span><span class="WHIT"> +<span class='line'>398</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>399</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>400</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>401</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._dataMode</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>402</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">match</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/\s*[\S]+\s?/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>403</span> </span><span class="WHIT"> </span><span class="NAME">command</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>404</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.debug</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>405</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"COMMAND:"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>406</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>407</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"command"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">command</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Buffer</span><span class="PUNC">(</span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NAME">match.index</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">match</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"binary"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>408</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>409</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>410</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._remainder</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>411</span> </span><span class="WHIT"> </span><span class="NAME">this._remainder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\r\n"</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>412</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>413</span> </span><span class="WHIT"> </span><span class="NAME">this._onReceiveData</span><span class="PUNC">(</span><span class="NAME">lines.slice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">join</span><span class="PUNC">(</span><span class="STRN">"\r\n"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>414</span> </span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>415</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>416</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>417</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>418</span> +<span class='line'>419</span> </span><span class="COMM">/** +<span class='line'>420</span> * <p>Called when the connection is or is going to be ended</p> +<span class='line'>421</span> */</span><span class="WHIT"> +<span class='line'>422</span> </span><span class="NAME">RAISocket.prototype._destroy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>423</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this._destroyed</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>424</span> </span><span class="WHIT"> </span><span class="NAME">this._destroyed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>425</span> </span><span class="WHIT"> +<span class='line'>426</span> </span><span class="NAME">this.removeAllListeners</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>427</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>428</span> +<span class='line'>429</span> </span><span class="COMM">/** +<span class='line'>430</span> * <p>Called when the connection is ended. Emits <code>'end'</code></p> +<span class='line'>431</span> * +<span class='line'>432</span> * @event +<span class='line'>433</span> */</span><span class="WHIT"> +<span class='line'>434</span> </span><span class="NAME">RAISocket.prototype._onEnd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>435</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"end"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>436</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>437</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>438</span> +<span class='line'>439</span> </span><span class="COMM">/** +<span class='line'>440</span> * <p>Called when an error has appeared. Emits <code>'error'</code> with +<span class='line'>441</span> * the error object as a parameter.</p> +<span class='line'>442</span> * +<span class='line'>443</span> * @event +<span class='line'>444</span> * @param {Object} err Error object +<span class='line'>445</span> */</span><span class="WHIT"> +<span class='line'>446</span> </span><span class="NAME">RAISocket.prototype._onError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>447</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"error"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>448</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>449</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>450</span> +<span class='line'>451</span> </span><span class="COMM">/** +<span class='line'>452</span> * <p>Called when a timeout has occured. Connection will be closed and +<span class='line'>453</span> * <code>'timeout'</code> is emitted.</p> +<span class='line'>454</span> * +<span class='line'>455</span> * @event +<span class='line'>456</span> */</span><span class="WHIT"> +<span class='line'>457</span> </span><span class="NAME">RAISocket.prototype._onTimeout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>458</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.options.disconnectOnTimeout</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>459</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.socket</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.socket.destroyed</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>460</span> </span><span class="WHIT"> </span><span class="NAME">this.socket.end</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>461</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>462</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>463</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>464</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>465</span> </span><span class="WHIT"> </span><span class="NAME">this.emit</span><span class="PUNC">(</span><span class="STRN">"timeout"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>466</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>467</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>468</span> +<span class='line'>469</span> </span><span class="COMM">/** +<span class='line'>470</span> * <p>Called when the connection is closed</p> +<span class='line'>471</span> * +<span class='line'>472</span> * @event +<span class='line'>473</span> * @param {Boolean} hadError did the connection end because of an error? +<span class='line'>474</span> */</span><span class="WHIT"> +<span class='line'>475</span> </span><span class="NAME">RAISocket.prototype._onClose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hadError</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>476</span> </span><span class="WHIT"> </span><span class="NAME">this._destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>477</span> </span><span class="PUNC">}</span><span class="PUNC">;</span></pre></body></html>
\ No newline at end of file diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html new file mode 100644 index 0000000..dd1b2ea --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/src/RAI_lib_starttls.js.html @@ -0,0 +1,120 @@ +<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style> + .KEYW {color: #933;} + .COMM {color: #bbb; font-style: italic;} + .NUMB {color: #393;} + .STRN {color: #393;} + .REGX {color: #339;} + .line {border-right: 1px dotted #666; color: #666; font-style: normal;} + </style></head><body><pre><span class='line'> 1</span> <span class="COMM">// SOURCE: https://gist.github.com/848444</span><span class="WHIT"> +<span class='line'> 2</span> +<span class='line'> 3</span> </span><span class="COMM">// Target API:</span><span class="WHIT"> +<span class='line'> 4</span> </span><span class="COMM">//</span><span class="WHIT"> +<span class='line'> 5</span> </span><span class="COMM">// var s = require('net').createStream(25, 'smtp.example.com');</span><span class="WHIT"> +<span class='line'> 6</span> </span><span class="COMM">// s.on('connect', function() {</span><span class="WHIT"> +<span class='line'> 7</span> </span><span class="COMM">// require('starttls')(s, options, function() {</span><span class="WHIT"> +<span class='line'> 8</span> </span><span class="COMM">// if (!s.authorized) {</span><span class="WHIT"> +<span class='line'> 9</span> </span><span class="COMM">// s.destroy();</span><span class="WHIT"> +<span class='line'> 10</span> </span><span class="COMM">// return;</span><span class="WHIT"> +<span class='line'> 11</span> </span><span class="COMM">// }</span><span class="WHIT"> +<span class='line'> 12</span> </span><span class="COMM">//</span><span class="WHIT"> +<span class='line'> 13</span> </span><span class="COMM">// s.end("hello world\n");</span><span class="WHIT"> +<span class='line'> 14</span> </span><span class="COMM">// });</span><span class="WHIT"> +<span class='line'> 15</span> </span><span class="COMM">// });</span><span class="WHIT"> +<span class='line'> 16</span> </span><span class="COMM">//</span><span class="WHIT"> +<span class='line'> 17</span> </span><span class="COMM">//</span><span class="WHIT"> +<span class='line'> 18</span> +<span class='line'> 19</span> </span><span class="COMM">/** +<span class='line'> 20</span> * @namespace STARTTLS module +<span class='line'> 21</span> * @name starttls +<span class='line'> 22</span> */</span><span class="WHIT"> +<span class='line'> 23</span> </span><span class="NAME">module.exports.starttls</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 24</span> +<span class='line'> 25</span> </span><span class="COMM">/** +<span class='line'> 26</span> * <p>Upgrades a socket to a secure TLS connection</p> +<span class='line'> 27</span> * +<span class='line'> 28</span> * @memberOf starttls +<span class='line'> 29</span> * @param {Object} socket Plaintext socket to be upgraded +<span class='line'> 30</span> * @param {Object} options Certificate data for the server +<span class='line'> 31</span> * @param {Function} callback Callback function to be run after upgrade +<span class='line'> 32</span> */</span><span class="WHIT"> +<span class='line'> 33</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">starttls</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 34</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 35</span> </span><span class="WHIT"> +<span class='line'> 36</span> </span><span class="NAME">socket.removeAllListeners</span><span class="PUNC">(</span><span class="STRN">"data"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="NAME">sslcontext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'crypto'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">createCredentials</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="NAME">pair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'tls'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">createSecurePair</span><span class="PUNC">(</span><span class="NAME">sslcontext</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 39</span> </span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pipe</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 40</span> +<span class='line'> 41</span> </span><span class="WHIT"> </span><span class="NAME">pair.on</span><span class="PUNC">(</span><span class="STRN">'secure'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 42</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">verifyError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pair._ssl</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">pair.ssl</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">verifyError</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 43</span> +<span class='line'> 44</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">verifyError</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 45</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 46</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorizationError</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">verifyError</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 47</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 48</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 49</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 50</span> +<span class='line'> 51</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">cleartext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 52</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 53</span> +<span class='line'> 54</span> </span><span class="WHIT"> </span><span class="NAME">cleartext._controlReleased</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 55</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pair</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 56</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 57</span> +<span class='line'> 58</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">forwardEvents</span><span class="PUNC">(</span><span class="NAME">events</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterSource</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterDestination</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 59</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 60</span> </span><span class="WHIT"> +<span class='line'> 61</span> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">events.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 62</span> </span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">events</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 63</span> +<span class='line'> 64</span> </span><span class="WHIT"> </span><span class="NAME">handler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">forwardEvent.bind</span><span class="PUNC">(</span><span class="NAME">emitterDestination</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 65</span> </span><span class="WHIT"> +<span class='line'> 66</span> </span><span class="NAME">map.push</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 67</span> </span><span class="WHIT"> </span><span class="NAME">emitterSource.on</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">handler</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 68</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 69</span> </span><span class="WHIT"> +<span class='line'> 70</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 71</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 72</span> +<span class='line'> 73</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">forwardEvent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 74</span> </span><span class="WHIT"> </span><span class="NAME">this.emit.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 75</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 76</span> +<span class='line'> 77</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">removeEvents</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">emitterSource</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 78</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">map.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC"><</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 79</span> </span><span class="WHIT"> </span><span class="NAME">emitterSource.removeAllListeners</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 80</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 82</span> +<span class='line'> 83</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">pipe</span><span class="PUNC">(</span><span class="NAME">pair</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 84</span> </span><span class="WHIT"> </span><span class="NAME">pair.encrypted.pipe</span><span class="PUNC">(</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 85</span> </span><span class="WHIT"> </span><span class="NAME">socket.pipe</span><span class="PUNC">(</span><span class="NAME">pair.encrypted</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 86</span> +<span class='line'> 87</span> </span><span class="WHIT"> </span><span class="NAME">pair.fd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket.fd</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 88</span> </span><span class="WHIT"> +<span class='line'> 89</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pair.cleartext</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 90</span> </span><span class="WHIT"> +<span class='line'> 91</span> </span><span class="NAME">cleartext.socket</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 92</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.encrypted</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pair.encrypted</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 93</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.authorized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 94</span> +<span class='line'> 95</span> </span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 96</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cleartext._controlReleased</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="NAME">cleartext.emit</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>100</span> +<span class='line'>101</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">forwardEvents</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"timeout"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"end"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"close"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"drain"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"error"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">socket</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>102</span> </span><span class="WHIT"> +<span class='line'>103</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> +<span class='line'>104</span> </span><span class="WHIT"> </span><span class="NAME">socket.removeListener</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>105</span> </span><span class="WHIT"> </span><span class="NAME">socket.removeListener</span><span class="PUNC">(</span><span class="STRN">'close'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>106</span> </span><span class="WHIT"> </span><span class="NAME">removeEvents</span><span class="PUNC">(</span><span class="NAME">map</span><span class="PUNC">,</span><span class="NAME">socket</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>107</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> +<span class='line'>108</span> +<span class='line'>109</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">'error'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onerror</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>110</span> </span><span class="WHIT"> </span><span class="NAME">socket.on</span><span class="PUNC">(</span><span class="STRN">'close'</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onclose</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>111</span> +<span class='line'>112</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cleartext</span><span class="PUNC">;</span><span class="WHIT"> +<span class='line'>113</span> </span><span class="PUNC">}</span></pre></body></html>
\ No newline at end of file diff --git a/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html new file mode 100644 index 0000000..e16b915 --- /dev/null +++ b/tools/node_modules/nodemailer/node_modules/simplesmtp/node_modules/rai/jsdoc/symbols/starttls.html @@ -0,0 +1,237 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="generator" content="JsDoc Toolkit" /> + <title>starttls | JsDoc Reference</title> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> + <meta name="mobileoptimized" content="0" /> + + <link rel="stylesheet" href="../css/all.css" media="all" /> + <link rel="stylesheet" href="../css/handheld.css" media="only screen and (max-width: 660px)" /> + <link rel="stylesheet" href="../css/handheld.css" media="handheld" /> + <link rel="stylesheet" href="../css/screen.css" media="screen and (min-width: 661px)" /> + + <script src="../javascript/all.js"></script> + <!--[if lt IE 9]> + <script src="../javascript/html5.js"></script> + <![endif]--> + </head> + + <body> + +<div class="index"> + <div class="menu"> + <div class="indexLinks"> + <a href="../index.html">Classes</a> + <a href="../files.html">Files</a> + </div> + + <h2 class="heading1">Classes</h2> + + <input type="text" name="classFilter" class="classFilter" id="ClassFilter" placeholder="Filter"></input> + + <nav> + <ul class="classList" id="ClassList"> + + <li><a href="../symbols/_global_.html">_global_</a></li> + + <li><a href="../symbols/mockup.html">mockup</a></li> + + <li><a href="../symbols/RAIServer.html">RAIServer</a></li> + + <li><a href="../symbols/RAISocket.html">RAISocket</a></li> + + <li><a href="../symbols/starttls.html">starttls</a></li> + + </ul> + </nav> + </div> + <div class="fineprint" style="clear:both"> + <footer> + + Documentation generator: <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0<br /> + Template: <a href="http://www.thebrightlines.com/2010/05/06/new-template-for-jsdoctoolkit-codeview/" target="_blank">Codeview</a> 1.2<br /> + Generated on: + <time datetime='2012-0-22' pubdate>2012-0-22 12:15</time> + </footer> + </div> +</div> + +<div class="index indexStatic"></div> + +<div class="content"> + <div class="innerContent"> + <article> + <header> + <h1 class="classTitle"> + + Namespace <span>starttls</span> + </h1> + + <div class="intro"> + <p class="description summary"> + STARTTLS module + </p> + + + <ul class="summary"> + + + + <li>Defined in: <a href="../symbols/src/RAI_lib_starttls.js.html">starttls.js</a></li> + + + </ul> + + </div> + </header> + + + + + <!-- + #### METHODS SUMMARY + --> + + <section> + + + <div class="props"> + <h2 class="sectionTitle">Method Summary</h2> + + + <nav> + <table class="summaryTable" id="MethodsList" cellspacing="0" summary="A summary of the methods documented in the class starttls."> + <thead> + <tr> + <th scope="col">Method Attributes</th> + <th scope="col">Method Name and Description</th> + </tr> + </thead> + + <tbody> + + + <tr + class='item0' + > + <td class="attributes"><static> </td> + <td class="nameDescription"> + <div class="fixedFont">starttls.<b><a href="../symbols/starttls.html#.starttls">starttls</a></b>(socket, options, callback) + </div> + <div class="description"><p>Upgrades a socket to a secure TLS connection</p></div> + </td> + </tr> + + </tbody> + </table> + </nav> + + + + </div> + </section> + + + <!-- + #### EVENTS SUMMARY + --> + + <!-- + #### CONSTRUCTOR DETAILS + --> + + <!-- + #### FIELD DETAILS + --> + + <!-- + #### METHOD DETAILS + --> + + <section> + <div class="details props"> + <div class="innerProps"> + <h2 class="sectionTitle"> + Method Detail + </h2> + + <ul class="methodDetail" id="MethodDetail"> + + + <li + class='item0' + > + <div class="fixedFont heading" id=".starttls"> + <span class='lighter'> + <static> + </span> + + + + <span class="light">starttls.</span><b>starttls</b>(socket, options, callback) + </div> + + <div class="description"> + <p>Upgrades a socket to a secure TLS connection</p> + + + + + </div> + + + + + <dl class="detailList params"> + <dt class="heading">Parameters:</dt> + + <dt> + <span class="light fixedFont">{Object}</span> <b>socket</b> + + </dt> + <dd>Plaintext socket to be upgraded</dd> + + <dt> + <span class="light fixedFont">{Object}</span> <b>options</b> + + </dt> + <dd>Certificate data for the server</dd> + + <dt> + <span class="light fixedFont">{Function}</span> <b>callback</b> + + </dt> + <dd>Callback function to be run after upgrade</dd> + + </dl> + + + + + </li> + + </ul> + </div> + </div> + </section> + + + <!-- + #### EVENT DETAILS + --> + + </article> + </div> +</div> + + <script type="text/javascript"> + wbos.CssTools.MediaQueryFallBack.LoadCss('../css/screen.css', '../css/handheld.css', 660) + codeview.classFilter.Init() + </script> + </body> +</html> + |